"float to int" and "texture switch"

Houdini Integrated Plugin

Moderator: juanjgon

Post Reply
chocbot
Licensed Customer
Posts: 73
Joined: Sun Apr 17, 2016 3:03 pm

We got a character from another company, where I need to apply different textures in one material based on groups. I have tried a simplified version for now - I have a float mask attribute, which does render correctly and then use the "float to int" node in octane and feed that into a "texture switch" but no success. How is this supposed to work?
Cheers
skientia
Licensed Customer
Posts: 218
Joined: Tue Mar 12, 2024 1:50 am
Contact:

Is the setup identical to this example? Demonstrative setup in Standalone:

Image

The project file (can be copy-pasted directly to Standalone, XML format)

Code: Select all

<?xml version='1.0' encoding='utf-8'?>
<OCS2 version='14000011'>
 <graph id='1' type='1' name='clipboard'>
  <graph id='7' type='1' name='texture-switch-variant-sets-demo' position='-5.3690085 87.309479'>
   <attr name='color' type='8'>1 1 1</attr>
   <node id='8' type='9' name='Int value' position='-102.131 -110.55948'>
    <attr name='value' type='4'>1 0 0</attr>
   </node>
   <node id='9' type='33' name='tex__albedo_var2' position='-138.631 -14.309479'>
    <attr name='value' type='8'>0.69999999 0.69999999 0.69999999</attr>
   </node>
   <node id='10' type='33' name='tex_roughness_var2' position='195.46506 -56.678596'>
    <attr name='value' type='8'>0.69999999 0.69999999 0.69999999</attr>
   </node>
   <node id='11' type='33' name='tex__albedo_var1' position='-280.63098 -14.309479'>
    <attr name='value' type='8'>0.69999999 0.69999999 0.69999999</attr>
   </node>
   <node id='12' type='33' name='tex_roughness_var1' position='35.035675 -55.642815'>
    <attr name='value' type='8'>0.69999999 0.69999999 0.69999999</attr>
   </node>
   <node id='13' type='130' name='Universal material' position='259.36902 93.690521'>
    <attr name='compatibilityVersion' type='2'>14000011</attr>
    <pin name='transmissionType'>
     <node id='14' type='57'>
      <attr name='value' type='2'>0</attr>
     </node>
    </pin>
    <pin name='albedo' connect='57'/>
    <pin name='diffuseBrdf'>
     <node id='15' type='57'>
      <attr name='value' type='2'>1</attr>
     </node>
    </pin>
    <pin name='metallic'>
     <node id='16' type='31'>
      <attr name='value' type='6'>0</attr>
     </node>
    </pin>
    <pin name='edgeTint'>
     <node id='17' type='33'>
      <attr name='value' type='8'>1 1 1</attr>
     </node>
    </pin>
    <pin name='specular'>
     <node id='18' type='31'>
      <attr name='value' type='6'>1</attr>
     </node>
    </pin>
    <pin name='brdf'>
     <node id='19' type='57'>
      <attr name='value' type='2'>0</attr>
     </node>
    </pin>
    <pin name='roughness' connect='55'/>
    <pin name='anisotropy'>
     <node id='20' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='rotation'>
     <node id='21' type='31'>
      <attr name='value' type='6'>0</attr>
     </node>
    </pin>
    <pin name='spread'>
     <node id='22' type='6'>
      <attr name='value' type='8'>0.5 0 0</attr>
     </node>
    </pin>
    <pin name='index4'>
     <node id='23' type='6'>
      <attr name='value' type='8'>1.5 0 0</attr>
     </node>
    </pin>
    <pin name='metallicMode'>
     <node id='24' type='57'>
      <attr name='value' type='2'>0</attr>
     </node>
    </pin>
    <pin name='index'>
     <node id='25' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='index2'>
     <node id='26' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='index3'>
     <node id='27' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='hasCaustics'>
     <node id='28' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='coating'>
     <node id='29' type='33'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='coatingRoughness'>
     <node id='30' type='31'>
      <attr name='value' type='6'>0.063199997</attr>
     </node>
    </pin>
    <pin name='coatingIndex'>
     <node id='31' type='6'>
      <attr name='value' type='8'>1.5 0 0</attr>
     </node>
    </pin>
    <pin name='filmwidth'>
     <node id='32' type='31'>
      <attr name='value' type='6'>0</attr>
     </node>
    </pin>
    <pin name='filmindex'>
     <node id='33' type='6'>
      <attr name='value' type='8'>1.45 0 0</attr>
     </node>
    </pin>
    <pin name='sheen'>
     <node id='34' type='33'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='sheenRoughness'>
     <node id='35' type='31'>
      <attr name='value' type='6'>0.2</attr>
     </node>
    </pin>
    <pin name='dispersion_coefficient_B'>
     <node id='36' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='dispersionMode'>
     <node id='37' type='57'>
      <attr name='value' type='2'>1</attr>
     </node>
    </pin>
    <pin name='opacity'>
     <node id='38' type='31'>
      <attr name='value' type='6'>1</attr>
     </node>
    </pin>
    <pin name='fake_shadows'>
     <node id='39' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='refractionAlpha'>
     <node id='40' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='bumpHeight'>
     <node id='41' type='6'>
      <attr name='value' type='8'>0.001 0 0</attr>
     </node>
    </pin>
    <pin name='smooth'>
     <node id='42' type='11'>
      <attr name='value' type='1'>1</attr>
     </node>
    </pin>
    <pin name='smoothShadowTerminator'>
     <node id='43' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='roundEdges'>
     <node id='44' type='137'>
      <attr name='compatibilityVersion' type='2'>14000011</attr>
      <pin name='roundEdgesMode'>
       <node id='45' type='57'>
        <attr name='value' type='2'>1</attr>
       </node>
      </pin>
      <pin name='roundEdgesRadius'>
       <node id='46' type='6'>
        <attr name='value' type='8'>0 0 0</attr>
       </node>
      </pin>
      <pin name='roundEdgesCurvatureRoundness'>
       <node id='47' type='6'>
        <attr name='value' type='8'>1 0 0</attr>
       </node>
      </pin>
      <pin name='roundEdgesSampleCount'>
       <node id='48' type='9'>
        <attr name='value' type='4'>8 0 0</attr>
       </node>
      </pin>
      <pin name='roundEdgesConsiderOtherObjects'>
       <node id='49' type='11'>
        <attr name='value' type='1'>0</attr>
       </node>
      </pin>
     </node>
    </pin>
    <pin name='priority'>
     <node id='50' type='9'>
      <attr name='value' type='4'>0 0 0</attr>
     </node>
    </pin>
    <pin name='matte'>
     <node id='51' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='customAov'>
     <node id='52' type='57'>
      <attr name='value' type='2'>4096</attr>
     </node>
    </pin>
    <pin name='customAovChannel'>
     <node id='53' type='57'>
      <attr name='value' type='2'>0</attr>
     </node>
    </pin>
    <pin name='layer'>
     <node id='54' type='144'>
      <attr name='pin_count' type='2'>0</attr>
     </node>
    </pin>
   </node>
   <node id='55' type='40005' name='Texture switch' position='61.035675 -8.6428146'>
    <attr name='optionCount' type='2'>2</attr>
    <pin name='index' connect='8'/>
    <pin name='Input 1' dynamicType='5' connect='12'/>
    <pin name='Input 2' dynamicType='5' connect='10'/>
   </node>
   <node id='56' type='68' name='Note' position='158.11853 131.76161'>
    <attr name='value' type='10'>• int value: controls the switch numerical value, here simultaneously.

• Example with "Albedo" variable 1 and 2
   ↳ tex_albedo_var1 is the "base color" of a typical "PBR" asset texture "channel", and var2 is a variant of it
   ↳ changing the “Int value” from 1 to 2, switches the "texture set" from var1 to var2 for both the "Albedo" and "Roughness since Int Value node is plugged in both.</attr>
    <attr name='color' type='8'>0.5 0.5 0.5</attr>
    <attr name='size' type='3'>800 23</attr>
   </node>
   <node id='57' type='40005' name='Texture switch' position='-187.631 34.690521'>
    <attr name='optionCount' type='2'>2</attr>
    <pin name='index' connect='8'/>
    <pin name='Input 1' dynamicType='5' connect='11'/>
    <pin name='Input 2' dynamicType='5' connect='9'/>
   </node>
  </graph>
 </graph>
</OCS2>
Attachments
texture-switch-texture-set-variants.jpeg
Octane resources
OCTANE POSTS (URLs have changed, which will break some links but all content remains available).
User avatar
galleon27
Licensed Customer
Posts: 287
Joined: Wed Jul 15, 2015 11:55 am
Location: Serbia
Contact:

Just plug the textures into a gradient node like this:
Screenshot 2025-01-26 125720.png
Float to int expects float values as input but Float Vertex Attribute outputs Color values. That's why it's not working
Attachments
switchTex.zip
(564.09 KiB) Downloaded 228 times
Win 10 64bit // GTX 4090 + GTX 3090 // 5900x // 64GB // SideFX Houdini // C4D
chocbot
Licensed Customer
Posts: 73
Joined: Sun Apr 17, 2016 3:03 pm

galleon27 wrote:Just plug the textures into a gradient node like this:
Screenshot 2025-01-26 125720.png
Float to int expects float values as input but Float Vertex Attribute outputs Color values. That's why it's not working
Thanks but yeah in that case I usually use the "tool mix texture" but in my current case it's a texture set and five groups, so I need to switch between 5 textures multiple times, so that workflow is quite impractical.
chocbot
Licensed Customer
Posts: 73
Joined: Sun Apr 17, 2016 3:03 pm

skientia wrote:Is the setup identical to this example? Demonstrative setup in Standalone:

Image

The project file (can be copy-pasted directly to Standalone, XML format)

Code: Select all

<?xml version='1.0' encoding='utf-8'?>
<OCS2 version='14000011'>
 <graph id='1' type='1' name='clipboard'>
  <graph id='7' type='1' name='texture-switch-variant-sets-demo' position='-5.3690085 87.309479'>
   <attr name='color' type='8'>1 1 1</attr>
   <node id='8' type='9' name='Int value' position='-102.131 -110.55948'>
    <attr name='value' type='4'>1 0 0</attr>
   </node>
   <node id='9' type='33' name='tex__albedo_var2' position='-138.631 -14.309479'>
    <attr name='value' type='8'>0.69999999 0.69999999 0.69999999</attr>
   </node>
   <node id='10' type='33' name='tex_roughness_var2' position='195.46506 -56.678596'>
    <attr name='value' type='8'>0.69999999 0.69999999 0.69999999</attr>
   </node>
   <node id='11' type='33' name='tex__albedo_var1' position='-280.63098 -14.309479'>
    <attr name='value' type='8'>0.69999999 0.69999999 0.69999999</attr>
   </node>
   <node id='12' type='33' name='tex_roughness_var1' position='35.035675 -55.642815'>
    <attr name='value' type='8'>0.69999999 0.69999999 0.69999999</attr>
   </node>
   <node id='13' type='130' name='Universal material' position='259.36902 93.690521'>
    <attr name='compatibilityVersion' type='2'>14000011</attr>
    <pin name='transmissionType'>
     <node id='14' type='57'>
      <attr name='value' type='2'>0</attr>
     </node>
    </pin>
    <pin name='albedo' connect='57'/>
    <pin name='diffuseBrdf'>
     <node id='15' type='57'>
      <attr name='value' type='2'>1</attr>
     </node>
    </pin>
    <pin name='metallic'>
     <node id='16' type='31'>
      <attr name='value' type='6'>0</attr>
     </node>
    </pin>
    <pin name='edgeTint'>
     <node id='17' type='33'>
      <attr name='value' type='8'>1 1 1</attr>
     </node>
    </pin>
    <pin name='specular'>
     <node id='18' type='31'>
      <attr name='value' type='6'>1</attr>
     </node>
    </pin>
    <pin name='brdf'>
     <node id='19' type='57'>
      <attr name='value' type='2'>0</attr>
     </node>
    </pin>
    <pin name='roughness' connect='55'/>
    <pin name='anisotropy'>
     <node id='20' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='rotation'>
     <node id='21' type='31'>
      <attr name='value' type='6'>0</attr>
     </node>
    </pin>
    <pin name='spread'>
     <node id='22' type='6'>
      <attr name='value' type='8'>0.5 0 0</attr>
     </node>
    </pin>
    <pin name='index4'>
     <node id='23' type='6'>
      <attr name='value' type='8'>1.5 0 0</attr>
     </node>
    </pin>
    <pin name='metallicMode'>
     <node id='24' type='57'>
      <attr name='value' type='2'>0</attr>
     </node>
    </pin>
    <pin name='index'>
     <node id='25' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='index2'>
     <node id='26' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='index3'>
     <node id='27' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='hasCaustics'>
     <node id='28' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='coating'>
     <node id='29' type='33'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='coatingRoughness'>
     <node id='30' type='31'>
      <attr name='value' type='6'>0.063199997</attr>
     </node>
    </pin>
    <pin name='coatingIndex'>
     <node id='31' type='6'>
      <attr name='value' type='8'>1.5 0 0</attr>
     </node>
    </pin>
    <pin name='filmwidth'>
     <node id='32' type='31'>
      <attr name='value' type='6'>0</attr>
     </node>
    </pin>
    <pin name='filmindex'>
     <node id='33' type='6'>
      <attr name='value' type='8'>1.45 0 0</attr>
     </node>
    </pin>
    <pin name='sheen'>
     <node id='34' type='33'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='sheenRoughness'>
     <node id='35' type='31'>
      <attr name='value' type='6'>0.2</attr>
     </node>
    </pin>
    <pin name='dispersion_coefficient_B'>
     <node id='36' type='6'>
      <attr name='value' type='8'>0 0 0</attr>
     </node>
    </pin>
    <pin name='dispersionMode'>
     <node id='37' type='57'>
      <attr name='value' type='2'>1</attr>
     </node>
    </pin>
    <pin name='opacity'>
     <node id='38' type='31'>
      <attr name='value' type='6'>1</attr>
     </node>
    </pin>
    <pin name='fake_shadows'>
     <node id='39' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='refractionAlpha'>
     <node id='40' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='bumpHeight'>
     <node id='41' type='6'>
      <attr name='value' type='8'>0.001 0 0</attr>
     </node>
    </pin>
    <pin name='smooth'>
     <node id='42' type='11'>
      <attr name='value' type='1'>1</attr>
     </node>
    </pin>
    <pin name='smoothShadowTerminator'>
     <node id='43' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='roundEdges'>
     <node id='44' type='137'>
      <attr name='compatibilityVersion' type='2'>14000011</attr>
      <pin name='roundEdgesMode'>
       <node id='45' type='57'>
        <attr name='value' type='2'>1</attr>
       </node>
      </pin>
      <pin name='roundEdgesRadius'>
       <node id='46' type='6'>
        <attr name='value' type='8'>0 0 0</attr>
       </node>
      </pin>
      <pin name='roundEdgesCurvatureRoundness'>
       <node id='47' type='6'>
        <attr name='value' type='8'>1 0 0</attr>
       </node>
      </pin>
      <pin name='roundEdgesSampleCount'>
       <node id='48' type='9'>
        <attr name='value' type='4'>8 0 0</attr>
       </node>
      </pin>
      <pin name='roundEdgesConsiderOtherObjects'>
       <node id='49' type='11'>
        <attr name='value' type='1'>0</attr>
       </node>
      </pin>
     </node>
    </pin>
    <pin name='priority'>
     <node id='50' type='9'>
      <attr name='value' type='4'>0 0 0</attr>
     </node>
    </pin>
    <pin name='matte'>
     <node id='51' type='11'>
      <attr name='value' type='1'>0</attr>
     </node>
    </pin>
    <pin name='customAov'>
     <node id='52' type='57'>
      <attr name='value' type='2'>4096</attr>
     </node>
    </pin>
    <pin name='customAovChannel'>
     <node id='53' type='57'>
      <attr name='value' type='2'>0</attr>
     </node>
    </pin>
    <pin name='layer'>
     <node id='54' type='144'>
      <attr name='pin_count' type='2'>0</attr>
     </node>
    </pin>
   </node>
   <node id='55' type='40005' name='Texture switch' position='61.035675 -8.6428146'>
    <attr name='optionCount' type='2'>2</attr>
    <pin name='index' connect='8'/>
    <pin name='Input 1' dynamicType='5' connect='12'/>
    <pin name='Input 2' dynamicType='5' connect='10'/>
   </node>
   <node id='56' type='68' name='Note' position='158.11853 131.76161'>
    <attr name='value' type='10'>• int value: controls the switch numerical value, here simultaneously.

• Example with "Albedo" variable 1 and 2
   ↳ tex_albedo_var1 is the "base color" of a typical "PBR" asset texture "channel", and var2 is a variant of it
   ↳ changing the “Int value” from 1 to 2, switches the "texture set" from var1 to var2 for both the "Albedo" and "Roughness since Int Value node is plugged in both.</attr>
    <attr name='color' type='8'>0.5 0.5 0.5</attr>
    <attr name='size' type='3'>800 23</attr>
   </node>
   <node id='57' type='40005' name='Texture switch' position='-187.631 34.690521'>
    <attr name='optionCount' type='2'>2</attr>
    <pin name='index' connect='8'/>
    <pin name='Input 1' dynamicType='5' connect='11'/>
    <pin name='Input 2' dynamicType='5' connect='9'/>
   </node>
  </graph>
 </graph>
</OCS2>
Hey, thanks for your response. What I'm trying to do should actually look like that:
Image
But then with multiples of these texture switch constructs.
The red arrow is where I actually have a connection in Houdini, seems like this is what's not working. Probably like galleon27 said but there is no conversion node from vector to floats, or is there?
User avatar
galleon27
Licensed Customer
Posts: 287
Joined: Wed Jul 15, 2015 11:55 am
Location: Serbia
Contact:

chocbot wrote:
galleon27 wrote:Just plug the textures into a gradient node like this:
Screenshot 2025-01-26 125720.png
Float to int expects float values as input but Float Vertex Attribute outputs Color values. That's why it's not working
Thanks but yeah in that case I usually use the "tool mix texture" but in my current case it's a texture set and five groups, so I need to switch between 5 textures multiple times, so that workflow is quite impractical.
Then just plug in more textures in gradient node.
Win 10 64bit // GTX 4090 + GTX 3090 // 5900x // 64GB // SideFX Houdini // C4D
chocbot
Licensed Customer
Posts: 73
Joined: Sun Apr 17, 2016 3:03 pm

galleon27 wrote:
chocbot wrote:
galleon27 wrote:Just plug the textures into a gradient node like this:
Screenshot 2025-01-26 125720.png
Float to int expects float values as input but Float Vertex Attribute outputs Color values. That's why it's not working
Thanks but yeah in that case I usually use the "tool mix texture" but in my current case it's a texture set and five groups, so I need to switch between 5 textures multiple times, so that workflow is quite impractical.
Then just plug in more textures in gradient node.
Oh, I didn't understand you meant this could be used for more than two textures - that works, thanks! :)
chocbot
Licensed Customer
Posts: 73
Joined: Sun Apr 17, 2016 3:03 pm

So I have a solution!
Though, I'd still be interested about the texture switch node's workflow? Is it not supposed to be used with attributes to control it? What's the use case then?
Post Reply

Return to “Houdini”