Change Log
June 7th, 2004 - 1.3.8-3
New features
Changes in the API
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.
Bug fixes or improvements
- Subtle bug flawed mouse bindings (especially object selection).
- Compilation successfully tested on SUN and IBM AIX (thanks Benjamin).
June 14th, 2004 - 1.3.8-2
New features
Bug fixes or improvements
- Patches for compilation on HP UX architecture (thanks Benjamin).
June 9th, 2004 - 1.3.8-1
New features
- A new
setKeyDescription() method to customize the help dialog.
- A new
setMouseBindingDescription() method to customize the help dialog.
Camera::projectedCoordinatesOf() and similar methods have an additional optional Frame parameter.
Changes in the API
ShortcutAction enum renamed KeyboardAction.
- New
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().
- Several functions made
const.
QGLViewer::rootWidget() removed, use QWidget::topLevelWidget() instead.
SCREEN_ROTATE_BOTTOM renamed ROLL.
- Asking for help window several times simply updates and shows instead of opening a new window.
- Scene radius and center no longer saved and restored in
.qglviewer.xml.
Bug fixes or improvements
- Web site design updated. New Unix and Windows installation pages.
- New
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.
May 5th, 2004 - 1.3.7-1
New features
- The object selection process has been simplified. Simply overload the drawWithNames() function
and get the resulting selection id with selectedName(). See the updated select examples for a practical implementation.
- Previous
select() implementations still work.
Quaternion::inverseMatrix() and associated similar methods.
Frame::inverse() and associated similar methods.
Frame::inverseMatrix() and associated similar methods.
- A new quarto example.
Changes in the API
QGLViewer::startAnimation() has no more parameter.
Bug fixes or improvements
- The new Qt 3.2.2 version patches the antialiassed font display on nVidia hardware that made drawText() crash.
- The examples page is divided in three sections: basic, pedagogical and complex.
March 17th, 2004 - 1.3.6-2
New features
- A new
Vec::unit() method. Returns a unitary copy of a vector.
Camera::setAspectRatio() function, useful when a Camera is used to create a shadow map.
Changes in the API
Vec::normalize() now returns the previous norm of the vector (instead of
normalized vector).
- RPM now installs the documentation in
/usr/local/share/doc/QGLViewer.
- Tarred versions of the sources now available under
tar.bz2 format.
make install now also install the documentation (default path is /usr/local/share/doc/QGLViewer).
- New
make options let you install separately the includes, the library and the documentation.
- Examples autodetect if Qt is threaded or not and change link accordingly.
Bug fixes or improvements
- The Qt 2.3 version (free win32 Qt version) is (almost) fully functionnal (see limitations).
- Some typos in the documentation were fixed.
- Patch for
<< operator with gcc 2.96 (bug finder Ranjith).
February 3rd, 2004 - 1.3.6-1
New features
- The mouse sensitivity can be tuned for
ManipulatedFrame and ManipulatedCameraFrame.
- The viewer window previous position is properly restored back, even for embedded widgets or in full screen mode.
- The version and packaging date are added to all files, so that you know your current version.
Changes in the API
- The
spinned(), manipulated() and interpolated() signals are no longer
connected to all the viewers updateGL() slots.
If you use several viewers, you should now explicitely make these connections.
See the signals' documentations for details.
- The
ManipulatedFrame::mouseMotion enum (ROTATE, ZOOM,...) is renamed QGLViewer::mouseAction.
drawText() made public.
- Deprecated
mouseStateKey(), Camera::mode(), ... functions removed.
Bug fixes or improvements
- The
Quaternion(from,to) constructor had a bug (bugfinders Marc and Tanguy).
MouseGrabber no longer activated when hovered while moving the camera or the manipulatedFrame().
- Calls to
updateGL() limited to the strict minimum.
- FAQ page splitted in two, with a new technical FAQ.
December 24th, 2003 - 1.3.5-8
New features
startScreenCoordinatesSystem() can set the origin in the lower or the upper left corner.
Changes in the API
- The
Camera::domElement() syntax has been changed (previous
.qglviewer.xml files are not compatible).
- The
TriangleSetConstraint class has been removed from the main library and moved
in the triSetConstraint contrib example.
Bug fixes or improvements
- Problem with
MouseGrabber/ManipulatedFrame wheel zoom fixed.
QGLViewer::saveToFileForAllViewers() is back and called by Escape (problems with multiple viewers).
- The
.qglviewer.xml state file is saved even when the viewer is not a top level window.
- A Qt bug with full screen has been patched so that viewers can start in full screen mode.
- When pressing a key, display is updated only when required.
November 26th, 2003 - 1.3.5-7
New features
- A new
ManipulatedFrame::ZOOM_ON_REGION mouse action, binded to Shift + middle button.
- The associated
Camera::fitScreenRegion() function.
Changes in the API
startScreenCoordinatesSystem no longer disable lighting nor enables blending.
November 17th, 2003 - 1.3.5-6
New features
- A
MouseGrabber::clearMouseGrabberPool() function.
Bug fixes or improvements
- Problem with classes derived from
ManipulatedFrame used as
MouseGrabber (bugfinder Cyril).
- Unclean old malloc removed from EPSRender code.
libQGLViewer135.obj error message with Visual C++ removed.
November 7th, 2003 - 1.3.5-5
New features
Bug fixes or improvements
ManipulatedFrame grabsMouse within a distance of 10 pixels (instead of 5).
- Fly speed modification problem when using +/- fixed.
November 5th, 2003 - 1.3.5-4
New features
QGLViewer::setBackgroundColor(QColor) added to prevent hidding the QGLWidget function.
QGLViewer::setForegroundColor(QColor) added for consistency reasons.
- A new
keyboardAndMouse example.
Bug fixes or improvements
- Patch for
QTextEdit with Qt 2.3.
October 24th, 2003 - 1.3.5-3
Bug fixes or improvements
- The nVidia bug with anti-aliassed fonts has been patched.
October 22nd, 2003 - 1.3.5-2
New features
- Help window now has a keyboard and a mouse tabs.
QGLViewer::mouseBindingsString() and QGLViewer::shortcutBindingsString() functions.
- Tested on Windows Visual 6 (Qt 2.3) and with MS .NET (Qt 3.2).
Changes in the API
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.
Bug fixes or improvements
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.
October 2nd, 2003 - 1.3.5-1
New features
Glut no longer needed if your Qt version is at least 3.1.
QGLViewer::drawText can use different QFont.
Changes in the API
QGLViewer::drawText() has changed :
QGLWidget::renderText() is used instead of GLUT (no longer needed) if your Qt version is at least 3.1.
- Parameter list differs : now uses
QString and QFont.
- Function is no longer
const since it calls makeCurrent.
draw3DText() does not work anymore (because of Qt's text rendering). Use
QGLWidget::renderText() instead.
- The following functions now have their origin in the upper left corner :
QGLViewer::startScreenCoordinatesSystem().
Camera::projectedCoordinatesOf().
Camera::unprojectedCoordinatesOf().
MouseGrabber::checkIfGrabsMouse().
Camera::setFOVToFitScene() is clamped to M_PI/2.0.
- The examples now
#include "QGLViewer/qglviewer.h".
- The
src directory has subsequently been renamed QGLViewer.
September 24th, 2003 - 1.3.4-2
New features
Camera::getViewport function.
Changes in the API
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.
- Wheel bindings now also modified by
setMouseStateKey()..
Bug fixes or improvements
- Segmentation fault when exiting fixed.
- Frustum modification minimized when switching between PERSPECTIVE and ORTHO camera type.
- Disabled shortcuts no longer appear in help window.
- Missing includes on specific linux architechture were added.
- Missing display update when using
fastDraw() fixed.
- Position and size of the window properly saved and restored when QGLViewer is a part of an other QWidget.
- Camera now correctly handles
KeyFrameInterpolator indexes out of range (bugfinder Xadeck).
- No more erroneous
initializeGL() message when several viewers are used (bugfinder Franck).
July 16th, 2003 - 1.3.4-1
New features
- Mouse bindings can entirely be customized. See mouse page.
- Double simple click action removed. See mouse page for new bindings.
setMouseBinding, setWheelBinding mouse customization functions.
- The
select function is back ! Simply overload. Shift-LeftButton by default.
QGLViewer::closeEvent() saves the current viewer state to file.
- QGLViewer icon added to the web pages.
- A
Frame::alignOnAxis() function.
Changes in the API
setMouseStateKey() has been modified to fit with setMouseBinding(). Read its documentation.
- The
ManipulatedCameraFrame::Mode enum and all mode functions are removed.
- The
mouseBehavior enum is replaced by mouseHandler.
- The
mouseStateKey removed and replaced by setMouseBinding.
QGLViewer::saveToFileForAllViewers() removed as saveToFile is now called in closeEvent.
Camera::setRevolveAroundPointToSceneCenter() function removed.
Bug fixes or improvements
- Zooms is not too slow when close to scene center.
June 27th, 2003 - 1.3.3-1
New features
- Doxygen search engine added to the reference manual.
setFooWithConstraint() functions in Frame.
- A
finished signal in KeyFrameInterpolator.
- Z-buffer can be displayed with shortcut Z (thanks Sylvain).
- A
Quaternion::randomOrientation() static function.
- The Max OS X version of Qt is now free ! Download the latest version.
- The gcc 2.96 version of the rpm in no longer maintained. You need to compile it from the
.src.rpm file.
Bug fixes or improvements
KeyFrameInterpolators now enforce frame constraints.
- Easier compilation with darwin on mac architectures and on Linux Debian.
QGLViewer::drawLight() made const and has an optional scale.
updateGL() no longer called in QGLViewer::keyPressEvent() when the key is not handled.
June 1st, 2003 - 1.3.2-3
Bug fixes or improvements
Camera::horizontalFieldOfView() fixed. Previous value was flawed.
April 17th, 2003 - 1.3.2-2
Changes in the API
- The
rpm installs the library in /usr/local, as does a make install. The examples now compile with no manual tweaking.
- Easier compilation with Qt 2.3. See the installation page for details.
April 17th, 2003 - 1.3.2-1
New features
- A new
helpString() function used by help().
- A
Qt::QMessageBox is now used to display help().
- A
Camera::getViewDirection() with float parameters.
- Windows compilation now creates a
DLL.
- A
Camera::setFOVToFitScene() function.
cout and cerr replaced by QMessageBox and qWarning.
QGLViewer::message() removed.
- A new
QGLViewer::snapshotCounter() makes saveSnapshot() faster in automatic mode.
QGLViewer::saveSnapshot() has an overwrite parameter.
Changes in the API
Camera::zoomOutToFitScene() and zoomOnPixel() become Camera::interpolateToFitScene() and interpolateToZoomOnPixel().
QGLViewer::setShortcutKey takes an optional stateKey parameter.
Camera::setSceneRadius and setSceneCenter become public.
Bug fixes or improvements
Camera::fitSphere() fixed (bug finder Sylvain).
April 10th, 2003 - 1.3.1-1
New features
setForegroundColor() and setBackgroundColor() functions.
ManipulatedFrame inherits MouseGrabber. See the example.
- A
ManipulatedFrame::spinningSensitivity() function.
- A
setSceneBoundingBox() with float[3] parameters.
Changes in the API
- In
MouseGrabber, checkIfActive() and others become checkIfGrabsMouse, ....
- A new
ManipulatedCameraFrame class merges specific ManipulatedFrame camera behavior.
Camera::mouseDoubleClickEvent() and Camera::adaptFrameState() removed.
Bug fixes or improvement
- Camera
zNear() and zFar() are more tightly (a factor 2) set from sceneRadius().
- Camera
zNear() and zFar() are canged to display path when cameraPathIsEdited().
- A
#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).
March 26th, 2003 - 1.3.0-1
New features
- A new
MouseGrabber class for even more interactive applications. See the example
- Code was modified so that it compiles with the Qt 2.3 version (win32 free version).
Screenshot saving is not supported with Qt 2.3.
QGLViewer.setCamera() lets you switch between different cameras in your viewer.
restoreFromFile() and saveToFile() now also accept a directory as an argument.
- A
QGLViewerPool() holds all the QGLViewers, and QGLViewerIndex() identifies a viewer.
Changes in the API
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.
Call 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.
- Control+Fx is replaced by Alt+double press Fx to delete a camera KeyFrame path.
deleteKeyFrameStateKey() and associated functions are removed.
Camera::getProjectionMatrix() and getModelViewMatrix() are now public.
Use these camera()->get...Matrix() instead of the ones in QGLViewer, which have been removed.
Camera::fieldOfView() in radians instead of degrees.
- The
ShortcutAction names used in setShortcutKey() were uppercased to prevent name conflicts.
Bug fixes or improvement
- Most of the documentation was updated. Detailed descriptions and more code examples were added.
pixelGLRatio() fixed and now correct in ORTHO camera mode.
- Frame and Camera translation follow mouse in ORTHO mode.
fitSphere() fixed in ORTHO camera mode.
March 19th, 2003 - 1.2.9-3
Bug fixes or improvement
revolveAroundPoint() no longer moves in ORTHO mode.
- Special key (Esc, Return, Space...) displayed properly in
help()
- rpm are created with the debugged gcc 3-2-2. Optimizations now available.
March 5th, 2003 - 1.2.9-2
Bug fixes or improvement
- Slerp interpolation debugged.
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).
February 26th, 2003 - 1.2.9-1
New features
- A new
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.
- A new
MultiView example.
- Double click is handled for
ManipulatedFrame as for Camera.
Frame::getMatrix() and Quaternion::getMatrix() with double[16] parameters.
- A
Frame::rotatesAroundPoint() function.
Bug fixes or improvement
Camera no longer has a default referenceFrame().
- Orientations interpolation now based on slerps in
KeyFrameInterpolator.
- Successful compilation on Linux Debian distribution, with gcc 2.95 and 3.2.
Changes in the API
- Default install directory for
make install and RPM becomes /usr/local.
You should remove the previous files when you install this version (with 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.
January 30th, 2003 - 1.2.8-3
New features
- A convenient
Camera::pixelGLRatio() function
Bug fixes or improvement
- Minor changes in the trackball behavior.
- Visual feedback when a double simple click is used to change the revolveAroundPoint().
std::min patched for windows compilation
Changes in the API
QGLViewer::help() becomes a public method.
January 22nd, 2003 - 1.2.8-2
Bug fixes or improvement
- The
PLANE constraint type can no longer be used for rotations.
- A
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.
Changes in the API
Camera::loadProjectionMatrix() and Camera::loadModelViewMatrix() are no longer protected.
January 15th, 2003 - Version 1.2.8
New features
- A textureViewer pedagogical example shows how to map textures with OpenGL.
Camera::pointUnderPixel(x,y) to convert from screen to 3D coordinates.
- New cool trackball functionalities, see mouse page for details.
- In Camera :
setSceneBoundingBox(), zoomOnPixel(), viewDirection().
- The
ManipulatedFrame now has a rotationSensitivity()
and a translationSensitivity().
Bug fixes or improvement
Camera::lookAt() preserves the horizon.
Camera::fitSphere() no longer modifies the orientation.
- The
ManipulatedFrame bug was (finally) identified...and not fixed. See the AxisPlaneConstraint() man page for details.
- There used to be a problem in the displayed FPS when the manipulatedFrame was changed (bug finder Sylvain).
- There was a Quaternion drift. They are now re-normalized (bug finder Stéphane).
Changes in the API
- The
SPECIAL mouse behavior disappears. See the mouse page.
- The
select() function is removed. Overload mousePressEvent() to
implement selection, see the select example.
December 14th, 2002 - Version 1.2.7-2
New features
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.
Bug fixes or improvement
- Frame spinning threshold was flawed. Unwanted spinnings should no longer occur.
- Camera translation is infered from
revolveAroundPoint(). Should fix problems with small objects in large scene.
libGLcore has been removed from the rpm dependencies.
Changes in the API
QGLViewer::saveSnapshot() has only one parameter.
December 4th, 2002 - Version 1.2.7
New features
KeyFrameInterpolator class. See the keyFrames examples.
- Key Frames can be used to define a camera path. Binded on F1-12 (see keyboard page).
- Snapshot can be saved in EPS, PS and XFIG vectorial format (thanks Cyril).
- Gestion of a QGLViewer pool. See
QGLViewer::updateGLForAllViewers() and QGLViewer::connectSignalToAllViewers().
- The complete QGLViewer state can be saved and restored in XML format (see
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).
- +/- change camera fly speed. Arrows move the camera.
- designer cw files (custom widget) are distributed with the library (in
include_dir/cwFiles).
Bug fixes or improvement
- Float trigonometric function removed : now compile on Mac OS X architecture.
QGLViewer::startScreenCoordinatesSystem() was flawed, now ok. See the screenCoordSystem example.
- The different slots (
toggleDisplayFPS(), toggleDrawAxis()...) now call updateGL(). The qt bug that prevented it was patched.
- REVOLVE trackball orientation no longer depends on the mouse path.
Vec class slightly modified (some const removed and normalize() returns a ref).
Quaternion::axis() and Quaternion::angle() now respect the 0-pi specification.
Changes in the API
- Most of the "Display of visual hints" functions' names were changed. See the
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().
- MouseBehavior enum is uppercased : { CAMERA, FRAME, SPECIAL } (see
QGLViewer::setMouseStateKey() and mouseStateKey()).
- Exit2 shortcut key ('Q') removed. Exit key (Escape) remains.
September 10th, 2002 - Version 1.2.6
New features
- The entire library and the examples now use the threaded version of QT.
- Pressing the left and middle mouse button together rotates the scene around an axis orthogonal to the screen.
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.
- FullScreen mode now set the parent window (if any) in full screen mode.
Frame::transformOf() and similar functions to convert vectors between frames.
- In FLY mode (see
Camera::setMode()), a double click changes fly speed. See mouse page.
Bug fixes or improvement
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.
Changes in the API
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.
- FullScreen mode shortcut key changed to Alt-Return, to fit the windows standard..
Frame::orientationOf() is replaced by Frame::transformOf().
Mardi 21 Juillet - Version 1.2.5
New features
- Stereo display available. See the stereoViewer example.
- A
startScreenCoordinatesSystem() function that allows to directly draw in screen coordinates.
- A new
help() function. Key Binding 'H'. Complete default behavior.
- First RPM release, some cleanup, web pages updated.
- Web pages will now be in english, so that they can be shared on the web. Maintaining two versions is really too much work.
Changes in the API
- Text drawing is done using
drawText() directly in draw().
- Key shortcut are no longer defined by static variables. They can be tuned using
setShortcutKey() and setShortcutStateKey()
See also setMouseStateKey(), setSavePOVShortcutKey(),....
Please send any comment, suggestion or problem by
e-mail.
Last modified on Wednesday, July 7, 2004.