Help using VDB Point Advect inside SolverSOP

   4814   7   2
User Avatar
Member
208 posts
Joined: Nov. 2010
Offline
I'm using VDBAdvectPoints to move points across a VDB surface which works if the time step is animated (e.g., $F, etc.) but when I put the advection node inside the Solver SOP, the sim grinds to a halt in about 7 frames. I think I'm missing something about the Solver SOP but can't sort it out.

File is attached if anyone has time to take a look. Any help would be much appreciated. Look for the grey switch node to switch between the Solver SOP and the animated VDBAdvectPoints node

Also, setting the traillen attribute doesn't seem to be picked up by the advect node?

Thanks!

Attachments:
VDBcrawlers.hipnc (1.1 MB)

User Avatar
Member
459 posts
Joined: Oct. 2011
Offline
Hi
This is a classic problem when using solvers nodes. Because “Output Streamers” are on in the Solvers VDB Advect Points, you're adding new points to already added points. Tripling the number of points for each iteration. One solution is to not use the VDB Advect Points in a solver (like you're already doing with “vdbadvectpoints1”) but set “Time Step” to $T and “Substep” to $F. This is basically the same.
If you need to have the advect node inside a solver, you need to figure out a way to isolate the incoming points from the new points that “Output Streamers” creates in one iteration. Check out how Moritz does that with vex in this tutorial [entagma.com] at around 17:20
But because the advect node doesn't generate any attributes or groups for the “Output Streamers” points, this could be a little tricky. I don't have a solution for you at the moment. Will have to dive into this a little more.

-b
http://www.racecar.no [www.racecar.no]
User Avatar
Member
208 posts
Joined: Nov. 2010
Offline
Thanks Bonsak. I should have figured that out from the geometry spreadsheet. Turning off Output Streamers, I can follow the Solver SOP with a Trail SOP and accomplish the same result.

I was getting good results by animating the time steps but the VDB Advect Points help card implied that the Solver SOP would be more efficient. Do you know wny that is (if it is)?

-k
User Avatar
Member
459 posts
Joined: Oct. 2011
Offline
Not sure why that should differ.

-b
http://www.racecar.no [www.racecar.no]
User Avatar
Member
92 posts
Joined: Aug. 2010
Offline
the difference is that if you do vdb adect without a solver sop (timestep = $F/24), it's doing the run-up for the entire frame range (0->$F) for every frame's advection; that's a lot of wasted effort.

If instead you use vdb advect in a solver sop (timestep = 1/24), you are only doing that frame's work (not the entire run-up).

FYI another advantage of vdb advect in the solver sop is that the velocity field can change per frame (whereas the alternative only evaluates velocity once).

Of course, the tradeoff is that the solver sop runs in serial, while a vdb advect ($F/24) could be executed in parallel.

-jeff
User Avatar
Member
38 posts
Joined: May 2017
Offline
I know this thread is a bit old, but its one of the only ones I can find that is dealing with close to my same problem. I'm trying to figure out how to advect points from VDB for 30 or so frames, and then stop advecting. So basically hold my point number at 90,000 points and not letting it just keep going up. I tried animating the time step feature on the VDB advectpoint node, but that doesn't seem to work.

Any help is really appreciated!

Thanks!
User Avatar
Member
7762 posts
Joined: Sept. 2011
Online
Use a Trail sop with 30 frame duration, or build your own logic in a sop solver: Set a birth frame attribute when adding new points, and remove the points when older than 30 frames, and only advect the points that are newest.
User Avatar
Member
7762 posts
Joined: Sept. 2011
Online
Use a Trail sop with 30 frame duration, or build your own logic in a sop solver: Set a birth frame attribute when adding new points, and remove the points when older than 30 frames, and only advect the points that are newest.
  • Quick Links