2017-05-16 21 views
0

パノラマ画像がマッピングされる2つの球があります。 2つのパノラマの間をフェード効果でスムーズに移行したい。両方のパノラマのために、私は最初のカメラの方向を最高の視界のために設定しました。 問題は、最初のパノラマでカメラアングルを見ているときに、パノラマを切り替えるためにボタンをクリックしてフェード効果を与え、別のパノラマのカメラアングルに直接着きたい場合です。 しかし、両方のパノラマのような一般的なカメラを共有している、私はそれを達成するために、カメラで再生することはできませんので、私は以下のソリューションを考案 -threejs:カメラの方向を見るためのパノラマの回転

image depicting problem

  1. を、所望のカメラの方向に見えるように、ターゲット球を回転させます。
  2. 既存のカメラ方向を見るようにターゲット球を回転させます。
  3. フェードアウト元の球。
  4. カメラ見て新しいパノスカメラの方向。
  5. パノラマを元の向きに戻します。

ここでは、カメラを見るために回転するパノラマの式を見つけることができません。 (カメラが静的で、パノラマが回転してカメラを動かしているような効果が得られます)。 誰かがカメラに対してパノ(球)を回転させる式を見つけるのを助けてくれますか?

答えて

0

マトリックスは、回転問題を解決するための非常に強力なツールです。私は説明を簡単にしました。 enter image description here 最初は、カメラが左の球の中心にあり、最初の視点に向いています。次に、カメラが別の点に向かっています。今度はカメラの回転が変わり、次にカメラが右の球の中心に移動します。その向きを保つ。正しい球を回転させる必要があります。 Cをカメラに向けたい点であれば、最初にAをBに、次にCをAに等しい角度θだけ回転させます。

それでは、どのようにするのですか? Aは初期点であり、恒等行列内の行列であり、AからCへの回転は行列によって表現され、three.js関数によって計算されるため、行列を使用した。matrix4.lookAt(eye,center,up) 'eye'はカメラ位置であり、 'center' Cの座標であり、「上」はカメラアップベクトルである。次に、CからAへの回転行列は、AからCまでの行列の逆行列です。カメラは今度はBと対面するので、カメラの行列はAからBへの回転行列に等しくなります。

最後に、最終的な回転行列は次のように書くことができます。rotationMatrix = matrixAtoB.multiply(new THREE.Matrix4().getInverse(matrixAtoC));

jsfiddle example

この方法は行列です。球状極座標系でもこの問題を解決できます。

+0

完璧です。ありがとう!! – nanni

関連する問題