Fundamentals
============

This guide provides insight into the fundamental components that drive the programming interface of HOOPS Visualize Desktop.

HOOPS Visualize Desktop is a rendering SDK designed for rapid development of high-performance, cross-platform engineering applications. It includes a graphics kernel capable of handling complex scene graphs, a framework for interacting with scenes, and high-level components called Sprockets that enable advanced functionalities.

The SDK is a C++ cross-platform and GUI-independent API, which facilitates code portability across platforms. It uses optimized drivers for OpenGL, DirectX, and Metal to fully leverage available graphics hardware.

The scene graph, referred to as a segment tree, organizes data into nodes (segments) that can contain geometry and attributes. A high-level structure composed of Canvas, Layout, View, and Model further organizes applications and their data.

Additionally, the SDK provides bridge components for transferring data between environments. Users can import and visualize CAD data directly through HOOPS Exchange, Parasolid, Sketchup, and RealDWG. It also supports generating photo-realistic renderings with HOOPS Luminate and creating rich 3D visualization PDF/HTML documents with HOOPS Publish.

HOOPS Visualize Desktop offers all the standard functionalities to build a robust 3D application:
 

Geometry
--------

All kinds of geometry can be inserted into 3D scenes:

* Shells
* Meshes
* Text
* Lights
* Lines
* Curves
* Markers
* Polygons
* Spheres
* Cylinders
* NURBS
* Cutting sections
* Grids
* Reference geometry

Rendering
---------

Many advanced rendering options are available:

* Anti-aliasing
* Shadows
* Reflection planes
* Bloom
* Lighting algorithms
* Color interpolation
* Hidden surface removal
* Depth of field
* Perimeter and silhouette edges
* Custom shaders
* Textures
* Physically-based rendering (PBR) 

User Interactions
-----------------

The SDK provides a high-level interface to interact with the scene:

* Mouse operators
* Touch operators
* 3DConnexion SpaceMouse support 
* Selection
* Highlighting
* AR and VR support

File Input/Output

* CAD Files with Sprocket HOOPS Exchange
* PDF and HTML with Sprocket HOOPS Publish
* DWG/DXF with Sprocket RealDWG
* Parasolid with Sprocket Parasolid
* SKP with Sprocket Sketchup
* Point clouds
