ビュー変換を定義するには、直交基底を計算する必要があります。これは、互いに直交し、単位長を持つ基底ベクトルのセットです。
単位長基準は、ベクトルを正規化することで簡単に達成できます。
外積は、ベクトルを直交させるために使用されます。すでに述べたように、最初に x ベクトルが直交化され、その後、直交化することによってアップ ベクトルが再計算されます。
x 軸 (右方向) は常にビュー方向とアップ ベクトルに依存します。(0, 1, 0) のアップ ベクトルを想定すると、x 軸はビュー方向のみに依存します。以下にいくつかの例を示します (ビューの方向は常に同じ平面にあります)。
ビューの方向がアップ ベクトルを通過し、その側が変わると、右のベクトルが反転することがわかります。これが、アップ ベクトルとビュー方向が平行である場合に計算が失敗する理由です。右のベクトルがどこを指すかを決定する方法はありません (その結果、クロス積がゼロになります)。これらのベクトルを使用してシーンをレンダリングすると、ビュー方向がアップ ベクトルを通過すると、イメージが水平方向に反転することがわかります。
y 軸に平行なビュー方向を指定する場合は、平行ではないアップ ベクトルを指定する必要があります。これにより、妥当な右ベクトルを計算することができます。
もちろん、特定の右ベクトルを で固定したい場合は、アップ ベクトルを計算できますup = cross(direction, right)
。