将jPCT与Vuforia / QCAR SDK集成

时间:2013-01-01 10:04:48

标签: java android opengl-es qcar-sdk jpct

使用Vuforia和jPCT时遇到问题。

我已成功通过Vuforia原生代码中的modelViewMatrix

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

到Java。

然后我尝试设置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对象未被正确跟踪。我错过了什么?

1 个答案:

答案 0 :(得分:4)

我正在使用它,它完美无缺:

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

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

但是你需要将矩阵围绕X轴旋转180度,然后再将它发送到Java,以便匹配从Vuforia到jPCT的坐标系。

在本机代码中进行旋转,如下所示:

SampleUtils::rotatePoseMatrix(180.0f, 1.0f, 0, 0, &modelViewMatrix.data[0]);