##################
Technical Overview
##################

HOOPS Communicator is an SDK for development of 3D engineering applications in a web-browser with a focus on:

* Full access to engineering data
* Ease of use
* Rapid development
* High performance visualization
* Fast model streaming
* Flexible usage and deployment

Its main component is the HOOPS Web Viewer, a powerful and flexible JavaScript library purpose-built for engineering data, and based on a graphics kernel designed for high performance visualization. The Web Viewer supports the full richness of engineering data including:

* Product structure
* PMI
* CAD
* Filters and layers
* 2D drawings
* Point clouds
* Configurations
* Physical properties


It also enables complex interrogation of CAD data, including precise measurement, and offers an extensive set of 2D and 3D markup functionality. The HOOPS Web Viewer includes a fully featured Design Review Application "out of the box", with a rich set of prebuilt operators and UI components that can be easily extended and customized.


Data Import (server side)
=========================

We provide two options to get your data into HOOPS Communicator:


HOOPS Converter
---------------

This stand-alone multiplatform executable is meant to be deployed on a server and provides access to more than 30 CAD Formats (HOOPS Exchange license required - :doc:`see here </overview/supported-formats>`), converting them to Stream Cache and other formats like images and 3D PDFs. It also provides Product Structure Information through XML which makes it easy to associate your own business logic to the entities in a converted model. The HOOPS Converter functionality is also available as a library.


Direct Authoring
----------------

HOOPS Communicator includes a multi-platform C++ and Java library for creating Stream Cache models from scratch.  The library includes helper functions that simplify the creation of complex CAD models based on your own data.


Data loading (client side)
==========================

HOOPS Communicator utilizes its own proprietary file format called Stream Cache (SC). The SC format is optimized for streaming and model aggregation, and handles the full breath of engineering data beyond just triangles and graphics primitives. Your web application can access SC data in two different ways:


Streaming
---------

To achieve optimal performance and responsiveness, HOOPS Communicator provides a server-side component called the HOOPS Stream Cache Server that facilitates fast, granular and intelligent streaming via a direct WebSocket connection to the HOOPS Web Viewer component running in the browser. This component also supports Server-Side Rendering where all rendering is performed on the server, and only images are sent to the client. We recommend using the HOOPS Stream Cache Server for the best loading performance, but it is not required to utilize HOOPS Communicator.


File-based loading
------------------

The Stream Cache file can also be directly read by the Web Viewer component via an HTTP request. In this case, a variant of the Stream Cache file called SCS is utilized.


.. figure:: images/technical-overview.png

   HOOPS Communicator Technical Overview

