Eve
Major changes
- Add support for hierarchical positioning of TEveElements in any
specific scene. This allows for easier positioning of elements in
dynamic scenes when child elements are attached to their parent
elements and are supposed to follow their movements / rotations.
- Several significant improvements in TEveCaloLego classes.
- In top view draw cell values, if their screen size is above given limit.
- New energy-scales drawn as overlay (in color and size mode). The
legend can be moved around the screen with the mouse.
- Fix transition between orthographic and perspective camera in
TEveCaloLego event handler.
- Use color-sets in overlays and axis in order to automatically
keep same contrast when changing background color.
- In TEveTrackPropagator improve overall trajectory extrapolation
through the path-marks. Fix a problem with path-mark / boundary
approach with near-zero magnetic field.
- Generalization of selection from GL viewers to support internal
multiple selection from the elements.
- Add support for selection of individual calorimeter towers in
TEveCalo classes.
- Add support for 3D -> 3D projections. This also allows for
scaling (compression/extension) of certain space region as required by
NA62 to show the 200m long detector in a meaningful way.
Several generalizations of the projection infrastructure were
required:
- TEveProjectable::ProjectedClass() takes an argument:
virtual TClass* ProjectedClass(const TEveProjection* p) const = 0;
thus allowing different projected classes for different projections.
- All TEveProjection::ProjectPoint/Vector(...) functions have an
additional "depth" argument thus allowing the projected classes to
skip explicit setting of depth after the point has been projected
-- this could damage the 3rd component.
Pre-scaling now supports 3 dimensions.
- Abstract TEveProjected::SetDepth() has been split into two parts:
- It has been implemented in the base class where it checks for
the projection type (2d) before calling the local function;
- Abstract SetDepthLocal() has been added to provide the same
functionality.
This allows for the 2d/3d check to be done in place only.
- New projection class has been introduced: TEve3DProjection.
It performs pre-scaling and offsets the center.
- To simplify the projection of lists TEveElementList has been made
projectable and corresponding TEveElementListProjected class
introduced. This also fixed the problem with render-state not being
propagated to projected classes.
The check whether to project a sub-tree of elements is still performed.
- TEveGeoShapeProjected has been introduced to represent the 3D
projection of a TEveGeoShape (2D projection is handled by
TEvePolygonSetProjected).
Points, lines and tracks use the same projected class for both 2D
and 3D projections.
An example showing this functionality has been added as a new tab in
projection_prescale.C
.
- TEveManager now allows simultaneous usage of several objects
editors. Simply click on the top name-button in object editor to
create a standalone editor for this object in a separate
window. This facilitates operation when several objects need to be
modifed in parallel.
- New tutorial
alice_vsd.C
has been added. It shows
how to read Visualization Summary Data files (VSD).
Minor changes
- In TEveFrambox add support for drawing of back-polygons for 3D
frame-boxes. Those should be transparent, otherwise the things inside
are not visible.
- TEveRGBAPalette - implement additional flag fFixColorRange specifying
how the palette color range gets mapped onto signal values:
- true - LowLimit -> HighLimit
- false - MinValue -> MaxValue.
- Add signal emitting TEveRGBAPalette::MinMaxValChanged(). Ged
editor calls this after setting the min/max range.
OpenGL
Major changes
- Support for rendering into frame-buffer objects (FBO).
- Using FBOs, it is now possible to save bitmap image formats at
any resolution and even when the GL window is not on screen.
- Add support for global scaling of point-sizes, line-widths and font-sizes.
- Generalize secondary-selection handling so that it is possible to
implement various handling schemes. For example see individual
calorimeter tower selection in TEveCalo-classes.
- Generalize handling of highlight feedback -- this is now done via
a virtual TGLLogicalShape::DrawHighlight(...) so that it can be
changed by sub-classes.
- The stand-alone GL viewer now supports hiding of menu-bar. It
collapses into a narrow band on top of the viewer that expands when
mouse pointer enters its area. This allows for better utilization of
the screen while still providing the controls available from the menu.
- Editor for "gl5d" option was improved.
- TGLTH3Composition class to combine several TH3s in one plot.
Minor changes
- Use Diagonal() instead of Volume() to determine if a bounding-box
is empty and also for sorting of the scene-elements by size. The
previous implementation caused problems with 2D and 1D objects.
- Several improvements in camera configuration and handling.
- When initializing TGLClipPlane for the first time, place it in
the center of the scene's bounding-box. Before that, plane was always
positioned at (0,0,0) which lead to unexpected behaviour when scene
was not centered at the origin.