A directional ramp — weight climbs from zero to full along one axis, the field for "grade this effect smoothly from one side to the other."
Declarative element:
<sk-linear-gradient-field>
Global: available as sk.LinearGradientField inside a scene <script>.
This is the linear 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 depends on how far a point lies along
a single direction, so it makes a smooth one-way gradient.
Key attributes. extent is the ramp length: weight is 0 at the field's
origin and 1 at extent distance along the gradient axis, clamping to 0
behind the origin and 1 beyond extent, and the inherited remap-curve can
reshape that 0→1. The gradient direction is the field's local +Z axis — because
the field is a scene-graph node, rotate it (h/p/b, the same convention as
cameras and lights) to aim the ramp any way, and move it to slide where the ramp
begins. visualize draws the axis and endpoints so the ramp is visible while
composing.
Related. It shares the field="#id" model with every field: sibling shapes
include sk-spherical-gradient-field (radial rather than directional) and
sk-cube-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?: { extent?: 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 |
|---|---|---|---|---|
extentanimatable |
number |
10 |
Length of the gradient along the field’s local axis (weight ramps 0→1 over this distance). | LinearGradientField |
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 |
|---|---|---|---|---|
extentBasebase value |
number |
— | The base (non-animated) value of extent. |
LinearGradientField |
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 |
// Gradient along +Z (default orientation)
const field = new LinearGradientField({ id: 'gradient', extent: 10 });
// Gradient along +X: rotate -90° around Y
const fieldX = new LinearGradientField({
id: 'gradient-x',
extent: 10,
h: -Math.PI / 2
});