blink_fog_3d v2.3
This location is for Registered Users Only.
Perhaps you need to login or register.
14.0, 13.2, 13.1, 13.0, 12.2, 12.1, 12.0, 11.3, 11 or later
Linux, Mac, Windows
Blink Fog 3D
blink_fog_3d is a tool for rendering 4d noise through a render camera with lots of additional user options to change the look and feel of the noise. The advantage of this blinkscript versus traditional 3d noise setups is the noise is rendered entirely in blinkscript and doesn't require the user to place a box or cards of noise in the scene. The node has a built in depth ramp so you can choose what depth from the camera the noise is visible and choose how the noise falls off as it gets closer to the camera (useful for making fast moving wispies). The 4d aspect of the noise allows you to animate the seed of the noise without having a visible direction to the noise (xyz) which can be used to make the noise look like smoke or steam. A depth input can also be used to apply holdouts to the noise for use as a procedural fog generator. Note that there is an 'invert depth' checkbox to use 1/z. The samples per ray knob is the general quality slider, the more samples you provide, the less noise you get but the slower the node becomes. The node is pretty fast if you have a fast gpu and a $GUI expression can be used on the samples per ray knob to make it more responsive locally.
Thank you to Eliot Eshelman for the 4D Perlin simplex noise function (https://github.com/BogdanDenis/OpenGL/blob/master/simplexnoise.cpp), as well as Mads Hagbarth for a reference conversion.
Usage
You can add the `src/python` directory to your `NUKE_PATH` to add the gizmo to your node menu or simply open the example file to find the group node.
New in Version 2.3
- Removed the 'pixel offset' knob and inherit that functionality from the camera input
- Added support for 'window translate' and 'window scale' knobs on the camera input
New in Version 2.2
- Added a 'pixel offset' knob to effectively translate the image window before rendering, this can be animated to match camera shake.
- Fixed a bug where shapes would dim when depth ramp enabled because sampling started at beginning of depth range
New in Version 2.1
- Added a 'max iterations' knob to further restrict the number of ray marching steps
- Fixed bug when objects were > 100000 units away from camera which, due to loss of precision, would cause the normal to be nan
- Ensured that 'hit tolerance' is positive
New in Version 2.0
- Depth ramp is now optional
- This allows you to use the shape options fully in world space without worrying about them leaving the depth range during a camera move
- If shapes are used we now start sampling noise where the ray first intersects the shape and stop where the ray exits the shape
- This enables much more optimal sampling
- The various ramp groups (other than depth) have been simplified into a single dropdown menu
- The planar ramp has been replace with 'in', 'out', and 'falloff' knobs
- All of these values are expected to be a positive distance from the plane, where in is the distance below, and out is the distance above
- The distance from the plane can now be specified on either side individually rather than being mirrored
- If the depth was in camera space and the holdout was far from the camera and moved from the center of frame to the edge, it would appear to move in front of the fog
- Added a 'camera space' checkbox so that if the depth is in camera space the sampling can account for this
- Ensured that node and example work in Nuke 12 and 15
New in Version 1.8
- added optional exponential falloff to sphere, box, and plane ramps
New in Version 1.7
- a new 'spherical ramp' allows you to create a spherical ramp for the noise
- a new 'box ramp' allows you to create a box of noise
New in Version 1.6
- the 'y ramp' is now a 'planar ramp'
- this allows you to orient the noise along any axis
- you can translate the plane of noise
New in Version 1.5
- a new 'y ramp' knob allows you to vary the noise density along the y-axis in worldspace
New in Version 1.4
- this is a patch release v1.3.1 that fixes a bug with the deep (proxy) mode not switching to the correct kernel
- Nukepedia does not let me version up to 1.3.1 :(
New in Version 1.3
- Deep support!
- Use the 'deep_holdout' input along with the following to work with deep data
- Use the 'holdout mode' 'deep (proxy)' for fast deep that will work for most scenarios, but can have artifacts
- Use the 'holdout mode' 'deep (full)' for slower but completely accurate deep
- Use the 'output deep' checkbox to output deep data without holdouts
- Use the 'deep_holdout' input along with the following to work with deep data
- Overscan
- Use the 'overscan' knob to specify any overscan
Comments
I´ll will push this to the limit with your new Deep support !
Big thanks Owen !
A ramp in the y direction in screen-space? What would you be ramping? The depth? Or just the final value? You could just multiply by a ramp if its to ramp the value, but if you want to vary the depth it should work to pass a ramp in as the holdout input. If the input ramps from the deepest depth value you want to use, to the shallowest depth value, I think that would achieve what you're looking for. You can also supply an alpha on the holdouts if you want to ramp the transparency.
Also worth noting that if the holdouts don't seem to be working correctly there is an 'invert_depth' checkbox for when the depth is provided as 1/z.
This tool is fantastic. Thanks for providing it for the community at large!
I have the same question as Jorge.
We often try to craft fog/atmosphere so that it's thicker near the ground and fades off in the global "3D" y-direction. Sometimes this does align with screenspace..bu t other times it doesn't since the camera might be at an angle to the ground or tilted to the sky etc.
Thanks!
-Jake
Thanks for that info - that makes a lot more sense, I can look into adding some 3D bounds to the noise later this week.
Best,
Owen
The latest version now contains a second ramp that allows you to vary the noise along the y-axis. Hopefully that achieves what you're looking for. Please let me know if you have any questions!
Thanks,
Owen
-Jake
RSS feed for comments to this post