所以我有一个对象正在旋转,然后再次平移和旋转。我将这些翻译的矩阵存储为对象成员。现在,当我开始拾取物体时,我需要知道这个物体的 3D 世界坐标。
目前我已经能够像这样获得对象的位置
coords[0] = finalMatrix[12];
coords[1] = finalMatrix[13];
coords[2] = finalMatrix[14];
这给了我对象的正确位置,但我也想考虑旋转。
任何帮助都会很棒...
所以我是个白痴……我一开始就说对了。我只需要 [12][13][14] 中的位置数据。我的代码中有几个愚蠢的错误,其中一个是在我的射线交叉点上没有足够的迭代......现在一切都排序了,哈哈,我在踢自己......哈哈,无论如何,谢谢大家!
http://www.euclideanspace.com/maths/geometry/affine/matrix4x4/index.htm - 这里解释了 4x4 矩阵是如何工作的。第一个小 3x3 - 是一个旋转矩阵。除了最后一个元素之外的最后一列是平移向量。而 element[4, 4] 是一个比例因子。在链接中阅读有关此内容的更多信息
该矩阵是一个 4x4 矩阵,但由于您刚刚得到一个单维矩阵,因此元素排列如下:
[0] [4] [8] [12]
[1] [5] [9] [13]
[2] [6] [10] [14]
[3] [7] [11] [15]
旋转部分是左上角的 3x3 矩阵,请参见此处,因此在您的情况下,它将是元素[0]-[2]
,[4]-[6]
并且[8]-[10]