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.Camera::zClippingCoef()
method to define z clipping planes positions.mouseGrabberChanged
signal.Camera::pixelGLRatio()
made const
QGLViewer::drawGrid
and drawAxis()
made virtual.setStateFileName
method (default stateFileName
is .qglviewer.xml
, as before).helpWidget
method.saveToFile
and restoreFromFile
were renamed
saveStateToFile
and restoreStateFromFile
.stateFileName
instead.restoreFromFile()
now returns a bool
that indicates restoration success..qglviewer.xml
file.restoreFromFile()
with several viewers finally removed (bug finder Xavier).QGLViewer/
prefix) in classes' documentation.setMouseBindingDescription
parameters reordered.startScreenCoordinatesSystem
z mapping now ranges in [0.0, 1.0[ (was [1.0, -1.0]).Vec::projectOnAxis()
no longer requires a normalized axis.Vec
values stored in a union to ensure proper memory allocation (bug finder Olivier).displayMessage()
that regularly called updateGL
fixed (bug finder Stéphane)..qglviewer.xml
file is found in multi-viewer configuration.ManipulatedFrame
when used as MouseGrabber
.Frame::setFromMatrix()
now expects an OpenGL format matrix.QGLViewer::sizeHint()
method returns prefered viewer size (600x400).displayMessage()
is called in draw()
fixed.EPSInterface.ui
version downgraded to 3.0.Quaternion(from, to)
method fixed.setSnapshotQuality()
method to tune snapshots' quality (and hence size).displayMessage()
method, useful to give feedback to the user.QGLViewer
constructor, that enables Open GL context sharing between several viewers (requires Qt > 3.2).saveSnapshot()
method, with a filename as parameter.openSnapshotFormatDialog()
method to select snapshot format using a popup dialog.drawFinished
signal, that can be connected to saveSnapshot()
to create movies.firstTime(), lastTime()
and duration()
method in KeyFrameInterpolator
.aboutQGLViewer()
method displays libQGLViewer version and info.Camera::setViewDirection()
method.SpinningFrame, ManipulatedFrame
and ManipulatedCameraFrame
have copy constructors and = operators.Vec
and Quaternion
classes have a convenient explicit constructor from a QDomElement
.initFromDOMElement()
functions.domElement()
XML syntax. Incompatibilities will result in warnings at first start (or delete your old .qglviewer.xml
).foregroundColor()
and backgroundColor()
use QColor
instead of Vec
. Attention, range is 0-255 instead of 0.0-1.0setSelectRegionSize()
replaced by setSelectRegionWidth()
and setSelectRegionHeight()
.foregroundColor()
and backgroundColor()
methods removed.EXIT KeyboardAction
was renamed EXIT_VIEWER
because of potential name conflict.Vec::unit()
made const
.setSnapshotQuality()
).projectedCoordinatesOf()
faster and more versatile.KeyFrameInterpolator
documentation mostly rewritten.cwFiles
custom widget directory removed and replaced by a qglviewer.cw
file.snapshotFormat()
set to the first one available (instead of JPEG).mouseTracking
state no longer saved in (nor restored from) .qglviewer.xml
file.QAccel
abandonned : user defined key bindings are prioritary.setKeyboardAccelerator()
and setKeyDescription()
take an int
as parameter instead of a QKeySequence
.keyboardAccelerator()
logically returns an int
accordingly.Frame::referenceFrame()
(and related methods) are now const
.setKeyDescription()
method to customize the help dialog.setMouseBindingDescription()
method to customize the help dialog.Camera::projectedCoordinatesOf()
and similar methods have an additional optional Frame
parameter.ShortcutAction
enum renamed KeyboardAction
.MOVE_CAMERA
and FLYSPEED
values added to the KeyboardAction
enum, see keyboard page.setShortcutKey()
and setShortcutStateKey()
replaced by setKeyboardAccelerator()
.QGLViewer::shortcutBindingsString()
renamed keyboardString()
.QGLViewer::mouseBindingsString()
renamed mouseString()
.SpinningFrame::updateFrame()
renamed spin()
.const
.QGLViewer::rootWidget()
removed, use QWidget::topLevelWidget()
instead.SCREEN_ROTATE_BOTTOM
renamed ROLL
..qglviewer.xml
.KeyboardAction
added (MOVE_CAMERA_LEFT, INCREASE_FLYSPEED, ...
.ManipulatedFrame
didn't correctly take its rotationCenter()
into account (bug finder Manu).SpinningFrame::rotatesAroundPoint()
and SpinningFrame::orientationIsFrozen()
were not documented.Camera::setType()
changed zoom when called twice with ORTHO (bug finder Manu).Shortcut
help window tab renamed Keyboard
.select()
implementations still work.Quaternion::inverseMatrix()
and associated similar methods.Frame::inverse()
and associated similar methods.Frame::inverseMatrix()
and associated similar methods.QGLViewer::startAnimation()
has no more parameter.Vec::unit()
method. Returns a unitary copy of a vector.Camera::setAspectRatio()
function, useful when a Camera is used to create a shadow map.Vec::normalize()
now returns the previous norm of the vector (instead of
normalized vector)./usr/local/share/doc/QGLViewer
.tar.bz2
format.make install
now also install the documentation (default path is /usr/local/share/doc/QGLViewer
).make
options let you install separately the includes, the library and the documentation.<<
operator with gcc 2.96 (bug finder Ranjith).ManipulatedFrame
and ManipulatedCameraFrame
.spinned(), manipulated()
and interpolated()
signals are no longer
connected to all the viewers updateGL()
slots.ManipulatedFrame::mouseMotion
enum (ROTATE, ZOOM,...) is renamed QGLViewer::mouseAction
.drawText()
made public
.mouseStateKey(), Camera::mode(), ...
functions removed.Quaternion(from,to)
constructor had a bug (bug finders Marc and Tanguy).MouseGrabber
no longer activated when hovered while moving the camera or the manipulatedFrame()
.updateGL()
limited to the strict minimum.startScreenCoordinatesSystem()
can set the origin in the lower or the upper left corner.Camera::domElement()
syntax has been changed (previous
.qglviewer.xml
files are not compatible).TriangleSetConstraint
class has been removed from the main library and moved
in the triSetConstraint
contrib example.MouseGrabber/ManipulatedFrame
wheel zoom fixed.QGLViewer::saveToFileForAllViewers()
is back and called by Escape (problems with multiple viewers)..qglviewer.xml
state file is saved even when the viewer is not a top level window.ManipulatedFrame::ZOOM_ON_REGION
mouse action, binded to Shift + middle button.Camera::fitScreenRegion()
function.startScreenCoordinatesSystem
no longer disable lighting nor enables blending.MouseGrabber::clearMouseGrabberPool()
function.ManipulatedFrame
used as
MouseGrabber
(bug finder Cyril).libQGLViewer135.obj
error message with Visual C++ removed.keyboardAndMouse
example.ManipulatedFrame
grabsMouse within a distance of 10 pixels (instead of 5).QGLViewer::setBackgroundColor(QColor)
added to prevent hidding the QGLWidget
function.QGLViewer::setForegroundColor(QColor)
added for consistency reasons.keyboardAndMouse
example.QTextEdit
with Qt 2.3.QGLViewer::mouseBindingsString()
and QGLViewer::shortcutBindingsString()
functions.ManipulatedFrame
associated state key are no longer considered when they are manipulated as MouseGrabber
.QGLViewer::ZOOM_OUT
renamed QGLViewer::ZOOM_TO_FIT
.QGLViewer::CENTER_AS_RAP
renamed QGLViewer::RAP_IS_CENTER
.ManipulatedFrame
can now correctly be used as mouse grabbers (see the keyFrames example).displayZBuffer
problem with glRasterPos
fixed..displayFPS
correctly handles application default font size.Glut
no longer needed if your Qt version is at least 3.1.QGLViewer::drawText
can use different QFont
.QGLViewer::drawText()
has changed :
QGLWidget::renderText()
is used instead of GLUT (no longer needed) if your Qt version is at least 3.1.QString
and QFont
.const
since it calls makeCurrent
.draw3DText()
does not work anymore (because of Qt's text rendering). Use
QGLWidget::renderText()
instead.QGLViewer::startScreenCoordinatesSystem()
.Camera::projectedCoordinatesOf()
.Camera::unprojectedCoordinatesOf()
.MouseGrabber::checkIfGrabsMouse()
.Camera::setFOVToFitScene()
is clamped to M_PI/2.0.#include "QGLViewer/qglviewer.h"
.src
directory has subsequently been renamed QGLViewer
.Camera::getViewport
function.drawNeeded()
is emitted before each call to draw() (it was no longer the case if you chose to override draw()).ZOOM_OUT
default mouse binding changed. See mouse page.setMouseStateKey().
.fastDraw()
fixed.KeyFrameInterpolator
indexes out of range (bug finder Xadeck).initializeGL()
message when several viewers are used (bug finder Franck).setMouseBinding, setWheelBinding
mouse customization functions.select
function is back ! Simply overload. Shift-LeftButton by default.QGLViewer::closeEvent()
saves the current viewer state to file.Frame::alignOnAxis()
function.setMouseStateKey()
has been modified to fit with setMouseBinding()
. Read its documentation.ManipulatedCameraFrame::Mode
enum and all mode
functions are removed.mouseBehavior
enum is replaced by mouseHandler
.mouseStateKey
removed and replaced by setMouseBinding
.QGLViewer::saveToFileForAllViewers()
removed as saveToFile
is now called in closeEvent
.Camera::setRevolveAroundPointToSceneCenter()
function removed.setXXXWithConstraint()
functions in Frame
.finished
signal in KeyFrameInterpolator
.Quaternion::randomOrientation()
static function..src.rpm
file.KeyFrameInterpolators
now enforce frame constraints.QGLViewer::drawLight()
made const
and has an optional scale.updateGL()
no longer called in QGLViewer::keyPressEvent()
when the key is not handled.Camera::horizontalFieldOfView()
fixed. Previous value was flawed.rpm
installs the library in /usr/local
, as does a make install
. The examples now compile with no manual tweaking.helpString()
function used by help()
.Qt::QMessageBox
is now used to display help()
.Camera::getViewDirection()
with float
parameters.DLL
.Camera::setFOVToFitScene()
function.cout
and cerr
replaced by QMessageBox
and qWarning
.QGLViewer::message()
removed.QGLViewer::snapshotCounter()
makes saveSnapshot()
faster in automatic
mode.QGLViewer::saveSnapshot()
has an overwrite
parameter.Camera::zoomOutToFitScene() and zoomOnPixel()
become Camera::interpolateToFitScene() and interpolateToZoomOnPixel()
.QGLViewer::setShortcutKey
takes an optional stateKey parameter.Camera::setSceneRadius
and setSceneCenter
become public
.Camera::fitSphere()
fixed (bug finder Sylvain).setForegroundColor()
and setBackgroundColor()
functions.ManipulatedFrame
inherits MouseGrabber
. See the example.ManipulatedFrame::spinningSensitivity()
function.setSceneBoundingBox()
with float[3]
parameters.MouseGrabber
, checkIfActive()
and others become checkIfGrabsMouse, ...
.ManipulatedCameraFrame
class merges specific ManipulatedFrame
camera behavior.Camera::mouseDoubleClickEvent()
and Camera::adaptFrameState()
removed.zNear() and zFar()
are more tightly (a factor 2) set from sceneRadius()
.zNear() and zFar()
are canged to display path when cameraPathIsEdited()
.#define QGLVIEWER_VERSION 0x010301
added. Allows #if QGLVIEWER_VERSION < Ox010300 ... #endif
.make install
creates links to libraries instead of copies.Quaternion
internal representation switched from float
to double
because of precision problems with very small rotations (bug finder Christof).MouseGrabber
class for even more interactive applications. See the exampleQGLViewer.setCamera()
lets you switch between different cameras in your viewer.restoreFromFile()
and saveToFile()
now also accept a directory as an argument.QGLViewerPool()
holds all the QGLViewers, and QGLViewerIndex()
identifies a viewer.viewer.camera
and camera.frame
are now pointers. Use viewer.camera()
and camera()->frame()
instead.manipulatedFrame()
are now manipulated with the Control key instead of Alt.saveToFile()
and restoreFromFile()
removed from constructor/destructor.restoreFromFile()
in your init()
function if you want to restore previous state.saveToFile()
is called when you quit your application (default key is Escape). See also saveToFileForAllViewers()
.Camera::saveCurrentPOV()
and restorePOV()
removed. Use addKeyFrame()
and playKeyFramePath()
instead.deleteKeyFrameStateKey()
and associated functions are removed.Camera::getProjectionMatrix()
and getModelViewMatrix()
are now public.camera()->get...Matrix()
instead of the ones in QGLViewer, which have been removed.Camera::fieldOfView()
in radians instead of degrees.ShortcutAction
names used in setShortcutKey()
were uppercased to prevent name conflicts.pixelGLRatio()
fixed and now correct in ORTHO camera mode.fitSphere()
fixed in ORTHO camera mode.revolveAroundPoint()
no longer moves in ORTHO mode.help()
Quaternion::log()
and exp()
more robust.distanceToSceneCenter()
changed so that zNear()
and zFar()
handle tight sceneRadius()
.revolveAroundPoint
was not fixed on screen with an ORTHO camera (bug finder Christof).SpinningFrame
class, between Frame
and ManipulatedFrame
.
See the example.QGLViewer::setSceneBoundingBox()
function.Quaternion::log()
and Quaternion::exp()
functions.Quaternion::slerp()
and Quaternion::squad()
static members.MultiView example
.ManipulatedFrame
as for Camera
.Frame::getMatrix()
and Quaternion::getMatrix()
with double[16] parameters.Frame::rotatesAroundPoint()
function.Camera
no longer has a default referenceFrame()
.KeyFrameInterpolator
.make install
and RPM becomes /usr/local
.rm
or rpm -e libQGLViewer*
).make install
installs include files in INCLUDE_DIR/QGLViewer
.SpinningFrame, KeyFrameInterpolator and ManipulatedFrame
update signals are automatically connected to all viewers.Camera::setSceneBoundingBox()
also set the sceneCenter()
.Camera::setConstraint()
removed. Use camera.frame.setConstraint()
instead.Camera::zoomOutFromPixel()
replaced by zoomOutToFitScene()
.ManipulatedFrame::alignWithAxis()
replaced by Frame::alignWithFrame()
.QGLViewer::convertClickToLine()
moved in Camera
and takes int
.Camera::pixelGLRatio()
functionstd::min
patched for windows compilationQGLViewer::help()
becomes a public method.PLANE
constraint type can no longer be used for rotations.KeyFrameInterpolator
used to crash if the path was deleted while interpolating (bug finder Sylvain).drawAxis()
and drawGrid()
no longer save the openGL state.postDraw()
, that call them does it instead.Camera::loadProjectionMatrix()
and Camera::loadModelViewMatrix()
are no longer protected.Camera::pointUnderPixel(x,y)
to convert from screen to 3D coordinates.setSceneBoundingBox(), zoomOnPixel(), viewDirection()
.ManipulatedFrame
now has a rotationSensitivity()
and a translationSensitivity()
.Camera::lookAt()
preserves the horizon.Camera::fitSphere()
no longer modifies the orientation.ManipulatedFrame
bug was (finally) identified...and not fixed. See the AxisPlaneConstraint() man page for details.SPECIAL
mouse behavior disappears. See the mouse page.select()
function is removed. Overload mousePressEvent()
to
implement selection, see the select example.QGLViewer::currentFPS()
returns the current frame rate.QGLViewer::setSnapshotFormat()
and QGLViewer::snapshotFormat()
.Quaternion::matrix()
to use Quaternions as openGL 4x4 matrices.QGLViewer::draw3DText()
to draw text in 3D, see the draw3DText example.revolveAroundPoint()
. Should fix problems with small objects in large scene.libGLcore
has been removed from the rpm dependencies.QGLViewer::saveSnapshot()
has only one parameter.KeyFrameInterpolator
class. See the keyFrames
examples.QGLViewer::updateGLForAllViewers()
and QGLViewer::connectSignalToAllViewers()
.saveToFile()
and restoreFromFile()
. All classes implement domElement()
and initFromDOMElement()
.Quaternion::inverse()
and Quaternion::invert()
: two separated methods (thanks Dominique).Frame::modified()
signal is now emitted when a frame is modified.const
versions of Frame::translate()
and Frame::rotate()
.Camera::setCameraFromProjectionMatrix()
(thanks Sylvain).include_dir/cwFiles
).QGLViewer::startScreenCoordinatesSystem()
was flawed, now ok. See the screenCoordSystem example.toggleDisplayFPS(), toggleDrawAxis()...
) now call updateGL()
. The qt bug that prevented it was patched.Vec
class slightly modified (some const removed and normalize() returns a ref).Quaternion::axis()
and Quaternion::angle()
now respect the 0-pi specification.QGLViewer
documentation.Camera::setRevolveAroundPoint()
is replaced by Camera::seamlesslySetRevolveAroundPoint()
.QGLViewer::animationPeriod()
replaces QGLViewer::animationInterval()
.Camera::aspect()
and QGLViewer::aspect()
are now named aspectRatio()
.Quaternion::setAxisAndAngle()
becomes Quaternion::setAxisAngle()
.QGLViewer::setMouseStateKey()
and mouseStateKey()
).Camera::setUpVector()
function.Camera::setOrientation(theta, phi)
: an other easy way to position the camera.Frame::getMatrix(), Frame::getWorldMatrix(), Frame::worldMatrix()
: new matrix expressions of a frame transformation.Frame::transformOf()
and similar functions to convert vectors between frames.Camera::setMode()
), a double click changes fly speed. See mouse page.QGLViewer::drawLight()
polished. See the drawLight example.Quaternion::setFromRotationMatrix
fixed. Was completely flawed (thanks Sylvain). Camera::setOrientation
fixed. It used to change the camera position too because of the complex camera frame setup (web page to come). setPosition
and setOrientation
can now be used in any order. See also setOrientation(theta,phi)
in the NEW section.Frame::setConstraint()
now supports a NULL pointer, which intuitively results in no constraint.Camera::FLY mode
changed to maintain the horizon.Quaternion(from, to)
had a problem with angles > pi/2 and null vectors.QGLViewer::setDisplayText
becomes QGLViewer::setEnableText
(idem for QGLViewer::toggleEnableText()
and QGLViewer::isTextEnabled()
).
It controls whether QGLViewer::drawText()
actually draws text
or not (default is yes).
Convenient to remove all the displayed text with a single shortcut ('?' by default).Frame::setRotationAxisAngle()
, Frame::setOrientationAxisAngle()
now take angles expressed in radians instead of degrees.Frame::orientationOf()
is replaced by Frame::transformOf().startScreenCoordinatesSystem()
function that allows to directly draw in screen coordinates.help()
function. Key Binding 'H'. Complete default behavior.drawText()
directly in draw()
.setShortcutKey()
and setShortcutStateKey()
See also setMouseStateKey(), setSavePOVShortcutKey(),...
.