2012-08-11 15 views
18

Ho creato un cilindro e voglio spostare il suo centro di rotazione in una delle sue estremità modificando la sua casella di delimitazione ma non funziona.Three.js sposta il centro della geometria

http://jsfiddle.net/736a7/1/

C'è un esempio di quello che ho lavorato.

Fondamentalmente voglio ruotare il cilindro attorno come se fosse una spada che viene girata dalla sua maniglia.

risposta

28

Scoperto grazie ad un aiuto.

geometry.applyMatrix(new THREE.Matrix4().makeTranslation(x, y, z)); 

usando che ho tradotto y del cilindro di 100 punti così ruota fondamentalmente è estremità inferiore.

+0

Per la vita di me non riesco a farlo funzionare. Trasloca anche il punto di origine e la rotazione non cambia affatto. – Tyguy7

+2

@ Tyguy7 - È necessario impostare geometry.verticesNeedUpdate = true –

+5

Ora è possibile utilizzare questo collegamento 'geometry.translate (x, y, z);', vedere http://stackoverflow.com/questions/12835361/three-js -move-custom-geometria-to-origine – kraftwer1

2

Ho adottato un approccio utilizzando i pivot nel mio caso. In sostanza, si crea un punto di rotazione:

var pointToRotateAround; 
var objectToRotate; 
... 
var pivot = new THREE.Object3D(); 
pivot.position=pointToRotateAround.position; 
pivot.add(objectToRotate); 
scene.add(pivot); 
... 
function render(){ 
pivot.rotation.z +=0.05; 
} 
... 

Dà i possibili modi per rendere un corpo ruotare intorno a un altro o di qualunque punto. Ecco di più su questo approccio: https://github.com/mrdoob/three.js/issues/1830

Problemi correlati