QGLViewer directory. The examples' pro files are simplified and more versatile.libGlu dependency in examples that rely on it (thanks Brice).qreal issue in Quaternion::FromRotationMatrix() (thanks Che, again).Camera::pointUnderPixel() introduced by the switch to qreal (thanks Che).qreal (i.e double) type for floating point numbers.getX(qreal & x) methods, which take a reference as a parameter, and which type needs to be changed to qreal.
libGLU dependency on Mac since it conflicts with Yosemite (thanks Hae-Jeong, Federico).libGLU dependency on the library for Linux (thanks Tingran).algorithm in VRender to remove VS warnings (thanks Jeffrey).std::min/std::max to fix Visual Studio compilation errors in VRender.saveSnapshot.cpp (thanks xiaoyi).KeyboardAction enum was made public.revolveArountPoint is renamed pivotPoint.flyUpVector is renamed sceneUpVector.setRotatesAroundUpVector method defines a new rotation mode, where the horizon is preserved.setZoomsOnPivotPoint method defines a new zoom behavior.zoomSensitivity enables you to tune the effect of a mouse displacement on the zoom.GLfloat overrides of Camera's get..Matrix() methods.alignWithAxis threshold set to 0 (i.e. it will always align).position() method is faster and more precise in case there is no referenceFrame.setMouseBinding methods take an optional Qt:Key argument, indicating that this key has to be pressed to trigger the action. New similar setWheelBinding methods.setMouseBinding methods accept only one button, instead of an improbable combination of buttons.QGLViewer/manipulatedFrame.h.QGLViewer's MouseHandler, ClickAction and MouseAction enums are now public.ManipulatedFrame::currentMouseAction() method.RAP_FROM_PIXEL click action resets the revolve around point to sceneCenter when there is no point under the cursor.restoreStateFromFile.clearShortcuts and clearMouseBindings methods reset all bindings.update() instead of updateGL() for smoother updates.-lGLU linked library on Linux when building the examples.Camera.setPhysicalDistanceToScreen method has been deprecated. Use setPhysicalScreenWidth instead.VRenderInterface ui file (thanks David).qglviewer.rc problem when compiling designerPlugin on windows. Again (thanks Dennis)qglviewer.rc problem when compiling designerPlugin on windows.Vec now using double instead of float.pro for a better out-of-the-box compilation using Qt Creator.qglviewer.rc and qglviewer.ico files in package.Vec operations now return double instead of float to avoid precision issues (thanks Lionel).double replacement in Quaternion (thanks Pierre and Lionel).QGLViewerPool() instead of always being appended (suggester Pierre).qglviewer.icns file which was missing from Mac package.-Wl,-rpath option eliminates the need for LD_LIBRARY_PATH tuning on Linux...qch file available to import documentation into Qt's assistant (suggester Laurent).DYLD_LIBRARY_PATH is no longer needed to run the examples on Mac architecture (Linux soon to come).CONFIG += no_keywords so that the library can be used with Boost.GL_DEPTH_TEST disabled before rendering frame rate to fix a weird display on Mac (bugfinder FX).About button has been moved to a cleaner new tab in the help window.WIN32 added to default DEFINES to fix compilation problems with Visual Studio when using the Intel compiler (bugfinder Jiawen).restoreStateFromFile updates camera aspect ratio when loading window's size.aboutQGLViewer() method now displays the help window 'About' tab.snapshotToClipboard() method binded to Ctrl+C eases snapshot creation..vcproj project files added to QGLViewer and examples' directories.printf debug calls removed. Tested with the future version 4.4 of gcc.domUtils.h includes fixed (thanks Frederic).Camera::initFromDOMElement bug fixed (bugfinder Forrester).scaledFont() method to be used with renderText(). Bugfinder Jorik.QPainter drawing.QGLViewer is no longer removed from the QGLViewerPool (a null replaces it)
in order to preserve viewer's indexes (used by stateFileName) (bug finder Gianluca).Camera now saves and restores its scene center and radius in its XML representation.Camera::getModelViewProjectionMatrix convenient method (suggester Elmar).Camera::pointUnderPixel() fixed (bug finder Aurélien).screenCoordSystem example (bug finder Greg).DRIVE MouseAction. Similar to fly, but speed depends on mouse vertical position (suggester Le Thanh).Camera.orthogonalVec() had problems for some vectors (bug finder David).MOVE_FORWARD and MOVE_BACKWARD behavior improved.Camera::interpolateTo moves the Camera to a target position.setSceneCenter and setSceneRadius were made virtual.unregisterTimer error mesage fixed (thanks Xavier).QT3_SUPPORT under Qt4 fixed (prevented designer plugin creation under windows).setSnapshotFilename (lowercase n) method (kept for backward
source code compatibility) was removed due to ActiveX conflicts (thanks Juergen).saveSnapshot was not recognized as a slot with Qt3 (bug finder Gheorghe)..jpg extension.Camera::getFrustumPlanesCoefficients() function (see the frustumCulling example).Camera::setFromModelViewMatrix() makes a Camera match a given modelView matrix (suggester Daria).Vec::float*() operator, so that Vec parameters can be passed to float* filling methods.Quaternion::normalized() method.Camera::rightVector() that completes the viewDirection() and upVector() methods.Camera::draw() method parameters changed. Can now also draw ORTHOGRAPHIC Camera type.Camera::drawCamera() static method removed. Use (new Camera())->draw() instead.copyBufferToTexture().Quaternion::setFromRotationMatrix takes a double (instead of
float) parameter for better precision.Frame::referenceFrame() now returns a const Frame* (suggester Xavier).Quaternion::setFromRotatedBase() renamed setFromRotatedBasis().ClickAction and then passed to the
mouseGrabber() if no ClickAction corresponds (was the inverse).drawAxis() and drawGrid() no longer modify the OpenGL state (suggester Manu).KeyFrameInterpolator path drawing fixed (bug finder Manuel).Quaternion(from, to) bug fixed for colinear vectors (bug finder Aurélien).Quaternion::setFromRotationMatrix patched and made more robust.zClippingCoefficient correctly restored when cameraIsEdited.Frame::initFromDOMElement normalizes the orientation.snapshotFilename renamed snapshotFileName (uppercased 'N').snapshotCounter is not appended to snapshotFileName in automatic mode.saveSnapshot(fileName) no longer opens a file dialog (bug finder Jürgen).The library now compiles with Qt version 2, 3 and 4. When enum or function names have been changed in Qt4, the QGLViewer documentation uses their Qt 4 version and gives Qt 2 & 3 translations.
New featuresQGLViewer::drawArrow() method from two points (thanks Sylvain).
Qt::ButtonState (Qt versions 2 & 3) has been split into
Qt::KeyboardModifiers and Qt::MouseButtons in Qt4. Since these are just
enums, previous code will still work.
playPathStateKey() and addKeyFrameStateKey() were renamed
playPathKeyboardModifiers() and addKeyFrameKeyboardModifiers().int parameter has been replaced by a type-safe Qt::KeyboardModifiers.setHandlerStateKey renamed setHandlerKeyboardModifiers.Camera copy constructor fixed (bug finder Xavier).QGLViewer::copyBufferToTexture() to copy the frame buffer in a texture.Camera::drawCamera() and draw() methods.QGLViewer::drawArrow() static method.QGLViewer::mouseGrabberIsEnabled() method.= operator implemented for Camera and
KeyFrameInterpolator classes.address() deprecated, use operator const float* instead.sqNorm() renamed Vec::squaredNorm().randomOrientation renamed randomQuaternion.operator* now returns a non-const Quaternion.referenceFrame() is no longer const.setOrientationAxisAngle() and Frame::setRotationAxisAngle() removed.translate(float t[3]) and Frame::rotate(float q[4]) removed: use Vec and Quaternion equivalents instead.invert() and Frame::worldInvert() removed: use inverse() instead.inverseMatrix() and worldInverseMatrix() removed: use inverse().matrix() instead.setReferenceFrame() emits the modified() signal as expected.SpinningFrame class has been removed. Spinning was integrated in ManipulatedFrame.spinned signal renamed spun.Camera parameter.float methods removed: use Vec equivalents instead.*Dir() methods renamed *Direction().keyFramePosition() and keyFrameOrientation() removed: use KeyFrame().position() and KeyFrame().orientation() instead.finished() renamed endReached().float parameter removed. Use their Vec(x,y,z) and Quaternion(q0,q1,q2,q3) equivalents instead.editCameraPath() and cameraPathIsEdited() removed.float versions of getModelViewMatrix and
getProjectionMatrix removed. Use double equivalents instead.pointUnderPixel()...) take QPoint parameter instead of x and y. Use QPoint(x,y) constructor if needed.nbPaths() removed. Camera now contains an arbitrary number of paths.fitScreenRegion now takes a QRect parameter.getOrthoWidthHeight made virtual.ORTHO type renamed ORTHOGRAPHIC.zNearCoef and zClippingCoef renamed zNearCoefficient and zClippingCoefficient.setWindowWidthAndHeight renamed setScreenWidthAndHeight.playKeyFramePath, deleteKeyFramePath and resetKeyFramePath renamed playPath, deletePath and resetPath.addKeyFrame renamed addKeyFrameToPath.distanceToScreen() renamed physicalDistanceToScreen().distanceToZeroParallaxPlane() renamed focusDistance().IODist renamed IODistance.setCameraFromProjectionMatrix() renamed setFromProjectionMatrix().cameraPathIsEdited and editCameraPath renamed cameraIsEdited and setCameraIsEdited.EDIT_CAMERA_PATHS renamed EDIT_CAMERA in prevision of a future camera edition.setDrawAxis, setDrawGrid, setDisplayFPS, setDisplayText renamed
setAxisIsDrawn, setGridIsDrawn, setFPSIsDisplayed, setTextIsEnabled.float methods removed. Use Vec and Quaternion equivalents instead.drawAxis made static.setMouseStateKey renamed setHandlerStateKey.keyFrameKey renamed pathKey, with swapped parameters.playKeyFramePathStateKey renamed playPathStateKey.keyboardAccelerator (resp. setKeyboardAccelerator) renamed
shortcut (resp. setShortcut).select, beginSelection, endSelection and postSelection use
QPoint instead of x and y.toggleAnimationMode renamed toggleAnimation.version syntax in state file changed and is now compared with current version on restoration.camera().connectSignalToAllViewers, disconnectSignalToAllViewers and updateGLForAllViewers removed. Use QGLViewerPool insead.zip and tar files names include release number.rpm now includes a static version of the library.QGLViewer::stateFileName no longer skips the directory prefix.QGLViewer::drawLight nicer and fixed.fastDraw(). A final draw() is now triggered at a short delay after the last wheel event.