Doc > Nodes > SOP > Noise

Doc > Nodes > SOP > Noise

Applies a noise to the geometry

Description

The noise can affect any attribute, not just the position.

Parameters

Name Type Description
amplitude float noise amplitude
tamplitudeAttrib boolean toggle on to multiply the amplitude by a vertex attribute
amplitudeAttrib string which vertex attribute to use
freq vector3 noise frequency
offset vector3 noise offset
octaves integer noise octaves
ampAttenuation float amplitude attenuation for higher octaves
freqIncrease float frequency increase for higher octaves
seed integer noise seed
useNormals boolean toggle on to have the noise be multiplied by the normal
attribName string set which attribute will be affected by the noise
useRestAttributes boolean toggle on to use rest attributes. This can be useful when the noise is animated and this node does not clone the input geometry. Without using rest attributes, the noise would be based on an already modified position, and would therefore accumulate on itself after each cook. This may be what you are after, but for a more conventional result, using a rest attribute will ensure that the noise remains stable. Note that the rest attribute can be created by a RestAttributes node
restP string name of rest position
restN string name of rest normal
operation integer operation done when applying the noise (add, set, mult, substract, divide)
computeNormals boolean toggle on to recompute normals if the position has been updated

Edit code in JsFiddle , Codepen , view in a new tab or Open in the Editor


// create a scene
const scene = new PolyScene();
const root = scene.root();

// create a sphere
const geo = root.createNode('geo');
const sphere = geo.createNode('sphere');

// add a noise
const noise = geo.createNode('noise');
noise.setInput(0, sphere);
noise.p.amplitude.set(0.5);
noise.p.useNormals.set(true);
noise.flags.display.set(true);

// add a light
root.createNode('hemisphereLight');

// create a camera
const perspectiveCamera1 = root.createNode('perspectiveCamera');
perspectiveCamera1.p.t.set([5, 5, 5]);
// add orbitControls
const events1 = perspectiveCamera1.createNode('eventsNetwork');
const orbitsControls = events1.createNode('cameraOrbitControls');
perspectiveCamera1.p.controls.setNode(orbitsControls);

// mount the viewer
const element = document.getElementById('app');
perspectiveCamera1.createViewer(element);