0

(x,y,z)透視ピラミッド内の(x',y',z')座標を透視キューブ内の座標に変換する方法は? (右手座標系)

この透視行列を(x,y,z)ベクトルで乗算しようとしましたが、結果は期待したものではありません。

射影行列

fov=70°、aspect=4/3、near=100、far=100; で試してみました。x=100、y=100、z=-300;

結果は(158.28, 211.05, -344.44)

私が欲しいのはこれだけです:

予定

前もって感謝します、

4

1 に答える 1

2

遠近法マトリックスは一般に、目的の視錐台が正規のボリューム (ユニット キューブである可能性がありますが、すべてのグラフィックス パイプラインが同じというわけではありません。たとえば、D3D は OpenGL とは異なります) にマップされるように空間を変換しますが、このボリュームは同種で記述されます。 (射影) 座標。これは、実際の射影が非線形変換であるためですが、射影座標系を使用すると、パイプラインの大部分に対して線形変換を使用できます。

そのため、3D (または 2D) 空間でポイントが必要な場合は、投影を実行する必要があります。

これは単なる分割です。

点 (x, y, z, 1) に透視行列を掛けると、ベクトル 4 (x', y', z', w') が得られます。次に、x'、y'、z' を w' で割り、射影を行う必要があります。

于 2013-03-11T16:23:46.187 に答える