three.js の回転について大きな問題があります。ゲームの 1 つで 3D キューブを回転させたいと考えています。
//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
および (x, y, z) は (1, 0, 0) の場合があります
その後、立方体は回転できますが、問題は立方体が独自の軸で回転するため、回転した後、期待どおりに回転できません。
軸を中心にThree.js Vector3を回転させる方法のページを見つけましたか? 、しかし、Vector3 ポイントをワールド軸を中心に回転させるだけですか?
そして、私はmatrixRotationWorldを次のように使用しようとしました
@mesh.matrixRotationWorld.x += x * Math.PI / 180
@mesh.matrixRotationWorld.y += y * Math.PI / 180
@mesh.matrixRotationWorld.z += z * Math.PI / 180
しかし、うまくいきません。間違った方法で使用したのか、他の方法があるのか わかりません..
では、3D 立方体を世界の軸を中心に回転させるにはどうすればよいでしょうか?