Using Bifrost, I'm able to input geometry, convert it to a volume, and then convert it back to a mesh - effectively using it as a sort of "volume builder." What I'm having some trouble figuring out, is how to "subtract" or "intersect" from this volume before converting it back to a mesh. Something like a volume boolean.
I would like to input 2 mesh geometries, convert them both to volumes. Then sample where the densities of the 2 volumes intersect, and set the density of those voxels to 0, to carve those parts out of the resulting volume.
I couldn't find anything in the example scenes that is doing something similar, and I'm having trouble wrapping my head around how to set it up on my own, so I figured I'd ask here to see if anyone can point me in the right direction.
Thanks!
Quick little test using the technique with a MASH ReproMesh:
Solved! Go to Solution.
Using Bifrost, I'm able to input geometry, convert it to a volume, and then convert it back to a mesh - effectively using it as a sort of "volume builder." What I'm having some trouble figuring out, is how to "subtract" or "intersect" from this volume before converting it back to a mesh. Something like a volume boolean.
I would like to input 2 mesh geometries, convert them both to volumes. Then sample where the densities of the 2 volumes intersect, and set the density of those voxels to 0, to carve those parts out of the resulting volume.
I couldn't find anything in the example scenes that is doing something similar, and I'm having trouble wrapping my head around how to set it up on my own, so I figured I'd ask here to see if anyone can point me in the right direction.
Thanks!
Quick little test using the technique with a MASH ReproMesh:
Solved! Go to Solution.
Solved by michael_nielsen. Go to Solution.
So you could create a mesh to volume node and then a volume to mesh node but add a volume shader to the chain and map a fractal to the density channel of the volume shader and animate the fractal (or whatever texture suits for extrusion or inversion ) which would give you a bool effect . Would that work for you?
So you could create a mesh to volume node and then a volume to mesh node but add a volume shader to the chain and map a fractal to the density channel of the volume shader and animate the fractal (or whatever texture suits for extrusion or inversion ) which would give you a bool effect . Would that work for you?
Hi @PhilRadford ,
Thanks for the reply! That's an interesting method but not quite the artistic control I'm looking for here.
What I'm really looking to achieve is something similar to C4D's volume builder:
https://www.youtube.com/watch?v=xR2Uozqcd0M
or Houdini's VDB combine:
See attached video, where I used a combination of Maya's boolean and Bifrost to demonstrate what I'm trying to do, except fully in Bifrost.
Hi @PhilRadford ,
Thanks for the reply! That's an interesting method but not quite the artistic control I'm looking for here.
What I'm really looking to achieve is something similar to C4D's volume builder:
https://www.youtube.com/watch?v=xR2Uozqcd0M
or Houdini's VDB combine:
See attached video, where I used a combination of Maya's boolean and Bifrost to demonstrate what I'm trying to do, except fully in Bifrost.
I have attached a scene file and screenshot showing how to perform volume CSG operations in the graph. Basically it creates a channel of voxel positions in the first volume, samples the other volume's voxel_signed_distance at those positions, then iterates over the voxel_signed_distance values and performs a csg operation (min for union, max for intersection and max(v,-v2) for subtraction).
There's one caveat though since we're using adaptive volumes. The volume into which the result is stored may not be refined to full resolution where the resulting surface will be, so if you want the surface to be fully refined where the result will be you may need to adjust the bandwidth parameter on the mesh_to_volume nodes.
Cheers,
Michael
I have attached a scene file and screenshot showing how to perform volume CSG operations in the graph. Basically it creates a channel of voxel positions in the first volume, samples the other volume's voxel_signed_distance at those positions, then iterates over the voxel_signed_distance values and performs a csg operation (min for union, max for intersection and max(v,-v2) for subtraction).
There's one caveat though since we're using adaptive volumes. The volume into which the result is stored may not be refined to full resolution where the resulting surface will be, so if you want the surface to be fully refined where the result will be you may need to adjust the bandwidth parameter on the mesh_to_volume nodes.
Cheers,
Michael
As there are many ways to do the same thing , try this.
Try this. Animate your geo, combine your geo, keep history or combine and create alembic, re import alembic (up to you) drag that geo into the BG, mesh to level set, volume to mesh, output.
use the Volume to mesh detail to get the size and detail you require. Just 2 nodes.
As there are many ways to do the same thing , try this.
Try this. Animate your geo, combine your geo, keep history or combine and create alembic, re import alembic (up to you) drag that geo into the BG, mesh to level set, volume to mesh, output.
use the Volume to mesh detail to get the size and detail you require. Just 2 nodes.
If you want holes and cut outs animate a bool, again combine, keep history or alembic it up and do the same process. use smoothing on the volume to mesh and detail size.
If you want holes and cut outs animate a bool, again combine, keep history or alembic it up and do the same process. use smoothing on the volume to mesh and detail size.
I forgot to attach json file. Here it is.
Cheers,
Michael
I forgot to attach json file. Here it is.
Cheers,
Michael
Exactly what I was looking for!
There are a number of things in there I wouldn't have figured out myself, but this makes perfect sense.
Thank you for clarifying what's happening in the graph - I'm slowly starting to understand how to work with different types of data in Bifrost now 🙂
Exactly what I was looking for!
There are a number of things in there I wouldn't have figured out myself, but this makes perfect sense.
Thank you for clarifying what's happening in the graph - I'm slowly starting to understand how to work with different types of data in Bifrost now 🙂
The example that you've given looks very neat and is something I've been trying to play around with. Would you mind sharing either a scene or a screenshot of your graph? Thank you!
The example that you've given looks very neat and is something I've been trying to play around with. Would you mind sharing either a scene or a screenshot of your graph? Thank you!
Can't find what you're looking for? Ask the community or share your knowledge.