Is there a way to stop VDB Advect pruning activated regions

   1284   3   1
User Avatar
Member
51 posts
Joined: 4月 2011
Offline
I am attempting to build a physically accurate simulation for an ionic flow engine inside of Houdini and I am running into a rather infuriating issue. I am mostly just playing right now trying to get something developed that I can then adapt into utilizing the real world physics, so nobody needs to worry about all of that yet (and hopefully shouldn't as that is just calculating forces).

The methodology that I am attempting to implement is to utilize various VDB volumes to advect the simulation based on a velocity volume. I'm currently calculating the velocity VDB using a gradient of a clipped section of a larger whole. So when the VDB Advect node takes over, it immediately prunes all padding space I try to give it and additionally clamps all volumes to a maximum of the bounding box of the original input geometry. If I make the input geometry have a bigger original bound, I get bigger. But I have not been able to find a way to either make it so it doesn't have a maximum nor resize at the beginning of a step and keep it.

Ideally, I want to use the bounds of the density volume at the start of each step and expand on them, so the volumes never run into invisible walls as they advect, but also keep it tight enough that the VDBs aren't unnecessarily bloated. I cannot even start working on the actual simulation solver until I get this working, so it is quite frustrating.

Also, I'm not using DOPs because I am anticipating that I will need the finite control over the calculations ahead of the advection steps. I may not even be able to use project non-divergent and have to rely on building the math such that it can't diverge.

I have attached my file from today's attempts. I commented most of the nodes with what I am using them for as well as singling out where there are bad behaviors that I can't seem to solve. There is one with VDB Combine not liking the types of vectors I have in the VDBs... so today I learned that a Vector3 on a VDB is not always the same... frustrating.

Attachments:
SolverDevelopment.hip (289.8 KB)

User Avatar
Member
874 posts
Joined: 10月 2008
Offline
You can change the vdb vector type with a primitive properties node.
--
Jobless
User Avatar
Member
51 posts
Joined: 4月 2011
Offline
Soothsayer
You can change the vdb vector type with a primitive properties node.

THANK YOU! That did take care of being able to use the VDB Combine node to force the maximum size of the VDB grid. I think I can work around it, but I would like to be able to eliminate that maximum. Any ideas there?
User Avatar
Member
874 posts
Joined: 10月 2008
Offline
Adam F
Soothsayer
You can change the vdb vector type with a primitive properties node.

THANK YOU! That did take care of being able to use the VDB Combine node to force the maximum size of the VDB grid. I think I can work around it, but I would like to be able to eliminate that maximum. Any ideas there?

You can do it in a loop based on count iteration set to feedback. Expand by a few voxels, calculate your vel field (gradient as you mentioned), then advect, deactivate excessive voxels, and repeat. Is it efficient? Probably not but it works. I also wish there was a better way to handle this.
Edited by Soothsayer - 2023年4月20日 07:03:07
--
Jobless
  • Quick Links