Coherent (Simplex) noise over space — smooth, organic, cloud-like variation, the field for natural randomness that neighbouring points still agree on.
Declarative element:
<sk-noise-spatial-field>
Global: available as sk.NoiseSpatialField inside a scene <script>.
This is the noise member of the SpatialField family: like every field it
turns where into how much — a scalar
weight over space that consumers read by #id (field="#id") to vary an effect
from place to place. Here the weight is 3D Simplex noise mapped to [0, 1], so it
varies smoothly and organically rather than by a geometric shape.
Key attributes. frequency sets the base scale — higher packs more, smaller
features into the same space. octaves layers several frequencies (fractional
Brownian motion) for fine detail; lacunarity is the frequency step between
octaves and persistence how quickly their amplitude falls off, together tuning
how rough versus smooth the result looks. seed picks a specific noise pattern
deterministically — change it for a different-but-similar field. The noise rides
the field's own frame, so because the field is a scene-graph node, animating its
x/y/z scrolls the pattern for flowing noise. The pattern fills all of space
(there is no boundary), so visualize marks the field's origin rather than an
extent.
Related. It shares the field="#id" model with every field. Its uncorrelated
counterpart is sk-random-spatial-field (independent values per cell, no
smoothness); geometric alternatives include sk-spherical-gradient-field.
Typical consumers are a sk-tonemap (mask the shading), a
sk-simple-point-constraint (per-clone strength), and
sk-field-constraint (drive one property).
constructor(config?: { frequency?: number; octaves?: number; lacunarity?: number; persistence?: number; seed?: number; remapCurve?: SampledCurve; visualize?: boolean; interactiveControls?: boolean; visualizationMarkerSize?: number; visualizationColor?: string; visualizationZeroWeightColor?: string; visualizationSplineThickness?: number; visualizationSplineOccludedOpacity?: number; visualizationMarkerOpacity?: number; id?: string; x?: number; y?: number; z?: number; h?: number; p?: number; b?: number; quaternion?: Quaternion; sx?: number; sy?: number; sz?: number; s?: number; class?: string; style?: string })
Inherited from: SpatialField, VisualizableSceneNode, SceneNode, SkenraAnimatable
— see those pages for inherited members.
| Property | Type | Default | Description | Declared by |
|---|---|---|---|---|
frequencyanimatable |
number |
1.0 |
Spatial frequency of the noise — higher values pack more variation into the same space. | NoiseSpatialField |
octaves |
number |
4 |
Number of noise layers (1-8). | NoiseSpatialField |
lacunarity |
number |
2.0 |
Frequency multiplier per octave. Not animatable. | NoiseSpatialField |
persistenceanimatable |
number |
0.5 |
Amplitude falloff per octave — how quickly successive octaves contribute less. | NoiseSpatialField |
seed |
number |
0 |
Deterministic seed. Not animatable. | NoiseSpatialField |
remapCurveanimatable |
SampledCurve |
— | Optional curve that reshapes this field's raw [0, 1] output. | SpatialField |
visualize |
boolean |
false |
Whether the visualization is visible (wireframe splines + center marker). | VisualizableSceneNode |
interactiveControlsconfig-only |
boolean |
— | Whether to show interactive controls (draggable markers). Requires visualize. Default: false | VisualizableSceneNodeConfig |
visualizationMarkerSizeconfig-only |
number |
— | Size of visualization markers in pixels. Default: 20 | VisualizableSceneNodeConfig |
visualizationColorconfig-only |
string |
— | Color for visualization geometry and markers (CSS color string). Default: VISUALIZATION_HIGHLIGHT_COLOR ('#FF8C00'). | VisualizableSceneNodeConfig |
visualizationZeroWeightColorconfig-only |
string |
— | Color for zero-weight boundary geometry (outer radius, origin plane, etc.). Default: VISUALIZATION_ZERO_WEIGHT_COLOR ('#888888'). | VisualizableSceneNodeConfig |
visualizationSplineThicknessconfig-only |
number |
— | Spline stroke thickness in pixels. Default varies by subclass. | VisualizableSceneNodeConfig |
visualizationSplineOccludedOpacityconfig-only |
number |
— | Opacity of visualization splines when occluded. Default: 0.5 | VisualizableSceneNodeConfig |
visualizationMarkerOpacityconfig-only |
number |
— | Opacity of visualization markers. Default: 0.9 | VisualizableSceneNodeConfig |
idconfig-only |
string |
— | Unique identifier for the node, reflected to the host id attribute. |
SceneNodeConfig |
xanimatable |
number |
0 |
Gets the X position component. | SceneNode |
yanimatable |
number |
0 |
Gets the Y position component. | SceneNode |
zanimatable |
number |
0 |
Gets the Z position component. | SceneNode |
hanimatable |
number |
0 |
Gets the heading (Y-axis) rotation in radians. | SceneNode |
panimatable |
number |
0 |
Gets the pitch (X-axis) rotation in radians. | SceneNode |
banimatable |
number |
0 |
Gets the bank (Z-axis) rotation in radians. | SceneNode |
quaternionanimatable |
Quaternion |
— | Gets the rotation as a quaternion. | SceneNode |
sxanimatable |
number |
1 |
Gets the X-axis scale factor. | SceneNode |
syanimatable |
number |
1 |
Gets the Y-axis scale factor. | SceneNode |
szanimatable |
number |
1 |
Gets the Z-axis scale factor. | SceneNode |
sconfig-only |
number |
— | Uniform scale factor for all axes (overrides sx, sy, sz if provided) | SceneNodeConfig |
classconfig-only |
string |
— | Standard HTML class applied to the node host at construction |
SceneNodeConfig |
styleconfig-only |
string |
— | Standard inline style applied to the node host at construction |
SceneNodeConfig |
| Property | Type | Default | Description | Declared by |
|---|---|---|---|---|
frequencyBasebase value |
number |
— | The base (non-animated) value of frequency. |
NoiseSpatialField |
persistenceBasebase value |
number |
— | The base (non-animated) value of persistence. |
NoiseSpatialField |
remapPhaseanimatable |
number |
0 |
Horizontal remap phase — an animatable scalar that translates a present | SpatialField |
enabled |
boolean |
true |
Whether this field is enabled. When disabled, evaluate() returns 0. |
SpatialField |
hRad |
number |
0 |
Gets the heading (Y-axis) rotation in radians. | SceneNode |
pRad |
number |
0 |
Gets the pitch (X-axis) rotation in radians. | SceneNode |
bRad |
number |
0 |
Gets the bank (Z-axis) rotation in radians. | SceneNode |
hDeg |
number |
0 |
Gets the heading (Y-axis) rotation in degrees. | SceneNode |
pDeg |
number |
0 |
Gets the pitch (X-axis) rotation in degrees. | SceneNode |
bDeg |
number |
0 |
Gets the bank (Z-axis) rotation in degrees. | SceneNode |
xBasebase value |
number |
— | Gets the base (non-animated) value of X position. | SceneNode |
yBasebase value |
number |
— | Gets the base (non-animated) value of Y position. | SceneNode |
zBasebase value |
number |
— | Gets the base (non-animated) value of Z position. | SceneNode |
hBasebase value |
number |
0 |
Gets the base (non-animated) value of heading (Y-axis rotation). | SceneNode |
pBasebase value |
number |
0 |
Gets the base (non-animated) value of pitch (X-axis rotation). | SceneNode |
bBasebase value |
number |
0 |
Gets the base (non-animated) value of bank (Z-axis rotation). | SceneNode |
quaternionBasebase value |
Quaternion |
— | Gets the base (non-animated) quaternion rotation. | SceneNode |
sxBasebase value |
number |
— | Gets the base (non-animated) value of X-axis scale. | SceneNode |
syBasebase value |
number |
— | Gets the base (non-animated) value of Y-axis scale. | SceneNode |
szBasebase value |
number |
— | Gets the base (non-animated) value of Z-axis scale. | SceneNode |
draggable |
boolean |
false |
Gets whether this node can be dragged. | SceneNode |
parentread-only |
SceneNode | null |
— | The parent node in the scene graph, or null at the root. |
SceneNode |
sceneread-only |
any |
— | Gets the Scene this node belongs to, if any. | SceneNode |
posread-only |
Point3D |
— | Gets the world-space position of this node. | SceneNode |
matrixread-only |
Float32Array<ArrayBufferLike> |
— | Gets the computed 4x4 transformation matrix. | SceneNode |
animationsread-only |
SkenraAnimation[] |
— | Public getter for the animations affecting this target. | SkenraAnimatable |
| Method | Description | Declared by |
|---|---|---|
addMaterialPaint(material: Material, paintTarget: PaintTarget, options?: any): Paint |
Applies a material to this node for a specific paint target. | SceneNode |
getPaints(): ReadonlyMap<PaintTarget, Paint> |
— | SceneNode |
getOwnPaints(): readonly Paint[] |
Gets only the paints directly applied to this node (not inherited). | SceneNode |
removePaint(paint: Paint): void |
Removes a paint from this node. | SceneNode |
getWorldPosition(): number[] |
Returns this node’s origin in world space. | SceneNode |
getWorldMatrix(): Float32Array<ArrayBufferLike> |
Returns this node’s world transform — its local transform composed with all ancestor transforms. | SceneNode |
setViewportPosition(camera: AbstractCamera, x: number, y: number, z: number = 0.5): boolean |
Sets the node's local translation so that it appears at the specified viewport position. | SceneNode |
getViewportPosition(camera?: AbstractCamera): [number, number, number] | null |
Returns the node's current world position projected to viewport CSS pixel coordinates. | SceneNode |
setNDCPosition(camera: AbstractCamera, ndcX: number, ndcY: number, ndcZ: number = 0.5): boolean |
Sets the node's local translation so that it appears at the specified NDC position in the viewport. | SceneNode |
getBoundsInSpace(targetSpaceMatrix: Float32Array): { minX: number; maxX: number; minY: number; maxY: number; minZ: number; maxZ: number; } | null |
Computes the axis-aligned bounding box (AABB) of this node and its descendants | SceneNode |
animate(firstArg: TypedKeyframe<this>[] | TypedPropertyIndexedKeyframes<this> | Record<string, any> | globalThis.Keyframe[] | globalThis.PropertyIndexedKeyframes | null, secondArg?: number | KeyframeAnimationOptions | globalThis.KeyframeAnimationOptions): SkenraAnimation & Animation |
Creates a new SkenraAnimation for this target per Web Animations API. | SkenraAnimatable |
removeAnimation(animation: SkenraAnimation): boolean |
Removes a specific animation from this object. | SkenraAnimatable |
constrain(type: K, config: ConstraintConfigMap[K]): ConstraintReturnMap[K] |
Creates a constraint on this Animatable using a fluent API. | SkenraAnimatable |
const field = new NoiseSpatialField({
id: 'turbulence', frequency: 2.0, octaves: 3, seed: 42,
});
scene.appendChild(field);