Change Log
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.
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 download 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::rotateAroundPoint() 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 shortcuts 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 vendredi, juin 27 2003.