2013-03-11 70 views
0

如何将(x,y,z)坐标从视角金字塔内部转换为(x',y',z')视角立方体内部的坐标? (在右手坐标系中)如何管理角度转换?

我试图将此透视矩阵与(x,y,z)向量相乘,但结果并非我所期望的。

projection matrix

我尝试了:FOV = 70°,方面= 4/3,近= 100,远= 100; x = 100,y = 100,z = -300;

将结果(158.28, 211.05, -344.44)

所有我想是这样的:

plan

由于提前,

+0

如果你的近,远都设置为相同的值,你会得到一个除以零。这是一个错字吗? – 2013-03-11 16:21:24

回答

2

虽然立体矩阵通常变换空间,使得期望的视锥映射到一个规范的体积(可能是一个单位立方体,但不是所有的图形管道是相同的 - 例如,D3D与OpenGL不同),这个体积描述在同质(项目ive)坐标。这是因为实际的投影是非线性变换,但是使用投影坐标系允许对大部分流水线使用线性变换。

因此,如果您想在3D(或2D)空间中获得点,则仍然需要执行投影。

这只是一个鸿沟。当你用一个透视矩阵乘一个点(x,y,z,1)时,你得到一个向量-4(x',y',z',w')。然后需要用x',y'和z'除以w'来进行投影。