プロが教えるわが家の防犯対策術!

FPSのように、カメラの回転値を基準としての回転を行いたいです。
カメラが Z+ を向いていようと、Y+ を向いていようと右に回転させたいと思ったら

Z+ なら Y軸回転を
Y+ なら Z軸回転を

行うような処理を書きたいです。
ですが正直考え方がまとまりません。

・カメラの現在のワールド回転値の取得
・カメラをワールド回転させる

これはできています。

自分が想定している流れとしては
1.カメラのワールド回転値を取得
   (これが回転の基準となりローカル回転で言う X,Y,Z=0,0,0 )
>ローカルX軸回転をさせるとして
2.ローカルX軸の回転値をワールド回転値に変換
3.変換したワールドき転値を取得した回転値に加算する

といった具合でできるのではないかと考えています。
・・・違ったら教えてください。できれば正しい考え方も教えてください。

分からないのは回転のワールドとローカルの変換です。

※注意
ローカルなどと言っていますが親子関係があるわけではありません。
適切な表現方法が分からんかったのでそう言っているだけです。
わかりにくくてすいません。

A 回答 (2件)

回転値というのはオイラー角のことでしょうか?


その前提の回答になりますが、

やはり#1の方も行列について書かれていますが、行列計算が必要です。

カメラの視線方向をオイラー角で管理するというのであれば、計算にはオイラー角
と行列の相互変換が必要です。

・オイラー角→回転行列
http://cflat-inc.hatenablog.com/entry/20130430/1 …
のページにある
R=RX(α)RY(β)RZ(γ)
の計算で得られるRがオイラー角に相当する行列です。

・回転行列→オイラー角
http://spphire9.wordpress.com/2012/07/05/%E5%9B% …

で、これを前提として、質問の内容を実現するには、下記の手順を行います

1. カメラの現在のオイラー角に対応する行列を求める(Rとする)
2. カメラに加算する回転に相当する行列を求める(Sとする)
3. 行列の積 R' = S・R を求める
4. R'をオイラー角に戻す

これでカメラを回転できます。
    • good
    • 0

そういうことをしようとすると行列を使うと便利だよって


http://oshiete.goo.ne.jp/qa/8733385.html
に書いてあるね.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!