Я делаю некоторые приложения с QCAR,JPCT-AE

Привет, я делаю несколько приложений с QCAR и JPCT-AE. Кто-то может увидеть мой исходный код и посоветовать мне? если вы можете, я вышлю вам свой исходный код. мой адрес электронной почты lyhdra99@gmail.com.

Пожалуйста, помогите мне ^^


первый

  1. Я отправляю modelViewMatrix(QCAR::Matrix44F) из JNI в JAVA ex) JNIEXPORT jfloatArray JNICALL Java_jp_may_com_VirtualButtonsRenderer_getNowMatrix(JNIEnv* env, jobject obj)
  2. используйте эту модель ViewMatrix, как показано ниже

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;
        }
    }

}

здесь у меня проблема. я думал, что Object3D может двигаться как чайник (образец объекта QCAR) на маркер с modelViewMatrix. но это не могло

это моя проблема ^^;;

1 ответ

Я хотел бы помочь вам с вашим приложением, пожалуйста, пришлите мне ваш родной код imagetarget.cpp,

до этого я думаю, что вы видели эту страницу, сослаться на этот раз

http://www.jpct.net/wiki/index.php/Integrating_JPCT-AE_with_Vuforia

его исходный код проекта https://github.com/sidneibjunior/vuforia-jpct

получить вашу модель ViewMatrix из renderframe и отправить ее в java, вот так

const QCAR:: TrackableResult * result = state.getTrackableResult (tIdx);

QCAR:: Matrix44F modelViewMatrix = QCAR:: Tool:: convertPose2GLMatrix (result-> getPose ());

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

// инвертировать матрицу QCAR:: Matrix44F inverseMV = SampleMath:: Matrix44FInverse (modelViewMatrix);

// транспонирование инвертированной матрицы QCAR::Matrix44F invTranspMV = SampleMath::Matrix44FTranspose(inverseMV);

отправить обратную транспонированную матрицу в код Java. Это будет работать нормально... я надеюсь:)

Другие вопросы по тегам