在将JPCT与ARToolkit项目的ARNative集成时,我遇到了一些问题.
用途:
利用jpct绘制基于ARToolkit的模型;
状态:
我可以在预览数据后面的屏幕上呈现一个模型;
然而,模型不能在正确的位置上显示;
我不知道如何使用来自ARToolkit的ProjectionMatrix进行JPCT.
我的代码如下所示:
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
ARNativeActivity.nativeSurfaceCreated();
}
public void onSurfaceChanged(GL10 unused, int width, int height) {
ARNativeActivity.nativeSurfaceChanged(width, height);
glViewport(0, 0, width, height);
fb = new FrameBuffer( width, height); // OpenGL ES 1.x constructor
world = new World();
world.setAmbientLight(20, 20, 20);
sun = new Light(world);
sun.setIntensity(250, 250, 250);
loadOBJ("cube.obj" , "cube.mtl" , "cube");
world.addObject(cubeColor);
cam = world.getCamera();
cam.moveCamera(Camera.CAMERA_MOVEOUT, 50);
cam.lookAt(cubeColor.getTransformedCenter());
SimpleVector sv = new SimpleVector();
sv.set(cubeColor.getTransformedCenter());
sv.y -= 100;
sv.z -= 100;
sun.setPosition(sv);
MemoryHelper.compact();
}
public void onDrawFrame(GL10 unused) {
glClear(GL_COLOR_BUFFER_BIT);
ARNativeActivity.nativeDrawFrame();
float[] projection = ARNativeActivity.getProjectMatrix();
Matrix projMatrix = new Matrix();
projMatrix.setDump(projection);
projMatrix.transformToGL();
SimpleVector translation = projMatrix.getTranslation();
SimpleVector dir = projMatrix.getZAxis();
SimpleVector up = projMatrix.getYAxis();
cam.setPosition(translation);
cam.setOrientation(dir, up);
world.renderScene(fb);
world.draw(fb);
fb.display();
} 发布于 2015-12-28 07:28:52
我认为这个问题与你提出的一个新问题非常相似:Rendering a model basic on JPCT-AE with ARToolkit in Android。它很可能会被复制。无论如何,我仍然没有足够的特权将其标记为复制,所以我引用另一个,并试图回答细微的差异。我能看到的唯一不同之处是,这里仍然没有使用are给出的转换矩阵。你必须通过打电话得到它
ARNativeActivity.getTransformationM()并将其放在JPCT矩阵中:
transformM.setIdentity();
transformM .setDump(ARNativeActivity.getTransformationM());
transformM .transformToGL();如前所述,已经是在另一个问题上,所以我建议所有的用户去那里寻求一个更完整的答案和外部参考。
https://stackoverflow.com/questions/33339972
复制相似问题