Меш, имеющий Skeleton с bones, которые затем могут быть использованы для анимации геометрических вершин. Материал должен поддерживать скиннинг и он должен быть включен. - см. MeshStandardMaterial.skinning.
const geometry = new v3d.CylinderGeometry(5, 5, 5, 5, 15, 5, 30);
// create the skin indices and skin weights
const position = geometry.attributes.position;
const vertex = new v3d.Vector3();
const skinIndices = [];
const skinWeights = [];
for (let i = 0; i < position.count; i++) {
vertex.fromBufferAttribute(position, i);
// compute skinIndex and skinWeight based on some configuration data
const y = (vertex.y + sizing.halfHeight);
const skinIndex = Math.floor(y / sizing.segmentHeight);
const skinWeight = (y % sizing.segmentHeight) / sizing.segmentHeight;
skinIndices.push(skinIndex, skinIndex + 1, 0, 0);
skinWeights.push(1 - skinWeight, skinWeight, 0, 0);
}
geometry.setAttribute('skinIndex', new v3d.Uint16BufferAttribute(skinIndices, 4));
geometry.setAttribute('skinWeight', new v3d.Float32BufferAttribute(skinWeights, 4));
// create skinned mesh and skeleton
const mesh = new v3d.SkinnedMesh(geometry, material);
const skeleton = new v3d.Skeleton(bones);
// see example from v3d.Skeleton
const 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;
geometry — экземпляр BufferGeometry.
material — (необязательный) экземпляр Material. По умолчанию это новый MeshBasicMaterial.
Общие свойства см. в базовом классе Mesh.
Либо "attached", либо "detached". "attached" использует свойство SkinnedMesh.matrixWorld для базовой матрицы трансформации костей. "detached" использует свойство SkinnedMesh.bindMatrix. По умолчанию "attached".
Базовая матрица, которая используется для преобразования связанных костей.
Базовая матрица, которая используется для сброса преобразований связанных костей.
Skeleton представляет иерархию костей меша со скиннингом.
Общие методы см. в базовом классе Mesh.
skeleton - Skeleton созданный из древа Bones.
bindMatrix - Matrix4 которая представляет собой базовое преобразование скелета.
Привязка скелета к сетке со скинами. Матрица привязки сохраняется в свойстве .bindMatrix
и вычисляется .bindMatrixInverse.
Возвращает клон данного объекта SkinnedMesh и всех его преемников.
Нормализует вес скина.
Этот метод устанавливает меш со скиннингом в исходную позу (сбрасывает позу).
Обновляет MatrixWorld.
О том как получить исходный код этого модуля читайте тут.