Android i';我正在用QCAR、JPCT-AE制作一些应用程序

Android i';我正在用QCAR、JPCT-AE制作一些应用程序,android,qcar-sdk,Android,Qcar Sdk,嗨,我正在用QCAR和JPCT-AE制作一些应用程序。有人能看到我的源代码并给我建议吗?如果可以,我会把我的源代码发给你。我的电子邮件地址是lyhdra99@gmail.com. 请帮帮我^^ 首先 我将modelViewMatrix(QCAR::Matrix44F)从JNI发送到JAVA ex)JNIEXPORT jfloatArray JNICALL Java_jp_may_com_VirtualButtonsRenderer_getNowMatrix(JNIEnv*env,jobjec

嗨,我正在用QCAR和JPCT-AE制作一些应用程序。有人能看到我的源代码并给我建议吗?如果可以,我会把我的源代码发给你。我的电子邮件地址是lyhdra99@gmail.com.

请帮帮我^^


首先

  • 我将modelViewMatrix(QCAR::Matrix44F)从JNI发送到JAVA ex)JNIEXPORT jfloatArray JNICALL Java_jp_may_com_VirtualButtonsRenderer_getNowMatrix(JNIEnv*env,jobject obj)
  • 使用此modelViewMatrix,如下所示


  • 这里,我有个问题。我认为Object3D可以像茶壶(QCAR示例对象)一样在带有modelViewMatrix的标记上移动。但它不能


    这是我的问题

    我想帮助您使用应用程序, 请将您的本机imagetarget.cpp代码发送给我

    在此之前,我想你已经看到了这一页,请参考这一次

    它的项目源代码

    从renderframe获取modelViewMatrix并将其发送到java,如下所示

    常量QCAR::TrackableResult*result=state.getTrackableResult(tIdx)

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

    SampleUtils::RotateSematrix(90.0f、1.0f、0、0和modelViewMatrix.data[0])

    //矩阵求逆 QCAR::Matrix44F inverseMV=SampleMath::Matrix44FInverse(modelViewMatrix)

    //倒换矩阵 QCAR::Matrix44F invTranspMV=样本数学::Matrix44FTranspose(inverseMV)


    将逆转置矩阵发送到java代码。它会很好的。。。我希望:)

    您有什么具体问题可以与我们分享吗?如果你发布了一篇文章,我们可以提供帮助。当有可跟踪对象时,对象会渲染吗?它就是不动?
    public class VirtualButtonsRenderer implements GLSurfaceView.Renderer {
    
    
        public VirtualButtonsRenderer(Activity act) {
            Config.maxAnimationSubSequences = 999;
            // TODO Auto-generated constructor stub
            this.act = act;
            _Object3D = Loader.loadMD2(act.getResources().openRawResource(R.raw.tris), 1.0f);
            _Object3D.setName("MyTarget");
        }
    
        public native float[] getNowMatrix();
    
        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    
            initRendering();
            QCAR.onSurfaceCreated();
            world = new World();
            world.setAmbientLight(20, 20, 20);
            TextureManager tm = TextureManager.getInstance();
            com.threed.jpct.Texture Cover = new com.threed.jpct.Texture(BitmapFactory.decodeStream(act.getResources().openRawResource(R.raw.skin)));
            tm.addTexture("Cover", Cover);          
            _Object3D.setTexture("Cover");
            world.addObject(_Object3D);
            world.buildAllObjects();
            sun = new Light(world);
            sun.setIntensity(250, 250, 250);        
            Camera cam = world.getCamera();
            cam.moveCamera(Camera.CAMERA_MOVEOUT, 100);
            cam.lookAt(_Object3D.getTransformedCenter());           
            SimpleVector sv = new SimpleVector();
            sv.set(_Object3D.getTransformedCenter());
            sv.x -= 300;
            sv.z -= 0;
            sun.setPosition(sv);
            MemoryHelper.compact(); 
    
        }
    
        public void onDrawFrame(GL10 gl) {
            if (!mIsActive)
                return;
            if (renderFrame()) {
                Matrix NowMatrix = new Matrix();
                NowMatrix.fillDump(getNowMatrix());
                world.getCamera().setBack(NowMatrix);
                world.renderScene(fb);          
                world.draw(fb);     
                fb.display();
                return;
            } else {
                mIsTouch = false;
            }
        }
    
    }