Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL了解两个视点以查看模型转换_Opengl_Matrix - Fatal编程技术网

OpenGL了解两个视点以查看模型转换

OpenGL了解两个视点以查看模型转换,opengl,matrix,Opengl,Matrix,理解模型变换有两种观点,我从红皮书第7版中读到,[大的固定坐标系]和[移动局部坐标系] 我的问题是: 这两种观点之间的区别是什么?在特定情况下何时使用它们 其他上下文信息: 我想给你一些背景知识来帮助我,或者你可以忽略下面的细节 我通过以下方式理解了这两种观点。我想我有以下代码: (像glTranslatef这样的函数已被弃用,由数学库取代,但理论可能仍然有用。) 从局部坐标视图: 从这个角度来看,我们可以这样理解: 电流变换矩阵(CTM)为: 从全局固定坐标视图: 从这个角度来看,我们可以

理解模型变换有两种观点,我从红皮书第7版中读到,[大的固定坐标系]和[移动局部坐标系]

我的问题是:

这两种观点之间的区别是什么?在特定情况下何时使用它们

其他上下文信息:

我想给你一些背景知识来帮助我,或者你可以忽略下面的细节

我通过以下方式理解了这两种观点。我想我有以下代码: (像glTranslatef这样的函数已被弃用,由数学库取代,但理论可能仍然有用。)

从局部坐标视图:

从这个角度来看,我们可以这样理解:

电流变换矩阵(CTM)为:

从全局固定坐标视图:

从这个角度来看,我们可以得到:


这两个坐标系只是一种约定。总有一个全局坐标系,但可能有许多局部坐标系。地方制度的概念只是一种惯例。一般变换矩阵
M
将顶点从一个空间变换到另一个空间:

v' = M * v
因此,
v
在一个坐标空间中,
v'
在另一个坐标空间中。如果
M
描述了一个对象的位置,我们说它将顶点从局部对象坐标系放到全局世界坐标系。另一方面,如果它描述摄影机位置和投影,则会将顶点从世界坐标系放置到另一个局部眼睛坐标系

具有关节的复杂对象(例如人形角色或具有铰链的机构)实际上可能具有多个中间局部空间,在这些空间中变换是链接的,具体取决于对象骨架的结构


通常,使用定义模型顶点的
对象空间
世界空间
,这是坐标可以相互关联的全局空间,以及
相机空间
眼睛空间
,这是屏幕坐标的空间。但随着OpenGL 3着色器的引入,这些着色器是完全任意的:您可以编写着色器,以便它使用单个矩阵将顶点从对象空间直接转换到屏幕空间。因此,不要担心坐标系,只需关注手头的任务—您想显示什么,以及对象应该如何移动(相对于彼此或相对于某个公共参照)。

您好,这个问题很难理解。你的目标是什么?是否要模拟旧的OpenGL
glTranslate()
/
glRotate()
命令?“应用转换的顺序与它们在程序中出现的顺序相反。”。。因为矩阵乘法就是这样工作的,我认为这是在OpenGL中进行转换的唯一方法。@Abhishek Bansal,你的观点是“全局固定坐标”,因为大多数人都倾向于这样解释。你能帮我理解“移动局部坐标”的观点吗?@猪,对不起,我提出了一个混乱的问题。如果我们试图用“移动局部坐标”的观点来解释模型转换,那么转换顺序与程序代码中出现的顺序相同。那么这两种观点的具体使用情况以及它们的区别是什么?谢谢。我想我需要做更多的实验来理解这两种观点观点
v' = M * v