2016-11-08 121 views

回答

2

我认为你正在看阵列中的错误位置。相机的x,y,z是变换矩阵的最后一列中:

queryMarkerTransformation(int markerId); 
Returns float array with 16 values. The values represent an OpenGL style transformation matrix. 
The first 4 values represent the first column of the matrix. 

i.e: 
float[16] = [0.24218401, 0.9598883, 0.14125957, 0.0, -0.8614648, 0.2801126, -0.42357886, 0.0, -0.44614935, -0.019116696, 0.8947546, 0.0, 23.678268, -6.4265084, -298.65326, 1.0] 

The matrix looks like: 
0.24218401 -0.8614648 -0.44614935  23.678268 
0.9598883 0.2801126 -0.019116696 -6.4265084 
0.14125957 -0.42357886 0.8947546  -298.65326 
0.0   0.0   0.0    1.0 

The last column represents x,y,z in the camera coordinate system. 

造成这种情况的根源是在这里:https://www.hitl.washington.edu/artoolkit/documentation/tutorialcamera.htm我相信。 (但不知何故,我现在无法到达网址)

现在您还在阅读投影矩阵,而不是转换矩阵。 (https://github.com/artoolkit/artoolkit5/blob/master/AndroidStudioProjects/ARSimpleProj/aRSimple/src/main/java/org/artoolkit/ar/samples/ARSimple/SimpleRenderer.java#L98

如果我正确地追踪了那个值,[14]应该给你到标记的距离。

更新: 我只是写下来这里更详细的解释: http://augmentmy.world/artoolkit-distance-between-camera-and-marker

+1

非常感谢你,它解决了我的问题,实际上我一直在寻找在错误的价值观。 –

+0

欢迎您:) –

相关问题