4

我在使用带有 jPCT 的 Vuforia 时遇到问题。

我已经成功通过了modelViewMatrixfrom Vuforia 本机代码

QCAR::Matrix44F modelViewMatrix =  QCAR::Tool::convertPose2GLMatrix(imageResult->getPose())

到爪哇。

然后我尝试设置jPCT的相机矩阵。

public void setCameraMatrix(float[] modelViewMatrixFromVuforia) {

        float x = modelViewMatrixFromVuforia[12];
        float y = modelViewMatrixFromVuforia[13];
        float z = modelViewMatrixFromVuforia[14];

        modelViewMatrixFromVuforia[12] = 0;
        modelViewMatrixFromVuforia[13] = 0;
        modelViewMatrixFromVuforia[14] = 0;

        Matrix cameraMatrix = new Matrix();
        cameraMatrix.setDump(modelViewMatrixFromVuforia);

        cameraMatrix = cameraMatrix.invert();
        camera.setBack(cameraMatrix);
        camera.setPosition(x, y, z);
    }

但是没有正确跟踪 3D 对象。我错过了什么?

4

1 回答 1

4

我正在使用它,它工作得很好:

private Matrix mMatrix = new Matrix();
...

mMatrix.setDump(modelViewMatrixFromVuforia); // float[16] sent from native code
mCamera.setBack(mMatrix);

但是在将矩阵发送到 Java之前,您必须将矩阵绕 X 轴旋转 180 度,以匹配从 Vuforia 到 jPCT 的坐标系。

按如下方式在本机代码中进行轮换:

SampleUtils::rotatePoseMatrix(180.0f, 1.0f, 0, 0, &modelViewMatrix.data[0]);
于 2013-01-01T19:07:38.033 回答