Using MayaCamUI

We are going to add to your 3D scene a navigation facility known to us since we modelled a 3D software. Using MayaCamUI, you can do this with just a few lines of code.

Getting ready

We need to have some 3D objects in our scene. You can use some primitives provided by Cinder, for example:

gl::drawColorCube(Vec3f::zero(), Vec3f(4.f, 4.f, 4.f));

A color cube is a cube with a different color on each face, so it is easy to determine the orientation.

Getting ready

How to do it...

Perform the following steps to create camera navigation:

  1. We need the MayaCam.h header file:
    #include "cinder/MayaCamUI.h"
  2. We also need some member declarations in the main class:
    CameraPersp  mCam;
    MayaCamUI    mMayaCam;
  3. Inside the setup method, we are going to set up the camera's initial state:
    mCam.setPerspective(45.0f, getWindowAspectRatio(), 0.1, 10000);
    mMayaCam.setCurrentCam(mCam);
  4. Now we have to implement three methods:
    void MainApp::resize( ResizeEvent event )
    {
        mCam = mMayaCam.getCamera();
        mCam.setAspectRatio(getWindowAspectRatio());
        mMayaCam.setCurrentCam(mCam);
    }
    
    void MainApp::mouseDown( MouseEvent event )
    {
      mMayaCam.mouseDown( event.getPos() );
    }
    
    void MainApp::mouseDrag( MouseEvent event )
    {
      mMayaCam.mouseDrag( event.getPos(), event.isLeftDown(), event.isMiddleDown(), event.isRightDown() );
    }
  5. Apply camera matrices before your 3D drawing stuff inside the draw method:
    gl::setMatrices(mMayaCam.getCamera());

How it works...

Inside the setup method, we set the initial camera settings. While the window is resizing, we have to update the aspect ratio of our camera, so we put the code for this in the resize method. This method is automatically invoked by Cinder each time the window of our application is resized. We catch mouse events inside the mouseDown and mouseDrag methods. You can click and drag your mouse for tumbling, right-click for zooming, and use the middle button for panning. Now you have interaction similar to a common 3D modeling software in your own application.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.119.103.204