Graphics 摄像机/视角变换矩阵

Graphics 摄像机/视角变换矩阵,graphics,Graphics,我想知道是否有人可以告诉我开发4x4转换矩阵的步骤,该矩阵可以用作查看转换 相机位于(1,2,2)^T 相机指向(0,1,0)^T方向 将映射到图像上正y方向的上方向向量是方向(0;0;1)^T 我看了我的笔记,不明白如何解决这些问题,因为我知道它们在计算机图形学中很常见。你可以使用这些公式,只需填写矩阵,然后将每个矩阵一个接一个地相乘,直到你建立了变换矩阵。(此处的旋转矩阵可能有误,请仔细检查公式。) 你想解决什么样的问题?你真的没有问一个狭隘的问题 摄像机位置将通过平移矩阵进行设置: [1

我想知道是否有人可以告诉我开发4x4转换矩阵的步骤,该矩阵可以用作查看转换

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

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

你可以使用这些公式,只需填写矩阵,然后将每个矩阵一个接一个地相乘,直到你建立了变换矩阵。(此处的旋转矩阵可能有误,请仔细检查公式。)

你想解决什么样的问题?你真的没有问一个狭隘的问题

摄像机位置将通过平移矩阵进行设置:

[1 0 0 X]
[0 1 0 Y]
[0 0 1 Z]
[0 0 0 1]
[1 0 0 1]
[0 1 0 2]
[0 0 1 2]
[0 0 0 1]
用[1,2,2]^T代替[X,Y,Z]^T

将为您提供一个翻译矩阵:

[1 0 0 X]
[0 1 0 Y]
[0 0 1 Z]
[0 0 0 1]
[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矩阵进行欺骗和欺骗——这就是奇怪的术语“齐次坐标”的意思。)

你的班级有教科书或课堂讲稿吗(如果是在线的,你能链接到它吗)?我想这些材料会涵盖其他转换,并可能提供示例。你可以试试,把向量v=[-9-8-7]乘以上面的4x4矩阵,看看你从中得到了什么向量。然后尝试插入旋转矩阵的其他值


您可能会遇到一些棘手的问题,需要按正确的顺序将旋转矩阵与平移矩阵相乘:如果平移矩阵不是0,0,0,则R T将是与T R不同的矩阵。

问题是让我开发一个4 x 4矩阵,可以用作具有这些参数的查看变换,为了展示我的工作,我在笔记中找到了一个公式,其中Mw2v=TR,其中Mw2v是矩阵,查看变换世界,T是平移,R是旋转。我向你们展示了如何构造T矩阵。你只需要算出R矩阵,然后把它乘以T矩阵就可以得到你的答案,Mw2v。如果R矩阵是单位矩阵(所有的零和对角线上的一),那么Mw2v=T。我可以告诉你,你必须处理的唯一角度(如果我正确理解这个问题)可能是+/-90度,你只需要计算出它们围绕哪个轴旋转,并将其插入到正确的矩阵方程中(标记为glRotate)在我链接到的页面上。很容易弄错标志,所以要小心。如果可以,请在OpenGL中检查它???