Information technology — SEDRIS —
Part 1:  Functional specification

7 DRM class constraints

7.1 Introduction

7.1.1 Topics

Table 7.1 lists the topics of this clause.

Table 7.1 — Topics

7 DRM class constraints

7.1 Introduction

7.1.1 Topics

7.1.2 Description

7.2 Constraints

7.2.1 Overview

7.2.2 Animation related organizing principle

7.2.3 Characteristics of <DRM Property Table Reference>

7.2.4 Colour mapping constraints

7.2.5 Constraints on associates

7.2.6 Constraints on components

7.2.7 Contained edge constraints

7.2.8 Contained node constraints

7.2.9 Continuous LOD constraints

7.2.10 Cylindrical structure

7.2.11 Distinct <DRM Geometric Centre>

7.2.12 Distinct link objects

7.2.13 Distinct time significance

7.2.14 <DRM Classification Data> constraints

7.2.15 <DRM Colour Table> size

7.2.16 <DRM Conformal Behaviour> constraints

7.2.17 <DRM Control Link> constraints

7.2.18 <DRM Environment Root> SRF

7.2.19 <DRM Face Direction> levels 0 - 3

7.2.20 <DRM Feature Edge> constraints

7.2.21 <DRM Finite Element Mesh> structure

7.2.22 <DRM Image Anchor> SRF

7.2.23 <DRM Linear Geometry> structure

7.2.24 <DRM LSR Transformation> components

7.2.25 <DRM Model> SRF

7.2.26 <DRM Polyhedron> structure

7.2.27 <DRM Presentation Domain> constraints

7.2.28 <DRM Primitive Summary Item> constraints

7.2.29 <DRM Property> constraints

7.2.30 <DRM Property Characteristic> constraints

7.2.31 <DRM Property Grid> constraints

7.2.32 <DRM Property Set Table> size

7.2.33 <DRM Reference Surface> constraints

7.2.34 <DRM Stamp Behaviour> constraints

7.2.35 <DRM Table Property Description> constraints

7.2.36 Edges bordering faces

7.2.37 Face ring edge consistency

7.2.38 Faces bordering volumes

7.2.39 General axis constraints

7.2.40 Hierarchy summary constraints

7.2.41 Homogeneous light rendering properties

7.2.42 Image mapping functions and texture coordinates

7.2.43 Index codes within tables

7.2.44 Inheritance rule for <DRM Location>

7.2.45 LOD related organizing principle

7.2.46 Mandatory metadata

7.2.47 Model reference type constraints

7.2.48 Nested primitive geometry

7.2.49 Non-cyclic aggregations

7.2.50 Non-empty <DRM Environment Root> instance

7.2.51 Non-empty <DRM Model> instance

7.2.52 Non-overlapping DRM class summary items

7.2.53 Non-selfoverlapping perimeter data locations

7.2.54 Octant related organizing principle

7.2.55 Parallelepiped structure

7.2.56 Perimeter related organizing principle

7.2.57 Polygon as bounded plane

7.2.58 Precedence of <DRM Property Set Index>

7.2.59 Publishable object

7.2.60 Quadrant related organizing principle

7.2.61 Required reference vector location

7.2.62 Separating plane organizing principle

7.2.63 Spatial axis constraints

7.2.64 Spatial index related organizing principle

7.2.65 State related organizing principle

7.2.66 Time dependency

7.2.67 Time interval calculation

7.2.68 Union organizing principle

7.2.69 Valid node/edge relationships

7.2.70 Variable meaning constraints

7.2.71 Volume shell face consistency

7.1.2 Description

This clause specifies the constraints that specify the rules for using instances of the DRM classes. These constraints describe the allowable behaviours and relationships beyond those specified by the allowable association, component, and aggregate relationships.

7.2 Constraints

7.2.1 Overview

The constraints stated below specify the restrictions on field values and associations that may apply when creating and modifying DRM class instances. Since many of these constraints apply to multiple DRM classes, they are specified here and only referenced in 6.2 DRM class specifications.

7.2.2 Animation related organizing principle

For every <DRM Animation Related Geometry> instance A with N <DRM Geometry Hierarchy> components, the following shall hold:

  1. No <DRM Geometry Hierarchy> instance shall appear more than once as a component of A.
  2. For every <DRM Animation Behaviour> component B of A:
    1. The beginning_frame field of  B shall have a value in the range 1..N.
    2. The ending_frame field of B shall have a value in the range beginning_frame..N.

7.2.3 Characteristics of <DRM Property Table Reference>

For any <DRM Property Table Reference> instance R specifying a <DRM Property Table> instance T:

  1. T shall be a component of a <DRM Data Table Library> instance.
  2. T shall have a <DRM Axis> component, the axis_type of which corresponds to that specified by R.
  3. The <DRM Axis> instance thus specified shall have axis_value_count greater than or equal to (index_on_axis + 1), where index_on_axis is that specified by R.

7.2.4 Colour mapping constraints

The colour_mapping field of a <DRM Colour> instance shall not be empty.

In addition,

  1. The PRIMARY and SECONDARY flags may only be used for DRM objects with <DRM Light Rendering Properties> components.
  2. The PRIMARY_LIGHT_RENDERING_BEHAVIOUR flag may not be combined with any other use of the 5.2.8.2 Colour_Mapping data type.
  3. The SECONDARY_LIGHT_RENDERING_BEHAVIOUR flag may not be combined with any other use of the 5.2.8.2 Colour_Mapping data type.

7.2.5 Constraints on associates

DRM objects are constrained in taking associate DRM objects as follows:

  1. Let M be a <DRM Model> instance.
    1. Let M have a <DRM Feature Model> component F, and let F1 be a <DRM Feature Representation> instance in the component tree of F and T be a <DRM Feature Topology> instance in the component tree of F.
      1. F1 shall not associate to a <DRM Feature Representation> instance outside the component tree of F.
      2. No <DRM Feature Representation> instance outside the component tree of F shall associate to F1.
      3. F1 shall not associate to a <DRM Feature Topology> instance outside the component tree of F.
      4. No <DRM Feature Topology> instance outside the component tree of F shall associate to F1.
      5. T shall not associate to a <DRM Feature Topology> instance outside the component tree of F.
      6. No <DRM Feature Topology> instance outside the component tree of F shall associate to T.
    2. Let M have a <DRM Geometry Model> component G, and let G1 be a <DRM Geometry Representation> instance in the component tree of G and T be a <DRM Geometry Topology> instance in the component tree of G.
      1. G1 shall not associate to a <DRM Geometry Representation> instance outside the component tree of G.
      2. No <DRM Geometry Representation> instance outside the component tree of G shall associate to G1.
      3. G1 shall not associate to a <DRM Geometry Topology> instance outside the component tree of G.
      4. No <DRM Geometry Topology> instance outside the component tree of G shall associate to G1.
      5. T shall not associate to a <DRM Geometry Topology> instance outside the component tree of G.
      6. No <DRM Geometry Topology> instance outside the component tree of G shall associate to T.
    3. Let M have both a <DRM Feature Model> component F and a <DRM Geometry Model> component G. Let F1 be a <DRM Feature Representation> instance in the component tree of F and let G1 be a <DRM Geometry Representation> instance in the component tree of G.
      1. F1 shall not associate to a <DRM Geometry Representation> instance outside the component tree of G.
      2. No <DRM Geometry Representation> instance outside the component tree of G shall associate to F1.
      3. G1 shall not associate to a <DRM Feature Representation> instance outside the component tree of F.
      4. No <DRM Feature Representation> instance outside the component tree of F shall associate to G1.
    4. Let M have a <DRM Interface Template> component T.
      1. For every <DRM Variable> instance V in the component tree of M, V shall associate exactly once with T.
      2. If V is a <DRM Variable> instance that does not appear in the component tree of M, T shall not associate with V.
  2. Let R be a <DRM Environment Root> instance.
    1. Let R2 be a <DRM Environment Root> instance, where the srf_context_info of R does not match that of R2.
      1. Let R have a <DRM Feature Hierarchy> component F, and let X be a <DRM Feature Representation> instance in the component tree of F. Let R2 have a <DRM Feature Hierarchy> component F2, and let X2 be a <DRM Feature Representation> instance in the component tree of F2. X shall not associate to X2, and X2 shall not associate to X.
      2. Let R have a <DRM Geometry Hierarchy> component G, and let Y be a <DRM Geometry Representation> instance in the component tree of G. Let R2 have a <DRM Geometry Hierarchy> component G2, and let Y2 be a <DRM Geometry Representation> instance in the component tree of G2. Y shall not associate to Y2, and Y2 shall not associate to Y.
      3. Let R have a <DRM Feature Hierarchy> component F, and let X be a <DRM Feature Representation> instance in the component tree of F. Let R2 have a <DRM Geometry Hierarchy> component G2, and let Y2 be a <DRM Geometry Representation> instance in the component tree of G2. X shall not associate to Y2, and Y2 shall not associate to X.
    2. Let R have a <DRM Interface Template> component T.
      1. For every <DRM Variable> instance V in the component tree of R, V shall associate exactly once with T.
      2. If V is a <DRM Variable> instance that does not appear in the component tree of R, T shall not associate with V.

7.2.6 Constraints on components

DRM objects are constrained in taking component DRM objects as follows:

  1. Let M be a <DRM Model> instance.
    1. Let T be a <DRM Property Table> instance. If T appears in the component tree of M, T shall not appear in the component tree of a <DRM Data Table Library> instance.
    2. Let X be a <DRM Property Grid> instance that is not a component of a <DRM Data Table Library> instance, where X appears in the component tree of M.
      1. X shall not appear in the component tree of a <DRM Model> instance other than M.
      2. X shall not appear in the component tree of a <DRM Environment Root> instance.
    3. Let V be a <DRM Variable> instance, where V appears in the component tree of M.
      1. V shall not appear in the component tree of a <DRM Model> instance other than M.
      2. V shall not appear in the component tree of a <DRM Environment Root> instance.
      3. M shall have a <DRM Interface Template> component, which shall comply with 7.2.5 Constraints on associates.
    4. Let X be an instance of a class other than <DRM Property Grid> or <DRM Symbol>, where X appears in the component tree of M.
      1. X shall not appear in the component tree of a <DRM Model> instance other than M.
      2. X shall not appear in the component tree of a <DRM Environment Root> instance.
  2. Let R be a <DRM Environment Root> instance.
    1. Let T be a <DRM Property Table> instance. If T appears in the component tree of R, T shall not appear in the component tree of a <DRM Data Table Library> instance.
    2. Let X be an instance of <DRM Property Grid> that is not a component of a <DRM Data Table Library> instance, where X appears in the component tree of R.
      1. X shall not appear in the component tree of a <DRM Environment Root> instance other than R.
      2. X shall not appear in the component tree of a <DRM Model> instance.
    3. Let V be a <DRM Variable> instance, where V appears in the component tree of R.
      1. V shall not appear in the component tree of a <DRM Model> instance other than R.
      2. V shall not appear in the component tree of a <DRM Environment Root> instance.
      3. R shall have a <DRM Interface Template> component, which shall comply with 7.2.5 Constraints on associates.
    4. Let X be an instance of a class other than <DRM Property Grid> or <DRM Symbol>, where X appears in the component tree of R.
      1. X shall not appear in the component tree of a <DRM Model> instance.
      2. If X appears in the component tree of another <DRM Environment Root> instance R2, the srf_context_info of R2 shall match that of R.

7.2.7 Contained edge constraints

The following constraints apply to instances of <DRM Feature Volume>/<DRM Geometry Volume>, respectively:

  1. A <DRM Feature Volume> instance V shall have the following relationship with its associated <DRM Feature Edge> instances, if any exist:
    1. At any feature topology level, if V is associated with any <DRM Feature Edge> instance E, E shall lie completely within the external shell of V, if any, and shall not lie within any of the internal shells of V, if any.
    2. At feature topology levels 5 and higher, if a <DRM Feature Edge> instance E lies within the boundaries of V, E shall be associated with V.
    3. At any feature topology level, if no <DRM Feature Edge> instances lie within its boundaries, V shall not be associated with any <DRM Feature Edge> instances.
  2. A <DRM Geometry Volume> instance V shall have the following relationship with its associated <DRM Geometry Edge> instances, if any exist:
    1. At any geometry topology level, if V is associated with any <DRM Geometry Edge> instance E, E shall lie completely within the interior of V.
    2. At geometry topology levels 5 and higher, if a <DRM Geometry Edge> instance E lies completely within the interior of V, E shall be associated with V.
    3. At any geometry topology level, if no <DRM Geometry Edge> instances lie completely within its interior, V shall not be associated with any <DRM Geometry Edge> instances.

7.2.8 Contained node constraints

The following constraints apply to instances of <DRM Feature Node>/<DRM Geometry Node> that are contained within an instance of <DRM Feature Face>/<DRM Geometry Face> or <DRM Feature Volume>/<DRM Geometry Volume>, respectively.:

  1. A <DRM Feature Face> instance F shall have the following relationship with its associated <DRM Feature Node> instances, if any exist.
    1. At any feature topology level, if F is associated with any <DRM Feature Node> instance N, N shall lie within the external ring of F, if any, and shall not lie within any of the internal rings of F, if any.
    2. At feature topology levels 3 and higher, if a <DRM Feature Node> instance N lies within the boundaries of F, N shall be associated with F.
    3. At any feature topology level, if no <DRM Feature Node> instances lie within the boundaries of F, F shall not be associated with any <DRM Feature Node> instances.
  2. A <DRM Feature Volume> instance V shall have the following relationship with its associated <DRM Feature Node> instances, if any exist.
    1. At any feature topology level, if V is associated with any <DRM Feature Node> instance N, N shall lie completely within the external shell of V, if any, and shall not lie within any of the internal shells of V, if any.
    2. At feature topology levels 5 and higher, if a <DRM Feature Node> instance N lies within the boundaries of V, N shall be associated with V.
    3. At any feature topology level, if no <DRM Feature Node> instances lie within the boundaries of V, V shall not be associated with any <DRM Feature Node> instances.
  3. A <DRM Geometry Face> instance F shall have the following relationship with its associated <DRM Geometry Node> instances, if any.
    1. At any geometry topology level, if F is associated with any <DRM Geometry Node> instances N, N shall lie within the interior of F.
    2. At geometry topology levels 3 and higher, if a <DRM Geometry Node> instance N lies within the interior of F, N shall be associated with F.
    3. At any geometry topology level, if no <DRM Geometry Node> instances lie within the boundaries of F, F shall not be associated with any <DRM Geometry Node> instances.
  4. A <DRM Geometry Volume> instance V shall have the following relationship with its associated <DRM Geometry Node> instances, if any exist.
    1. At any geometry topology level, if V is associated with any <DRM Geometry Node> instance N, N shall lie within the interior of V.
    2. At geometry topology levels 5 and higher, if a <DRM Geometry Node> instance N lies within the interior of V, N shall be associated with V.
    3. At any geometry topology level, if no <DRM Geometry Node> instances lie within the interior of V, V shall not be associated with any <DRM Geometry Node> instances.

7.2.9 Continuous LOD constraints

The following constraints apply:

  1. <DRM Continuous LOD Related Geometry> instances can be used only in the component tree of a <DRM Environment Root> instance.
  2. A <DRM Primitive Geometry> instance that is within the component tree of a <DRM Continuous LOD Related Geometry>  instance shall not have a <DRM Union Of Primitive Geometry> component

7.2.10 Cylindrical structure

For a <DRM Cylindrical Volume Extent> instance C, the following conditions shall hold:

  1. The <DRM Reference Vector> components of C shall be perpendicular to one another, and shall comply with restrictions imposed in the specification of the <DRM Cylindrical Volume Extent> class on their vector_type field values.
  2. If a <DRM Reference Vector> component of C specifies a <DRM Location> subclass component L, L shall be the <DRM Location 3D> instance specified by the volume context in which C appears.

7.2.11 Distinct <DRM Geometric Centre>

If a <DRM Aggregate Geometry> instance specifies more than one <DRM Geometric Centre> component, each shall specify a different value for its meaning field.

7.2.12 Distinct link objects

The following constraints apply to link objects:

  1. Under any single <DRM Aggregate Feature> instance or <DRM Aggregate Geometry> instance, the link objects (if any) shall have non-identical field values or components, as appropriate. In the case of <DRM Separating Plane Related Geometry> instance, this constraint applies to the link objects of the <DRM Separating Plane Relations> components of the aggregate, as the aggregate itself does not have link objects.
  2. Under any single topology hierarchy, whether a <DRM Feature Topology Hierarchy> instance or a <DRM Geometry Topology Hierarchy> instance, the link objects shall have non-identical field values or components, as appropriate.
  3. Under any single model instance, whether a <DRM Feature Model Instance> instance or a <DRM Geometry Model Instance> instance, the index field values of the <DRM Model Instance Template Index> link objects shall be distinct.

7.2.13 Distinct time significance

For any instance of <DRM Transmittal Root> or <DRM Environment Root>, no two <DRM Base Time Data> components shall specify the same time_significance value.

7.2.14 <DRM Classification Data> constraints

For a <DRM Union of Features> instance F:

  1. If F has a directly attached <DRM Classification Data> component, the  union_reason field of F shall not have value OTHER.
  2. If F has an inherited <DRM Classification Data> component, the  union_reason field of F shall not have value OTHER.
  3. Otherwise,  the  union_reason field of F shall have value OTHER.

For a <DRM Union of Geometry> instance G:

  1. If G has a directly attached <DRM Classification Data> component, the  union_reason field of G shall not have value OTHER.
  2. If G has an inherited <DRM Classification Data> component, the  union_reason field of G shall not have value OTHER.
  3. Otherwise, the  union_reason field of G shall have value OTHER.

7.2.15 <DRM Colour Table> size

For a given <DRM Colour Table Group> instance G with table_size = k, each <DRM Colour Table> component T of G shall have k <DRM Primitive Colour> components. <DRM Colour Table> components of a <DRM Colour Table Group> instance are free to have different types of <DRM Primitive Colour> components from other <DRM Colour Table> components.

EXAMPLE  Some components use <DRM Specular Colour> instances; some do not.

7.2.16 <DRM Conformal Behaviour> constraints

For every <DRM Conformal Behaviour> instance C, the following constraints shall apply.

  1. Where C is a component of a <DRM Geometry Hierarchy> instance G, one of the following shall apply:
    1. If G is part of the component tree of a <DRM Environment Root> instance, G shall be specified within a context in which a <DRM Reference Surface> instance R applies, where the (possibly qualified) classification of C matches that of R.
    2. If G is part of the component tree of a <DRM Model> instance M, any <DRM Geometry Model Instance> instance or <DRM Feature Model Instance> instance that instantiates M shall be specified in a context in which a <DRM Reference Surface> instance R applies, where the (possibly qualified) classification of C matches that of R.
    3. C shall not be a component of a <DRM Geometry Hierarchy> instance G that does not comply with either a.1 or a.2.
  2. If C is a component of a <DRM Point> instance P, any <DRM Union Of Primitive Geometry> instance of which P is a component shall comply with a.
  3. If C is a component of a <DRM Vertex> instance V, every <DRM Union Of Primitive Geometry> instance U for which V appears in the component tree of U shall comply with a.

7.2.17 <DRM Control Link> constraints

For any given <DRM Control Link> instance with one or more index fields containing non-zero values,  there shall be a corresponding <DRM Expression> component that is referenced by each non-zero index field value.

For any <DRM Control Link> instance containing an upper and lower bound index field both of whose values are non-zero, the value produced by the <DRM Expression> component for the lower bound shall be less than or equal to the value produced by the <DRM Expression> component for the upper bound.

7.2.18 <DRM Environment Root> SRF

Consider a <DRM Transmittal Root> instance TR having one or more <DRM Environment Root> instances as components:

  1. For TR, no two <DRM Environment Root> instances may have identical SRF parameters.
  2. All <DRM Location> instances appearing in the hierarchy rooted at a given <DRM Environment Root> instance shall be specified within the SRF  of that <DRM Environment Root> instance, unless such <DRM Location> instances fall within the scope of a DRM object that specifies its own SRF , such as a <DRM Property Grid> instance or a <DRM Image Anchor> instance.
  3. No <DRM Location> instances under a <DRM Environment Root> instance may be invalid within that SRF ; they shall be either valid or extended.

7.2.19 <DRM Face Direction> levels 0 - 3

At feature topology levels 0 through 3, the front field of <DRM Face Direction> shall always be TRUE.

7.2.20 <DRM FeatureEdge> constraints

The following restrictions apply:

  1. The <DRM Location> instances within a <DRM Feature Edge> instance shall be distinct; that is, no two <DRM Location> instances may have the same position in space.
  2. <DRM Feature Edge> instances may meet only at <DRM Feature Node> instances, and <DRM Feature Face> instances may meet only along one or more <DRM Feature Edge> instances.
  3. At feature topology level 2 or higher, no <DRM Feature Edge> instance may intersect with or overlap another <DRM Feature Edge> instance.
  4. At feature topology level 3, each <DRM Feature Edge> instance forms part of the boundaries of exactly two <DRM Feature Face> instances.
  5. At feature topology level 4, at least one <DRM Feature Edge> instance forms part of the boundary of more than two <DRM Feature Face> instances.
  6. At feature topology level 5, if a <DRM Feature Edge> instance E is located within a <DRM Feature Volume> instance V, E shall associate to V.

7.2.21 <DRM Finite Element Mesh> structure

For a <DRM Finite Element Mesh> instance F with a <DRM Mesh Face Table> component M, the following conditions shall hold:

  1. Each <DRM Vertex> component of F shall appear exactly once as a component of F.
  2. No two <DRM Vertex> components of F shall occupy the same position in space.
  3. If F has a <DRM Property Table> component P such that P’s <DRM Classification Data> component classifies P as an ECC_MESH_NODE_PROPERTY_SET, P shall be the only <DRM Property Table component of F that is so classified, and shall have the structure specified in the definition of the <DRM Finite Element Mesh> class for a <DRM Property Table> instance of its classification.
  4. If F has a <DRM Property Table> component P such that P’s <DRM Classification Data> component classifies P as an ECC_MESH_FACE_PROPERTY_SET, P shall be the only <DRM Property Table> component of F that is so classified, and shall have the structure specified in the definition of the <DRM Finite Element Mesh> class for a <DRM Property Table> instance of its classification.
  5. If F has a <DRM Property Table> component P such that P’s <DRM Classification Data> component classifies P as an ECC_MESH_SOLID_SET, P shall be the only <DRM Property Table> component of F that is so classified, and shall have the structure specified in the definition of the <DRM Finite Element Mesh> class for a <DRM Property Table> instance of its classification.
  6. If F has a <DRM Property Table> component P such that P’s <DRM Classification Data> component classifies P as an ECC_MESH_SOLID_PROPERTY_SET, P shall be the only <DRM Property Table> component of F that is so classified, and shall have the structure specified in the definition of the <DRM Finite Element Mesh> class for a <DRM Property Table> instance of its classification.

7.2.22 <DRM Image Anchor> SRF

Consider a <DRM Image Anchor> instance X.

  1. The <DRM Location> components of X shall be valid or extended as allowed by the SRF specified by the srf_context_info field of X.
  2. The <DRM Location> components of X shall specify distinct coordinate values that shall not be collinear.
  3. X shall be either a component of one or more <DRM Image> instances or of one or more <DRM Image Mapping Function> instances, but not both.
  4. If X is a component of a <DRM Image Mapping Function> instance F, and if F appears within the context of some SRF  S, the following shall apply.
    1. The srf_context_info field of X shall specify the same SRF as S.
    2. If X specifies a non-planar projection, the <DRM Location> components of X shall specify the endpoints of orthogonal axes.

7.2.23 <DRM Linear Geometry> structure

For a <DRM Linear Geometry> instance G, the following conditions shall hold:

  1. Each <DRM Vertex> component of G shall appear exactly once as a component of G.
  2. No two <DRM Vertex> components of G shall occupy the same position in space.
  3. If G is a <DRM Arc> instance, the <DRM Location> component of G shall not occupy the same position in space as any of the <DRM Vertex> components of G.
  4. For any <DRM Geometry Edge> instance E associated with G, the <DRM Geometry Node> instances forming the endpoints of E shall be associated with <DRM Vertex> components of G.

7.2.24 <DRM LSR Transformation> components

A <DRM LSR Transformation> instance L shall have a <DRM Local 4x4> component, an ordered set of <DRM LSR Transformation Step> components, or both. If L has both a <DRM Local 4x4> component and a set of <DRM LSR Transformation Step> components, the ordered set of <DRM LSR Transformation Step> components shall be mathematically equivalent to the <DRM Local 4x4> component. If a <DRM LSR Transformation> instance is specified by a <DRM Local 4x4> component only, it shall be possible to express the <DRM LSR Transformation> instance as an ordered set of <DRM LSR Transformation Step> components.

7.2.25 <DRM Model> SRF

The following constraints apply:

  1. Consider a <DRM Model> instance M specified in an SRF other than LSR.
    1. M shall be instanced only by <DRM Geometry Model Instance> and/or <DRM Feature Model Instance> instances specified in a matching SRF, and
    2. The has_moving_parts field of M shall be set to FALSE.
  2. Consider a <DRM Model> instance M specified in an LSR SRF.
    1. If the has_units field of M  is set to FALSE, M shall not be referenced by any <DRM Geometry Model Instance> or <DRM Feature Model Instance> instances.
    2. If M is to be instanced into a non-LSR SRF by any <DRM Geometry Model Instance> or <DRM Feature Model Instance> instances, each such <DRM Geometry Model Instance> instance and <DRM Feature Model Instance> instance shall specify a <DRM World Transformation> instance.
    3. M cannot be instanced into another LSR SRF unless the target SRF has identical parameters to the parameters of M or the <DRM Geometry Model Instance> instance or <DRM Feature Model Instance> instance that references M contains a <DRM Transformation> component that maps the SRF of M into the target SRF.
    4. If the component hierarchy of M contains any <DRM LSR Transformation> instances that have <DRM Control Link> instances, and if M provides controlling <DRM Variable> instances to those <DRM Control Link> instances such that they allow motion, the has_moving_parts field  of M  shall be set to TRUE; otherwise, the has_moving_parts field  of M shall be set to FALSE.
    5. M shall not contain any <DRM Reference Surface> instances.
  3. All <DRM Location> instances under a <DRM Model> instance shall be expressed in the SRF specified by that <DRM Model> instance.

7.2.26 <DRM Polyhedron> structure

The collection of <DRM Polygon> components of a <DRM Polyhedron> instance shall completely enclose a region of 3D space.

7.2.27 <DRM Presentation Domain> constraints

The following constrains the use of <DRM Presentation Domain> instances:

  1. In a given transmittal, every instance of <DRM Colour>, <DRM Image Mapping Function>, and <DRM Rendering Properties> shall specify a <DRM Presentation Domain> component, whether directly or through inheritance.
  2. In a given transmittal, every instance of <DRM Image> that specifies a <DRM Image Anchor> component shall specify a <DRM Presentation Domain> component.
  3. Let X be a DRM object such that X has <DRM Image Mapping Function> components F1 and F2. F1 shall specify a <DRM Presentation Domain> component P1 and F2 shall specify a <DRM Presentation Domain> component P2 such that the presentation domain sets of P1 and P2 do not intersect.
  4. Let X be a DRM object such that X has <DRM Colour> components F1 and F2. F1 shall specify a <DRM Presentation Domain> component P1 and F2 shall specify a <DRM Presentation Domain> component P2 such that the presentation domain sets of P1 and P2 do not intersect.
  5. The presentation_domain field of a <DRM Presentation Domain> instance shall not be empty.

7.2.28 <DRM Primitive Summary Item> constraints

The following constraints apply:

  1. An instance of <DRM Primitive Summary Item> shall have a drm_class field value corresponding to one of the following:
    1. <DRM Primitive Feature> or one of its subclasses,
    2. <DRM Primitive Geometry> or one of its subclasses, or
    3. classes that may legally appear in the component tree of a <DRM Primitive Feature> or <DRM Primitive Geometry> instance.
  2. For any <DRM Primitive Summary Item> instance B that is a component of another <DRM Primitive Summary Item> instance A, the drm_class represented by B shall be specified as a formal component of A, and the multiplicity of B shall comply with the corresponding component relationship between the two classes.
  3. For any <DRM Primitive Summary Item> component S of a <DRM Environment Root> instance ER, where the drm_class field corresponds to a class P, the component tree of ER shall contain at least one instance of P, in its <DRM Feature Hierarchy> instance and/or its <DRM Geometry Hierarchy> instance, such that the component tree of the instance of P conforms with the pattern specified by S.
  4. For any <DRM Primitive Summary Item> component S of a <DRM Model> instance M, where the drm_class field corresponds to a class P, the component tree of M shall contain at least one instance of P, in the <DRM Feature Hierarchy> instance  of its <DRM Feature Model> instance and/or the <DRM Geometry Hierarchy> instance of its <DRM Geometry Model>  instance,, such that the component tree of the instance of P conforms with the pattern specified by S.
  5. An empty <DRM Model> cannot have <DRM Primitive Summary Item> components.

7.2.29 <DRM Property> constraints

For every <DRM Property> instance P, the following shall hold.

  1. If P is a <DRM Property Value> instance, the attribute_value_type of the value field of P shall be consistent with the storage type imposed by the meaning field of P.

  2. No two directly attached <DRM Property Value> components of a DRM object may specify identical values for their meaning fields.

    If an inherited <DRM Property Value> instance has the same meaning field value as a directly attached <DRM Property Value> instance, the directly attached component replaces the inherited component in the inheritance context.

  3. No two directly attached <DRM Property Description> components of a DRM object may specify identical values for their meaning fields.

    If an inherited <DRM Property Description> instance has the same meaning field value as a directly attached <DRM Property Description> instance, the directly attached component replaces the inherited component in the inheritance context.

7.2.30 <DRM Property Characteristic> constraints

Consider a <DRM Property Characteristic> instance C and a DRM object P such that C is a component of P, where P is a <DRM Property> instance or a <DRM Table Property Description> instance.

  1. The attribute_value_type entry of the characteristic_value field of C shall correspond to the value type imposed by the meaning field of P, except in the case where the meaning field of P specifies an EA bound to the abstract value type ENUMERATION and the meaning field of C specifies one of the qualitative EVs EVC_NOT_APPLICABLE, EVC_MISSING, EVC_VALUE_WITHHELD, EVC_MULTIPLE, or EVC_UNDESIGNATED. In that case, C shall be bound to the abstract value type INTEGER with a characteristic_value that does not correspond to the numeric value of a valid EE for the given EA.
  2. If the attribute_value_type entry of the characteristic_value field of C is not numeric, C shall not have an EV with an applicability of numeric as its meaning.
  3. If C is not real valued, it shall not have EVC_TOLERANCE as its meaning.
  4. Consider another, distinct <DRM Property Characteristic> instance C2 that is also a component of P.
    1. The meaning field values of C and C2 shall be distinct.
    2. If C specifies EVC_MINIMUM_VALUE and C2 specifies EVC_MAXIMUM_VALUE, the characteristic_value of C shall be less than or equal to that of C2.

7.2.31 <DRM Property Grid> constraints

Let G be a <DRM Property Grid> instance. G shall not be a component of a <DRM Data Table Library> instance unless the relative_to_hook_point field of G is TRUE.

7.2.32 <DRM Property Set Table> size

For a given <DRM Property Set Table Group> instance G with table_size = k, each <DRM Property Set Table> component T of G shall have k <DRM Property Set> components.

For any given T within G, if the regular field of T has value TRUE, each of the k <DRM Property Set> components of T shall contain the same number of DRM class instances, and these DRM class instances shall belong to the same classes. If the regular field has value FALSE for T, no such constraint holds.

NOTE  G may have both regular and non-regular <DRM Property Set Table> components, and that even if all <DRM Property Set Table> components of G are regular, there is no constraint that they are all regular in the same way.

7.2.33 <DRM Reference Surface> constraints

Consider a <DRM Reference Surface> instance R.

  1. R shall appear in the context of a 3D SRF.
  2. R shall not appear in the component tree of any <DRM Model> instance specified in an LSR SRF.
  3. Let S be the <DRM Geometry Hierarchy> instnace to which R is associated such that S specifies the reference surface of R.
    1. The SRF within which S is specified shall match that within which R is specified, unless S is a <DRM Property Grid Hook Point> instance.
    2. If S is a <DRM Property Grid Hook Point> instance, S shall have at least one <DRM Property Grid> component G such that the following apply.
      1. The SRF within which S is specified shall match that specified by G.
      2. G shall have two spatial <DRM Axis> components corresponding to the primary and secondary coordinates of the SRF specified by G.
      3. G shall have a <DRM Table Property Description> component for height, elevation, or bathymetry.
      4. The qualified classification specified by G shall match that specified by R.
    3. If S is a <DRM LOD Related Geometry> instance, the lod_data_type field of S shall not have the value VOLUME.

7.2.34 <DRM Stamp Behaviour> constraints

A <DRM Stamp Behaviour> instance shall be specified only within the context of an LSR 3D SRF.

7.2.35 <DRM Table Property Description> constraints

For a <DRM Table Property Description> instance P, the following conditions shall hold:

  1. Its value_type field and those of the corresponding elements of any applicable <DRM Data Table> instances shall be consistent with the restrictions imposed by the meaning field of P.
  2. If P specifies a real-valued EA or real-valued Variable_Code M as its meaning field value, the value_unit of P shall specify a unit belonging to the EDCS Unit Equivalence class to which M is bound.
  3. If P does not specify a real-valued EA or real-valued Variable_Code as its meaning field value, the value_unit and value_scale shall be set to EUC_UNITLESS and EUC_UNI, respectively.

7.2.36 Edges bordering faces

<DRM Feature Edge> instances have the following relationship with <DRM Feature Face> instances:

  1. At any feature topology level, if a <DRM Feature Edge> instance E associates to a <DRM Feature Face> instance F, F shall have a <DRM Feature Face Ring> component that associates to E.
  2. At feature topology level 3 or higher, if a <DRM Feature Face> instance F has a <DRM Feature Face Ring> component that associates to a <DRM Feature Edge> instance E, E shall associate to F.

<DRM Geometry Edge> instances have the following relationship with <DRM Geometry Face> instances:

  1. At any geometry topology level, if a <DRM Geometry Edge> instance E associates to a <DRM Geometry Face> instance F, F shall associate to E.
  2. b. At geometry topology level 3 or higher, if a <DRM Geometry Face> instance F associates to a <DRM Geometry Edge> instance E, E shall associate to F.

7.2.37 Face ring edge consistency

The following constraints apply:

  1. For each consecutive <DRM Feature Edge> instance within a <DRM Feature Face Ring> instance, and for each consecutive <DRM Geometry Edge> instance within a <DRM Geometry Face> instance, the <DRM Edge Direction> instance shall be consistent with the starting and ending nodes of the edge.
  2. A <DRM Feature Edge> instance shall appear no more than twice in a <DRM Feature Face Ring> instance, once with each orientation.
  3. A <DRM Geometry Edge> instance shall appear no more than twice in a <DRM Geometry Face> instance, once with each orientation.

7.2.38 Faces bordering volumes

<DRM Feature Face> instances shall have the following relationship with <DRM Feature Volume> instances. At any topology level, if a <DRM Feature Face> instance FF associates to a <DRM Feature Volume> instance FV, FV shall have a <DRM Feature Volume Shell> component that associates to FF. Conversely, if a <DRM Feature Volume> instance FV has a <DRM Feature Volume Shell> instance that associates to a <DRM Feature Face> instance FF, FF shall also associate to FV.

<DRM Geometry Face> instances shall have the following relationship with <DRM Geometry Volume> instances. At any topology level, if a <DRM Geometry Face> instance GF associates to a <DRM Geometry Volume> instance GV, GV shall also associate to GF. Conversely, if a <DRM Geometry Volume> instance GV associates to a <DRM Geometry Face> instance GF, GF shall also associate to GV.

7.2.39 General axis constraints

The following constraints apply:

  1. In a <DRM Enumeration Axis> instance X,
    1. The axis_type of X shall correspond to an EA T bound to the abstract value type ENUMERATION.
    2. The entries of X’s axis_value_array shall be distinct and valid EEs for T.
  2. In a <DRM Interval Axis> instance X,
    1. The axis_type shall correspond to an EA bound to a numeric value type.
    2. Each individual entry in X’s axis_interval_value_array shall have a value_type consistent with the numeric data type to which the value of the  axis_type is bound, and this value_type shall be the same for all entries in the axis_interval_value_array.
    3. If the axis_type is bound to an EQ, the value_unit shall be a member of the specified EQ.
    4. If the axis_type is not bound to an EQ, the value_unit and value_scale shall be set to EUC_UNITLESS and ESC_UNI, respectively.
    5. All entries in X’s axis_interval_value_array shall be mutually disjoint.
    6. The entries in X’s axis_interval_value_array shall be arranged in either monotonically ascending or monotonically descending order.
  3. In a <DRM Irregular Axis> instance X,
    1. The axis_type shall correspond to an EA bound to a numeric value type.
    2. Each individual entry in X’s axis_value_array shall have a value_type consistent with the numeric data type to which the axis_type's value is bound, and this value_type shall be the same for all entries in the axis_value_array.
    3. If the axis_type is bound to an EQ, the value_unit shall be a member of the specified EQ.
    4. If the axis_type is not bound to an EQ, the value_unit and value_scale shall be set to EUC_UNITLESS and ESC_UNI, respectively.
    5. All entries in X’s axis_value_array shall be distinct.
    6. The entries in X’s axis_value_array shall be arranged in either monotonically ascending or monotonically descending order.
  4. In a <DRM Regular Axis> instance X,
    1. The axis_type shall correspond to an EA bound to a numeric value type.
    2. The value_type of the first_value and spacing field values shall be the same, and shall be consistent with the numeric data type to which the value of the axis_type is bound.
    3. If the axis_type is bound to an EQ, the value_unit shall be a member of the specified EQ.
    4. If the axis_type is not bound to an EQ, the value_unit and value_scale shall be set to EUC_UNITLESS and ESC_UNI, respectively.

7.2.40 Hierarchy summary constraints

The following constraints apply:

  1. An instance of <DRM Hierarchy Summary Item> shall have a drm_class field value corresponding to one of the following:
    1. <DRM Feature Hierarchy> or one of its subclasses, or
    2. <DRM Geometry Hierarchy> or one of its subclasses.
  2. For any <DRM Hierarchy Summary Item> instance B that is a component of another <DRM Hierarchy Summary Item> instance A, the class represented by B’s drm_class field value shall be specified as a formal component of A, and the multiplicity and multiplicity_meaning of B shall comply with the corresponding component relationship between the two classes.
  3. Consider a <DRM Environment Root> instance E,
    1. If E has a <DRM Geometry Hierarchy> component H, E shall have at most one <DRM Hierarchy Summary Item> component S for which the drm_class field corresponds to a <DRM Geometry Hierarchy> subclass. If such a component instance S exists, its field values shall comply with the following constraints:
      1. S’s drm_class shall match that of H.
      2. S’s multiplicity_meaning value shall be EXACT, and its multiplicity field shall have value 1.
    2. If E does not have a <DRM Geometry Hierarchy> component, E shall not have any <DRM Hierarchy Summary Item> component for which the drm_class field corresponds to a <DRM Geometry Hierarchy> subclass.
    3. If E has a <DRM Feature Hierarchy> component H, E shall have at most one <DRM Hierarchy Summary Item> component S for which the drm_class field corresponds to a <DRM Feature Hierarchy> subclass. If such a component instance S exists, its field values shall comply with the following constraints:
      1. S’s drm_class shall match that of H.
      2. S’s multiplicity_meaning value shall be EXACT, and its multiplicity field shall have value 1.
    4. If E does not have a <DRM Feature Hierarchy> component, E shall not have any <DRM Hierarchy Summary Item> component for which the drm_class field corresponds to a <DRM Feature Hierarchy> subclass.
  4. Consider a <DRM Model> instance M.
    1. If M has a <DRM Geometry Model> with a <DRM Geometry Hierarchy> component H, M shall have at most one <DRM Hierarchy Summary Item> component S for which the drm_class field corresponds to a <DRM Geometry Hierarchy> subclass. If such a component instance S exists, its field values shall comply with the following constraints.
      1. S’s drm_class shall match that of H.
      2. S’s multiplicity_meaning value shall be EXACT, and its multiplicity field shall have value 1.
    2. If M does not have a <DRM Geometry Model> component, or its <DRM Geometry Model> does not have a <DRM Geometry Hierarchy> component, M shall not have any <DRM Hierarchy Summary Item> component for which the drm_class field corresponds to a <DRM Geometry Hierarchy> subclass.
    3. If M has a <DRM Feature Model> instance with a <DRM Feature Hierarchy> component H, M shall have at most one <DRM Hierarchy Summary Item> component S for which the drm_class field corresponds to a <DRM Feature Hierarchy> subclass. If such a component instance S exists, its field values shall comply with the following constraints.
      1. S’s drm_class shall match that of H.
      2. S’s multiplicity_meaning value shall be EXACT, and its multiplicity field shall have value 1.
    4. If M does not have a <DRM Feature Model> component, or its <DRM Feature Model> does not have a <DRM Feature Hierarchy> component, M shall not have any <DRM Hierarchy Summary Item> component for which the drm_class field corresponds to a <DRM Feature Hierarchy> subclass.
  5. All <DRM Geometry Hierarchy> associates (or <DRM Feature Hierarchy> associates) of a given <DRM Hierarchy Summary Item> instance shall be instances of the class specified by its drm_class field value, and shall conform to the structure that it specifies.

7.2.41 Homogeneous light rendering properties

A <DRM Light Rendering Properties> instance may contain instances of only one subclass of <DRM Directional Light Behaviour>.

7.2.42 Image mapping functions and texture coordinates

The number of <DRM Image Mapping Function> components that an instance of <DRM Geometry Representation> has shall be equal to the number of <DRM Texture Coordinate> instances for each <DRM Vertex> instance and <DRM Tack Point> instance within that instance of <DRM Geometry Representation>.

<DRM Image Mapping Function> instances for instances of <DRM Feature Representation> shall either have <DRM Image Anchor> components or specify <DRM Image> instances that have <DRM Image Anchor> components.

EXCEPTION:
If a <DRM Image Mapping Function> instance is used to specify a non-planar projection (e.g., spherical or cylindrical) it shall use a <DRM Image Anchor> component and the instance of <DRM Geometry Representation> to which the <DRM Image Mapping Function> instance is attached cannot have <DRM Texture Coordinate> instances or a <DRM Tack Point> instance.

7.2.43 Index codes within tables

The following constraints apply:

  1. Consider a <DRM Data Table> instance D, with a <DRM Table Property Description> component X, where X has a meaning value of DATA_TABLE_LIBRARY.

    For each corresponding cell value C in the <DRM Data Table> instance D, if C is not a sentinel value for missing or excluded, C is an index into the ordered set of <DRM Data Table> components of a <DRM Data Table Library> instance where:

    1. The transmittal in which the <DRM Data Table> instance D resides shall have a <DRM Data Table Library> instance L.
    2. L shall have at least N ordered <DRM Data Table> components.
    3. The Nth <DRM Data Table> component of L shall have a <DRM Classification Data> instance whose tag field matches the component_data_table_ecc field of the <DRM Table Property Description> instance X, as follows:
      1. If the <DRM Classification Data> instance of the referenced Nth <DRM Data Table> instance has no <DRM Property Value> components, the <DRM Table Property Description> instance X shall have none.
      2. If the <DRM Classification Data> instance of the referenced Nth <DRM Data Table> instance has j <DRM Property Value> components, the <DRM Table Property Description> instance X shall have exactly j matching <DRM Property Value> instances.
  2. Consider a <DRM Data Table> instance D, with a <DRM Table Property Description> components X, where X has a meaning Index_Code value of DATA_TABLE_COMPONENT.

    For each corresponding cell value C in the <DRM Data Table> instance D, if C is not a sentinel value for missing or excluded, C is an index into the ordered set of <DRM Data Table> components of D, where:

    1. The <DRM Data Table> instance D shall have at least N ordered <DRM Data Table> components.
    2. The Nth <DRM Data Table> component of D shall have a <Classification Data> instance whose tag field matches the component_data_table_ecc field of the <DRM Table Property Description> instance X, as follows:
      1. If the <DRM Classification Data> instance of the referenced Nth <DRM Data Table> instance has no <DRM Property Value> component, the <DRM Table Property Description> instance X shall have none.
      2. If the <DRM Classification Data> instance of the referenced Nth <DRM Data Table> instance has j <DRM Property Value> components the <DRM Table Property Description> instance X shall have exactly j matching <DRM Property Value> instances.
  3. Consider a <DRM Data Table> instance D, with a <DRM Table Property Description> component X, where X has a meaning Index_Code value of PROP_TABLE_REF_COMPONENT.

    For each corresponding cell value C in the <DRM Data Table> instance D, if C is not a sentinel value for missing or excluded, C is an index into the ordered set of <DRM Property Table Reference> components of D, where:

    1. The <DRM Data Table> instance D shall have at least N ordered <DRM Property Table Reference> components.
    2. The Nth <DRM Property Table Reference> component of D shall refer to a <DRM Property Table> instance whose <DRM Classification Data> instance with a tag field that matches the component_data_table_ecc of the <DRM Table Property Description> instance X, as follows:
      1. If the <DRM Classification Data> of the referenced <DRM Property Table> has no <DRM Property Value> components, the <DRM Table Property Description> instance X shall have none.
      2. If the <DRM Classification Data> instance of the referenced <DRM Property Table> instance has j <DRM Property Value> components, the <DRM Table Property Description> instance X shall have exactly j matching <DRM Property Value> instances.
  4. A <DRM Table Property Description> instance that is not covered by b, c, or d above shall have ECC_OBJECT as its component_data_table_ecc value.
  5. Consider a <DRM Data Table> instance D, with a <DRM Table Property Description> component X where X has meaning specified by an EAC. If X has <DRM Property Value> components, they qualify the meaning value of X.
  6. A <DRM Table Property Description> instance that is not covered by b, c, d, or f above shall have no <DRM Property Value> components.
  7. Consider a <DRM Data Table> instance D, with a compon