如何将(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)
我想要的是这个:
提前致谢,
如何将(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)
我想要的是这个:
提前致谢,
虽然透视矩阵通常会转换空间,以便所需的视锥体映射到规范体积(可能是单位立方体,但并非所有图形管道都相同 - 例如,D3D 与 OpenGL 不同),但该体积是用同质的(投影)坐标。这是因为实际投影是非线性变换,但使用投影坐标系允许对大部分管道使用线性变换。
因此,如果您想要 3D(或 2D)空间中的一个点,您仍然需要执行投影。
这简直就是一个分水岭。
当你将一个点 (x, y, z, 1) 乘以一个透视矩阵时,你会得到一个向量 4 (x', y', z', w')。然后您需要将 x'、y' 和 z' 除以 w' 来进行投影。