Jump to content

"Pyroclastic noise" demystified


Hazoc

Recommended Posts

so old school was kind enough to help out.. i have the advection working now and a mask (kinda) to keep some of the noise away from certain areas of the volume. the frizzies are still not rendering with what i would expect for a less opaque alpha...

thoughts?

Link to comment
Share on other sites

If you were talking about the animation i've posted: there are no wispy or softer foreground clouds. they are all the same. its just that the camera is very close to the first cloud.

I dont know how to get advection and masking working - how did you get it to work? I would like to see some renderings too.

Link to comment
Share on other sites

These past few days I had a second crack at this cloud stuff and this is what I got to thus far.

It works by using "pyroclastic" noise to offset the SDF value. Most effort was making something that seems reasonably intuitive as a tool and flexible enough to be re-purposed for other than cloud stuff.

I will add point cloud support tomorrow. Although I don't think point-clouds are really best for defining cloud shape completely (due to the difficulty in completely eliminating the bunch of spheres look) they are still very useful to control unruly fractal noise. And will keep adding features I guess. I want it to have the capability to seamlessly and naturally transition cumulus cloud areas to wispy stuff, should be reasonably straightforward with this architecture :)

The shader takes as input an SDF saved to disk and/or a procedural shader based gradient. The gradient can be used for roughly spherical cloud shapes or planes (think cloud blanket like in the example bellow). You could use it to flatten the bottoms of clouds by selecting an appropriate blending mode.

The veins are for creating wispy stuff (example tomorrow prob) and radial falloff is what it says on the tin.

You'll notice "Advection" sliders where applicaple, this controls how much distortion is applied by the noises in the Advection tab.

Also, you'll see in the scene an easy very cheap and equally effective method to fake subsurface lighting in volumes. Basically you duplicate the light one to 3 times and turn Off auto shadow map generation on the duplicates, then you tweak the intensity and shadow blur for the desired effect.

The sample renders show the stanford bunny cloudyfied sitting on a fluffy cloud blanket created with the gradient option.

As soon as SideFX fix the bug with assetized cvex shaders not working I will publish an otl.

Hope you enjoy this! :)

btw, if you find the procedural fails to render or renders incompletely; turn the object display flag Off and On. Leaving the Octree divisions at 1 helps a lot although its not optimal for speed. I think the Octree generation stuff is highly unreliable for me (reported to support).

Volunoiser.rar

post-1495-130895794151_thumb.jpg

post-1495-130895795725_thumb.jpg

post-1495-130895796993_thumb.jpg

post-1495-130895797932_thumb.jpg

  • Like 2
Link to comment
Share on other sites

So I went in to add point cloud support and ended up re-organising the whole thing and spending a most of the time on the gradient. I deleted the veins and radial falloff since their function can now be achieved with the new gradient.

Added a bias function to the gradient which allows you to flatten a side of the gradient; This is useful to flatten the bottom of clouds as seen in the cloud blanket the bunny and point cloud turd is sitting on. This doesn't currently work with the gradient "repeat" function.

Amongst other things I plan to proceduralize the output with a layering module. So that you can layer up the different outputs in the order and blending mode of your choosing. I figure it would be really handy to do stuff like add or take away bits of say a gradient with a point cloud.

Each effect will be able to select from a set of different noises and advectors. And some parameters will get "modifier" input so you can do stuff like affect pyroclastic'ness with a noise.

Btw, found more bugs/limitations of cvex.

If you save a new point cloud there is no way to tell cvex to reload it short of restarting houdini (including pressing force re-compile) :(

Also cvex occasionally stops responding to parameter changes unless you press force compile :(

And there is a memory leak whilst using cvex. I guess its the preview volume leaking it, not sure. :(

cheers :)

S

post-1495-130909593885_thumb.jpg

Volunoiser_V2.rar

  • Like 1
Link to comment
Share on other sites

serg, i've looked into your files but I cant say much about it since they are too complex for me right now.

All I can say is that I like your rendering results and the amount of control!

Thank you very much for sharing.

Edited by Sven
Link to comment
Share on other sites

Serg, that is some very nice vops usage together with the volume procedural. Thanks for sharing.

There were two things that I was wondering about:

1) inside the pointcloud lookup on the deepest level in the blendpoints subnet, where you are using the point.distance - I assume you are performing a weighted average similar to what the pcfilter gives you?

2) I did not see any pointcloud transformations, no "N" or "up" tranforms. So no rotating puffy spheres with noise sticking to them (could be really useful to have the rotation coming from particles). This would be a nice addition. - It already would be a great example file to include in Houdini as it is.

**) in regards to the reloading of pointcloud files, have you tried adding [$FF] to the end of your string (this makes it time dependent without actually changing the filename). As in: mypointlcoud.bgeo[$FF]

Link to comment
Share on other sites

**) in regards to the reloading of pointcloud files, have you tried adding [$FF] to the end of your string (this makes it time dependent without actually changing the filename). As in: mypointlcoud.bgeo[$FF]

Ooo, I did not know this. :)

Link to comment
Share on other sites

There were two things that I was wondering about:

1) inside the pointcloud lookup on the deepest level in the blendpoints subnet, where you are using the point.distance - I assume you are performing a weighted average similar to what the pcfilter gives you?

To be honest I dont know if you could define it using that mathematical term. All I can remember of my thought process is that I needed a distance based ramp, per point, then blur them all together with the pcfilter (or not, if 1 point limit). I have a different version that just reads pc P and the distance is computed outside the pc shader after pcfilter, this results in a cellular look.

2) I did not see any pointcloud transformations, no "N" or "up" tranforms. So no rotating puffy spheres with noise sticking to them (could be really useful to have the rotation coming from particles). This would be a nice addition. - It already would be a great example file to include in Houdini as it is.

I will be experimenting with this at some point, as well as importing Age for use as a modifier.

The problem I find with strictly sticking the noise to the points is that the noise becomes incoherent between intersecting particles; the resulting intersections reveal their spherical nature. Another thing that happens when the particles are close together but need a large radius, is that the random offset of every particle's noise will start to fill each others gaps, and you start to lose the intended texture altogether. Would be cool to figure something out to deal with that. I've yet to play with "powernoise".

**) in regards to the reloading of pointcloud files, have you tried adding [$FF] to the end of your string (this makes it time dependent without actually changing the filename). As in: mypointlcoud.bgeo[$FF]

Neat trick! will try that :)

Link to comment
Share on other sites

  • 2 weeks later...

Serg :

Really impressive.

I played with it a bit and I wonder why you didn't plug the gradient transform nodes (Gradient1_trans)directly after P.

Since you use a Vector4 for the ShiftNoise, your actual setting make changes on 4 dimensions. I think It could be better to get a "pure" 3d offset ( better when you plan to use more than one volume box or instances ).

The "op:" expression doesn't work to put a filename to the pointcloud file. I suppose it's because of the bug you noticed. It's a bit weird because the opengl preview works ...

Anyway it's a nice piece a shader. thx to share it.

Link to comment
Share on other sites

  • 1 year later...
  • 3 months later...

Hi, i try to achieve render like this one in the book "Volumetric Methods in Visual Effects" (see img1). I create point cloud about 14 millions of points and use it to sample density at render time, as andreu.lucio did. but my render always has an artifacts (dark curves, for lower density i think)(img2). I realy don't know how to fix it. Can anybody help?

My scene file is attached.

Thanks.

post-8524-0-63463600-1382648482_thumb.jp

render_volume.hip

post-8524-0-77638800-1382648873_thumb.jp

Edited by thx1138
Link to comment
Share on other sites

  • 1 month later...
  • 10 years later...

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...