Una mesh che ha uno [page:Skeleton scheletro] con [page:Bone ossa] che può essere
utilizzata per animare i vertici della geometria.
[name] può essere utilizzata solo con WebGL 2. Con WebGL 1 è necessario il supporto delle texture del vertice
e `OES_texture_float`.
const geometry = new THREE.CylinderGeometry( 5, 5, 5, 5, 15, 5, 30 );
// crea manualmente gli indici della pelle e i pesi della pelle
// (tipicamente un loader leggerebbe questi dati da un modello 3D per te)
const position = geometry.attributes.position;
const vertex = new THREE.Vector3();
const skinIndices = [];
const skinWeights = [];
for ( let i = 0; i < position.count; i ++ ) {
vertex.fromBufferAttribute( position, i );
// calcola skinIndex e skinWeight in base ad alcuni dati di configurazione
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 THREE.Uint16BufferAttribute( skinIndices, 4 ) );
geometry.setAttribute( 'skinWeight', new THREE.Float32BufferAttribute( skinWeights, 4 ) );
// crea skinned mesh e skeleton
const mesh = new THREE.SkinnedMesh( geometry, material );
const skeleton = new THREE.Skeleton( bones );
// vedi esempio da THREE.Skeleton
const rootBone = skeleton.bones[ 0 ];
mesh.add( rootBone );
// lega lo scheletro alla mesh
mesh.bind( skeleton );
// muove le ossa e manipola il modello
skeleton.bones[ 0 ].rotation.x = -0.1;
skeleton.bones[ 1 ].rotation.x = 0.2;
[page:BufferGeometry geometry] - un'istanza di [page:BufferGeometry].
[page:Material material] - (opzionale) un'istanza di [page:Material]. Il valore predefinito è un nuovo [page:MeshBasicMaterial].
Vedi la classe base [page:Mesh] per le proprietà comuni.
O "attached" o "detached". "attached" utilizza la proprietà [page:SkinnedMesh.matrixWorld] per la matrice di trasformazione delle ossa. "detached" utilizza [page:SkinnedMesh.bindMatrix]. Il valore predefinito è "attached".
La matrice di base che viene utilizzata per le trasformazioni ossee vincolate.
La matrice di base che viene utilizzata per reimpostare le trasformazioni ossee vincolate.
Flag di sola lettura per verificare se l'oggetto dato è di tipo [name].
[page:Skeleton] che rappresenta la gerarchia ossea della skinned mesh.
Vedi la classe base [page:Mesh] per i metodi comuni.
[page:Skeleton skeleton] - [page:Skeleton] creato da un albero di [page:Bone Bones].
[page:Matrix4 bindMatrix] - [page:Matrix4] che rappresenta la trasformazione base dello scheletro.
Lega uno scheletro alla skinned mesh. Il bindMatrix viene salvato nella proprietà .bindMatrix
e il .bindMatrixInverse viene calcolato.
Questo metodo attualmente non clona correttamente un'istanza di [name]. Si prega di utilizzare [page:SkeletonUtils.clone]() nel frattempo.
Normalizza i pesi della skin.
Questo metodo imposta la skinned mesh nella posa di riposo (reimposta la posa).
Calcola la posizione del vertice in corrispondenza dell'indice specificato rispetto alle attuali trasformazioni ossee.
Il vettore target deve essere inizializzato con le coordinate del vertice prima della trasformazione:
const target = new THREE.Vector3();
target.fromBufferAttribute( mesh.geometry.attributes.position, index );
mesh.boneTransform( index, target );
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]