New Interactive Services (NIS)
New Interactive Services provides the API similar to the traditional AIS but with some important differences/improvements:
Eash type of InteractiveObject should have a corresponding Drawer class that defines the presentation of the Object type using direct OpenGl calls. This is a much faster way to display 3D objects, providing for more than 1 million separate selectable entities in one view.
The abstract type NIS_InteractiveObject does not support any properties (color, material, other aspects). The relevant properties should be defined in the specializations of the Drawer class, and the API to set/modify should be implemented in the specializations of InteractiveObject class.
Interactive selection is managed by InteractiveObject methods instead of special selector classes and data types. This is possible since in NIS the selection is based on 3D representation (by a ray or a box corresponding to the view direction) without intermediate 2D projection.
Many InteractiveContext instances can be attached to a V3d_View, these instances being independent containers of interactive objects; removal (detaching) of InteractiveContext instance destroys the contained objects.
All data types and algorithms are designed to provide the best performance for both OpenGl (server side) and application. On the other hand, the API is open to any feature supported by any version of OpenGl. This allows building custom presentations quickly and efficiently.
The type NIS_View subclasses V3d_View thus providing all its public API, such as scene definition (view orientation, lights, background, etc.) and the standard view transformations (pan/zoom/rotate,fitAll,...). The traditional AIS-based presentations (e.g., AIS_Shape) are also supported, they can be rendered together with NIS presentations in the same view window.
The DRAW test plugin, TKViewerTest, has been modified to manage AIS_InteractiveContext and NIS_InteractiveContext together in one view window.
This package is an experimental one, it does not yet provide the support of many features that you can find in AIS, e.g., visualization of topology, local contexts. It can be used to create efficient OpenGl-base visualization components, however, it does not replace AIS. You can think of NIS as a complement to the traditional AIS, better suited to some special tasks, rather than its replacement.