これはおそらく非常に基本的な問題ですが、私はまだ解決策を見つけられておらず、悩まされています。カメラの右下隅にあるワールド座標の方向(x、y、z)を示す矢印をMayaで行うようにしたいので、カメラをオブジェクトの周りで回転させたり、シーンを移動するときに、それでも世界座標の方向を特定することができます。私は2つの異なるアプローチを使ってこれを達成しようとしましたが、どちらもこれまで働いていませんでした。Three.js:シーンのコーナーにワールド座標軸を表示
THREE.ArrowHelper
クラスを使用する子として3つの矢印を持つオブジェクトがある場合は、すぐにXYZ
と呼びます。最初の方法は、XYZ
をシーンの子にして、カメラの現在の位置とカメラが指示している方向のオフセットから計算された位置を提供し、角の下に表示されるように調整します。スクリーンの中心。矢印が正しい回転を維持しているので、私はほとんどこれを手に入れましたが、ポジションはちょっと面白くて、カメラを動かすときに本当に「ジッタイ」だったのでこのルートをやめました。私はそれがパフォーマンス上の問題であろうと何か他のものであるかどうかはわかりません。
XYZ
ローカル位置オフセットを持つカメラの子を作成し、カメラの回転を逆にして逆回転をXYZ
に適用してワールド座標と一致するようにします。私はこのメソッドを使用して近くにいるようだが、私は正しい位置を取得することも、回転を正しくすることも、両方を取得することもできます。
XYZ
の正しい向きを私に提供するために、現在コードXYZ.matrix.extractRotation(camera.matrixWorldInverse);
を使用していますが、位置はオフです。 XYZ.matrixWorld.extractRotation(camera.matrixWorldInverse);
を使用すると、位置は良好なままですが(カメラに取り付けられます)、向きは変わりません。
誰かがこの作業を行うための素早いハックを持っていると大変感謝しています。あなたがより良い方法を持っているなら、私はそれを追求しているよりも役に立つでしょう。
** - EDIT - ** ここで作業バージョンを見つけることができます - (https://googledrive.com/host/0B45QP71QXoR0Mm9Mbkp3WGI1Qkk/)私はGoogleドライブにコードを保存していますが、ローカルでワンプとエイリアシングを使用しています。 Googleドライブの同期がとればすぐにローカルに反映されます。 I.それはあなたが見ているときに壊れているかもしれません。
どういうわけか、そのリンクを紛失しました。私はこの方法を調べて、あなたにお返しします。しかし、上記の方法のいずれかを動作させるよりも、2番目のカメラを追加するとパフォーマンスが低下するのではないかと思います。 – wackozacko
それは動作します! ObltControls.jsが目標位置を維持しないので、 'camera2.position.sub(controls.target);'行を削除しなければなりませんでしたが、そうでなければ解決策は事実上同じです。 – wackozacko
回線を削除しないでください。 r.58の 'controls.center'を使ってください。 – WestLangley