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