Skip to content

Documentation / scene / GPUHairSimulation

Class: GPUHairSimulation ​

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:248

Strand dynamics on the GPU.

Remarks ​

Created by HairNode when simulation is switched on; it writes the strand point buffer in place, so nothing about the draw call changes.

Extends ​

  • Disposable

Constructors ​

Constructor ​

new GPUHairSimulation(strands, source, options?): GPUHairSimulation

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:358

Creates a simulation over an uploaded strand set.

Parameters ​

strands ​

HairStrandData

GPU strand data; its point buffer is written in place.

source ​

HairStrandSource

The control points the strands were built from, used to derive rest lengths and the rest pose.

options? ​

GPUHairSimulationOptions

Tuning.

Returns ​

GPUHairSimulation

Overrides ​

Disposable.constructor

Accessors ​

disposed ​

Get Signature ​

get disposed(): boolean

Defined in: libs/base/dist/index.d.ts:6107

Returns ​

boolean

Inherited from ​

Disposable.disposed


enabled ​

Get Signature ​

get enabled(): boolean

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:432

Whether the simulation is running.

Returns ​

boolean


disabledReason ​

Get Signature ​

get disabledReason(): string

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:436

Why the simulation is not running, when it is not.

Returns ​

string


gravity ​

Get Signature ​

get gravity(): Vector3

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:440

World-space gravity.

Returns ​

Vector3

Set Signature ​

set gravity(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:443

Parameters ​
value ​

Vector3

Returns ​

void


damping ​

Get Signature ​

get damping(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:447

Velocity lost per step, in [0, 1].

Returns ​

number

Set Signature ​

set damping(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:450

Parameters ​
value ​

number

Returns ​

void


maxSpeedFactor ​

Get Signature ​

get maxSpeedFactor(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:454

Per-substep ceiling on point travel, in segment lengths.

Returns ​

number

Set Signature ​

set maxSpeedFactor(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:457

Parameters ​
value ​

number

Returns ​

void


globalStiffness ​

Get Signature ​

get globalStiffness(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:461

Pull back to the authored pose per fixed step, in [0, 1]. Off by default.

Returns ​

number

Set Signature ​

set globalStiffness(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:464

Parameters ​
value ​

number

Returns ​

void


globalRange ​

Get Signature ​

get globalRange(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:468

Fraction of a strand, from the root, the pose pull acts on, in [0, 1].

Returns ​

number

Set Signature ​

set globalRange(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:471

Parameters ​
value ​

number

Returns ​

void


localStiffness ​

Get Signature ​

get localStiffness(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:475

How strongly a strand keeps its authored shape, in [0, 1].

Returns ​

number

Set Signature ​

set localStiffness(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:478

Parameters ​
value ​

number

Returns ​

void


localIterations ​

Get Signature ​

get localIterations(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:482

Local shape constraint passes per substep.

Returns ​

number

Set Signature ​

set localIterations(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:485

Parameters ​
value ​

number

Returns ​

void


ftlDamping ​

Get Signature ​

get ftlDamping(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:489

Share of a point's length correction fed back into its parent, in [0, 1].

Returns ​

number

Set Signature ​

set ftlDamping(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:492

Parameters ​
value ​

number

Returns ​

void


vspCoeff ​

Get Signature ​

get vspCoeff(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:496

How much of the node's motion a strand is carried along by, in [0, 1].

Returns ​

number

Set Signature ​

set vspCoeff(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:499

Parameters ​
value ​

number

Returns ​

void


vspAccelThreshold ​

Get Signature ​

get vspAccelThreshold(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:503

Node acceleration above which a strand is carried rigidly, in units/s².

Returns ​

number

Set Signature ​

set vspAccelThreshold(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:506

Parameters ​
value ​

number

Returns ​

void


substeps ​

Get Signature ​

get substeps(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:510

Integration substeps per fixed step.

Returns ​

number

Set Signature ​

set substeps(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:513

Parameters ​
value ​

number

Returns ​

void


friction ​

Get Signature ​

get friction(): number

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:517

Friction on tangential contact motion, in [0, 1].

Returns ​

number

Set Signature ​

set friction(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:520

Parameters ​
value ​

number

Returns ​

void


colliders ​

Get Signature ​

get colliders(): readonly SpringCollider[]

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:524

Colliders the strands are pushed out of.

Returns ​

readonly SpringCollider[]

Set Signature ​

set colliders(value): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:527

Parameters ​
value ​

readonly SpringCollider[]

Returns ​

void


prevPointBuffer ​

Get Signature ​

get prevPointBuffer(): GPUDataBuffer<unknown>

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:531

Verlet history. Not a previous-frame position - see the field remarks.

Returns ​

GPUDataBuffer<unknown>


framePointBuffer ​

Get Signature ​

get framePointBuffer(): GPUDataBuffer<unknown>

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:535

Local positions as of the previously rendered frame, for motion vectors.

Returns ​

GPUDataBuffer<unknown>

Methods ​

on() ​

on<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:630

IEventTarget.on

Type Parameters ​

K ​

K extends "dispose"

Parameters ​

type ​

K

listener ​

EventListener<{ dispose: []; }, K>

context? ​

unknown

Returns ​

void

Inherited from ​

Disposable.on


once() ​

once<K>(type, listener, context?): void

Defined in: libs/base/dist/index.d.ts:634

IEventTarget.once

Type Parameters ​

K ​

K extends "dispose"

Parameters ​

type ​

K

listener ​

EventListener<{ dispose: []; }, K>

context? ​

unknown

Returns ​

void

Inherited from ​

Disposable.once


off() ​

off<K>(type, listener?, context?): void

Defined in: libs/base/dist/index.d.ts:638

IEventTarget.off

Type Parameters ​

K ​

K extends "dispose"

Parameters ​

type ​

K

listener? ​

EventListener<{ dispose: []; }>

context? ​

unknown

Returns ​

void

Inherited from ​

Disposable.off


dispatchEvent() ​

dispatchEvent<K>(type, ...args): void

Defined in: libs/base/dist/index.d.ts:642

IEventTarget.dispatchEvent

Type Parameters ​

K ​

K extends "dispose"

Parameters ​

type ​

K

args ​

...object[K]

Returns ​

void

Inherited from ​

Disposable.dispatchEvent


dispose() ​

dispose(): void

Defined in: libs/base/dist/index.d.ts:6108

Returns ​

void

Inherited from ​

Disposable.dispose


reset() ​

reset(worldMatrix): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:547

Discards accumulated motion and returns every strand to its rest pose.

Parameters ​

worldMatrix ​

Matrix4x4

Returns ​

void

Remarks ​

Wanted whenever a node is moved rather than animated: a teleport would otherwise register as one enormous frame of inertia and fling the hair. GPUHairSimulation.update calls this itself when the groom jumps farther in one frame than a few times its own strand length.


update() ​

update(deltaTime, worldMatrix): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:563

Advances the simulation.

Parameters ​

deltaTime ​

number

Seconds since the last update.

worldMatrix ​

Matrix4x4

The drawing node's current world matrix.

Returns ​

void


onDispose() ​

protected onDispose(): void

Defined in: libs/scene/src/animation/hair/gpu_hair_simulation.ts:684

Returns ​

void

Overrides ​

Disposable.onDispose

Released under the MIT License.