The SEDRIS Data Representation Model
APPENDIX A - Classes
Rendering Priority Level

Class Name: Rendering Priority Level

Superclass - <SEDRIS Abstract Base>

Subclasses

This DRM class is concrete and has no subclasses.

Definition

An instance of this DRM class specifies the method used to describe the relative priority used to resolve occlusion between two or more overlapping (or potentially overlapping) objects.

Priority is indicated by the group ID (rendering_group) and priority index (rendering_priority). The rendering_priority is relative to the rendering_group, and is intended to assign priority order (or layer) to coplanar <Polygon> instances or coplanar <Feature Representation> instances. A higher index indicates a higher rendering priority (rendered last). The scope of the group ID values is the entire transmittal.

Lower numbered priority groups are rendered before higher numbered priority groups.

<Rendering Priority Level> instance may be components of <Geometry Representation> instances and/or <Feature Representation> instances within a <Union Of Geometry> instance or <Union Of Features> instance, as appropriate, to override the ordering specified by the ordering_reason field.

DRM objects that do not specify a <Rendering Priority Level> instance are assumed to have a rendering_priority value of 0.

Primary Page in DRM Diagram:

Secondary Pages in DRM Diagram:

Example

  1. A particular transmittal may represent a lake as a single <Polygon> instance located inside of a much larger <Polygon> instance that represents the surrounding terrain. The larger terrain polygon and the smaller lake polygon that it contains may be coplanar, so the modeller assigns a <Rendering Priority Level> component with rendering_group = 1, rendering_priority = 1 to the terrain <Polygon> instance and a <Rendering Priority Level> component with rendering_group = 1, rendering_priority = 2 to the lake <Polygon> instance, so that the lake polygon is rendered on top of the terrain <Polygon> instance.

  2. The side of a <Model> instance, representing the wall of a building, is a brown <Polygon> instance, and a window in the wall of the building is a grey <Polygon> instance where the grey <Polygon> instance is coplanar with the brown <Polygon> instance. The grey <Polygon> instance is given a <Rendering Priority Level> component with a higher rendering_priority value than that of the brown <Polygon> instance so that the window is drawn correctly on the side of the building.

  3. A plan view display can render <Point Feature> instances, <Areal Feature> instances, and <Linear Feature> instances. Since <Feature Representation> instances are usually considered to be flat, many features may be coplanar. A <Rendering Priority Level> component can be used to indicate the relative drawing order (or layer) within a set of overlapping <Feature Representation> instances. It is common for a single <Areal Feature> instance to cover the entire <Environment Root> instance area as a default background <Feature Representation> instance. This <Areal Feature> instance is assigned a rendering priority less than all other rendering priorities so that it is always drawn first and thus is the background.

  4. The following instance diagram shows how <Rendering Priority Level> instances can be used to override the layering of a fixed list of DRM objects. The <Union Of Geometry Hierarchy> instance orders its components and that order is reflected in the left to right position in Figure 6.57. The DRM objects are rendered in this order: Polygon_C, Polygon_B, Polygon_A, Polygon_E, Polygon_F, Polygon_D.

    Rendering Priority Level, Example 4

    Figure 57 — <DRM Rendering Priority Level> example

FAQs

Is this the only way to order data for rendering purposes?

No. There are other ways to achieve scope-limited, fixed-ordered rendering; see ordered <Union Of Geometry>.

When should a data provider use a <Rendering Priority Level> instance?

A <Rendering Priority Level> instance should be used to globally resolve rendering priority after scope limited occlusion is resolved. After all <Geometry Representation> instances are rendered that have a rendering priority <= 0, rendering successive levels of <Geometry Representation> instances should resolve occlusion. <Rendering Priority Level> instances can be viewed as a sorting bin assignment in some occlusion schemes.

Are there any 'special' sentinel values for a rendering priority?

Yes. A rendering priority of SE_RENDER_PRIORITY_TOPMOST means always render 'on top' (last), and a priority of SE_RENDER_PRIORITY_BOTTOMMOST means always render 'on bottom' (first)

Constraints

Component of (two-way)

Inherited Field Elements

This class has no inherited field elements.

Field Elements

SE_Short_Integer_Positive rendering_group; 1
SE_Short_Integer rendering_priority; 2

Notes

Fields Notes

rendering_group

The rendering_group field establishes a group to which the priorities of DRM objects are relative.

rendering_priority

The rendering_priority field indicates priority between coplanar DRM objects within the same rendering_group, such that a higher value indicates a higher priority.

EXAMPLE  A <Polygon> instance with a <Rendering Priority Level> component having rendering_group = 1, rendering_priority = 2 is on top of a <Polygon> instance with a <Rendering Priority Level> component with rendering_group = 1, rendering_priority = 1.


Prev: Relative Time Interval. Next: Rendering Properties. Up:Index.

Last updated: July 26, 2006 Copyright © 2006 SEDRIS