2016-12-07 28 views
0

私はThree.jsと新しい3D空間エンジンに慣れています。私が達成しようとしているのは360の等角度画像ビューアです。Three.jsを使用してローカルX軸でカメラXを回転させます

これまでのスクリプトでは、0,0,0のカメラと同じ位置の球面メッシュを作成し、法線を反転させ、360度の画像の放射マップを作成しました。 Blenderのビューポートを使用して、シーンの

*Representation of scene using Blender's viewport.*

表現。ユーザは、私はカメラのY軸(青)とX軸(赤)に回転量を算出ドラッグ機能を作成したマウスリスナーを使用して、マウスのドラッグやキーボードの矢印キーを使用してカメラを回転させるために有効にされるべきである

各レンダリングフレームで。次のように私はまた、X(ユーザが後方に回転できませんでした)上で最小および最大回転制限を作成した:sp​​eedXかつ迅速に各軸に回転量を表す

var render = function() { 
    requestAnimationFrame(render); 

    if((camera.rotation.x < Math.PI/6 && speedX >= 0) || (camera.rotation.x > -Math.PI/6 && speedX <= 0)) 
     camera.rotation.x += speedX * (Math.PI/180); 
    camera.rotation.y += speedY * (Math.PI/180); 

    renderer.render(scene, camera); 
}; 

これまでのところ、回転座標は世界に関連し、カメラ自体ではないので、X回転はカメラを野生にします。なぜなら、Y軸で数回転した後、カメラのX軸はもはや世界のX軸と同じではありません。

最後に私の質問は、各フレームで自分のX軸にカメラを回転させることですか?あなたがカメラの回転がヨー(見出し)、ピッチ、ロールの面で意味を持つようにしたい場合は

+0

正距円筒パノラマ[デモ](https://threejs.org/examples/webgl_panorama_equirectangular) – prisoner849

+2

'camera.rotation.order =「YXZ''を試し@avere。 //ヨー、ピッチ、ロール – WestLangley

+0

@WestLangley素晴らしい!魅力のように働く!私はそれを受け入れることができますし、(うまくいけば)私と他の人が魔法を理解することができますか?どうもありがとう! – arvere

答えて

2

は、あなたが設定する必要が:

camera.rotation.order = 'YXZ'; // default is 'XYZ' 

は、詳細については、this stackoverflow answerを参照してください。

three.js r.82

関連する問題