Noise expression examples

In addition to the expression examples provided here, you can load predefined noise expressions in the XGen Expressions Editor. Click the Samples tab and browse to Global > Color > Procedural > Noise.

Use two Ptex maps in a Noise expression

In this example, the output values of two Ptex maps are combined, and then modified in a Noise expression.

#Two Ptex maps to be combined.
$a=map('${DESC}/paintmaps/color');#3dpaint,5.0
$b=map('${DESC}/paintmaps/color1');#3dpaint,5.0

#Declare local variables to control noise functions.
$freq_fine =0.653; #0.00,1.00
$freq_coarse =22.000; # 0,100
$X = 1.000; #0.00,10.00
$Y = 1; #0.00,10.00
$Z = 1; #0.00,10.00


$frequency = ($freq_fine+$freq_coarse) * [$X,$Y,$Z];

$Strength=1.000;
$Contrast =0.793;
$Color =1.000; #0,1
 
$Cnew = ($Color ? noise($P*$frequency) : noise($P*$frequency))-> contrast($Contrast);
mix($Cs,$Cnew,$Strength)*($a/$b)

Create multiple layers of noise: simple

This noise expression generates multiple layers of noise using a Perlin noise function and three mathematical functions.

#Declare local variables to control noise and math functions.
$hi =1; #0.00,1.00 #slider created, range is 0 to 1.
$lo =0; #-1.00,0.00 #slider created, range is -1.0 to 0.
$contrast =0.59155;
$freq =10.4176; #0.1,30 #slider created, range is 0.1 to 30.0.

#Noise calculation: smoothstep() uses inputs and creates a noise field. This result is modified by the contrast setting.
smoothstep(noise($Pref*$freq), $lo, $hi) -> contrast($contrast)

Create multiple layers of noise: complex

This complex noise expression generates multiple layers of noise using a Perlin noise function and several mathematical functions.

#Decalare local variables for input values to noise functions.
$Offset =0.1750;  
$liquidScale =7.3150;#0,100.0
$zitsLo =0.2600; 
$zitsHi =1.0000; 
$allLo =0.1450; 
$allHi =0.8850; 

#Declare local variables to control noise functions.
$noiseScaleFine =3.1350;#0,300.0 #slider created, range is 0 to 300.
$noiseScaleLarge =4.5300;#0,100.0 #slider is created, range is 0 to 100.

#Using Pref and Offset, noise and scale in a variable to move the noise.
$PP = ($Pref + $Offset) + noise($Pref*$liquidScale);

#Nosie being modified with the $nBuf local variable. Fbm() is a type of noise function.
$nBuf = (fbm($PP * $noiseScaleFine)+ fbm($PP * $noiseScaleLarge)) / 2; 

#Declare local variable for taking and applying a smoothstep to the Lo, Hi and Noise values.
$zitsBuf = smoothstep($nBuf, $zitsLo, $zitsHi);

#Declare local variable for taking and applying a smoothstep to create another layer of noise.
$liquidSkin =(smoothstep($zitsBuf + $nBuf,$allLo,$allHi));

#Invert multiplies the computed value by -1. -1 x -1 =1, 1 x -1=-1. You can also use ~ rather than $invert
$Invert=1;# 0,1

#$C is a local variable, $Cs is the evaluated color at the primitives location on the surface. The color is being modified by the local variable $Cnew.
#$E is a math function for Euler’s Number (an irrational constant). 

$C=($Cs*$Cnew)+(1-$Cs);
$E=(((1-$Cs)*$Cnew)+($Cs))

#Conditional statement. If $Invert is less than 0.5 then use $C else use $E.
($Invert < .5) ? $C : $E