TKE_Heuristics

Opcode

ASCII H
Hexadecimal 48
Decimal 72

Operands

Variable mask, Variable value,
[Long related_limit], [Long internal_limit],
[Byte details] [Variable culling]
[Long obscuration_threshold] [Long maximum_extent]
[Long maximum_extent_mode] [Byte ordered_weights]
[(number of bits set in ordered_weights)xByte ordered_weight_valuess]
mask bitmask of options which are specified, Short, if high bit set a second Short follows
value bitmask of options which are set on, Short, if high bit of mask set a second Short follows
related_limit number of additional geometry entities to record which also satisfy selection criteria
internal_limit number of geometry components within a selected entity (ie, faces and edges within a shell) to record in addition to the "best" one
details bitmask to clarify a couple of the options which aren't simply on/off
culling bitmask of culling options, second byte if hight bit of first byte set
obscuration_tjreshold if using obscuration culling, the maximum number of pixels which can be considered obscured
maximum_extent when doing extent culling, the maximum screen dimension which can be considered small
maximum_extent_mode when doing extent culling, the action to take for small items (default is to skip)
ordered_weights bitmask of weights specified for ordered drawing

Notes

Heuristics provide hints on how you may improve drawing speed. Some options may change the appearance of the drawing, such as quick moves using Xor drawing mode or partial erase, leaving holes in the drawing. For the specific definitions on what these mean in HOOPS/3dGS please refer to the Set_Heuristics specification in the 3dGS Reference Manual.

Mask/value bits

00000001 Hidden Surfaces
00000002 Backplane Cull
00000004 Polygon Handedness, details field will be present if on
00000008 Quick Moves, details field will be present if on
00000010 Partial Erase
00000020 Memory Purge
00000040 Related selection limit, related_limit field will be present if on
00000080 Internal selection limit, internal_limit field will be present if on
00000100 Clipping
00000200 Transformations
00000400 Intersecting Polygons
00000800 Polygons Crossings
00001000 Concave Polygons
00002000 Incremental Updates
00004000 Selection Sorting
00008000 Extended mask/value size
00010000 Culling
00020000 Exlude Bounding
00040000 Detail Selection
00080000 Ordered Drawing
00100000 Ordered Unit
00200000 Ordered Weights
00400000 Internal Polyline Limit
00800000 Ordered Grid
01000000 Selection Level
02000000 Static Model

Detail bits:

01 Polygons Handedness is left if set, right otherwise
02 Quick Moves is to use spriting if set, Xor/overlay otherwise

Culling bits:

01 View Frustum culling should be used
02 Onscuration culling should be used
04 Extent culling should be used
10 View Frustum culling should be ignored
20 Onscuration culling should be ignored
40 Extent culling should be ignored
80 Extended bits (second byte) present
0100 Obscuration culling should use an octree organization
0200 Maximum extent mode specified
0400 Vector culling should be used
0800 Vector Tolerance culling should be used
1000 Vector culling should be ignored
2000 Vector Tolerance culling should be ignored

Maximum Extent Mode:

0 None - skip drawing
1 Dot - draw a pixel to represnt the item
2 Box - draw a bounding box to represent the item
3 Defer - draw the item later if time permits

Ordered weights

01 World Volume
02 Screen Extent
04 Distance (from camera)
08 Divergence (from view centerline)
10 Density
20 Priority