首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >集成JPCT-ae和QCAR(vuforia)

集成JPCT-ae和QCAR(vuforia)
EN

Stack Overflow用户
提问于 2012-10-22 14:10:13
回答 1查看 1.7K关注 0票数 2

我知道我要问的问题有时已经讨论过了,但在看完所有这些问题后,我找不到完整的答案,所以我问了一个新问题

当我尝试将JPCT-aeQCAR集成时,我从jni的renderframe中获得了我的模型视图矩阵,并成功地将其在java中转换为jpct模型,正如预期的那样。但是当我试图将这个矩阵传递给JPCT world camera时,我的模型消失了。

我的代码:在onsurfacechanged中:

代码语言:javascript
复制
world = new World();
            world.setAmbientLight(20, 20, 20);
            sun = new Light(world);
            sun.setIntensity(250, 250, 250);
            cube = Primitives.getCube(1);
            cube.calcTextureWrapSpherical();
            cube.strip();
            cube.build();
            world.addObject(cube);
            cam = world.getCamera();
            cam.moveCamera(Camera.CAMERA_MOVEOUT, 10);
            cam.lookAt(cube.getTransformedCenter());
            SimpleVector sv = new SimpleVector();
            sv.set(cube.getTransformedCenter());
            sv.y -= 100;
            sv.z -= 100;
            sun.setPosition(sv);
            MemoryHelper.compact();

在ondraw中:

代码语言:javascript
复制
com.threed.jpct.Matrix mResult = new com.threed.jpct.Matrix();
            mResult.setDump(modelviewMatrix );  //modelviewMatrix i get from Qcar
            cube.setRotationMatrix(mResult);
            cam.setBack(mResult);
                     fb.clear(back);
        world.renderScene(fb);
        world.draw(fb);
        fb.display();

经过一些研究,我发现QCAR使用右手坐标系,意味着X正向右转,Y正向上升,Z正向出屏幕,但在JPCT坐标系中,X正向右转,Y正向下,Z正向进入屏幕。

Qcar坐标系:

我知道QCar给出的矩阵是一个4*4矩阵,有3*3个旋转值和平移向量。

为了更清楚起见,我发布了矩阵:

模型视图矩阵:

代码语言:javascript
复制
1.512537      -159.66255   -10.275316   0.0
-89.86529      -1.1592013   4.7839375            0.0
-8.619186     10.179538     -159.44305   0.0
59.182976        93.205956     437.2832            1.0

使用cam.setBack(modelviewmatrix.invert(modelviewmatrix))反转后的模型视图矩阵:

代码语言:javascript
复制
5.9083453E-5   -0.01109448   -3.3668696E-4   0.0
0.0040540528   -3.8752193E-4   0.0047518034   0.0
-0.004756433   -4.6811014E-4   0.0040459237   0.0
0.7533285     0.4116795            2.7063704   0.9999999

如果我移除13,14和15个矩阵元素,假设3*3旋转matrix...model被正确旋转,但是平移(图像的输入和输出移动)不在那里,最后我不知道需要什么改变平移矢量。那么,请给我提个建议,我这里遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2014-09-16 17:14:27

QCAR::Matrix44F inverseMatrix = SampleMath::Matrix44FInverse(modelViewMatrix); QCAR::Matrix44F invTransposeMatrix = SampleMath::Matrix44FTranspose(inverseMatrix);

然后将invTransposeMatrix值传递给java

env->SetFloatArrayRegion(modelviewArray, 0, 16, invTransposeMatrix.data); env->CallVoidMethod(obj, method, modelviewArray);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13005814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档