[Sidefx-houdini-list] VOPSOP by ID
houdini at jonathandavies.co.uk
Fri Nov 30 12:10:38 EST 2012
== Getting Point numbers to VOPs =====
I've used the Point SOP with the 'match by attribute' option to grab the
point number from the point with a matching ID on another frame ($PT2
will grab the number of the point that matches the ID).
You can check for no match if you need to, by seeing when $ID2 == 0.
If you have particles being created and killed at different points
through the sim, you can build a new point cloud matching the size of
the maximum ID number by grabbing the nextID detail attribute from the
last frame of the sim. In some cases, this 'clean' point cloud is
easier to work with - although will probably be a lot slower with some
very heavy sims.
Once all this point num data is grabbed (and possibly cached again on
disk if you have a huge point count), I jump into VOP-land and use the
point numbers as I need to access the data from different frames. This
is lots faster if you have a lot of VOP work to do.
My guess is that this would be quicker than Python, but slower than the
HDK - I have done no performance testing however.
== Smooth Interpolation =====
I have tried using a Mix VOP to calculate the blend between the current
velocity and the next frame velocity, then push the particle the
appropriate fraction of the frame from its existing position. This
worked nicely for a particle interpolater and gave me curved streaks. I
guess it wouldn't be a cubic fit, as it is only taking the next frame
into consideration - but it was speedy.
On 11/30/2012 02:38 PM, Pablo Giménez wrote:
> If you dont want to enter into the HDK field I think the best option is to
> make a Python SOP which basically creates a dictionary matching points in
> the first input with the ones in he second using id attribute.
> then create a new attribute which is the point index of the second input
> point which paris with the first input point based on the id.
> Use this attribute in a vopsop to retrieve attributes from the second input.
> In HDK is much faster tha in Python of course so this rally doesn't scales
> well for huge particles systems.
> On the other hand doing a HDK node for this is easy if you now a little bit
> about C++.
> 2012/11/30 Nick Nimble <nick at nicknimble.com>
>> I'm working on a method to re-time aka interpolate particles. I would like
>> to use a vopsop and do this as a post process. The idea is to use the point
>> position of the neighboring frames and their velocities to calculate an
>> in-between position.
>> The problem is, a vopsop works by point numbers and not particles ID's and
>> since point-numbers change when a particle dies...
>> Any suggestions? I was thinking about the sort SOP, or something like
>> that. A method to match the point number by the particle ID. Still this
>> would result in missing point-numbers and I'm not sure if Houdini would
>> like that.
>> Nick, be Nimble
>> +31 622 4243 94 | www.nicknimble.com | www.facebook.com/nicknimble
>> Sidefx-houdini-list mailing list
>> Sidefx-houdini-list at sidefx.com
More information about the Sidefx-houdini-list