2013-01-01 54 views
4

我有使用Vuforia和jPCT的問題。將jPCT與Vuforia/QCAR SDK集成

我已經成功地從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對象沒有被正確地跟蹤。我錯過了什麼?

回答

4

我使用這個和它完美的作品:

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

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

但是你必須前繞X軸矩陣180度,你就爲了從Vuforia座標系統相匹配發送到Java到jPCT。

做旋轉機代碼如下:

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

我已經加入cameraMatrix.rotateX((浮動)Math.PI),但它不工作。你介意分享你的代碼正在工作嗎?謝謝。 – jack