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!
Help using VDB Point Advect inside SolverSOP
5082 7 2- kevinthebright
- Member
- 208 posts
- Joined: Nov. 2010
- Offline
- bonsak
- 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
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
- kevinthebright
- 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
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
- bonsak
- Member
- 459 posts
- Joined: Oct. 2011
- Offline
- jbudsberg
- 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
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
- DavidJNelson
- 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!
Any help is really appreciated!
Thanks!
- jsmack
- Member
- 7992 posts
- Joined: Sept. 2011
- Offline
- jsmack
- Member
- 7992 posts
- Joined: Sept. 2011
- Offline
-
- Quick Links