1.1 Licensing and Compiling

To begin using HOOPS/3dGS, you must first set your license key. Do this by making your first call to HOOPS the Define_System_Options and set the license. Note that your license key is a hexadecimal number and is directly tied to your company name and a specific version of HOOPS. To obtain a license key for HOOPS, please contact support.

If you try to run HOOPS without a license key, you will get a the following warning message at start-up:

This copy of HOOPS has not been licensed for commercial development or distribution purposes. Copying is prohibited. To obtain rights to develop and/or distribute applications based on HOOPS, please contact Tech Soft 3D at 510-883-2180 or email support@techsoft3d.com.

Once you set the license key information, this message will not appear. The HOOPS/3dGS headers and exported library are located in the following directories:

PlatformHeader locationLibrary locationLibrary names
Windows/Dev_Tools/hoops_3dgs/source/Dev_Tools/hoops_3dgs/lib/<platform>hoops.lib
Linux<UNIX COMMON PACKAGE>/Dev_Tools/hoops_3dgs/source//Dev_Tools/hoops_3dgs/lib/<platform>libhoops<version>.so
OS X<UNIX COMMON PACKAGE>/Dev_Tools/hoops_3dgs/source//Dev_Tools/hoops_3dgs/lib/<platform>libhoops<version>.dylib

Windows runtime DLLs are located at /bin/<platform>/hoops<version>_<platform>.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.

 

iOS Libraries

The static libraries to create an iOS application are organized differently than other platforms. The Visualize 3DF libraries are provided via a single static library which contains HOOPS/3DGS, HOOPS/MVO and HOOPS/Stream. The libraries are located at [hoops] (both the native ARM library for the actual devices, as well as the x86 emulator library are provided). Please refer to the iOS Platform Notes for more information.

Linking your Windows application to Visualize static libraries

Most developers choose to use the DLLs we distribute with the HOOPS Visualize package. However, if you prefer to link to our libraries statically, follow the instructions below:

  1. Open the Visual Studio solution file associated with your project. From the Properties page, go to Linker/Input/Additional Dependencies. Add hoopstat_mt.lib as a dependency. Note that if hoops.lib has been previously added to this list, be sure to remove it. Note that if your application requires the /MD flag to compile, choose hoopstat_md.lib instead of hoopstat_mt.lib.
  2. Add psapi.lib, which is needed by the static library. This file is included with the Windows SDK.
  3. OpenGL users only: Add opengl32.lib and glu32.lib to the list of dependencies. These files are included with the Windows SDK.
  4. Set Ignore All Default Libraries to NO.
  5. In Configuration Properties/C/C++/Preprocessor/Proprocessor Definitions, add HOOPS_STATIC_LIB.

The project should now bulid and run correctly.

1.1.1 Streamlining the HOOPS/3DGS Library

Overview

Developers can build a scaled-down version of HOOPS/3DGS. It will not be provided as a pre-built library; rather developers will be able to compile obfuscated HOOPS/3DGS source code using compiler flags to stub out pieces of functionality that are not needed (for example, -DDISABLE_SHOW in the CFLAGS line).

Functionality Breakout Options

This section will provide details on the areas of core functionality that can be individually stubbed out, along with the estimated corresponding HOOPS/3DGS library size reduction.

The core functionality breakout list covers items that can be broken out as separate components. If all the items are broken out, the size of the HOOPS/3DGS library reduces to ~1MB. This size is largely a function of the core architecture of HOOPS Visualize which utilizes sophisticated data-structures and scaffold database/rendering/attribute logic to enable support of all these powerful components. Further reduction of the library size causes a run-in with the 80/20 rule (except in this case it is more like the 95/5 rule). That is, significant additional effort in stripping out functionality would result in minimal incremental size reduction.

1. DISABLE_RASTERIZER - software z-buffer/frame-buffer pipeline/image driver - 130k

This involves removal of all logic to perform software rasterization of the scene, with or without a z-buffering stage, including lookup tables, dc_z functions, etc... The Visualize software z-buffer and software-frame buffer logic is no longer available to produce non-OpenGL based interactive rendering of complex 3d, shaded scenes.

2. DISABLE_SORTING_HSR - sorting-based HSR algorithms - 25k

These include algorithms such as hidden-line-removal and painter's. This prevents HLR renderings, or mixed-mode (vector and raster) rendering of scenes to hardcopy devices such as a native GDI Printer or Clipboard DC, Postscript file/device, etc. If you wanted to ensure transparent objects were rendered correctly you would need to include at least one sorting algorithm (probably z-sort at a cost of ~ 8K).

If Item 1 is also stubbed out, then HOOPS/3DGS would not be able to rendering a complex scene to a hardcopy device. (Either it needs to be sorted and drawn back-to-front, or it needs to be rendered to an offscreen buffer using a szb/sfb. A remaining option would be for the developer to manually grab the screen image (or have OpenGL render to an offscreen image) and the blit that image to the hardcopy device.

3. DISABLE_METAFILE - 40k

Reading/writing HMF files would be unsupported.

4. DISABLE_BITSTREAM - Font Engine - 150k

TrueType, Double Byte, and Unicode fonts would no longer be supported.

5. DISABLE_TEXTURING - 30k

This is the texturing software implementation and support code. If disabled, then objects could not be textured.

6. DISABLE_BIT_RASTERS
DISABLE_GRAY8_RASTERS
DISABLE_MAPPED16_RASTERS
DISABLE_MAPPED8_RASTERS - 20K

Certain display modes (8-bit, 16-bit; mapped and grayscale)

7. DISABLE_DRAW_3D - Non essential code in standard_3d functions - 50k

Any higher-level HOOPS attributes that apply to the visual appearance of entities (HOOPS-specific line-patterns, face patterns, marker symbols, etc.) that are not supported by OpenGL would no longer be supported.

8. DISABLE_SHOW - Show routines - 270k

The developer would not be able to query attributes in the HOOPS/3DGS scene-graph. (Typically this would be done within an application that provides editing capabilities.)

9. DISABLE_UNSET - UnSet and UnSet_One routines - 35k

The developer would not be able to UnSet attributes in the HOOPS/3DGS scene-graph.

10. DISABLE_GEOMETRY_EDIT / DISABLE_GEOMETRY_SHOW - 40k

The developer would not be able to query/edit geometry primitives stored in the HOOPS/3DGS scene-graph. (Typically this would be done within an application that provides editing capabilities.)

11. DISABLE_DEFINED_FONTS - 10k

The developer could not define custom fonts or use HOOPS internal stroked fonts.

12. DISABLE_STYLE_SEGMENT - 30k

HOOPS-style input handling would not be available. Typically this is only used in standalone 'HOOPS-only' demos.

13. DISABLE_LOD_GENERATION - 25k

Levels-of-detail for HOOPS/3DGS shell primitives could no longer be generated.

14. DISABLE_SEARCH - scene-graph searching support - 30k

Developer could not search for open segments, color names, contents, aliases, textures, etc.

15. DISABLE_COLOR_NAMES - Named color handling - 20k

Developer could not set/show colors using HOOPS/3DGS' built in color names, or create their own color names.

16. DISABLE_DATABASE_EDIT - Basic database routines - 25k

Developer could not manipulate the HOOPS/3DGS scene-graph nodes (segments), such as copy, style, move, rename, flush, etc.

17. DISABLE_COMPUTE - 25k

Developer would not have access to vector and matrix math utility routines, shell optimization routines, etc.

18. DISABLE_SELECTION/DISABLE_POLY_SELECTION - 40k

Developer could not perform selection using aperture, window, or volume selection methods / polygon or polyline selection.

20. DISABLE_CALLBACKS - 20k

The HOOPS I.M. API is no longer available. Developer can no longer make traversal time draw decisions, or utilize the immediate-mode type HIC_ routines to directly draw to the screen.

21. DISABLE_CODE_GENERATION - 15k

Developer could not use Code Generation system option.

22. DISABLE_GEOMETRY_ATTRIBUTES

Developers could not manipulate local face, vertex, and edge attributes from open shells and meshes.

23. DISABLE_EVENTS

HOOPS event handling routines. Developer could not use routines such as HC_Await_Event.

24. DISABLE_TABLE_LOOKUPS

Developer would forfeit certain performance optimizations during operations such as normal vector calculations.

25. DISABLE_SPECIAL_OPTIMIZATIONS

Developer would forfeit certain performance optimizations during some procedures, uch as the use of Show_Existence.

26. DISABLE_PHONG

Developer would forfeit the use of Phong shading and software texturing.

27. DISABLE_COLOR_MAPS - color index interpolation, mapped images

Developer would forfeit the use of color index interpolation or color maps.

28. DISABLE_PARTIAL_ERASE

Developer would forfeit the use of partial erase.

29. DISABLE_INSTANCING

Developer would forfeit the use of partial erase or sub-windows within included segments.

30. DISABLE_CUT_GEOMETRY

disables only HOOPS' internal implementation of capping polygon generation, leaving "cut edges" callbacks intact.

31. DISABLE_SIMPLE_SHADOW

disables HOOPS' internal implementation of fake shadows

Next

Index