========
Overview
========

This guide explains how to use the HOOPS/Stream 3dgs-specific classes to create and read customized, stream-enabled HOOPS Stream Files (HSF). It also covers basic use of the HOOPS/Stream Toolkit, which involves black box reading and writing of HOOPS Stream Files. More advanced techniques are also covered, including reading/writing customized HSF files and passing data streamed in from a remote location to the HOOPS/Stream Toolkit.
  
If the data to be exported to an HSF file already resides in the HOOPS/3dGS scene-graph, or if data being imported from an HSF file needs to be mapped to the HOOPS/3dGS scene-graph, then the 3dGS-specific classes should be used.

The following are prerequisites to creating or importing an HSF file using the 3dGS classes: 

#. Because an HSF file is essentially an archive of the HOOPS/3dGS scene-graph contents (geometry, attributes, and segments) it is important to understand how the scene-graph should be organized, and what geometry and attributes are supported. Refer to the :doc:`database structure section </prog_guide/3dgs/01_3_database_dbase_structure>` for information on scene-graph architecture and details on geometry and attributes. The HOOPS/3dGS Reference Manual is also included with this SDK so that you can obtain specific details on geometry types and multi-option attributes. (The HOOPS/3dGS Reference Manual is located in the HOOPS/3dGS section of the documentation.)

#. An understanding of HSF opcodes, objects, opcode handlers, and general HOOPS/Stream Toolkit architecture. This information is reviewed in the HOOPS/Stream Technical Overview.


Compiling and Linking
=====================

If you need to recompile the HOOPS/Stream library, find the Microsoft Visual Studio project files or Unix makefile in the */dev_tools/hoops_stream/source* directory. The HOOPS/Stream headers and exported library are located in the following directories:

.. csv-table::
	:header: Platform", "Header Location", "Library Location", "Library Names"
	
	"Windows", "*/Dev_Tools/hoops_stream/source/stream_common*", "*/Dev_Tools/hoops_stream/lib/<platform>*", "*hoops_stream.lib*"
	"Linux", "*<UNIX COMMON PACKAGE>/Dev_Tools/hoops_stream/source/stream_common*", "*/Dev_Tools/hoops_stream/lib/linux*", "*libhoops_stream.a*"
	"OS X", "*<UNIX COMMON PACKAGE>/Dev_Tools/hoops_stream/source/stream_common*", "*/Dev_Tools/hoops_stream/lib/<platform>*", "*libhoops_stream.dylib*"

Windows runtime DLLs are located at */bin/<platform>/hoops_stream.dll*. Linux and OS X runtimes are the same as the exported libraries mentioned in the table above. Regardless of platform, you must include the HOOPS/3dGS runtime libraries in the execution environment.
