Component that renders hair simulation.

//@input Component.HairVisual hair

var width = 1;
var wind = new vec3(5,0,0);

script.hair.onInitialized = InitializeHair;

function InitializeHair(hv){
//change hair width
hv.strandWidth = width;

//add wind to hair
hv.windEnabled = true;
hv.windForce = wind;
}
interface HairVisual {
    clumpDensity: number;
    clumpRadius: number;
    clumpTipScale: number;
    colliders: ColliderComponent[];
    collisionEnabled: boolean;
    collisionFriction: number;
    collisionOffset: number;
    collisionStiffness: number;
    damp: number;
    density: number;
    enabled: boolean;
    extentsTarget: ScreenTransform;
    fallbackModeEnabled: boolean;
    friction: number;
    gravity: vec3;
    hairMaterial: Material;
    hairResolution: number;
    horizontalAlignment: HorizontalAlignment;
    meshShadowMode: MeshShadowMode;
    noise: number;
    onInitialized: ((hairVisual: HairVisual) => void);
    sceneObject: SceneObject;
    selfCollisionEnabled: boolean;
    selfCollisionFriction: number;
    selfCollisionRadius: number;
    selfCollisionStiffness: number;
    shadowColor: vec4;
    shadowDensity: number;
    stiffness: number;
    strandTaper: number;
    strandWidth: number;
    stretchMode: StretchMode;
    uniqueIdentifier: string;
    verticalAlignment: VerticalAlignment;
    windEnabled: boolean;
    windForce: vec3;
    addCollider(colliderComponent: ColliderComponent): void;
    clearColliders(): void;
    destroy(): void;
    getRenderOrder(): number;
    getSceneObject(): SceneObject;
    getTransform(): Transform;
    getTypeName(): string;
    isHardwareSupported(): boolean;
    isInitialized(): boolean;
    isOfType(type: string): boolean;
    isSame(other: ScriptObject): boolean;
    localAabbMax(): vec3;
    localAabbMin(): vec3;
    removeColliderByIndex(index: number): ColliderComponent;
    resetSimulation(): void;
    setRenderOrder(value: number): void;
    snap(camera: Camera): void;
    worldAabbMax(): vec3;
    worldAabbMin(): vec3;
}

Hierarchy (view full)

Properties

clumpDensity: number

Density of each clump, higher number would result in "messier" looking hair.

clumpRadius: number

Offset amount of hair roots.

clumpTipScale: number

Offset amount of hair tips.

colliders: ColliderComponent[]

List of all colliders assigned to the hair simulation of the current hair visual.

collisionEnabled: boolean

Determines if collision is enabled for hair.

collisionFriction: number

Determines amount of friction for collision between hair strands.

collisionOffset: number

Determines how much position offset collision will cause.

collisionStiffness: number

Determines how stiff the collision is.

damp: number

Higher value of damp will cause hair to have less free movement.

density: number

Amount of density created to thicken hair.

enabled: boolean

If disabled, the Component will stop enacting its behavior.

extentsTarget: ScreenTransform

When a ScreenTransform is present on this SceneObject, and extentsTarget is a child of this SceneObject, extentsTarget will be repositioned to match the exact area this MeshVisual is being rendered. Very useful for Image and Text components.

fallbackModeEnabled: boolean

This enables fallback mode which turns off physics simulations; it is recommended to enable fallback mode on lower-end devices. It will be enabled automatically if device doesn't support hair simulation feature.

friction: number

Amount of friction for hair strands.

gravity: vec3

Gravity force that gets added for hair's physics simulation.

hairMaterial: Material

Material used by this simulation to render hair.

hairResolution: number

Determines the amount of vertices on each strand. 0 means using original number of the strands. 1 is the smallest resolution for hair. Keep in mind when you change this property, the hair geometry will be regenerated.

horizontalAlignment: HorizontalAlignment

When a ScreenTransform is attached to the same SceneObject, this controls how the mesh will be positioned horizontally depending on stretchMode.

meshShadowMode: MeshShadowMode

None = 0, Caster = 1, Receiver = 2

noise: number

Offset of hair density.

onInitialized: ((hairVisual: HairVisual) => void)

This function gets called when the hair visual is initialized in the Lens.

sceneObject: SceneObject
selfCollisionEnabled: boolean

If enabled, hair strands will collide with themselves.

selfCollisionFriction: number

Friction of collisions between hair strands.

selfCollisionRadius: number

Radius limit of collisions between hair strands.

selfCollisionStiffness: number

Determines how stiff collision between hair strands are.

shadowColor: vec4

Affects the color of shadows being cast by this MeshVisual. The color of the cast shadow is a mix between shadowColor and the material's base texture color. The alpha value of shadowColor controls the mixing of these two colors, with 0 = shadowColor and 1 = shadowColor * textureColor.

shadowDensity: number

Density of shadows cast by this MeshVisual.

stiffness: number

Higher value of stiffness will make hair move less.

strandTaper: number

The taper size of each hair towards the tip.

strandWidth: number

The Width of each hair strand.

stretchMode: StretchMode

When a ScreenTransform is attached to the same SceneObject, this controls how the mesh will be stretched relative to the ScreenTransform's boundaries.

uniqueIdentifier: string
verticalAlignment: VerticalAlignment

When a ScreenTransform is attached to the same SceneObject, this controls how the mesh will be positioned vertically depending on stretchMode.

windEnabled: boolean

If checked will add wind force to hair simulation.

windForce: vec3

Amount of wind force added to hair simulation.

Methods

  • Adds a collider to the simulation.

    Parameters

    Returns void

  • Removes all hair colliders from the hair simulation.

    Returns void

  • Returns true if hair simulation is supported by the device.

    Returns boolean

  • Returns true if the hair resources are initialized.

    Returns boolean

  • Returns true if the object matches or derives from the passed in type.

    Parameters

    • type: string

    Returns boolean

  • Returns true if this object is the same as other. Useful for checking if two references point to the same thing.

    Parameters

    Returns boolean

  • Resets the simulation. May be called if the object with the hair simulation is toggled between enabled and disabled.

    Returns void

  • Sets the order of this Visual in the render queue.

    Parameters

    • value: number

    Returns void

  • Projects screen positions from camera's view onto the mesh's UVs. If the MeshVisual's material uses the same texture as the camera input, the MeshVisual will look identical to the part of the screen it covers.

    Parameters

    Returns void