Jump to content

sculpting volumes


freejonah

Recommended Posts

Hello Odforce community,

I've begun really digging into the volume tools in Houdini and am looking for some tips on sculpting volumes. I've been playing with IsoOffset, metaballs and other things. The rendering aspects of volumes feel very nice, and I'm getting good results. The shader writing is simple enough, and I'm doing fine there too. It's actually modeling and animating them that seems to have me a bit stumped ( granted I've only been doing this for 1 day. )

What I'm trying to do is figure out how to really use sops to have good control over density modeling and managing the rest position that the shaders use to build noise and other rendertime attributes. Some basic questions:

1. How can you use a rest position with a metaball? Will it transform correctly?

2. How do you control density so that it falls off gradually towards the volume's boundary, rather than just butting up against the edge?

3. Can we use surface meshes to build volumes where the uv, rest or some other coordinate drives the look and feel of the volume?

4. Is it expected that we fill an empty volume with density values from points and other primitives? If so, how is this done?

5. Are there ways to offset density values in the volume primitive, rather than multiplying them? Dropping noise values down below 0 around the edges always gives you those nice wispy effects. I would love to have that option.

Sorry if these questions are a bit broad. I'm used to being able to use sops to build very specific geometry but I'm feeling like the volumes are a bit of a black box right now. I'm willing to bet I just don't have an understanding of it yet.

I, of course, would love to see some hip files that people have that demonstrate some of these abilities. Any help would be GREATLY appreciated.

Many many thanks in advance,

jonah

Link to comment
Share on other sites

start taking a look at volume vops. pipe an object ( a sphere or whatever ) into an isooffset SOP, change the output type to fog volume, pipe that into a volume vop and go to town ! I use this setup alot to create initial states for pyro. I've attached an example.vopPyro.hip

-ranxx

Hello Odforce community,

I've begun really digging into the volume tools in Houdini and am looking for some tips on sculpting volumes. I've been playing with IsoOffset, metaballs and other things. The rendering aspects of volumes feel very nice, and I'm getting good results. The shader writing is simple enough, and I'm doing fine there too. It's actually modeling and animating them that seems to have me a bit stumped ( granted I've only been doing this for 1 day. )

What I'm trying to do is figure out how to really use sops to have good control over density modeling and managing the rest position that the shaders use to build noise and other rendertime attributes. Some basic questions:

1. How can you use a rest position with a metaball? Will it transform correctly?

2. How do you control density so that it falls off gradually towards the volume's boundary, rather than just butting up against the edge?

3. Can we use surface meshes to build volumes where the uv, rest or some other coordinate drives the look and feel of the volume?

4. Is it expected that we fill an empty volume with density values from points and other primitives? If so, how is this done?

5. Are there ways to offset density values in the volume primitive, rather than multiplying them? Dropping noise values down below 0 around the edges always gives you those nice wispy effects. I would love to have that option.

Sorry if these questions are a bit broad. I'm used to being able to use sops to build very specific geometry but I'm feeling like the volumes are a bit of a black box right now. I'm willing to bet I just don't have an understanding of it yet.

I, of course, would love to see some hip files that people have that demonstrate some of these abilities. Any help would be GREATLY appreciated.

Many many thanks in advance,

jonah

Link to comment
Share on other sites

Super cool. thanks for this! It was well timed since I've just now started poking around into manipulating density fields in vops. I've had some luck trying to manipulate the values with expressions using the volumemix sop, but I can see that this is a much faster way to go.

The particular problem I'm working on has to do with carrying uv coordinates through the volume system all the way to the renderer. Essentially I'm trying to get "P" out of my noise generating at the shader level by replacing it with something that deforms with the geometry. Imagine an animated guy walking across the scene. I'm trying to fill him with puffy cloud stuff without having the noise pass through him. I want the noise to move with his body, as if he he's made of big shaggy carpet stuff.

I started experimenting with creating a "uvw" volume, and it's been really good! The tricky bit is stuffing coordinate values into a volume that doesn't really know that the stuff around it is moving. Currently I'm stuffing a block of points with uv values that relate to the geometry nearest to it, then source those uvw values from a volumemix node using nearpoint() followed by a point() expression. I then including these four volumes at render time:

o: density

1: uv.x

2: uv.y

3: uv.z

this does a nice job of "gluing" the coordinates the shader uses to the volume at render time. I would really like to use the volumevop to do this but I'm not sure how to use the pointcloud stuff yet. Those vop nodes don't have help cards, unfortunately ( RFE! ).

Link to comment
Share on other sites

Well, if I understand you correctly you want to have volume geometry in an object, deforming with it as it bends and moves?

What you are looking at is a deforming object. Inside that object is a volume (here represented as a surface). As the surface deformes, the volume inside it deformes as well.

Link to comment
Share on other sites

start taking a look at volume vops. pipe an object ( a sphere or whatever ) into an isooffset SOP, change the output type to fog volume, pipe that into a volume vop and go to town ! I use this setup alot to create initial states for pyro. I've attached an example.Attached File vopPyro.hip (1.03MB)

I hope nobody minds if join in and maybe ask a few questions about the above file / iso offset workflow.

First the file :-

The iso offset is set to use a fog volume this of course just gives you a uniform density. Is it not more useful for later on when you shade your volume to have a sdf volume.I dont know if its even possbile to convert later on to a sdf .I just thought it contains more data for shading later down the track.

The volume mix node has its default value of the incoming density has its value multiplied from 1 to 10 .I thought density is either 1 inside and zero outside.How does this help ?.

Volumevop1 :- As I understand it you are using noise to alter the density attribute.The noise just scales the density value which you then clip so the values of the volume are 10 or zero I presume.Is there a way to read values at any point in the volume ? so far all I have been able to do is read min and max values.

volumevop2 :- I am unsure here what this vop is trying to do again it seems to hard to read values of just what the vop is doing.

So for shading things like , smoke and clouds etc what are the main things to consider when mixing volumes.I have attached a couple of volume vops that change over time I have been putting together comments welcome.

rob

rse_fluids_manipVolume_nc.hipnc

Link to comment
Share on other sites

I've responded to some of your questions below.

"I hope nobody minds if join in and maybe ask a few questions about the above file / iso offset workflow.

First the file :-

The iso offset is set to use a fog volume this of course just gives you a uniform density. Is it not more useful for later on when you shade your volume to have a sdf volume.I dont know if its even possbile to convert later on to a sdf .I just thought it contains more data for shading later down the track."

I'm not using this volume as an object which is to be shaded. I'm using this volume as a source for a fluid.

"The volume mix node has its default value of the incoming density has its value multiplied from 1 to 10 .I thought density is either 1 inside and zero outside.How does this help ?. "

(see above).. this is a density source for fluid. I assumed that if the densities were higher in the volume, the fluid solver would pick up on this and use them in it's source. I actually haven't confirmed this, but it's still useful to multiply the densities if you wanted to animate the strength of the emitter overall.

"Volumevop1 :- As I understand it you are using noise to alter the density attribute.The noise just scales the density value which you then clip so the values of the volume are 10 or zero I presume."

No. The threshold parameter just clips values below the threshold, it doesn't alter the values themselves. This is so I can cut out a portion of the noise.

"Is there a way to read values at any point in the volume ? so far all I have been able to do is read min and max values."

of course. I'm not sure what you mean here though. That is the whole point of the volume vop (to read a point in the volume). Do you mean read the values outside of the volume vop or what ? If you look at the gvolumevopglobal, the ix,iy,iz parameters are the indices of the voxel being worked on.. is that what you mean ?

"volumevop2 :- I am unsure here what this vop is trying to do again it seems to hard to read values of just what the vop is doing. "

volumevop2 is creating a spherical falloff shape. You can get a good picture of what the volume vops are doing by clicking the display flag and turning your shading to smooth.

"So for shading things like , smoke and clouds etc what are the main things to consider when mixing volumes.I have attached a couple of volume vops that change over time I have been putting together comments welcome.

rob

"

well, once again I didn't mean for this to be shaded (only as a source for fluid). I'll leave someone else to answer those questions.

-ranxx

Link to comment
Share on other sites

Here is a quick demonstration of what sort of thing I'm building. In the hip file note that I've made a slightly modified version of "billowy_smoke" to properly utilize the uvw volume, plus it treats the noise a bit differently.

If anyone has a better way of doing this uvw buffer stuffing thing I've doing, like in the volume vop, please share. Thanks!

post.hip

volume_test.mov

Link to comment
Share on other sites

  • 2 weeks later...

Hey Jonah,

Haven't found a complete answer to your meta rest position issue, but maybe a pointer to something you can use. In the rest sop there is a menu item that is labeled Add Quadratic/Metaball Mattrices". When selected it add adds a whopping 16 primitive attributes... This appears to be a 4x4 matrix although I don't yet know what the values represent or what to do with them in the shader.

The possibility of a solution may start here...

Also you mentioned to me the other day at SESI that you were looking for a way to partition metaballs in object space. This is easily done with the meta groups sop.

Hip attached

Hope your day is fine.

Dave

DK_Metagroups_and_meta-rest.hip

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...