将jPCT与Vuforia / QCAR SDK集成

4

我在使用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个回答

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]);

我已经添加了cameraMatrix.rotateX((float)Math.PI),但它不起作用。你介意分享一下你的代码吗?谢谢。 - jack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接