Vuforia & Jpct-ae in android doesn't attach 3D object to marker











up vote
0
down vote

favorite












I try to place 3D object in marker use Jpct and Vuforia, object rendered success but not fixing in marker. I follow this tutorial — Integrating Vuforia and Jpct-ae in Android



I have this code for render 3D model, but it doesn't work how I expected, because 3D model move when phone with camera move but I set the cam.setFOV(fov), cam.setYFOV(fovy) how you can see in code, but it doesn't help me solve the problem. For greater clarity you can look at screenshot.



Image about how work code below



enter image description here



 public class ImageTargetRenderJpctExample implements GLSurfaceView.Renderer, SampleAppRendererControl{
private static final String LOGTAG = "ImageTargetRenderer";

private SampleApplicationSession vuforiaAppSession;
private ImageTargets mActivity;
private SampleAppRenderer mSampleAppRenderer;

private boolean mIsActive = false;

private World world = null;
private Light sun = null;
public Object3D obj;
public Texture texture;
private FrameBuffer fb = null;
private GL10 lastGl = null;
private Camera cam;
private float modelViewMat;
private float fov;
private float fovy;

public ImageTargetRenderJpctExample(ImageTargets activity, SampleApplicationSession session)
{
mActivity = activity;
vuforiaAppSession = session;

mSampleAppRenderer = new SampleAppRenderer(
this, mActivity, Device.MODE.MODE_AR, false, -1.0f, 5);


world = new World();
world.setAmbientLight(200, 200, 200);

sun = new Light(world);
sun.setIntensity(250, 250, 250);

Object3D object3Darray = new Object3D[0];
try {
object3Darray = Loader.load3DS(mActivity.getAssets().open("Audi_S3.3DS"),0.10f);
} catch (IOException e) {
e.printStackTrace();
}

obj = Object3D.mergeAll(object3Darray);
obj.strip();
obj.build();

world.addObject(obj);

cam = world.getCamera();
obj.translate(0,0, 1.5f);

SimpleVector sv = new SimpleVector();
sv.set(obj.getTransformedCenter());
sv.y -= 100;
sv.z -= 100;
sun.setPosition(sv);
MemoryHelper.compact();
}

@Override
public void onDrawFrame(GL10 gl)
{
if (!mIsActive)
return;

//obj.rotateZ(0.025f);

mSampleAppRenderer.render();

updateCamera();
world.renderScene(fb);
world.draw(fb);
fb.display();
}


public void setActive(boolean active)
{
mIsActive = active;

if(mIsActive)
mSampleAppRenderer.configureVideoBackground();
}


@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config)
{
vuforiaAppSession.onSurfaceCreated();
mSampleAppRenderer.onSurfaceCreated();
}

@Override
public void onSurfaceChanged(GL10 gl, int w, int h) {
vuforiaAppSession.onSurfaceChanged(w, h);

mSampleAppRenderer.onConfigurationChanged(mIsActive);
initRendering();

if (lastGl != gl) {
if (fb != null) {
fb.dispose();
}
fb = new FrameBuffer(w, h);
Config.viewportOffsetAffectsRenderTarget = true;

fb.setVirtualDimensions(fb.getWidth(), fb.getHeight());
lastGl = gl;
} else {
fb.resize(w, h);
fb.setVirtualDimensions(w, h);
}


}

private void initRendering()
{
GLES20.glClearColor(0.0f, 0.0f, 0.0f, Vuforia.requiresAlpha() ? 0.0f : 1.0f);

mActivity.loadingDialogHandler
.sendEmptyMessage(LoadingDialogHandler.HIDE_LOADING_DIALOG);
}

public void updateConfiguration()
{
mSampleAppRenderer.onConfigurationChanged(mIsActive);
CameraCalibration camCalibration = com.vuforia.CameraDevice.getInstance().getCameraCalibration();
Vec2F size = camCalibration.getSize();
Vec2F focalLength = camCalibration.getFocalLength();
float fovyRadians = (float) (2 * Math.atan(0.5f * size.getData()[1] / focalLength.getData()[1]));
float fovRadians = (float) (2 * Math.atan(0.5f * size.getData()[0] / focalLength.getData()[0]));

if (mSampleAppRenderer.mIsPortrait) {
setFovy(fovRadians);
setFov(fovyRadians);
} else {
setFov(fovRadians);
setFovy(fovyRadians);
}

Timber.d("Updated Config called");
}

public void renderFrame(State state, float projectionMatrix)
{
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);

mSampleAppRenderer.renderVideoBackground(state);

float modelviewArray = new float[16];

for (int tIdx = 0; tIdx < state.getNumTrackableResults(); tIdx++) {
TrackableResult result = state.getTrackableResult(tIdx);
Trackable trackable = result.getTrackable();
printUserData(trackable);

Matrix44F modelViewMatrix = Tool.convertPose2GLMatrix(result.getPose());
Matrix44F inverseMV = SampleMath.Matrix44FInverse(modelViewMatrix);
Matrix44F invTranspMV = SampleMath.Matrix44FTranspose(inverseMV);

modelviewArray = invTranspMV.getData();
updateModelviewMatrix(modelviewArray);

}

if (state.getNumTrackableResults() == 0) {
float m = {
1,0,0,0,
0,1,0,0,
0,0,1,0,
0,0,-10000,1
};
modelviewArray = m;
updateModelviewMatrix(modelviewArray);
}

Renderer.getInstance().end();
}

private void updateModelviewMatrix(float mat) {
modelViewMat = mat;
}

private void printUserData(Trackable trackable)
{
String userData = (String) trackable.getUserData();
}


private void updateCamera() {
if (modelViewMat != null) {
float m = modelViewMat;

/*Matrix mat = new Matrix();
mat.setDump(modelViewMat);
cam.setBack(mat);*/

final SimpleVector camUp;
if (mSampleAppRenderer.mIsPortrait) {
camUp = new SimpleVector(-m[0], -m[1], -m[2]);
} else {
camUp = new SimpleVector(-m[4], -m[5], -m[6]);
}

final SimpleVector camDirection = new SimpleVector(m[8], m[9], m[10]);
final SimpleVector camPosition = new SimpleVector(m[12], m[13], m[14]);

cam.setOrientation(camDirection, camUp);
cam.setPosition(camPosition);

cam.setFOV(fov);
cam.setYFOV(fovy);
}
}

private void setFov(float fov) {
this.fov = fov;
}

private void setFovy(float fovy) {
this.fovy = fovy;
}}









share|improve this question




























    up vote
    0
    down vote

    favorite












    I try to place 3D object in marker use Jpct and Vuforia, object rendered success but not fixing in marker. I follow this tutorial — Integrating Vuforia and Jpct-ae in Android



    I have this code for render 3D model, but it doesn't work how I expected, because 3D model move when phone with camera move but I set the cam.setFOV(fov), cam.setYFOV(fovy) how you can see in code, but it doesn't help me solve the problem. For greater clarity you can look at screenshot.



    Image about how work code below



    enter image description here



     public class ImageTargetRenderJpctExample implements GLSurfaceView.Renderer, SampleAppRendererControl{
    private static final String LOGTAG = "ImageTargetRenderer";

    private SampleApplicationSession vuforiaAppSession;
    private ImageTargets mActivity;
    private SampleAppRenderer mSampleAppRenderer;

    private boolean mIsActive = false;

    private World world = null;
    private Light sun = null;
    public Object3D obj;
    public Texture texture;
    private FrameBuffer fb = null;
    private GL10 lastGl = null;
    private Camera cam;
    private float modelViewMat;
    private float fov;
    private float fovy;

    public ImageTargetRenderJpctExample(ImageTargets activity, SampleApplicationSession session)
    {
    mActivity = activity;
    vuforiaAppSession = session;

    mSampleAppRenderer = new SampleAppRenderer(
    this, mActivity, Device.MODE.MODE_AR, false, -1.0f, 5);


    world = new World();
    world.setAmbientLight(200, 200, 200);

    sun = new Light(world);
    sun.setIntensity(250, 250, 250);

    Object3D object3Darray = new Object3D[0];
    try {
    object3Darray = Loader.load3DS(mActivity.getAssets().open("Audi_S3.3DS"),0.10f);
    } catch (IOException e) {
    e.printStackTrace();
    }

    obj = Object3D.mergeAll(object3Darray);
    obj.strip();
    obj.build();

    world.addObject(obj);

    cam = world.getCamera();
    obj.translate(0,0, 1.5f);

    SimpleVector sv = new SimpleVector();
    sv.set(obj.getTransformedCenter());
    sv.y -= 100;
    sv.z -= 100;
    sun.setPosition(sv);
    MemoryHelper.compact();
    }

    @Override
    public void onDrawFrame(GL10 gl)
    {
    if (!mIsActive)
    return;

    //obj.rotateZ(0.025f);

    mSampleAppRenderer.render();

    updateCamera();
    world.renderScene(fb);
    world.draw(fb);
    fb.display();
    }


    public void setActive(boolean active)
    {
    mIsActive = active;

    if(mIsActive)
    mSampleAppRenderer.configureVideoBackground();
    }


    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config)
    {
    vuforiaAppSession.onSurfaceCreated();
    mSampleAppRenderer.onSurfaceCreated();
    }

    @Override
    public void onSurfaceChanged(GL10 gl, int w, int h) {
    vuforiaAppSession.onSurfaceChanged(w, h);

    mSampleAppRenderer.onConfigurationChanged(mIsActive);
    initRendering();

    if (lastGl != gl) {
    if (fb != null) {
    fb.dispose();
    }
    fb = new FrameBuffer(w, h);
    Config.viewportOffsetAffectsRenderTarget = true;

    fb.setVirtualDimensions(fb.getWidth(), fb.getHeight());
    lastGl = gl;
    } else {
    fb.resize(w, h);
    fb.setVirtualDimensions(w, h);
    }


    }

    private void initRendering()
    {
    GLES20.glClearColor(0.0f, 0.0f, 0.0f, Vuforia.requiresAlpha() ? 0.0f : 1.0f);

    mActivity.loadingDialogHandler
    .sendEmptyMessage(LoadingDialogHandler.HIDE_LOADING_DIALOG);
    }

    public void updateConfiguration()
    {
    mSampleAppRenderer.onConfigurationChanged(mIsActive);
    CameraCalibration camCalibration = com.vuforia.CameraDevice.getInstance().getCameraCalibration();
    Vec2F size = camCalibration.getSize();
    Vec2F focalLength = camCalibration.getFocalLength();
    float fovyRadians = (float) (2 * Math.atan(0.5f * size.getData()[1] / focalLength.getData()[1]));
    float fovRadians = (float) (2 * Math.atan(0.5f * size.getData()[0] / focalLength.getData()[0]));

    if (mSampleAppRenderer.mIsPortrait) {
    setFovy(fovRadians);
    setFov(fovyRadians);
    } else {
    setFov(fovRadians);
    setFovy(fovyRadians);
    }

    Timber.d("Updated Config called");
    }

    public void renderFrame(State state, float projectionMatrix)
    {
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);

    mSampleAppRenderer.renderVideoBackground(state);

    float modelviewArray = new float[16];

    for (int tIdx = 0; tIdx < state.getNumTrackableResults(); tIdx++) {
    TrackableResult result = state.getTrackableResult(tIdx);
    Trackable trackable = result.getTrackable();
    printUserData(trackable);

    Matrix44F modelViewMatrix = Tool.convertPose2GLMatrix(result.getPose());
    Matrix44F inverseMV = SampleMath.Matrix44FInverse(modelViewMatrix);
    Matrix44F invTranspMV = SampleMath.Matrix44FTranspose(inverseMV);

    modelviewArray = invTranspMV.getData();
    updateModelviewMatrix(modelviewArray);

    }

    if (state.getNumTrackableResults() == 0) {
    float m = {
    1,0,0,0,
    0,1,0,0,
    0,0,1,0,
    0,0,-10000,1
    };
    modelviewArray = m;
    updateModelviewMatrix(modelviewArray);
    }

    Renderer.getInstance().end();
    }

    private void updateModelviewMatrix(float mat) {
    modelViewMat = mat;
    }

    private void printUserData(Trackable trackable)
    {
    String userData = (String) trackable.getUserData();
    }


    private void updateCamera() {
    if (modelViewMat != null) {
    float m = modelViewMat;

    /*Matrix mat = new Matrix();
    mat.setDump(modelViewMat);
    cam.setBack(mat);*/

    final SimpleVector camUp;
    if (mSampleAppRenderer.mIsPortrait) {
    camUp = new SimpleVector(-m[0], -m[1], -m[2]);
    } else {
    camUp = new SimpleVector(-m[4], -m[5], -m[6]);
    }

    final SimpleVector camDirection = new SimpleVector(m[8], m[9], m[10]);
    final SimpleVector camPosition = new SimpleVector(m[12], m[13], m[14]);

    cam.setOrientation(camDirection, camUp);
    cam.setPosition(camPosition);

    cam.setFOV(fov);
    cam.setYFOV(fovy);
    }
    }

    private void setFov(float fov) {
    this.fov = fov;
    }

    private void setFovy(float fovy) {
    this.fovy = fovy;
    }}









    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I try to place 3D object in marker use Jpct and Vuforia, object rendered success but not fixing in marker. I follow this tutorial — Integrating Vuforia and Jpct-ae in Android



      I have this code for render 3D model, but it doesn't work how I expected, because 3D model move when phone with camera move but I set the cam.setFOV(fov), cam.setYFOV(fovy) how you can see in code, but it doesn't help me solve the problem. For greater clarity you can look at screenshot.



      Image about how work code below



      enter image description here



       public class ImageTargetRenderJpctExample implements GLSurfaceView.Renderer, SampleAppRendererControl{
      private static final String LOGTAG = "ImageTargetRenderer";

      private SampleApplicationSession vuforiaAppSession;
      private ImageTargets mActivity;
      private SampleAppRenderer mSampleAppRenderer;

      private boolean mIsActive = false;

      private World world = null;
      private Light sun = null;
      public Object3D obj;
      public Texture texture;
      private FrameBuffer fb = null;
      private GL10 lastGl = null;
      private Camera cam;
      private float modelViewMat;
      private float fov;
      private float fovy;

      public ImageTargetRenderJpctExample(ImageTargets activity, SampleApplicationSession session)
      {
      mActivity = activity;
      vuforiaAppSession = session;

      mSampleAppRenderer = new SampleAppRenderer(
      this, mActivity, Device.MODE.MODE_AR, false, -1.0f, 5);


      world = new World();
      world.setAmbientLight(200, 200, 200);

      sun = new Light(world);
      sun.setIntensity(250, 250, 250);

      Object3D object3Darray = new Object3D[0];
      try {
      object3Darray = Loader.load3DS(mActivity.getAssets().open("Audi_S3.3DS"),0.10f);
      } catch (IOException e) {
      e.printStackTrace();
      }

      obj = Object3D.mergeAll(object3Darray);
      obj.strip();
      obj.build();

      world.addObject(obj);

      cam = world.getCamera();
      obj.translate(0,0, 1.5f);

      SimpleVector sv = new SimpleVector();
      sv.set(obj.getTransformedCenter());
      sv.y -= 100;
      sv.z -= 100;
      sun.setPosition(sv);
      MemoryHelper.compact();
      }

      @Override
      public void onDrawFrame(GL10 gl)
      {
      if (!mIsActive)
      return;

      //obj.rotateZ(0.025f);

      mSampleAppRenderer.render();

      updateCamera();
      world.renderScene(fb);
      world.draw(fb);
      fb.display();
      }


      public void setActive(boolean active)
      {
      mIsActive = active;

      if(mIsActive)
      mSampleAppRenderer.configureVideoBackground();
      }


      @Override
      public void onSurfaceCreated(GL10 gl, EGLConfig config)
      {
      vuforiaAppSession.onSurfaceCreated();
      mSampleAppRenderer.onSurfaceCreated();
      }

      @Override
      public void onSurfaceChanged(GL10 gl, int w, int h) {
      vuforiaAppSession.onSurfaceChanged(w, h);

      mSampleAppRenderer.onConfigurationChanged(mIsActive);
      initRendering();

      if (lastGl != gl) {
      if (fb != null) {
      fb.dispose();
      }
      fb = new FrameBuffer(w, h);
      Config.viewportOffsetAffectsRenderTarget = true;

      fb.setVirtualDimensions(fb.getWidth(), fb.getHeight());
      lastGl = gl;
      } else {
      fb.resize(w, h);
      fb.setVirtualDimensions(w, h);
      }


      }

      private void initRendering()
      {
      GLES20.glClearColor(0.0f, 0.0f, 0.0f, Vuforia.requiresAlpha() ? 0.0f : 1.0f);

      mActivity.loadingDialogHandler
      .sendEmptyMessage(LoadingDialogHandler.HIDE_LOADING_DIALOG);
      }

      public void updateConfiguration()
      {
      mSampleAppRenderer.onConfigurationChanged(mIsActive);
      CameraCalibration camCalibration = com.vuforia.CameraDevice.getInstance().getCameraCalibration();
      Vec2F size = camCalibration.getSize();
      Vec2F focalLength = camCalibration.getFocalLength();
      float fovyRadians = (float) (2 * Math.atan(0.5f * size.getData()[1] / focalLength.getData()[1]));
      float fovRadians = (float) (2 * Math.atan(0.5f * size.getData()[0] / focalLength.getData()[0]));

      if (mSampleAppRenderer.mIsPortrait) {
      setFovy(fovRadians);
      setFov(fovyRadians);
      } else {
      setFov(fovRadians);
      setFovy(fovyRadians);
      }

      Timber.d("Updated Config called");
      }

      public void renderFrame(State state, float projectionMatrix)
      {
      GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);

      mSampleAppRenderer.renderVideoBackground(state);

      float modelviewArray = new float[16];

      for (int tIdx = 0; tIdx < state.getNumTrackableResults(); tIdx++) {
      TrackableResult result = state.getTrackableResult(tIdx);
      Trackable trackable = result.getTrackable();
      printUserData(trackable);

      Matrix44F modelViewMatrix = Tool.convertPose2GLMatrix(result.getPose());
      Matrix44F inverseMV = SampleMath.Matrix44FInverse(modelViewMatrix);
      Matrix44F invTranspMV = SampleMath.Matrix44FTranspose(inverseMV);

      modelviewArray = invTranspMV.getData();
      updateModelviewMatrix(modelviewArray);

      }

      if (state.getNumTrackableResults() == 0) {
      float m = {
      1,0,0,0,
      0,1,0,0,
      0,0,1,0,
      0,0,-10000,1
      };
      modelviewArray = m;
      updateModelviewMatrix(modelviewArray);
      }

      Renderer.getInstance().end();
      }

      private void updateModelviewMatrix(float mat) {
      modelViewMat = mat;
      }

      private void printUserData(Trackable trackable)
      {
      String userData = (String) trackable.getUserData();
      }


      private void updateCamera() {
      if (modelViewMat != null) {
      float m = modelViewMat;

      /*Matrix mat = new Matrix();
      mat.setDump(modelViewMat);
      cam.setBack(mat);*/

      final SimpleVector camUp;
      if (mSampleAppRenderer.mIsPortrait) {
      camUp = new SimpleVector(-m[0], -m[1], -m[2]);
      } else {
      camUp = new SimpleVector(-m[4], -m[5], -m[6]);
      }

      final SimpleVector camDirection = new SimpleVector(m[8], m[9], m[10]);
      final SimpleVector camPosition = new SimpleVector(m[12], m[13], m[14]);

      cam.setOrientation(camDirection, camUp);
      cam.setPosition(camPosition);

      cam.setFOV(fov);
      cam.setYFOV(fovy);
      }
      }

      private void setFov(float fov) {
      this.fov = fov;
      }

      private void setFovy(float fovy) {
      this.fovy = fovy;
      }}









      share|improve this question















      I try to place 3D object in marker use Jpct and Vuforia, object rendered success but not fixing in marker. I follow this tutorial — Integrating Vuforia and Jpct-ae in Android



      I have this code for render 3D model, but it doesn't work how I expected, because 3D model move when phone with camera move but I set the cam.setFOV(fov), cam.setYFOV(fovy) how you can see in code, but it doesn't help me solve the problem. For greater clarity you can look at screenshot.



      Image about how work code below



      enter image description here



       public class ImageTargetRenderJpctExample implements GLSurfaceView.Renderer, SampleAppRendererControl{
      private static final String LOGTAG = "ImageTargetRenderer";

      private SampleApplicationSession vuforiaAppSession;
      private ImageTargets mActivity;
      private SampleAppRenderer mSampleAppRenderer;

      private boolean mIsActive = false;

      private World world = null;
      private Light sun = null;
      public Object3D obj;
      public Texture texture;
      private FrameBuffer fb = null;
      private GL10 lastGl = null;
      private Camera cam;
      private float modelViewMat;
      private float fov;
      private float fovy;

      public ImageTargetRenderJpctExample(ImageTargets activity, SampleApplicationSession session)
      {
      mActivity = activity;
      vuforiaAppSession = session;

      mSampleAppRenderer = new SampleAppRenderer(
      this, mActivity, Device.MODE.MODE_AR, false, -1.0f, 5);


      world = new World();
      world.setAmbientLight(200, 200, 200);

      sun = new Light(world);
      sun.setIntensity(250, 250, 250);

      Object3D object3Darray = new Object3D[0];
      try {
      object3Darray = Loader.load3DS(mActivity.getAssets().open("Audi_S3.3DS"),0.10f);
      } catch (IOException e) {
      e.printStackTrace();
      }

      obj = Object3D.mergeAll(object3Darray);
      obj.strip();
      obj.build();

      world.addObject(obj);

      cam = world.getCamera();
      obj.translate(0,0, 1.5f);

      SimpleVector sv = new SimpleVector();
      sv.set(obj.getTransformedCenter());
      sv.y -= 100;
      sv.z -= 100;
      sun.setPosition(sv);
      MemoryHelper.compact();
      }

      @Override
      public void onDrawFrame(GL10 gl)
      {
      if (!mIsActive)
      return;

      //obj.rotateZ(0.025f);

      mSampleAppRenderer.render();

      updateCamera();
      world.renderScene(fb);
      world.draw(fb);
      fb.display();
      }


      public void setActive(boolean active)
      {
      mIsActive = active;

      if(mIsActive)
      mSampleAppRenderer.configureVideoBackground();
      }


      @Override
      public void onSurfaceCreated(GL10 gl, EGLConfig config)
      {
      vuforiaAppSession.onSurfaceCreated();
      mSampleAppRenderer.onSurfaceCreated();
      }

      @Override
      public void onSurfaceChanged(GL10 gl, int w, int h) {
      vuforiaAppSession.onSurfaceChanged(w, h);

      mSampleAppRenderer.onConfigurationChanged(mIsActive);
      initRendering();

      if (lastGl != gl) {
      if (fb != null) {
      fb.dispose();
      }
      fb = new FrameBuffer(w, h);
      Config.viewportOffsetAffectsRenderTarget = true;

      fb.setVirtualDimensions(fb.getWidth(), fb.getHeight());
      lastGl = gl;
      } else {
      fb.resize(w, h);
      fb.setVirtualDimensions(w, h);
      }


      }

      private void initRendering()
      {
      GLES20.glClearColor(0.0f, 0.0f, 0.0f, Vuforia.requiresAlpha() ? 0.0f : 1.0f);

      mActivity.loadingDialogHandler
      .sendEmptyMessage(LoadingDialogHandler.HIDE_LOADING_DIALOG);
      }

      public void updateConfiguration()
      {
      mSampleAppRenderer.onConfigurationChanged(mIsActive);
      CameraCalibration camCalibration = com.vuforia.CameraDevice.getInstance().getCameraCalibration();
      Vec2F size = camCalibration.getSize();
      Vec2F focalLength = camCalibration.getFocalLength();
      float fovyRadians = (float) (2 * Math.atan(0.5f * size.getData()[1] / focalLength.getData()[1]));
      float fovRadians = (float) (2 * Math.atan(0.5f * size.getData()[0] / focalLength.getData()[0]));

      if (mSampleAppRenderer.mIsPortrait) {
      setFovy(fovRadians);
      setFov(fovyRadians);
      } else {
      setFov(fovRadians);
      setFovy(fovyRadians);
      }

      Timber.d("Updated Config called");
      }

      public void renderFrame(State state, float projectionMatrix)
      {
      GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);

      mSampleAppRenderer.renderVideoBackground(state);

      float modelviewArray = new float[16];

      for (int tIdx = 0; tIdx < state.getNumTrackableResults(); tIdx++) {
      TrackableResult result = state.getTrackableResult(tIdx);
      Trackable trackable = result.getTrackable();
      printUserData(trackable);

      Matrix44F modelViewMatrix = Tool.convertPose2GLMatrix(result.getPose());
      Matrix44F inverseMV = SampleMath.Matrix44FInverse(modelViewMatrix);
      Matrix44F invTranspMV = SampleMath.Matrix44FTranspose(inverseMV);

      modelviewArray = invTranspMV.getData();
      updateModelviewMatrix(modelviewArray);

      }

      if (state.getNumTrackableResults() == 0) {
      float m = {
      1,0,0,0,
      0,1,0,0,
      0,0,1,0,
      0,0,-10000,1
      };
      modelviewArray = m;
      updateModelviewMatrix(modelviewArray);
      }

      Renderer.getInstance().end();
      }

      private void updateModelviewMatrix(float mat) {
      modelViewMat = mat;
      }

      private void printUserData(Trackable trackable)
      {
      String userData = (String) trackable.getUserData();
      }


      private void updateCamera() {
      if (modelViewMat != null) {
      float m = modelViewMat;

      /*Matrix mat = new Matrix();
      mat.setDump(modelViewMat);
      cam.setBack(mat);*/

      final SimpleVector camUp;
      if (mSampleAppRenderer.mIsPortrait) {
      camUp = new SimpleVector(-m[0], -m[1], -m[2]);
      } else {
      camUp = new SimpleVector(-m[4], -m[5], -m[6]);
      }

      final SimpleVector camDirection = new SimpleVector(m[8], m[9], m[10]);
      final SimpleVector camPosition = new SimpleVector(m[12], m[13], m[14]);

      cam.setOrientation(camDirection, camUp);
      cam.setPosition(camPosition);

      cam.setFOV(fov);
      cam.setYFOV(fovy);
      }
      }

      private void setFov(float fov) {
      this.fov = fov;
      }

      private void setFovy(float fovy) {
      this.fovy = fovy;
      }}






      android augmented-reality vuforia jpct






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 21 at 8:35









      Aniruddh Parihar

      2,1631927




      2,1631927










      asked Nov 21 at 8:31









      LV Channel

      12




      12





























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














           

          draft saved


          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53407965%2fvuforia-jpct-ae-in-android-doesnt-attach-3d-object-to-marker%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















           

          draft saved


          draft discarded



















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53407965%2fvuforia-jpct-ae-in-android-doesnt-attach-3d-object-to-marker%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Sphinx de Gizeh

          Dijon

          Guerrita