delayed load geometry offset sequences

   10407   8   1
User Avatar
Member
40 posts
Joined: July 2009
Offline
Hi - Im sure this must have been covered somewhere, as its a pretty standard requirement that I cant find a solution to:
Want to do a delayed load sequence of geometry (an animation) and have the animation offset (and scaled) at every point instance.

I could provide a file but the geo is too heavy.

The CVEX procedural shaders is very confusing and none of the examples have animating geo, and Im not sure if this is the way to proceed .
User Avatar
Member
58 posts
Joined: Sept. 2009
Offline
I think what you need is point instance. You can use instancefile attribute to control the file that being loaded during rander.

Attachments:
animOffset.zip (42.2 KB)
animOffset.hipnc (196.0 KB)

User Avatar
Member
40 posts
Joined: July 2009
Offline
Thanks for that , however I need this to be an ‘at render’ delayed load, for speed and memory issues and this method doesnt seem to work well for this (im loading animated bgeo volumes)

The ‘Delayed load procedural’ seems to be the way to go

I have a solution - using the delay load procedural, - i can use the instancepoints() expression to return me th point number of an instanced point, so i am using this to lookup one of many many instance geometries that are all the same - they are named eg; instance_0 to instance_99 and they each have the same load procedural with the bgeo offset to its respective opdigits number. This renders super fast.

Its just really lame - having to create all the objects - no procedural way i can see to do this , especially no surface level control.
Edited by - May 3, 2013 01:47:54
User Avatar
Member
58 posts
Joined: Sept. 2009
Offline
not sure I understand this correctly, but isn't point instance loading the geometry from disk at render? the IFD only saves the file path. :?:
User Avatar
Member
2624 posts
Joined: Aug. 2006
Offline
laiwayne
not sure I understand this correctly, but isn't point instance loading the geometry from disk at render? the IFD only saves the file path. :?:

Correct.

Point instancing is the way to go. If you have a sequence of animated bgeo files the first thing you want to create is a loop of that geometry and write it to disk

$HIP/geometry/mygeo.`padzero(4,wrap($F,1,80))`.bgeo

So then you can render 80 frames of a 24frame animated object. Next dial up a vop sop and make an attribute based on a random number lets call it “RANDOFFSET” thats based on your shot frame range. Each point that will get the geometry gets the attribute.
Then finally in the instance container drop down a attribute sop and name it instancefile > string > in the path add something like this, referencing your attribute

$HIP/geometry/mygeo.`padzero(4,$RANDOFFSET)`.bgeo

Sorry no file >if I get time I will make
Rob
Gone fishing
User Avatar
Member
40 posts
Joined: July 2009
Offline
Let me try to be a bit clearer, i will try to drop a hip file if i can cut it down for portability.

Using the instance points and doing a $OFFSET is fine.
Should work good for most things.

My question (and the solution i now have) is faaar faster - by using the delay load procedural CVEX shader for geometry.

i can now adjust the scale of each instanced volume (bgeo) at every point, as well as supply a unique frame offset to every point instanced volume.

Renders as fast as rendering one volume (and I now have a hundred voumes in the scene, all offset and uniquely scaled). Works like a dream.
The main issue is with the fact i cannot make the load delay procedural shader ‘procedural’.
If you need more clarification i can email you a hip.
Thanks.
User Avatar
Member
299 posts
Joined: Jan. 2010
Offline
oblongowl
Let me try to be a bit clearer, i will try to drop a hip file if i can cut it down for portability.

Using the instance points and doing a $OFFSET is fine.
Should work good for most things.

My question (and the solution i now have) is faaar faster - by using the delay load procedural CVEX shader for geometry.

i can now adjust the scale of each instanced volume (bgeo) at every point, as well as supply a unique frame offset to every point instanced volume.

Renders as fast as rendering one volume (and I now have a hundred voumes in the scene, all offset and uniquely scaled). Works like a dream.
The main issue is with the fact i cannot make the load delay procedural shader ‘procedural’.
If you need more clarification i can email you a hip.
Thanks.

circusmonkey and laiwayne ain't talking about the regular Point Instancing. They are talking about the new Point Instance Procedural added in H12 that uses delayed load.
http://www.sidefx.com/docs/houdini12.5/nodes/shop/vm_geo_ptinstance [sidefx.com]

Here is a thread with some more examples and discussions:
http://www.sidefx.com/index.php?option=com_forum&Itemid=172&page=viewtopic&p=121605&sid=ba2f0f92b81561073806e02a88a245f9 [sidefx.com]
Drive, monkey, drive!
User Avatar
Member
40 posts
Joined: July 2009
Offline
Thanks - some good info
In my setup my ‘instance obj’ was referencing another object which was using the load delay procedural shader and using full point instancing, however, turning it to fast point instancing and not referencing an external object works just as fast , however to rotate and scale (in x y or z) each unique instance is a bigger technical setup - passing transform matrices.
Something i will revisit for sure.
Im passing point attributes from my grid points to ‘transform’ each instance, via point() expressions in conjunction with instancepoint() and getting the same result.
As ever houdini wins in its flexibility. cheers.
User Avatar
Member
2624 posts
Joined: Aug. 2006
Offline
Cool stuff , be sure to add an example to one of those instancing threads, as we like to keep thrashing the hell out of instancing !

Rob
Gone fishing
  • Quick Links