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 给定4x4齐次矩阵,如何获得3D世界坐标?_Opengl_3d_Matrix_Geometry_Picking - Fatal编程技术网

Opengl 给定4x4齐次矩阵,如何获得3D世界坐标?

Opengl 给定4x4齐次矩阵,如何获得3D世界坐标?,opengl,3d,matrix,geometry,picking,Opengl,3d,Matrix,Geometry,Picking,所以我有一个物体,它在旋转,然后平移,再旋转。我将这些翻译的矩阵存储为对象成员。现在,当我谈到对象拾取时,我需要知道这个对象的3D世界坐标 目前我已经能够像这样得到物体的位置 coords[0]=最终矩阵[12] coords[1]=最终矩阵[13] coords[2]=最终矩阵[14]; 这是给我的对象的正确位置,但我想考虑旋转以及 任何帮助都很好…矩阵是4x4矩阵,但由于您刚刚得到了一个一维矩阵,因此元素的排列方式如下: [0] [4] [8] [12] [1] [5] [9

所以我有一个物体,它在旋转,然后平移,再旋转。我将这些翻译的矩阵存储为对象成员。现在,当我谈到对象拾取时,我需要知道这个对象的3D世界坐标

目前我已经能够像这样得到物体的位置


coords[0]=最终矩阵[12]
coords[1]=最终矩阵[13]
coords[2]=最终矩阵[14];

这是给我的对象的正确位置,但我想考虑旋转以及


任何帮助都很好…

矩阵是4x4矩阵,但由于您刚刚得到了一个一维矩阵,因此元素的排列方式如下:

[0]  [4]  [8]   [12]
[1]  [5]  [9]   [13]
[2]  [6]  [10]  [14]
[3]  [7]  [11]  [15]

旋转部分是左上角的3x3矩阵,因此在您的示例中,它将是元素
[0]-[2]
[4]-[6]
[8]-[10]

-以下是4x4矩阵工作原理的说明。第一个小3x3-是旋转矩阵。除最后一个元素外的最后一列是平移向量。元素[4,4]是一个比例因子。在链接上阅读更多关于这方面的信息,所以我是个白痴。。。我一开始是对的。我所需要的只是[12][13][14]中的职位数据。我的代码中有几个愚蠢的bug,其中一个在我的ray交叉点上没有足够的迭代次数…现在都排序好了lol我踢我自己..哈哈,谢谢大家

在1.2版左右有一个OpenGL拾取(和选择)教程。他们建议使用特殊的渲染模式,在这种模式下,每个对象都会收到其唯一的颜色,这被解释为对象标识符。按照这种方法,你根本不需要知道旋转。。我知道我所做的并不是做事情的最佳方式。我只是利用这个机会来学习更多关于矩阵和旋转等的知识。你有这个选择图坦卡蒙的链接吗?我在使用opengl es,所以我不得不为标准GL中无法提供的东西做一些变通。thxI认为这对你没有多大帮助-这就是为什么我没有把它作为一个答案发布-只是一个提示。链接是:是的,这对es不起作用,我不认为,但无论如何,谢谢@斯托夫81-我不确定我是否理解你的问题。你到底想实现什么?我希望坐标是这个物体的三维坐标。我已经完成了对象的所有转换,并将矩阵保存在finalMatrix中。所以我想得到物体在最终矩阵中的位置。我不知道怎么说得更清楚。thx@Stoff81-值
[12]-[14]
给出了位置-正如您在问题中确定的-旋转如何改变事情?嗯,uve让我很困惑lol。。。就在我开始旋转/移动我的对象时,拾取不再起作用,所以我开始认为我需要考虑旋转。@Stoff81-我现在明白了。是的,你确实需要考虑到轮换-然而,我的解释能力让我失望。我只能建议您阅读我链接的页面并搜索其他教程。他们应该(希望)说得更清楚。这和我贴的链接是一样的;)