Showing posts with label id. Show all posts
Showing posts with label id. Show all posts

Wednesday, 1 March 2023

primitive number as an attribute - enumerate

 use case - you have a bunch of curves and want to give them individual point colours - but you want the points to all use the same id.

an Enumerate sop node will let you store the number value in each point or primitive. Lets use the primitive option, then attribute promote it to points so that each curve's points all contain the same identifiable attribute.


It can also be used to name "pieces", which might be useful



Wednesday, 12 February 2020

cryptomatte AOV with arnold/HTOA

Another simple thing, which I always forget.

The most common crypto attribute I use is crypto_asset.
It seems to work best assigned at primitive level. So - in a primitive wrangle for example -

s@crypto_asset="poop"+itoa(@primnum);


The next part is to create an Arnold Shader Network, call it something like "CRYPTO"
Inside this, make an AOV Output  node. Create a cryptomatte node and hook this up to the aov_shader input. You may need to create a user_data_string with "crypto_asset" and plug that into the "crypto_asset" input of the cryptomatte node.


The last bit, is in the Arnold ROP you're using. In the AOV section, where it says "AOV Shaders", point it to they CRYPTO shop you made earlier -  /shop/CRYPTO

then add a new AOV and select "crypto_asset" from the list.

Hopefully this works!

Crypto_object is used when things are in different Houdini Objects... it isn't something that I usually do though..

Thursday, 18 April 2019

Copying different objects to points

Sometimes you need to copy a bunch of different objects to points. Eg. You have 5 variations of wood splinters and you're emitting them from a snapping plank.
Instead of using the slower copy stamp with random point values, you can use a ForEach loop and a Switch node..and of course a point wrangle.

Connect the objects to the Switch node. In a point wrangle, give each point an (random) integer value (eg "instanceID") ranging from 0 to the number of objects you have.
Make a ForEach network and connect the Point wrangle into the top. Create a null node directly after the start of the Foreach Begin. This will be a "temporary holder" node. It will carry the instanceID value to the Switch node. I've called it PT
The clever bit happens in the Switch node. In the parameter window, click on the cog wheel and add a Spare Input. This will create a new dialog box called Spare Input 0. Type in:

../PT

This will point the spare input to our temporary null & its instanceID value.
In the Select Input dialog box, type

point(-1, 0, "instanceID", 0)

here we are telling the Switch node to get a point attribute from input -1 (which is the spare dialog....which is pointing to the PT temporary null..). The attribute in question is instanceID.. NICE.
A purple arrow going from PT to Switch should have appeared now. This represents that link we've just made.

All that is left to do is to create a Copy To Points node & put the Switch output into the objects input & plug PT into the points input. Finally plug the output of all of that into the Foreach End.