Jump to content

Displace Volumes?


Akabane

Recommended Posts

Hey guys!

I'm trying to setup some houdini clouds.

Let's say i'm happy with my overall shape, and I have this volume that represents my cloud.

Now obviously when I render it it is supersmooth, which is not good.

How can I displace it? Inside volumeVOP there doesn't seem to be a displace volumevop or something...

I need it because I really need the wispyness of the end of the clouds and I thought the best way is to displace the volume, instead of doing some crazy superHeavyHighPolyGeo->volume afterwards.

But if i'm wrong, new solutions welcome!

Mixing volumes together or using volumeVOP with noise won't do, because i need it only in the external parts of the volume, not in all of it. Neither will do the pyro shader noise mod.

Any tip/help?

Thanks :)

Edited by Akabane
  • Like 1
Link to comment
Share on other sites

As far as I know there are two streams of thought that tend to work well. Each come with their own set of problems though.

1) you add your fine detail in the shader. You do the displacement and noise and edge sharpening inside the shader. This tends to work well for slow moving volumes, but can become troublesome when dealing with simmed data as you have to take care of your rest fields properly. When you have any kind of speed-up or slow-down (slow motion smoke for example) this type of setup can get quite complex.

2) For fast moving smoke, sim it at high res. Potentially sim it at low res first and then up-res it. And just perform some edge sharpening (remapping of the density) - but no extra detail in terms of noise/displacement is added in the shader. (problem here is lots of data and longer sim times - so best to optimize the solver.)

There is some interesting info on clouds modeling/shaping with noise here:

http://tessendorf.org/reports.html

Edited by pclaes
  • Like 1
Link to comment
Share on other sites

I would use displacement at render time in the shader, it's the only way to get sub-voxel details.

A good trick I found was to use the vel fields as Position for noise ( instead of Rest )

and mix it with another custom field used as a mask ( to specify where you need noise patches ).

Of course, that works only if your clouds don't move too much.

You could also try using the rest fields but you might get some "popping" problems.

hope that helps :D

  • Like 2
Link to comment
Share on other sites

Thanks a lot guys for your tips.

The clouds do not need to move, and they're not DOP simulated. It's basically all isooffset. I'll move the whole cloud container, so no internal movement needed.

So I'd prefer going with the shader displacement...the only thing is, I don't know where to start. Is there some guide or something that can walk me through the creation of a displacement shader? (Btw, does the volume need a specific displacement instead of the one used for example in the surface shaders?)

In the meantime I went with grid-dependent volume VOPS...they're not bad, but of course, they're resolution-dependent...I've been able to push a single cloud up to around 5 megavoxels but it's really really slow (either to process and of course visualize if the visualization is on).

Really looking forward to some tips for the displacement volume shader, if you can share some info it'll be great!

@peter: Thanks for the papers, those are really interesting!

Edited by Akabane
Link to comment
Share on other sites

Hi Luoqiulin, your cloud sure looks great!

But I'm seeing that you're modifying it with volumeVOP, so it's the same as me, resolution-dependant.

By the way, the image looks awesome!

What is your resolution for that thing, out of curiosity? :D

Link to comment
Share on other sites

What is your resolution for that thing, out of curiosity? :D

oh extremely high ,850*625*284 ,are you use isofffest? only one thread can be use ,it spend too much time on building it, about 15 minitues.and if the geo is complex it spend much much more time.

Edited by luoqiulin
Link to comment
Share on other sites

Yeah I'm using isooffset, and yes that is slow.

Actually I create the shape with a sampling ranging from 30 to 50 to keep the viewport speedy and the data footprint at the minimum, but when I bake the hires cloud I went up to 550, and it takes a good while (and occupies 450megs on disk per cloud file).

Skyrocketing it to 850 will more than double the processing time...the worst thing about all of this is that the geometry rop actually cooks inside the main houdini scene, freezing it until it has finished T_T

(And I'm also using multiple volume vops which take an eternity to process with that high res geo...)

Anyway thanks for sharing :D

Link to comment
Share on other sites

Yeah I'm using isooffset, and yes that is slow.

Actually I create the shape with a sampling ranging from 30 to 50 to keep the viewport speedy and the data footprint at the minimum, but when I bake the hires cloud I went up to 550, and it takes a good while (and occupies 450megs on disk per cloud file).

Skyrocketing it to 850 will more than double the processing time...the worst thing about all of this is that the geometry rop actually cooks inside the main houdini scene, freezing it until it has finished T_T

(And I'm also using multiple volume vops which take an eternity to process with that high res geo...)

Anyway thanks for sharing :D

i think we are using the same method , but i don't like freeze anything in the hip instead of rop as file

maybe someone should give us other new idea!!

Link to comment
Share on other sites

Hi

i'm testing clouds too , bunker's suggestion is helpful for me!

and this is some of my idea ,

wish it's helpful for you

:lol:

elo,

i'm pretty new to working with volumes in houdini and there's a bunch of things i really don't get.

how do you get this volumeVOP setup (seen in your screenshot) working without multiplying by density properly?

what exactly is this volume_sample_from_file good for? - helpfile is not cooperating with my brain in that case.

would you maybe share that file?

cheers,

-chris.

Link to comment
Share on other sites

elo,

i'm pretty new to working with volumes in houdini and there's a bunch of things i really don't get.

how do you get this volumeVOP setup (seen in your screenshot) working without multiplying by density properly?

what exactly is this volume_sample_from_file good for? - helpfile is not cooperating with my brain in that case.

would you maybe share that file?

cheers,

-chris.

ok here you are! :)

yun.rar

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

hi.

just trying some simple shader-based displacement and some questions came up very soon.

have a look at the setup here ( http://i.imgur.com/SseCz.png ) please.

a single image gives me the result i expected. but as soon as i start to animate i can see

the object moving through the noise ... as expected, too.

so i add ..

.. 1) a rest_SOP -> no changes .. as expected

.. 2a) a restP_VOP (not seen in the image but tested) -> empty image (no color/alpha)

or

.. 2b) a transform_VOP (not seen in the image but tested) to change from cam_space to object_space as stated in the aanoise_helpfile -> empty image (no color/alpha)

so i guess i need some help to set this up properly.

thx in advance.

cheers,

-chris.

Link to comment
Share on other sites

hi.

just trying some simple shader-based displacement and some questions came up very soon.

have a look at the setup here ( http://i.imgur.com/SseCz.png ) please.

a single image gives me the result i expected. but as soon as i start to animate i can see

the object moving through the noise ... as expected, too.

so i add ..

.. 1) a rest_SOP -> no changes .. as expected

.. 2a) a restP_VOP (not seen in the image but tested) -> empty image (no color/alpha)

or

.. 2b) a transform_VOP (not seen in the image but tested) to change from cam_space to object_space as stated in the aanoise_helpfile -> empty image (no color/alpha)

so i guess i need some help to set this up properly.

thx in advance.

cheers,

-chris.

To create rest position for volumes you will have to create 3 volume primitives named rest.x, rest.y and rest.z

The rest SOP creates restposition attributes for points.

  • Like 1
Link to comment
Share on other sites

thx for the reply .. but that little information won't do it for me.

where\how exactly do i have to add them?

do i have to pay attention to anything specific? (uniform sampling? initial value? ...)

and what about shading context? (is P -> restP enough ho get the information straight?)

cheers.

Link to comment
Share on other sites

thx for the reply .. but that little information won't do it for me.

where\how exactly do i have to add them?

do i have to pay attention to anything specific? (uniform sampling? initial value? ...)

and what about shading context? (is P -> restP enough ho get the information straight?)

cheers.

Sorry.

I´m not in front of Houdini now and have not looked into this for some time so I cant tell you the exact names of nodes you need.

However I found this old posts that might help you.

If I remember correct the .hip posted by old school in one of them is exactly what you are looking for.

Edited by mawi
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...