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 回答