2016-05-14 3 views
0

周りの回転オブジェクト:Threejs - 私はこのコードのソリューションを働いてきた中央

var collisionGroup = new THREE.Group(); 
scene.add(collisionGroup); 

(function() { 
    var geometry = new THREE.CircleGeometry(20, 32); 
    var material = new THREE.MeshBasicMaterial({ color: 0xffff00 }); 
    var collisionCircle = new THREE.Mesh(geometry, material); 
    collisionCircle.position.z = -180; 
    collisionGroup.add(collisionCircle); 
})(); 

function animate(timestamp) { 
    // apply camera rotation 
    var rotObjectMatrix = new THREE.Matrix4(); 
    rotObjectMatrix.makeRotationFromQuaternion(camera.quaternion); 
    collisionGroup.rotation.setFromRotationMatrix(rotObjectMatrix); 

    // Update VR headset position and apply to camera. 
    controls.update(); 

    // Render the scene through the manager. 
    manager.render(scene, camera, timestamp); 

    requestAnimationFrame(animate); 
} 

しかし、それは私が回転したいオブジェクトごとにグループを作成せずにこれを達成することが可能です場合、私は知りたいのですが(そこになりますそれらの多くである)。 これらのオブジェクトの位置はカメラの回転に基づいているため、これは私がmakeRotationFromQuaternionとrotation.setFromRotationMatrixを使用した理由です。

おそらく、カメラクォータニオンを保存する方が簡単な解決策があります。

+0

トリックは、ジオメトリを変更し、各頂点の位置をあらかじめオフセットすることです。私はしばらくのうちにThree.jsを使用していないので、簡単な例を簡単に伝えることはできません。しかし、あなたはドキュメントをチェックすることができます( 'position'の部分を探してください)http://threejs.org/docs/#Reference/Core/BufferGeometry –

+1

実際に私の間違いはおそらく正しいリンクhttp://threejs.orgでしょう/ docs /#Reference/Core/Geometryとすると、 'translate'を探しています。 –

答えて

0

これはあなたが達成したいものの良い選択肢であるかどうかは不明ですが、カメラにオブジェクトを追加することも考えられます(カメラはTHREE.Object3Dインスタンスでもあります)。カメラの子として、これはカメラの位置と回転に相対的な位置と回転を行います。

関連する問題