相机/查看转换矩阵

时间:2011-01-31 06:07:01

标签: graphics

我想知道是否有人可以向我展示开发可用作观看转换的4x4转换矩阵的步骤。

相机处于(1,2,2)^ T 摄像机指向方向(0,1,0)^ T 将映射到图像上的正y方向的向上矢量是方向(0; 0; 1)^ T.

我查看了我的笔记并且不明白如何解决这些类型的问题,因为我知道它们在计算机图形学中很常见。

1 个答案:

答案 0 :(得分:1)

您可以使用公式here,只需填充矩阵并将每个矩阵一个接一个地相乘,直到您构建了变换矩阵。 (旋转矩阵可能有误,所以仔细检查公式here。)

您想要解决哪些类型的问题?你并没有真正提出一个狭隘的问题。

摄像机位置将使用翻译矩阵设置:

[1 0 0 X]
[0 1 0 Y]
[0 0 1 Z]
[0 0 0 1]

将[1,2,2] ^ T代入[X,Y,Z] ^ T

会给你一个翻译矩阵:

[1 0 0 1]
[0 1 0 2]
[0 0 1 2]
[0 0 0 1]

这可以乘以输入向量

[x y z 1]^T

改变这一点,如下:

[1 0 0 1] [x]  =  x+1
[0 1 0 2] [y]  =  y+2
[0 0 1 2] [z]  =  z+2
[0 0 0 1] [1]  =  1

对于输入向量[4,5,6,1],这将产生[5,7,8,1]。

看,它只是通过上面插入的X,Y,Z移动或平移输入的x,y,z点(暂时忽略最后一个组件)。

请记住矩阵M乘以向量v会给出一个向量,称之为p

p = M v

将此视为调用函数,有点像p = sin(x)但是p = M(v)其中M是转换函数,它恰好是矩阵的形式,因为我们关心的转换可以用线性算子严格表示,这是一种说矩阵乘法的奇特方式,这只是一种说明4个标量乘法之和的奇特方式。要将这些矩阵变换链接起来就好像它们是函数调用一样,只需将它们相继相乘即可。 (请注意,这是一个简化,因为我们需要进行除法来进行透视变换,这就是为什么我们使用4x4矩阵而不是仅仅3x3来欺骗和做技巧 - 这就是奇怪的术语“同质坐标”的含义。)< / p>

您的班级是否有教科书或讲义(如果在线可以链接到它)?我想这些材料将涵盖其他变换并可能提供示例。你可以尝试一下,将一些向量v = [ - 9 -8 -7]乘以上面的4x4矩阵,看看你得到的是什么[x y z w]向量。然后尝试插入旋转矩阵的其他值。

您可能会遇到棘手的位,您需要将旋转矩阵乘以正确的顺序乘以平移矩阵:如果平移矩阵不是0,0,0,则RT将是与TR不同的矩阵。 / p>