Project leader: Kirill Gavrilov (kgv)
Forum: Visualization
Overview
Historically, the visualization component was included into OCCT, it was a natural choice in early 1990's.
In spite of the fact that nowadays there is a number of powerful 3D visualization solutions available on the market, OCCT 3D visualization component still evolves.
It is simple and compact, it includes native support for OCCT topological data, and it uses hardware acceleration for rendering large geometry. All this makes it a reasonable choice for fast development of OCCT-based applications.
As many commercial customers use OCCT visualization capabilities, the evolution of this component is driven by commercial development requests and technical ideas coming from OCC staff and the community.
The following development tasks are likely to be addressed in the coming OCCT releases.
General Improvements
- PBR rendering.
- Normal map textures.
- An interface for managing visualization LODs.
- 2D grid improvements.
- MeshVS redesign for better scalability on big mesh data sets.
The following development tasks have been taken into account in OCCT 7.2.0 and 7.3.0 releases:
- Extended features of color scale presentation.
- Multi-texturing within custom GLSL programs.
- Order-independent transparency.
- Improved OpenGL ES compatibility with Android devices.
- Distance and Size culling for rendering large scenes.
- Depth pre-pass option.
- Support of custom Geometry and Tessellation Shaders.
- Supporting more than 8 light sources.
The following development tasks have been taken into account in OCCT 7.1.0 release:
Programmable rendering pipeline
Programmable rendering pipeline (GLSL programs) is now used by default, although deprecated Fixed-Function pipeline (FFP) is still available for compatibility.
This migration opens the door for new advanced visualization techniques in future - some of them have been introduced within previous releases (e.g. Anaglyph and Row-interlaced stereoscopic output).
Manipulator Tools
New tool has been introduced - AIS_Manipulator, providing convenient interface for object transformation (translation, rotation and scaling).
Transformation-persistent presentations now correctly handled by picking logic, allowing usage of this and similar interactive objects with size fixed in pixels (zoom-persistence).
Perspective projection has been also improved and now correctly renders transformation-persistent objects - including Trihedron presentation in the 3D View corner.
Shaded highlighting
New highlighting style interface has been introduced, extending highlighting properties with transparency and material aspect.
The shaded highlighting now preserves lighting, which improves presentation.
Clipping and Capping planes
Clipping planes functionality has been improved to inherit material properties of intersected presentation. Performance improvements have been implemented as well.
Tiled view dump
The 3D viewer image dump functionality has been extended with capability to save a tile (sub-image) of the view with specified resolution.
This allows to avoid memory limit issues (first of all - GPU memory for off-screen buffers) saving image with overall resolution higher then it was possible before.
Elimination of global states
Visualization toolkits TKV3d and TKOpenGl have been finally cleaned-up from remaining global variables in the code.
Therefore, it is now possible creating independent viewers (e.g. having dedicated instance of OpenGl_GraphicDriver) in different threads without memory data races.
Of course, there is no intent to make these classes implicitly thread-safe - therefore it is up to application to ensure thread-safety while writing using multiple threads.
Advanced Visualization
Combination of Ray-Tracing and Rasterization approaches has been improved by eliminating Depth test issues as well as interactivity issues.
Photo-realistic Path-tracing engine has been improved by providing more precise lighting computations within physically-based material definition.
New techniques have been implemented improving raw rendering performance, adaptive performance (less noise within the same number of frames) and introducing special interactive mode.
The following development tasks have been taken into account in OCCT 7.0.0 release:
Advanced Visualization
- Path Tracing. Ray-Tracing functionality has been extended by new non-interactive photo-realistic renderer, with global illumination, soft shadows, color bleeding and some other features.
Overlay Presentations
The rendering of 2D onscreen objects (using pixel coordinates) has been redesigned. It is now possible to use AIS_InteractiveObject and AIS_InteractiveContext instead of deprecated API (removed in OCCT 7.0.0).
Using unified API for rendering 3D and onscreen presentations simplifies code support. It also treats the performance problems caused by design issues and inefficiency of old API for onscreen presentations.
Various Improvements
- The classes relationship between low-level TKOpenGl and high-level TKV3d classes has been revised. As result, the classes from package Visual3d has been removed (functionality has been moved to the classes of other packages) and OpenGl classes now have strong relationship (inheritance) from Graphic3d.
- Introduced built-in support of image anti-aliasing using MSAA offscreen buffers
- The performance of interactive detection algorithms has been dramatically improved by using BVH accelerated structures.
- Visualization core now supports the core profiles of OpenGL 3.1+ and OpenGL ES 2.0+. Fixed-function rendering pipeline has been deprecated.
- The global non-constant variables have been eliminated from TKOpenGl toolkit for thread-safety.
- The isolines presentation builder now supports the flag for mapping isocurves onto triangulation, which eliminates visual artifacts when displayed concurrently with shaded presentation.
- Visualization now supports stereoscopic output for row interlaced and anaglyph displays.
The following development tasks has been taken into account in OCCT 6.8.0 release:
- Prototyped Direct3D sample using OpenGL-Direct3D interoperability layer for integrating OCCT 3D viewer into an existing Direct3D rendering context under Windows.
- High-level API has been refactored (TKV3d library - including AIS, V3d, Visual3d, Graphic3d, PrsMgr packages) to make it more intuitive, easy-to-use and to reflect recent redesign changes in TKOpenGl library.
- The visual attributes of standard materials have been revised to make the visual results more realistic and closer to the user expectations. The list of material attributes has been extended by refraction support.
- Step-by-step improvement of the OCCT real-time ray tracer to make it a ready-to-use and attractive alternative to the classical OpenGL renderer, by adding support for textures, lines, markers and text, as well as some advanced visual effects (soft shadows and refraction)
- "Immediate mode" has been redesigned to use FBO.
- Improving BRep visualization (AIS_Shape and tool classes): taking into account topological sharing and thus avoiding duplication of tessellation data, building the wireframe representation in an efficient way coherent with shaded one
Current status
In general, the tasks currently in progress can be tracked through OCCT Mantis using "OCCT:Visualization" issue category. Most urgent issues are normally scheduled for the next OCCT release.
How to help
Everyone is welcome to share ideas, comments, proposals regarding evolution of the OCCT visualization components using the forum or Mantis. Contributions to code, help in testing on different platforms will be appreciated. If you have specific requirements or urgent needs, consider ordering OCC support services.
Snapshots
Here are few stereoscopic snapshots taken from with development versions of OCCT examples.
A snapshot showing sample results of the capping algorithm:
Snapshots demonstrating implemented and experimental OCCT ray tracer capabilities:

Samovar BRep model rendered with reflections, sharp shadows and anti-aliasing
|

Drill BRep model rendered with reflections, sharp shadows and anti-aliasing
|

Ambient occlusion sample
|

Soft shadows sample
|

Rendering with light refraction support (simulating glass)
|