Skip to content

Documentation / scene / AssetJointDynamicsSpringBone

Interface: AssetJointDynamicsSpringBone

Defined in: libs/scene/src/asset/model.ts:808

Joint dynamics spring bone information.

Properties

name?

optional name?: string

Defined in: libs/scene/src/asset/model.ts:809


center?

optional center?: AssetHierarchyNode

Defined in: libs/scene/src/asset/model.ts:810


chains

chains: AssetJointDynamicsChain[]

Defined in: libs/scene/src/asset/model.ts:811


controllerConfig

controllerConfig: object

Defined in: libs/scene/src/asset/model.ts:812

gravity?

optional gravity?: Vector3

Global gravity vector

windForce?

optional windForce?: Vector3

Global wind force vector applied to all dynamic points

relaxation?

optional relaxation?: number

Number of constraint relaxation iterations per substep. Higher = more stable but slower

subSteps?

optional subSteps?: number

Number of simulation substeps per frame. Higher = more stable at cost of performance

rootSlideLimit?

optional rootSlideLimit?: number

Max system-local root slide distance retained after root motion. Excess is applied to physics state. -1 = unlimited

rootRotateLimit?

optional rootRotateLimit?: number

Max root bone rotation angle (degrees) per substep. Excess is distributed. -1 = unlimited

constraintShrinkLimit?

optional constraintShrinkLimit?: number

Upper limit for horizontal/shear constraint shrink power. Prevents over-compression

blendRatio?

optional blendRatio?: number

Global blend ratio between physics and animation [0-1]. 0 = full physics, 1 = full animation

stabilizationFrameRate?

optional stabilizationFrameRate?: number

Target frame rate for stabilization (currently unused, reserved)

isFakeWave?

optional isFakeWave?: boolean

Enable sinusoidal fake wave effect on leaf bones

fakeWaveSpeed?

optional fakeWaveSpeed?: number

Fake wave global speed (accumulates over time)

fakeWavePower?

optional fakeWavePower?: number

Fake wave global amplitude multiplier

enableSurfaceCollision?

optional enableSurfaceCollision?: boolean

Enable triangle-based surface collision (cloth vs colliders)

enableBroadPhase?

optional enableBroadPhase?: boolean

Enable broad-phase pruning before precise collider tests

preserveTwist?

optional preserveTwist?: boolean

Preserve each joint's initial local twist (axial roll) after physics simulation

angleLimitConfig?

optional angleLimitConfig?: object

Post-simulation angle limiting between parent-child bones

angleLimitConfig.angleLimit?

optional angleLimit?: number

Max angle in degrees between parent and child bone. Negative = disabled

angleLimitConfig.limitFromRoot?

optional limitFromRoot?: boolean

If true, measure angle from original transform orientation instead of simulated parent

curves?

optional curves?: object

Depth-based physics parameter curves

curves.massScale?

optional massScale?: InterpolatorScalar

Scales point mass by depth

curves.gravityScale?

optional gravityScale?: InterpolatorScalar

Scales gravity strength by depth

curves.windForceScale?

optional windForceScale?: InterpolatorScalar

Scales wind force effect by depth (also multiplied by depth rate)

curves.resistance?

optional resistance?: InterpolatorScalar

Velocity damping [0-1]. Higher = less damping. Controls how much velocity is preserved

curves.hardness?

optional hardness?: InterpolatorScalar

Restore-to-animation stiffness [0-1]. Higher = bone stays closer to animated pose

curves.friction?

optional friction?: InterpolatorScalar

Friction multiplier by depth. Scales collision friction accumulation

curves.pointRadius?

optional pointRadius?: InterpolatorScalar

Collision radius by depth, mapped from VRM SpringBone hitRadius when available

curves.sliderJointLength?

optional sliderJointLength?: InterpolatorScalar

Extra slack length for horizontal/shear constraints (allows stretching)

curves.allShrinkScale?

optional allShrinkScale?: InterpolatorScalar

Global shrink stiffness multiplier (applied to all constraint types)

curves.allStretchScale?

optional allStretchScale?: InterpolatorScalar

Global stretch stiffness multiplier (applied to all constraint types)

curves.structuralShrinkVertical?

optional structuralShrinkVertical?: InterpolatorScalar

Structural vertical constraint shrink stiffness by depth

curves.structuralStretchVertical?

optional structuralStretchVertical?: InterpolatorScalar

Structural vertical constraint stretch stiffness by depth

curves.structuralShrinkHorizontal?

optional structuralShrinkHorizontal?: InterpolatorScalar

Structural horizontal constraint shrink stiffness by depth

curves.structuralStretchHorizontal?

optional structuralStretchHorizontal?: InterpolatorScalar

Structural horizontal constraint stretch stiffness by depth

curves.shearShrink?

optional shearShrink?: InterpolatorScalar

Shear constraint shrink stiffness by depth

curves.shearStretch?

optional shearStretch?: InterpolatorScalar

Shear constraint stretch stiffness by depth

curves.bendingShrinkVertical?

optional bendingShrinkVertical?: InterpolatorScalar

Bending vertical constraint shrink stiffness by depth

curves.bendingStretchVertical?

optional bendingStretchVertical?: InterpolatorScalar

Bending vertical constraint stretch stiffness by depth

curves.bendingShrinkHorizontal?

optional bendingShrinkHorizontal?: InterpolatorScalar

Bending horizontal constraint shrink stiffness by depth

curves.bendingStretchHorizontal?

optional bendingStretchHorizontal?: InterpolatorScalar

Bending horizontal constraint stretch stiffness by depth

curves.fakeWavePower?

optional fakeWavePower?: InterpolatorScalar

Fake wave amplitude by depth (sinusoidal pseudo-wind on leaf bones)

curves.fakeWaveFreq?

optional fakeWaveFreq?: InterpolatorScalar

Fake wave frequency offset by depth

constraintOptions?

optional constraintOptions?: object

Which constraint types to generate and their collision flags

constraintOptions.structuralVertical?

optional structuralVertical?: boolean

Generate parent→child vertical constraints

constraintOptions.structuralHorizontal?

optional structuralHorizontal?: boolean

Generate same-depth horizontal constraints across chains

constraintOptions.shear?

optional shear?: boolean

Generate diagonal cross-bracing constraints

constraintOptions.bendingVertical?

optional bendingVertical?: boolean

Generate skip-one vertical bending constraints

constraintOptions.bendingHorizontal?

optional bendingHorizontal?: boolean

Generate skip-one horizontal bending constraints

constraintOptions.isLoop?

optional isLoop?: boolean

Connect last root point back to first (for cylindrical topology like skirts)

constraintOptions.collideStructuralVertical?

optional collideStructuralVertical?: boolean

Enable per-constraint collision detection on structural vertical pairs

constraintOptions.collideStructuralHorizontal?

optional collideStructuralHorizontal?: boolean

Enable per-constraint collision detection on structural horizontal pairs

constraintOptions.collideShear?

optional collideShear?: boolean

Enable per-constraint collision detection on shear pairs

constraintOptions.enableSurfaceCollision?

optional enableSurfaceCollision?: boolean

Enable surface/triangle collision (overrides per-type collision flags)


colliders

colliders: AssetJointDynamicsCollider[]

Defined in: libs/scene/src/asset/model.ts:813


flatPlanes

flatPlanes: AssetJointDynamicsFlatPlane[]

Defined in: libs/scene/src/asset/model.ts:814

Released under the MIT License.