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












0















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





























    0















    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



























      0












      0








      0


      0






      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 '18 at 8:35









      Aniruddh Parihar

      2,20911027




      2,20911027










      asked Nov 21 '18 at 8:31









      LV ChannelLV Channel

      12




      12
























          0






          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',
          autoActivateHeartbeat: false,
          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

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          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

          How to send String Array data to Server using php in android

          Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

          Is anime1.com a legal site for watching anime?