Jump to content

Arnold Instance Offset Volumes


Recommended Posts

Hey there,

Having a little bit of Arnold trouble, I'm a little inexperienced rendering limitations and instancing with Arnold.

Trying to load in instanced vdb's via an instancer obj node, using per point instancefile. But they're not renderable.. I did same with instance sop, but they weren't renderable, until I unpacked them -- which I believe defeats my purpose. Just trying to instance a volume , and offset time for variation. --- probably limitation with packed prims with Arnold but it'll work if I directly Instance Object my Arnold Volume obj node (where I lose offset control, per point). So a little confused.

htoa 3.03 atm perhaps I could update because I've been told recently packed prims were further supported.

Houdini Indie, so no access to .ass files.

If I @instancefile (instance sop), I get access to the frame variable. but I have to unpack.

If I @instancefile (instance obj), within an instanceobj, I get no render effect.

If I @instancepath (instance obj), within an instanceobj, I can render, but have no access to the frame variables.

 

Cheers, will play around with and give my solution if any.

instance_ArnoldVol2.JPG

Edited by MaximumsProductions
Link to comment
Share on other sites

Hey Max,

 

So without access to .ass files I don't know if what you are trying to do is possible. ( There are always hacks, but let's get into that later).

 

Instancing in htoa generally requires .ass files for your instancefile attribute.

Your example would then be more like:

D:/Gnomon/.../geo/my_archive.1001.ass
D:/Gnomon/.../geo/my_archive.1002.ass
D:/Gnomon/.../geo/my_archive.1003.ass

 

So what goes into the .ass file and how do you make it?
*) In the object level context, drop down an 'Arnold Volume' object and put your path to your vdb sequence inside of it, also specify the relevant grids. The 'Arnold Volume' is a procedural that allows Arnold to render the vdb at rendertime. The voxel data will not be stored in the .ass file. The Arnold volume which points to the vdb files will be stored in the .ass files.  So basically the 'Arnold Volume' object is a wrapper for the .vdb sequence. Also at this point you want to assign an arnold standard_volume to the 'Arnold_volume object.
Your filename inside of of the Arnold Volume would look like: 

D:/Gnomon/.../geo/my_volume.$F.vdb

Next you have to create the archive that will be loaded by the instance points by Arnold. So you can use an Arnold node in the rop context and put your object level 'Arnold Volume' as a Force Object in your rop. Then under Archive, turn on 'Export ASS File' and for the checkboxes, turn on 'Binary encoding', 'Export Shapes' and 'Export Shaders' - turn off the other checkboxes. Note that the shader is included, this is important. Write our your sequence of .ass files.

 

Next at the object level make use of a houdini instance object. Inside the instance object, have a single file read node that reads the points that have the 'instancefile' attribute. Don't use an object_merge - I've had issues with this. Also do not assign a volume material to the object level houdini instance node - again had problems with this. 

You should now be able to render the various instanced volumes.

 

If you don't have access to writing out ass files... then you will need to hack it:
*) you can create 100 Arnold_volume objects, each pointing to a different frame of your volume sequence. ( Probably best to do this in a subnet, use opdigits ).

*) Then use the instancepath to point to the various Arnold_volume objects.

 

Good luck and let me know if you get stuck. I don't have indie so I don't have those limitiations. I'm surprised Indie does not let you write out .ass files, because that is what you would need to render on a farm.

Peter

  • Thanks 2
Link to comment
Share on other sites

Thanks so much Peter,

Uploaded my hip file. 

If anyone is interested, unfortunately setup includes my loop for clustering but can easily remove.

 

 

subnetted my 10 clusters of 400 frames each

using their names "ref_####" as the frame number, so I could copy the 400 nodes needed heh, need to learn to incorporate python into houdini I think to be cleaner.

$JOB/geo/fx_name/DII/FireMeteor_vertical_B/v001/`opdigits("..")`/FireMeteor_vertical_B_clusters_`opdigits("..")`.`opdigits(".")`.vdb

skyrocketed my hip file size but worth it hehe.

 

Really want to get into learning IFD's but yeah its a silly restriction for indie. I appreciate explaining the workflow and theory behind .ass in this case. Will come back to whenever I am at a studio, cheers! :)

 

 

Meteors_InstanceHack.mov

MM_arnoldInstanceHack.hiplc

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...