1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ローカルの軸をワールド空間上でのベクトルに合わせる回転行列

Last updated at Posted at 2014-11-23

カメラの座標空間(いわゆるビュー座標空間)への変換は、通常の回転行列と異なります。

結論から言うと、以下のような行列になります。
(X軸(1, 0, 0)、Y軸(0, 1, 0)、Z軸(0, 0, 1)をワールド空間のWX(WXx, WXy, WXz)、WY(WYx, WYy, WYz)、WZ(WZx, WZy, WZz)という姿勢に変換する行列)

\begin{vmatrix}
WXx &WYx &WZx \\
WXy &WYy &WZy \\
WXz &WYz &WZz
\end{vmatrix}

となります。

とても分かりやすいですね。
なんか値をそのまま配置してるだけなので、最初はそんな簡単なものでいいの?
という感じでしたが、それぞれの軸を計算してみると納得のものです。

試しにX軸(1, 0, 0)がWX(WXx, WXy, WXz)に変換されるか計算してみると、

\begin{vmatrix}
WXx &WYx &WZx \\
WXy &WYy &WZy \\
WXz &WYz &WZz
\end{vmatrix}
\times
\begin{vmatrix}
1 \\
0 \\
0
\end{vmatrix}
x = (WXx * 1) + (WYx * 0) + (WZx * 0) = WXx \\
y = (WXy * 1) + (WYy * 0) + (WZy * 0) = WXy \\
z = (WXz * 1) + (WZy * 0) + (WZz * 0) = WXz

なので、とある座標空間をすでに計算済の別の座標空間に合わせる場合は、とてもシンプルに行列が作れることになります。
ビュー座標変換以外でもたまに出てくるので、覚えておくと内容を追うのがスムーズになります。

Unityでは、まさにこれを利用して接空間にライトベクトルを変換するマクロが書かれていました。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?