RenderingWidget Class Reference

#include <quaternion_demo.h>

+ Inheritance diagram for RenderingWidget:

Public Member Functions

EIGEN_MAKE_ALIGNED_OPERATOR_NEW RenderingWidget ()
 
 ~RenderingWidget ()
 
QWidgetcreateNavigationControlWidget ()
 

Protected Slots

virtual void animate (void)
 
virtual void drawScene (void)
 
virtual void grabFrame (void)
 
virtual void stopAnimation ()
 
virtual void setNavMode (int)
 
virtual void setLerpMode (int)
 
virtual void setRotationMode (int)
 
virtual void resetCamera ()
 

Protected Member Functions

virtual void initializeGL ()
 
virtual void resizeGL (int width, int height)
 
virtual void paintGL ()
 
virtual void mousePressEvent (QMouseEvent *e)
 
virtual void mouseReleaseEvent (QMouseEvent *e)
 
virtual void mouseMoveEvent (QMouseEvent *e)
 
virtual void keyPressEvent (QKeyEvent *e)
 

Private Types

enum  TrackMode {
  TM_NO_TRACK = 0 , TM_ROTATE_AROUND , TM_ZOOM , TM_LOCAL_ROTATE ,
  TM_FLY_Z , TM_FLY_PAN
}
 
enum  NavMode { NavTurnAround , NavFly }
 
enum  LerpMode { LerpQuaternion , LerpEulerAngles }
 
enum  RotationMode { RotationStable , RotationStandard }
 
typedef std::map< float, FrameTimeLine
 

Private Member Functions

Frame lerpFrame (float t)
 
void setupCamera ()
 

Private Attributes

TimeLine m_timeline
 
Frame mInitFrame
 
bool mAnimate
 
float m_alpha
 
Camera mCamera
 
TrackMode mCurrentTrackingMode
 
NavMode mNavMode
 
LerpMode mLerpMode
 
RotationMode mRotationMode
 
Vector2i mMouseCoords
 
Trackball mTrackball
 
QTimer m_timer
 
std::vector< Vector3f > mVertices
 
std::vector< Vector3f > mNormals
 
std::vector< intmIndices
 

Member Typedef Documentation

◆ TimeLine

typedef std::map<float, Frame> RenderingWidget::TimeLine
private

Member Enumeration Documentation

◆ LerpMode

Enumerator
LerpQuaternion 
LerpEulerAngles 
@ LerpQuaternion
Definition: quaternion_demo.h:37
@ LerpEulerAngles
Definition: quaternion_demo.h:37

◆ NavMode

Enumerator
NavTurnAround 
NavFly 
@ NavFly
Definition: quaternion_demo.h:35
@ NavTurnAround
Definition: quaternion_demo.h:35

◆ RotationMode

Enumerator
RotationStable 
RotationStandard 
@ RotationStandard
Definition: quaternion_demo.h:39
@ RotationStable
Definition: quaternion_demo.h:39

◆ TrackMode

Enumerator
TM_NO_TRACK 
TM_ROTATE_AROUND 
TM_ZOOM 
TM_LOCAL_ROTATE 
TM_FLY_Z 
TM_FLY_PAN 
@ TM_ROTATE_AROUND
Definition: quaternion_demo.h:33
@ TM_FLY_PAN
Definition: quaternion_demo.h:33
@ TM_FLY_Z
Definition: quaternion_demo.h:33
@ TM_LOCAL_ROTATE
Definition: quaternion_demo.h:33
@ TM_NO_TRACK
Definition: quaternion_demo.h:33
@ TM_ZOOM
Definition: quaternion_demo.h:33

Constructor & Destructor Documentation

◆ RenderingWidget()

RenderingWidget::RenderingWidget ( )
179  {
180  mAnimate = false;
186 
187  // required to capture key press events
188  setFocusPolicy(Qt::ClickFocus);
189 }
bool mAnimate
Definition: quaternion_demo.h:30
NavMode mNavMode
Definition: quaternion_demo.h:43
LerpMode mLerpMode
Definition: quaternion_demo.h:44
Camera mCamera
Definition: quaternion_demo.h:41
Trackball mTrackball
Definition: quaternion_demo.h:47
TrackMode mCurrentTrackingMode
Definition: quaternion_demo.h:42
RotationMode mRotationMode
Definition: quaternion_demo.h:45
void setCamera(Camera *pCam)
Definition: trackball.h:28

◆ ~RenderingWidget()

RenderingWidget::~RenderingWidget ( )
inline
86 {}

Member Function Documentation

◆ animate

void RenderingWidget::animate ( void  )
protectedvirtualslot
245  {
246  m_alpha += double(m_timer.interval()) * 1e-3;
247 
248  TimeLine::const_iterator hi = m_timeline.upper_bound(m_alpha);
249  TimeLine::const_iterator lo = hi;
250  --lo;
251 
252  Frame currentFrame;
253 
254  if (hi == m_timeline.end()) {
255  // end
256  currentFrame = lo->second;
257  stopAnimation();
258  } else if (hi == m_timeline.begin()) {
259  // start
260  currentFrame = hi->second;
261  } else {
262  float s = (m_alpha - lo->first) / (hi->first - lo->first);
263  if (mLerpMode == LerpEulerAngles)
264  currentFrame = ::lerpFrame<EulerAngles<float> >(s, lo->second, hi->second);
265  else if (mLerpMode == LerpQuaternion)
266  currentFrame = ::lerpFrame<Eigen::Quaternionf>(s, lo->second, hi->second);
267  else {
268  std::cerr << "Invalid rotation interpolation mode (abort)\n";
269  exit(2);
270  }
271  currentFrame.orientation.coeffs().normalize();
272  }
273 
274  currentFrame.orientation = currentFrame.orientation.inverse();
275  currentFrame.position = -(currentFrame.orientation * currentFrame.position);
276  mCamera.setFrame(currentFrame);
277 
278  updateGL();
279 }
Array< double, 1, 3 > e(1./3., 0.5, 2.)
void setFrame(const Frame &f)
Definition: camera.cpp:113
Definition: camera.h:17
Eigen::Quaternionf orientation
Definition: camera.h:27
Eigen::Vector3f position
Definition: camera.h:28
virtual void stopAnimation()
Definition: quaternion_demo.cpp:319
QTimer m_timer
Definition: quaternion_demo.h:49
TimeLine m_timeline
Definition: quaternion_demo.h:26
float m_alpha
Definition: quaternion_demo.h:31
RealScalar s
Definition: level1_cplx_impl.h:130

References e(), Frame::orientation, Frame::position, and s.

◆ createNavigationControlWidget()

QWidget * RenderingWidget::createNavigationControlWidget ( )
484  {
485  QWidget* panel = new QWidget();
486  QVBoxLayout* layout = new QVBoxLayout();
487 
488  {
489  QPushButton* but = new QPushButton("reset");
490  but->setToolTip("move the camera to initial position (with animation)");
491  layout->addWidget(but);
492  connect(but, SIGNAL(clicked()), this, SLOT(resetCamera()));
493  }
494  {
495  // navigation mode
496  QGroupBox* box = new QGroupBox("navigation mode");
497  QVBoxLayout* boxLayout = new QVBoxLayout;
498  QButtonGroup* group = new QButtonGroup(panel);
499  QRadioButton* but;
500  but = new QRadioButton("turn around");
501  but->setToolTip("look around an object");
502  group->addButton(but, NavTurnAround);
503  boxLayout->addWidget(but);
504  but = new QRadioButton("fly");
505  but->setToolTip("free navigation like a spaceship\n(this mode can also be enabled pressing the \"shift\" key)");
506  group->addButton(but, NavFly);
507  boxLayout->addWidget(but);
508  group->button(mNavMode)->setChecked(true);
509  connect(group, SIGNAL(buttonClicked(int)), this, SLOT(setNavMode(int)));
510  box->setLayout(boxLayout);
511  layout->addWidget(box);
512  }
513  {
514  // track ball, rotation mode
515  QGroupBox* box = new QGroupBox("rotation mode");
516  QVBoxLayout* boxLayout = new QVBoxLayout;
517  QButtonGroup* group = new QButtonGroup(panel);
518  QRadioButton* but;
519  but = new QRadioButton("stable trackball");
520  group->addButton(but, RotationStable);
521  boxLayout->addWidget(but);
522  but->setToolTip("use the stable trackball implementation mapping\nthe 2D coordinates to 3D points on a sphere");
523  but = new QRadioButton("standard rotation");
524  group->addButton(but, RotationStandard);
525  boxLayout->addWidget(but);
526  but->setToolTip(
527  "standard approach mapping the x and y displacements\nas rotations around the camera's X and Y axes");
528  group->button(mRotationMode)->setChecked(true);
529  connect(group, SIGNAL(buttonClicked(int)), this, SLOT(setRotationMode(int)));
530  box->setLayout(boxLayout);
531  layout->addWidget(box);
532  }
533  {
534  // interpolation mode
535  QGroupBox* box = new QGroupBox("spherical interpolation");
536  QVBoxLayout* boxLayout = new QVBoxLayout;
537  QButtonGroup* group = new QButtonGroup(panel);
538  QRadioButton* but;
539  but = new QRadioButton("quaternion slerp");
540  group->addButton(but, LerpQuaternion);
541  boxLayout->addWidget(but);
542  but->setToolTip("use quaternion spherical interpolation\nto interpolate orientations");
543  but = new QRadioButton("euler angles");
544  group->addButton(but, LerpEulerAngles);
545  boxLayout->addWidget(but);
546  but->setToolTip("use Euler angles to interpolate orientations");
547  group->button(mNavMode)->setChecked(true);
548  connect(group, SIGNAL(buttonClicked(int)), this, SLOT(setLerpMode(int)));
549  box->setLayout(boxLayout);
550  layout->addWidget(box);
551  }
552  layout->addItem(new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding));
553  panel->setLayout(layout);
554  return panel;
555 }
virtual void setRotationMode(int)
Definition: quaternion_demo.cpp:443
virtual void resetCamera()
Definition: quaternion_demo.cpp:445
virtual void setNavMode(int)
Definition: quaternion_demo.cpp:439
virtual void setLerpMode(int)
Definition: quaternion_demo.cpp:441

◆ drawScene

void RenderingWidget::drawScene ( void  )
protectedvirtualslot
205  {
206  static FancySpheres sFancySpheres;
207  float length = 50;
208  gpu.drawVector(Vector3f::Zero(), length * Vector3f::UnitX(), Color(1, 0, 0, 1));
209  gpu.drawVector(Vector3f::Zero(), length * Vector3f::UnitY(), Color(0, 1, 0, 1));
210  gpu.drawVector(Vector3f::Zero(), length * Vector3f::UnitZ(), Color(0, 0, 1, 1));
211 
212  // draw the fractal object
213  float sqrt3 = std::sqrt(3.);
214  glLightfv(GL_LIGHT0, GL_AMBIENT, Vector4f(0.5, 0.5, 0.5, 1).data());
215  glLightfv(GL_LIGHT0, GL_DIFFUSE, Vector4f(0.5, 1, 0.5, 1).data());
216  glLightfv(GL_LIGHT0, GL_SPECULAR, Vector4f(1, 1, 1, 1).data());
217  glLightfv(GL_LIGHT0, GL_POSITION, Vector4f(-sqrt3, -sqrt3, sqrt3, 0).data());
218 
219  glLightfv(GL_LIGHT1, GL_AMBIENT, Vector4f(0, 0, 0, 1).data());
220  glLightfv(GL_LIGHT1, GL_DIFFUSE, Vector4f(1, 0.5, 0.5, 1).data());
221  glLightfv(GL_LIGHT1, GL_SPECULAR, Vector4f(1, 1, 1, 1).data());
222  glLightfv(GL_LIGHT1, GL_POSITION, Vector4f(-sqrt3, sqrt3, -sqrt3, 0).data());
223 
224  glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, Vector4f(0.7, 0.7, 0.7, 1).data());
225  glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Vector4f(0.8, 0.75, 0.6, 1).data());
226  glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Vector4f(1, 1, 1, 1).data());
227  glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 64);
228 
229  glEnable(GL_LIGHTING);
230  glEnable(GL_LIGHT0);
231  glEnable(GL_LIGHT1);
232 
233  sFancySpheres.draw();
234  glVertexPointer(3, GL_FLOAT, 0, mVertices[0].data());
235  glNormalPointer(GL_FLOAT, 0, mNormals[0].data());
236  glEnableClientState(GL_VERTEX_ARRAY);
237  glEnableClientState(GL_NORMAL_ARRAY);
238  glDrawArrays(GL_TRIANGLES, 0, mVertices.size());
239  glDisableClientState(GL_VERTEX_ARRAY);
240  glDisableClientState(GL_NORMAL_ARRAY);
241 
242  glDisable(GL_LIGHTING);
243 }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int data[]
Definition: Map_placement_new.cpp:1
Definition: quaternion_demo.cpp:30
void draw()
Definition: quaternion_demo.cpp:84
void drawVector(const Vector3f &position, const Vector3f &vec, const Color &color, float aspect=50.)
Definition: gpuhelper.cpp:48
std::vector< Vector3f > mNormals
Definition: quaternion_demo.h:54
std::vector< Vector3f > mVertices
Definition: quaternion_demo.h:53
GpuHelper gpu
Definition: gpuhelper.cpp:18
Vector4f Color
Definition: gpuhelper.h:19
double Zero
Definition: pseudosolid_node_update_elements.cc:35

References data, FancySpheres::draw(), GpuHelper::drawVector(), gpu, sqrt(), and oomph::PseudoSolidHelper::Zero.

◆ grabFrame

void RenderingWidget::grabFrame ( void  )
protectedvirtualslot
191  {
192  // ask user for a time
193  bool ok = false;
194  double t = 0;
195  if (!m_timeline.empty()) t = (--m_timeline.end())->first + 1.;
196  t = QInputDialog::getDouble(this, "Eigen's RenderingWidget", "time value: ", t, 0, 1e3, 1, &ok);
197  if (ok) {
198  Frame aux;
199  aux.orientation = mCamera.viewMatrix().linear();
200  aux.position = mCamera.viewMatrix().translation();
201  m_timeline[t] = aux;
202  }
203 }
const Eigen::Affine3f & viewMatrix(void) const
Definition: camera.cpp:168
t
Definition: plotPSD.py:36

References Frame::orientation, Frame::position, and plotPSD::t.

◆ initializeGL()

void RenderingWidget::initializeGL ( )
protectedvirtual
425  {
426  glClearColor(1., 1., 1., 0.);
427  glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1);
428  glDepthMask(GL_TRUE);
429  glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
430 
431  mCamera.setPosition(Vector3f(-200, -200, -200));
432  mCamera.setTarget(Vector3f(0, 0, 0));
434  mInitFrame.position = mCamera.viewMatrix().translation();
435 }
void setTarget(const Eigen::Vector3f &target)
Definition: camera.cpp:95
const Eigen::Quaternionf & orientation(void) const
Definition: camera.h:58
void setPosition(const Eigen::Vector3f &pos)
Definition: camera.cpp:103
Frame mInitFrame
Definition: quaternion_demo.h:29

◆ keyPressEvent()

void RenderingWidget::keyPressEvent ( QKeyEvent *  e)
protectedvirtual
281  {
282  switch (e->key()) {
283  case Qt::Key_Up:
284  mCamera.zoom(2);
285  break;
286  case Qt::Key_Down:
287  mCamera.zoom(-2);
288  break;
289  // add a frame
290  case Qt::Key_G:
291  grabFrame();
292  break;
293  // clear the time line
294  case Qt::Key_C:
295  m_timeline.clear();
296  break;
297  // move the camera to initial pos
298  case Qt::Key_R:
299  resetCamera();
300  break;
301  // start/stop the animation
302  case Qt::Key_A:
303  if (mAnimate) {
304  stopAnimation();
305  } else {
306  m_alpha = 0;
307  connect(&m_timer, SIGNAL(timeout()), this, SLOT(animate()));
308  m_timer.start(1000 / 30);
309  mAnimate = true;
310  }
311  break;
312  default:
313  break;
314  }
315 
316  updateGL();
317 }
void zoom(float d)
Definition: camera.cpp:142
virtual void animate(void)
Definition: quaternion_demo.cpp:245
virtual void grabFrame(void)
Definition: quaternion_demo.cpp:191

References e().

◆ lerpFrame()

Frame RenderingWidget::lerpFrame ( float  t)
private

◆ mouseMoveEvent()

void RenderingWidget::mouseMoveEvent ( QMouseEvent *  e)
protectedvirtual
358  {
359  // tracking
361  float dx = float(e->x() - mMouseCoords.x()) / float(mCamera.vpWidth());
362  float dy = -float(e->y() - mMouseCoords.y()) / float(mCamera.vpHeight());
363 
364  // speedup the transformations
365  if (e->modifiers() & Qt::ShiftModifier) {
366  dx *= 10.;
367  dy *= 10.;
368  }
369 
370  switch (mCurrentTrackingMode) {
371  case TM_ROTATE_AROUND:
372  case TM_LOCAL_ROTATE:
373  if (mRotationMode == RotationStable) {
374  // use the stable trackball implementation mapping
375  // the 2D coordinates to 3D points on a sphere.
376  mTrackball.track(Vector2i(e->pos().x(), e->pos().y()));
377  } else {
378  // standard approach mapping the x and y displacements as rotations
379  // around the camera's X and Y axes.
380  Quaternionf q = AngleAxisf(dx * M_PI, Vector3f::UnitY()) * AngleAxisf(-dy * M_PI, Vector3f::UnitX());
383  else
385  }
386  break;
387  case TM_ZOOM:
388  mCamera.zoom(dy * 100);
389  break;
390  case TM_FLY_Z:
391  mCamera.localTranslate(Vector3f(0, 0, -dy * 200));
392  break;
393  case TM_FLY_PAN:
394  mCamera.localTranslate(Vector3f(dx * 200, dy * 200, 0));
395  break;
396  default:
397  break;
398  }
399 
400  updateGL();
401  }
402 
403  mMouseCoords = Vector2i(e->pos().x(), e->pos().y());
404 }
uint vpHeight(void) const
Definition: camera.h:49
uint vpWidth(void) const
Definition: camera.h:48
void localRotate(const Eigen::Quaternionf &q)
Definition: camera.cpp:135
void localTranslate(const Eigen::Vector3f &t)
Definition: camera.cpp:150
void rotateAroundTarget(const Eigen::Quaternionf &q)
Definition: camera.cpp:118
Vector2i mMouseCoords
Definition: quaternion_demo.h:46
void track(const Eigen::Vector2i &newPoint2D)
Definition: trackball.cpp:15
AngleAxis< float > AngleAxisf
Definition: AngleAxis.h:165
#define M_PI
Definition: main.h:121
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019

References e(), M_PI, and Eigen::numext::q.

◆ mousePressEvent()

void RenderingWidget::mousePressEvent ( QMouseEvent *  e)
protectedvirtual
326  {
327  mMouseCoords = Vector2i(e->pos().x(), e->pos().y());
328  bool fly = (mNavMode == NavFly) || (e->modifiers() & Qt::ControlModifier);
329  switch (e->button()) {
330  case Qt::LeftButton:
331  if (fly) {
334  } else {
337  }
339  break;
340  case Qt::MidButton:
341  if (fly)
343  else
345  break;
346  case Qt::RightButton:
348  break;
349  default:
350  break;
351  }
352 }
@ Around
Definition: trackball.h:19
@ Local
Definition: trackball.h:19
void start(Mode m=Around)
Definition: trackball.h:23

References Trackball::Around, e(), and Trackball::Local.

◆ mouseReleaseEvent()

void RenderingWidget::mouseReleaseEvent ( QMouseEvent *  e)
protectedvirtual
353  {
355  updateGL();
356 }

◆ paintGL()

void RenderingWidget::paintGL ( )
protectedvirtual
406  {
407  glEnable(GL_DEPTH_TEST);
408  glDisable(GL_CULL_FACE);
409  glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
410  glDisable(GL_COLOR_MATERIAL);
411  glDisable(GL_BLEND);
412  glDisable(GL_ALPHA_TEST);
413  glDisable(GL_TEXTURE_1D);
414  glDisable(GL_TEXTURE_2D);
415  glDisable(GL_TEXTURE_3D);
416 
417  // Clear buffers
418  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
419 
421 
422  drawScene();
423 }
void activateGL(void)
Definition: camera.cpp:197
virtual void drawScene(void)
Definition: quaternion_demo.cpp:205

◆ resetCamera

void RenderingWidget::resetCamera ( )
protectedvirtualslot
445  {
446  if (mAnimate) stopAnimation();
447  m_timeline.clear();
448  Frame aux0 = mCamera.frame();
449  aux0.orientation = aux0.orientation.inverse();
450  aux0.position = mCamera.viewMatrix().translation();
451  m_timeline[0] = aux0;
452 
453  Vector3f currentTarget = mCamera.target();
455 
456  // compute the rotation duration to move the camera to the target
457  Frame aux1 = mCamera.frame();
458  aux1.orientation = aux1.orientation.inverse();
459  aux1.position = mCamera.viewMatrix().translation();
460  float duration = aux0.orientation.angularDistance(aux1.orientation) * 0.9;
461  if (duration < 0.1) duration = 0.1;
462 
463  // put the camera at that time step:
464  aux1 = aux0.lerp(duration / 2, mInitFrame);
465  // and make it look at the target again
466  aux1.orientation = aux1.orientation.inverse();
467  aux1.position = -(aux1.orientation * aux1.position);
468  mCamera.setFrame(aux1);
470 
471  // add this camera keyframe
472  aux1.orientation = aux1.orientation.inverse();
473  aux1.position = mCamera.viewMatrix().translation();
474  m_timeline[duration] = aux1;
475 
476  m_timeline[2] = mInitFrame;
477  m_alpha = 0;
478  animate();
479  connect(&m_timer, SIGNAL(timeout()), this, SLOT(animate()));
480  m_timer.start(1000 / 30);
481  mAnimate = true;
482 }
const Eigen::Vector3f & target(void)
Definition: camera.h:70
const Frame & frame(void) const
Definition: camera.h:61
Frame lerp(float alpha, const Frame &other) const
Definition: camera.h:23

References Frame::lerp(), Frame::orientation, Frame::position, and oomph::PseudoSolidHelper::Zero.

◆ resizeGL()

void RenderingWidget::resizeGL ( int  width,
int  height 
)
protectedvirtual
437 { mCamera.setViewport(width, height); }
void setViewport(uint offsetx, uint offsety, uint width, uint height)
Definition: camera.cpp:56
double height(const double &x)
Height of domain.
Definition: simple_spine_channel.cc:429

References Global_Physical_Variables::height().

◆ setLerpMode

void RenderingWidget::setLerpMode ( int  m)
protectedvirtualslot
441 { mLerpMode = LerpMode(m); }
LerpMode
Definition: quaternion_demo.h:37
int * m
Definition: level2_cplx_impl.h:294

References m.

◆ setNavMode

void RenderingWidget::setNavMode ( int  m)
protectedvirtualslot
439 { mNavMode = NavMode(m); }
NavMode
Definition: quaternion_demo.h:35

References m.

◆ setRotationMode

void RenderingWidget::setRotationMode ( int  m)
protectedvirtualslot
RotationMode
Definition: quaternion_demo.h:39

References m.

◆ setupCamera()

void RenderingWidget::setupCamera ( )
private

◆ stopAnimation

void RenderingWidget::stopAnimation ( )
protectedvirtualslot
319  {
320  disconnect(&m_timer, SIGNAL(timeout()), this, SLOT(animate()));
321  m_timer.stop();
322  mAnimate = false;
323  m_alpha = 0;
324 }

Member Data Documentation

◆ m_alpha

float RenderingWidget::m_alpha
private

◆ m_timeline

TimeLine RenderingWidget::m_timeline
private

◆ m_timer

QTimer RenderingWidget::m_timer
private

◆ mAnimate

bool RenderingWidget::mAnimate
private

◆ mCamera

Camera RenderingWidget::mCamera
private

◆ mCurrentTrackingMode

TrackMode RenderingWidget::mCurrentTrackingMode
private

◆ mIndices

std::vector<int> RenderingWidget::mIndices
private

◆ mInitFrame

Frame RenderingWidget::mInitFrame
private

◆ mLerpMode

LerpMode RenderingWidget::mLerpMode
private

◆ mMouseCoords

Vector2i RenderingWidget::mMouseCoords
private

◆ mNavMode

NavMode RenderingWidget::mNavMode
private

◆ mNormals

std::vector<Vector3f> RenderingWidget::mNormals
private

◆ mRotationMode

RotationMode RenderingWidget::mRotationMode
private

◆ mTrackball

Trackball RenderingWidget::mTrackball
private

◆ mVertices

std::vector<Vector3f> RenderingWidget::mVertices
private

The documentation for this class was generated from the following files: