opengl从模型坐标到世界坐标的转换

时间:2018-10-13 18:53:15

标签: graphics 3d transform

我很难理解从模型坐标到世界坐标的转换。这是幻灯片,我的主要问题是m1,x1,x2,x3,y1,y2,y3和z1,z2,z3。他们代表什么样的价值?以及我应该如何确定。

enter image description here

1 个答案:

答案 0 :(得分:1)

它们代表一种转变。具体来说,它们代表变换后的坐标系的基向量。要了解这意味着什么,我建议您观看3Blue1Brown的“ Essence of linear algebra”,它以直观的方式解释了您需要了解的所有这些转换。

实际上,您要做的主要是三件事:缩放对象,旋转对象以及移动对象。所有这些都是转换。只要您看到“转换”一词,就将其读作“矩阵”。这些操作都是矩阵。

例如,缩放矩阵为:

sx  0  0 0
 0 sy  0 0
 0  0 sz 0
 0  0  0 1

sx是您要沿x方向缩放的数量,依此类推。

旋转矩阵取决于旋转轴,例如,这是按照右手规则将对象绕x轴旋转t弧度角的旋转矩阵:

1       0      0 0
0  cos(t) sin(t) 0
0 -sin(t) cos(t) 0
0       0      0 1

您可以找到其他here

这是用于移动对象的转换矩阵:

0 0 0 tx
0 0 0 ty
0 0 0 tz
0 0 0  1

您可以通过将它们相乘来组合这些变换。因此,如果您的点是(x,y,z),S是缩放矩阵,R是您的旋转矩阵,T是您的平移矩阵,则可以这样变换该点: p = T*R*S*(x,y,z,1)1作为“第4维”用于投影。在完成顶点处理后,GPU将xyz除以该值w。研究投影矩阵以了解更多信息。