DirToAngles ノードの分析

最終更新:

30pin

- view
管理者のみ編集可
'08/11/14

┼ DirToAngles ノードの分析

概要

  • DirToAngles ノードの角度変換処理を分析する


ノウハウ資料


当サイト応用編の「月の移動」を作成するにあたって、方向を角度に変換する必要が出てきたので DirToAngles ノードを使用したのですが、直感で使用できるものではありませんでした。

他の方法も有ろうかとは思いましたが、今の自分の技量では検討がつきませんでしたので、力技で乗り切る事にしました。

その際に作成した資料の公開です。


◇ 方向-角度変換結果の図

3軸それぞれの単位ベクトルの回転を入力した場合に得られる角度の図です。
※画像クリックで次に進みます

入力(単位ベクトル)     出力(角度)


!! ご注意 !!
  • この結果は体験版に付属する Sandbox2 により得られたものです。
  • 何かが根本的に間違っている可能性が有ります。

─ 規則 ─
  1. 回転方向:右ねじの進む回転方向
  2. X,Y 軸の 0°の位置:特に意味は無く +0°~ +180°が Z 軸のプラス側に来る位置とした。
  3. Z 軸の 0°の位置:入力方向と角度が一致していて解り易いので、-Y 方向を 0°とした。

※ World 座標軸は、北( -X )、西( -Y )、南( X )、東( Y )に対応しています。

出力結果の角度を表す図を作る際、「 回転方向 」 と 「 0°をどこに位置させるか 」 に悩みましたが、上記の独自規則に従いました。

結局の所、この図で確かなのは 「 入力の単位ベクトル 」 と 「 角度の値 」 になります。 その他は参考程度として見て下さい。


─ 図の使用方法について ─

この図は、どのように座標を入れ替えれば欲する角度が得られるかを見付けるヒントになるかと思います。

( 例 )
プレイヤーが仰ぎ見る方向を角度として得る

この場合そのまま入力すると、水平線を見ているのに +180°という結果が出力されます ( X 軸回転の 1/4 図 より ) 。

そこで、Z 軸の回転はある程度素直に出力される事を利用し、「 Z 軸回転の 4/4 図 」 を見本として、「 X 軸回転の 1/4 図 」 の入力の Z 軸を X 軸に、Y 軸を逆向き ( -Y 方向 ) に入れ替えた後、 Z 軸の角度出力を取得する事で、水平線が 0°になる仰角が得られそうだという事が解ります。

ただしこのままでは、プレイヤーが東( +Y )を向いている時にしか有効ではありません。
どの方角の水平線を見ても 0°を出力したい場合は、どの方角を見ても常に -Y 方向の単位ベクトル成分が入力されている必要があります。その為、「 X 軸回転の 1/4 図 」 におけるXY 平面上の単位ベクトルの " 長さ " を " -Y 方向の単位ベクトル成分 " として入力します。

「 常に -Y 方向が必要なのであれば、-1 をそのまま入力してしまえば良いのでは? 」 と考えるかもしれませんが、上下に首を振った時に -Y の長さは短くなる必要が有るので、どうしても長さの計算が必要になります。


◇ roll 入力に関して

一般的に roll とは、以下の図の事を指し、このエディターでもそれを意味する様で、航空機のカメラの傾きなどに使用されるものと思います。

しかし、現在は使用方法が解らないので、解り次第、追記致します。


◇ ツール

今回の調査を行う為に作成したフローグラフです。

t キーを押す度に 10°づつ加算されて DirToAngles ノードに入力され、角度が Log に出力されます。




以上です。




┼ ┼ 












記事メニュー
目安箱バナー