2013-02-26 9 views
8

Sto lavorando ad un progetto 3D usando THREE.JS e voglio animare un semplice personaggio simile a minecraft.THREE.JS come spostare le ossa di una SkinnedMesh?

Per fare ciò, ne ho esportato uno da Blender (con le ossa) e lo renderizzo con THREE.JS utilizzando la classe SkinnedMesh.

Ho provato tutto per spostare il braccio della mesh ma non riesco a capire come farlo. Ho provato a cambiare rotazione, posizione, matrice e anche a impostare tutti i flag su true (come matrixWorldNeedsUpdate ma il braccio non si muoveva).

Ecco un esempio di codice:

var meshBody = new THREE.SkinnedMesh(geometry, materialTexture); 

... 

animate = function(){ 
    meshBody.bones[3].rotation.z += 0.1  
    meshBody.bones[3].matrixAutoUpdate = true; 
    meshBody.bones[3].matrixWorldNeedsUpdate = true; 
} 

risposta

5

Mentre la costruzione vostra rete, assicurarsi che la proprietà scuoiatura del vostro materiale è impostata su true, ad esempio:

mesh = new THREE.SkinnedMesh (geometry, 
      new THREE.MeshBasicMaterial ({color: 0xaaaa00, skinning: true}) 
    ); 
+0

Hmm, quando faccio questo il modello scompare. In questo tutorial [collegamento] (https://devmatrix.wordpress.com/2013/02/27/creating-skeletal-animation-in-blender-and-exporting-it-to-three-js/) menziona la denominazione le ossa con gli stessi gruppi di vertici. Sembra un po 'strano ma l'ho provato e non ha fatto differenza ... – robshearing

+0

Okay, ho capito. Devo aggiungere più di un vertice. – robshearing

0

Esso utilizza rotazioni quaternioni di default . Prova a impostare meshBody.bones[i].useQuaternion = false; e poi modifica i parametri di rotazione o usa invece quaternions.

Problemi correlati