Comment faire pivoter un objet 3D sur l'axe three.js?

J'ai un grand problème à propos de la rotation dans three.js
Je veux faire tourner mon cube 3D dans l'un de mes jeu.

//init
geometry = new THREE.CubeGeometry grid, grid, grid
material = new THREE.MeshLambertMaterial {color:0xFFFFFF * Math.random(), shading:THREE.FlatShading, overdraw:true, transparent: true, opacity:0.8}
for i in [1...@shape.length]
    othergeo = new THREE.Mesh new THREE.CubeGeometry(grid, grid, grid)
    othergeo.position.x = grid * @shape[i][0]
    othergeo.position.y = grid * @shape[i][1]
    THREE.GeometryUtils.merge geometry, othergeo
@mesh = new THREE.Mesh geometry, material

//rotate
@mesh.rotation.y += y * Math.PI / 180
@mesh.rotation.x += x * Math.PI / 180
@mesh.rotation.z += z * Math.PI / 180

et (x, y, z) peut être (1, 0, 0)

puis le cube peut tourner, mais le problème est que le cube tourne sur son propre axe,donc après qu'il a tourné, il ne peut pas tourner comme prévu.

Je trouve la page Comment faire pivoter une Three.js Vector3 autour d'un axe?, mais il vient de laisser une Vector3 point de pivoter autour de l'axe du monde?

et j'ai essayé d'utiliser matrixRotationWorld comme

@mesh.matrixRotationWorld.x += x * Math.PI / 180
@mesh.matrixRotationWorld.y += y * Math.PI / 180
@mesh.matrixRotationWorld.z += z * Math.PI / 180

mais ça ne fonctionne pas, je n'ai pas si je l'ai utilisé dans un mauvais sens ou il y a d'autres façons de faire.

alors, comment laisser la 3D cube en rotation autour de l'axe du monde???

  • Qu'est ce que @ notation?
  • '@' dans CoffeeScript signifie " ce. en JavaScript. C'est une abréviation.
InformationsquelleAutor Tony Han | 2012-06-16