Log in or register to post comments

Projection Matrix difference in V8 vs V6

August 14, 2019 - 7:24am #1

Hi, I'm belatedly upgrading my app framework to Vuforia 8 from Vuforia 6. I have successfully got the tracked objects placed where they appear with V6, but when not tracking I'm getting a different projection matrix between the versions, so my non-tracked objects are placed differently.:

The code is given below, and called at screen re-orientation. 

// Cache the projection matrix:

#ifdef VUFORIA_V8
        Vuforia::TrackerManager& trackerManager = Vuforia::TrackerManager::getInstance();
        const Vuforia::State state = trackerManager.getStateUpdater().updateState();
        Vuforia::RenderingPrimitives *renderingPrimitives = new Vuforia::RenderingPrimitives(Vuforia::Device::getInstance().getRenderingPrimitives());
        Vuforia::Matrix34F projMatrix = renderingPrimitives->getProjectionMatrix(Vuforia::VIEW::VIEW_SINGULAR, state.getCameraCalibration());
        qUtils.projectionMatrix = Vuforia::Tool::convertPerspectiveProjection2GLMatrix(projMatrix,1.0f,2500.0f);
#else

        const QCAR::CameraCalibration& cameraCalibration = QCAR::CameraDevice::getInstance().getCameraCalibration();
        qUtils.projectionMatrix = QCAR::Tool::getProjectionGL(cameraCalibration, 1.0f, 2500.0f);
#endif

For V6 I get:

data = {
      [0] = 0
      [1] = -1.86011815
      [2] = 0
      [3] = 0
      [4] = -3.30687666
      [5] = 0
      [6] = 0
      [7] = 0
      [8] = 0
      [9] = -0.00156250002
      [10] = 1.00080037
      [11] = 1
      [12] = 0
      [13] = 0
      [14] = -2.00080037
      [15] = 0
    }

And for V8:

{
    [0] = 0
    [1] = -1.45888376
    [2] = 0
    [3] = 0
    [4] = 2.59219289
    [5] = 0
    [6] = 0
    [7] = 0
    [8] = -0.033016853
    [9] = 0.00614670897
    [10] = -1.00080037
    [11] = -1
    [12] = 0
    [13] = 0
    [14] = -2.00080037
    [15] = 0
  }

 

Projection Matrix difference in V8 vs V6

August 21, 2019 - 2:23am #6

Hi medabit, not sure if I follow this wrt what I'm asking. Let me ask the question a different way.

How would one now go about getting the projection matrix for objects in the camera's space, so objects can be drawn within the view, attached to the camera?

Previously I used getProjectionGL using the camera calibration from Vuforia - this is important as Vuforia has all the information about camera, field of view etc.

= Martin =

 

 

Projection Matrix difference in V8 vs V6

August 16, 2019 - 1:13pm #5

Hello,

Per the development team, changing the camera's coordinate systems also means changing the default direction of the camera (where it looks like/point to/forward vector). If that is changed, it means you also need to change the projection matrix.

Thanks,

Vuforia Engine Support

Projection Matrix difference in V8 vs V6

August 16, 2019 - 9:39am #4

Hello,

Thanks for the clarification. I've escalated to the dev team for a response.

Thanks,

Vuforia Engine Support

Projection Matrix difference in V8 vs V6

August 16, 2019 - 7:26am #3

Hi medabit. Yes I've seen that, but isn't the projection matrix independent of this? In this instance I'm drawing objects relative to the screen, completely independent of Vuforia, but I wanted Vuforia to provide the projection Matrix for the camera/screen view, as it did in Vuforia 6.

= Martin =

 

 

Projection Matrix difference in V8 vs V6

August 15, 2019 - 8:44am #2

Hello,

In Vuforia Engine SDK 7.2, we introduced a new coordinate system. Please review the following article: https://library.vuforia.com/content/vuforia-library/en/articles/Solution/how-migrate-vuforia-7_2.html

Thanks,

Vuforia Engine Support

Log in or register to post comments