SkinnedMesh class

A mesh that has a Skeleton with bones that can then be used to animate the vertices of the geometry.

final geometry = CylinderGeometry( 5, 5, 5, 5, 15, 5, 30 );

// create the skin indices and skin weights manually
// (typically a loader would read this data from a 3D model for you)

final position = geometry.attributes.position;

final vertex = Vector3();

final skinIndices = [];
final skinWeights = [];

for(int i = 0; i < position.count; i++){
  vertex.fromBufferAttribute( position, i );

  // compute skinIndex and skinWeight based on some configuration data
  final y = ( vertex.y + sizing.halfHeight );
  final skinIndex = Math.floor( y / sizing.segmentHeight );
  final skinWeight = ( y % sizing.segmentHeight ) / sizing.segmentHeight;
  skinIndices.push( skinIndex, skinIndex + 1, 0, 0 );
  skinWeights.push( 1 - skinWeight, skinWeight, 0, 0 );
}

geometry.setAttribute(Attribute.skinIndex, Uint16BufferAttribute( skinIndices, 4));
geometry.setAttribute(Attribute.skinWeight, Float32BufferAttribute( skinWeights, 4));

// create skinned mesh and skeleton

final mesh = SkinnedMesh(geometry, material);
final skeleton = Skeleton(bones);

// see example from THREE.Skeleton
final rootBone = skeleton.bones[0];
mesh.add(rootBone);

// bind the skeleton to the mesh
mesh.bind(skeleton);

// move the bones and manipulate the model
skeleton.bones[0].rotation.x = -0.1;
skeleton.bones[1].rotation.x = 0.2;
Inheritance

Constructors

SkinnedMesh(BufferGeometry? geometry, Material? material)
geometry - an instance of BufferGeometry.

Properties

autoUpdate bool
getter/setter pairinherited
background ↔ dynamic
getter/setter pairinherited
bindMatrix ↔ Matrix4?
getter/setter pairinherited
bindMatrixInverse ↔ Matrix4
getter/setter pair
bindMode String
getter/setter pair
castShadow bool
getter/setter pairinherited
children List<Object3D>
getter/setter pairinherited
count int?
getter/setter pairinherited
customDepthMaterial Material?
  • Custom depth material to be used when rendering to the depth map. Can only be used in context of meshes.
  • When shadow-casting with a DirectionalLight or SpotLight, if you are (a) modifying vertex positions in
  • the vertex shader, (b) using a displacement map, (c) using an alpha map with alphaTest, or (d) using a
  • transparent texture with alphaTest, you must specify a customDepthMaterial for proper shadows.
  • getter/setter pairinherited
    customDistanceMaterial Material?
    getter/setter pairinherited
    disposed bool
    getter/setter pairinherited
    environment Texture?
    getter/setter pairinherited
    extra Map<String, dynamic>
    getter/setter pairinherited
    frustumCulled bool
    getter/setter pairinherited
    geometry BufferGeometry?
    getter/setter pairinherited
    hashCode int
    The hash code for this object.
    no setterinherited
    id int
    getter/setter pairinherited
    instanceColor ↔ BufferAttribute<NativeArray<num>>?
    getter/setter pairinherited
    instanceMatrix ↔ InstancedBufferAttribute?
    getter/setter pairinherited
    isImmediateRenderObject bool
    getter/setter pairinherited
    layers Layers
    getter/setter pairinherited
    material Material?
    getter/setter pairinherited
    matrix ↔ Matrix4
    getter/setter pairinherited
    matrixAutoUpdate bool
    getter/setter pairinherited
    matrixWorld ↔ Matrix4
    getter/setter pairinherited
    matrixWorldNeedsUpdate bool
    getter/setter pairinherited
    modelViewMatrix ↔ Matrix4
    getter/setter pairinherited
    morphTargetDictionary Map<String, dynamic>?
    getter/setter pairinherited
    morphTargetInfluences List<double>
    getter/setter pairinherited
    name String
    getter/setter pairinherited
    normalMatrix ↔ Matrix3
    getter/setter pairinherited
    onAfterRender OnAfterRender?
    An optional callback that is executed immediately after a 3D object is rendered. This function is called with the following parameters: renderer, scene, camera, geometry, material, group.
    getter/setter pairinherited
    onBeforeRender OnBeforeRender?
    getter/setter pairinherited
    overrideMaterial Material?
    getter/setter pairinherited
    parent Object3D?
    getter/setter pairinherited
    position ↔ Vector3
    getter/setter pairinherited
    quaternion ↔ Quaternion
    getter/setter pairinherited
    receiveShadow bool
    getter/setter pairinherited
    renderOrder int
    getter/setter pairinherited
    rotation ↔ Euler
    getter/setter pairinherited
    runtimeType Type
    A representation of the runtime type of the object.
    no setterinherited
    scale ↔ Vector3
    getter/setter pairinherited
    skeleton Skeleton?
    getter/setter pairinherited
    tag String?
    getter/setter pairinherited
    type String
    getter/setter pairinherited
    up ↔ Vector3
    getter/setter pairinherited
    userData Map<String, dynamic>
    getter/setter pairinherited
    uuid String
    getter/setter pairinherited
    visible bool
    getter/setter pairinherited

    Methods

    add(Object3D? object) Object3D
    Adds object as child of this object. An arbitrary number of objects may be added. Any current parent on an object passed in here will be removed, since an object can have at most one parent.
    inherited
    addAll(List<Object3D> objects) Object3D
    Adds list objects as child of this object.
    inherited
    addEventListener(String type, Function listener) → void
    type - The type of event to listen to.
    inherited
    applyBoneTransform(int index, Vector3 target) → Vector3
    Applies the bone transform associated with the given index to the given position vector. Returns the updated vector.
    applyMatrix4(Matrix4 matrix) → void
    Applies the matrix transform to the object and updates the object's position, rotation and scale.
    inherited
    applyQuaternion(Quaternion q) Object3D
    Applies the rotation represented by the quaternion to the object.
    inherited
    attach(Object3D object) Object3D
    inherited
    bind(Skeleton skeleton, [Matrix4? bindMatrix]) → void
    skeleton - Skeleton created from a Bones tree.
    clear() Object3D
    Removes all child objects.
    inherited
    clearListeners() → void
    Remove all Listeners.
    inherited
    clone([bool? recursive]) SkinnedMesh
    This method does currently not clone an instance of name correctly. Please use SkeletonUtils.clone in the meanwhile.
    override
    copy(Object3D source, [bool? recursive]) SkinnedMesh
    recursive -- If set to true, descendants of the object are copied next to the existing ones. If set to false, descendants are left unchanged. Default is true.
    override
    dispatchEvent(Event event) → void
    event - The event that gets fired.
    inherited
    dispose() → void
    inherited
    extractFromCache(Map<String, dynamic> cache) List<Map<String, dynamic>>
    inherited
    getObjectById(String id) Object3D?
    id -- Unique number of the object instance
    inherited
    getObjectByName(String name) Object3D?
    name -- String to match to the children's Object3D.name property.
    inherited
    getObjectByProperty(String name, String value) Object3D?
    name -- the property name to search for.
    inherited
    getProperty(String propertyName) → dynamic
    inherited
    getValue(String name) → Matrix4?
    override
    getWorldDirection(Vector3 target) → Vector3
    target — the result will be copied into this Vector3.
    inherited
    getWorldPosition(Vector3? target) → Vector3
    target — the result will be copied into this Vector3.
    inherited
    getWorldQuaternion(Quaternion target) → Quaternion
    target — the result will be copied into this Quaternion.
    inherited
    getWorldScale(Vector3 target) → Vector3
    target — the result will be copied into this Vector3.
    inherited
    hasEventListener(String type, Function listener) bool
    type - The type of event to listen to.
    inherited
    init() → void
    inherited
    localToWorld(Vector3 vector) → Vector3
    vector - A vector representing a position in this object's local space.
    inherited
    lookAt(Vector3 position) → void
    vector - A vector representing a position in world space. Optionally, the x, y and z components of the world space position.
    inherited
    normalizeSkinWeights() → void
    Normalizes the skin weights.
    noSuchMethod(Invocation invocation) → dynamic
    Invoked when a nonexistent method or property is accessed.
    inherited
    onQuaternionChange() → void
    inherited
    onRotationChange() → void
    inherited
    pose() → void
    This method sets the skinned mesh in the rest pose (resets the pose).
    raycast(Raycaster raycaster, List<Intersection> intersects) → void
    Get intersections between a casted ray and this mesh. Raycaster.intersectObject will call this method, but the results are not ordered.
    inherited
    remove(Object3D object) Object3D
    Removes object as child of this object. An arbitrary number of objects may be removed.
    inherited
    removeEventListener(String type, Function listener) → void
    type - The type of the listener that gets removed.
    inherited
    removeFromParent() Object3D
    Removes this object from its current parent.
    inherited
    removeList(List<Object3D> objects) Object3D
    Removes list of objects from this object.
    inherited
    rotateOnAxis(Vector3 axis, double angle) Object3D
    axis -- A normalized vector in object space.
    inherited
    rotateOnWorldAxis(Vector3 axis, double angle) Object3D
    axis -- A normalized vector in world space.
    inherited
    rotateX(double angle) Object3D
    angle - the angle to rotate in radians.
    inherited
    rotateY(double angle) Object3D
    angle - the angle to rotate in radians.
    inherited
    rotateZ(double angle) Object3D
    angle - the angle to rotate in radians.
    inherited
    serialize(Map<String, dynamic> library, dynamic element, Object3dMeta? meta) String
    inherited
    setProperty(String propertyName, dynamic value) Object3D
    inherited
    setRotationFromAxisAngle(Vector3 axis, double angle) → void
    axis - A normalized vector in object space.
    inherited
    setRotationFromEuler(Euler euler) → void
    euler -- Euler angle specifying rotation amount.
    inherited
    setRotationFromMatrix(dynamic m) → void
    m - rotate the quaternion by the rotation component of the matrix.
    inherited
    setRotationFromQuaternion(Quaternion q) → void
    q - normalized Quaternion.
    inherited
    toJson({Object3dMeta? meta}) Map<String, dynamic>
    meta -- object containing metadata such as materials, textures or images for the object.
    inherited
    toString() String
    A string representation of this object.
    inherited
    translateOnAxis(Vector3 axis, double distance) Object3D
    axis - A normalized vector in object space.
    inherited
    translateX(double distance) Object3D
    Translates object along x axis in object space by distance units.
    inherited
    translateY(double distance) Object3D
    Translates object along y axis in object space by distance units.
    inherited
    translateZ(double distance) Object3D
    Translates object along z axis in object space by distance units.
    inherited
    traverse(dynamic callback(Object3D)) → void
    callback - A function with as first argument an object3D object.
    inherited
    traverseAncestors(dynamic callback(Object3D?)) → void
    callback - A function with as first argument an object3D object.
    inherited
    traverseVisible(dynamic callback(Object3D?)) → void
    callback - A function with as first argument an object3D object.
    inherited
    updateMatrix() → void
    Updates the local transform.
    inherited
    updateMatrixWorld([bool force = false]) → void
    force - A boolean that can be used to bypass matrixWorldAutoUpdate, to recalculate the world matrix of the object and descendants on the current frame. Useful if you cannot wait for the renderer to update it on the next frame (assuming matrixWorldAutoUpdate set to true).
    override
    updateMorphTargets() → void
    Updates the morphTargets to have no influence on the object. Resets the morphTargetInfluences and morphTargetDictionary properties.
    inherited
    updateWorldMatrix(bool updateParents, bool updateChildren) → void
    updateParents - recursively updates global transform of ancestors.
    inherited
    worldToLocal(Vector3 vector) → Vector3
    vector - A vector representing a position in world space.
    inherited

    Operators

    operator ==(Object other) bool
    The equality operator.
    inherited