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.