![]()
“Using component technology we felt we could get quick, impressive results while maintaining our focus on CADKEY’s Pure Geometry™ foundation, versatile assembly management and data organization structure, and comprehensive dimensional accuracy assurance system. HOOPS® offered us graphics acceleration while allowing us to maintain, enhance and improve CADKEY’s core value add. TS3D has been an outstanding partner."
President & CEO
CADKEY Corporation
(now Kubotek USA)

Question:
I'm looking for a performance boost. Based on performance I have seen in your HOOPS samples, I suspect my data organization may not be optimal for hoops rendering, but I need to keep it structured this way for other reasons. Given that, is there anything that I can do to improve performance?
Answer:
Yes, there is. In version 16 two new capabilities were introduced which can offer significant performance improvements for sub optimal segment hierarchies. These capabilities are the new "static model" heuristic and "display list = segment" rendering option.
When the "static" heuristic is set, HOOPS will generate
a second,
optimized tree which will be used for drawing. The model data will
be
unmodified and will still be used for all purposes except drawing.
However, there is some subtlety to the use of the "static"
heuristic. It can be set at multiple locations within your scene graph
though the more segments that it can aggregate the better the results.
Consequently you should try and set it as high up your segment tree
as possible. Once set any modifications to the underlying segment
hierarchy will cause the static tree to be regenerated which can be
expensive depending on your model (roughly 4 seconds for a 100,000
segment hierarchy). Consequently, you should only set it on portions
of your segment hierarchy which are not being continuously modified.
Changes that do not affect the data in the static tree are still encouraged,
including manipulating the camera, inserting cutting planes, and modifying
geometry and attributes outside of the static area. Also, the MVO
selection capabilities have been enhanced so that you can select within
a "static" tree without incurring a regeneration. We are
are currently working on improving the editability of "static"
trees.
The second enhancement is support for "segment" level display lists. These allow HOOPS to batch all the geometry in a particular segment before it sends it down to the 3D driver. This results in fewer OpenGL and/or DirectX calls which has a positive effect on rendering performance. The static heuristic tends to create a shadow tree which has a high geometry-per-segment ratio, so combining this with the segment-level display lists usually results in significant performance gains.
To test I'd encourage you to load some of your data in to the HOOPS Part Viewer and set both these options via the General pane of the Tool/Options dialog. Under the "Rendering" section, check the "Static Tree" box and turn on "Segment" level display lists.
