A cell noise pattern generator with options that can be used as an input to several other shader nodes to produce various effects. This is useful for creating many real-world patterns e.g. marble, granite, leather, etc.
Some examples of different Cell Noise 'Patterns' that have been animated using Time are shown below (select the images to view the animations):
|Noise1||Voronoise with static feature points|
|Noise2||Voronoise with moving feature points|
|Cell1||Cell noise with static feature points|
|Cell2||Cell noise with moving feature points|
|Worley1||Worley 1 with moving feature points|
|Worley2||Worley 2 with moving feature points|
Tutorials that use Cell Noise to create a caustic effect can be found here.
This shader provides seven patterns for now. Noise1 and Noise2 are Voronoise by Inigo Quilez with static/dynamic feature points. Cell1 and Cell2 are cell noise with static/dynamic feature points. Worley1 and Worley2 are Worley noise with the closest/second closest feature points. Alligator is another variation of Worley noise computed as the distance to the second closest feature point minus the distance to the closest feature point.
Cell Noise patterns connected to Displacement
Cell Noise patterns connected to Volume Displacement
This determines how noise patterns of different octaves are merged. If Additive is true, all noise patterns are simply added. If this is false, the largest value is selected.
The number of octaves over which the noise function is calculated (the fractal noise function is repeated at multiple frequencies, known as octaves; normally each octave is at about twice the frequency, i.e., half the size, of the previous one, but you can alter this with the lacunarity control).
If randomness is greater than 0, feature point locations are jittered. If the value gets closer to 0, patterns have a more regular, axis aligned look.
Click on images to view animations
Controls the average size of gaps in the texture pattern produced. Lacunarity means the change in scale between each octave - in musical scales this would be 2.0, meaning each octave is at twice the frequency / half the scale of the previous one, but for our purposes numbers that are near 2.0, but not actually 2.0 are best. In most cases, we recommend using the default value of 1.92.
Controls the amplitude, or range, of the output. Normally the output has values between 0 and 1; the amplitude control multiplies this.
Controls the scale of the noise function in x, y, and z directions.
Scaling the noise in one direction only can produce interesting results.
Scale X:1, Y:0.1, Z:0.1
Offset the noise in x, y, or z directions.
Specifies the coordinate space to use. These include World, Object, Pref and UV space coordinates. Pref is short for 'vertex in reference pose'. The plugin can pass these vertices to Arnold (in addition to the regular, deformed vertices) which can, in turn, be queried by the noise shader so that the noise 'sticks' to the reference pose and does not swim as the mesh deforms.
- Object space, where points are expressed relative to the local origin (center) of the object.
- World space, where points are relative to the global origin of the scene.
- Pref, which isn’t really a space, but rather a reference to a bind pose (note Pref does not work with NURBS surfaces).
- UV, for texturing using the object’s local UV coordinates. Note that this calls the faster 2D noise API, not the 3D noise like all other coordinate spaces.
Specify the name of the reference position user-data array. Previously, the name was hard-coded as "Pref", which is still the default. The array type can be RGB/RGBA as well as VECTOR.
Input coordinates of the 4D fractal noise function. The surface point is used when not defined (0). An arbitrary coordinate space can be specified manually by linking another shader into the
P parameter. This is useful for all sorts of things such as being able to animate patterns flowing through objects, having patterns move along with objects, etc.
For example a coordinate system that you're animating to move the noise field through an object (common technique for doing water running over a surface) or a coordinate system that is defined relative to a larger object (e.g. think of a spaceship that's comprised of many smaller objects, and you want to paint noise over the whole surface).
Below are animations that show Pref space coordinates in use with a deforming object. Note how the texture sticks to the object when using Pref space coordinates, compared to Object/World space coordinates where the texture swims.
Using World/Object Space - Texture Swims
Using Pref Space - Fixes Texture Swimming
The pattern of noise smoothly varies over time. This can be used to create interesting animations. For Noise1, Noise2, Cell1 and Cell2, the intensity of each cell changes along time. When selecting Noise2, Cell2, Worley1, Worley2, and Alligator the feature points themselves move along time if 0 < randomness, creating more dynamic patterns.
Multiply a specified color to the resulting noise pattern.
The color of each Voronoi cell is randomly picked from the connected node. An arbitrary RGB node including image and ramp can be connected here. Note that this is different from simple texturing using UV.
Stone and flake type textures achieved using Palette (with Density)
This parameter can be used to create flake noise by decimating some cells. This only works with cell1/cell2 for now.
Cell Noise connected to UV Coords of stone texture (aiImage). Scene here.
Caustic effect simulated using Cell Noise connected to a Gobo