This is the interface control document for the scene definition HDF document. This document is for version 9 of the data model.

/

Type

File

Contains the standard attributes described in DIRSIG HDF Standard Info Section.

/Info

Type

Group

Required

No

Contains additional metadata about the scene beyond those found in the file attributes.

/Info/BoundingBox

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

2 x 3

Required

No

Contains the bounding box of the scene in scene ENU meters. The minimum point for the box is in the first row and the maximum point is in the second row.

/Info/Generator

Type

Dataset

Data Type

StrType<C_S1, VarLen>

Dataspace Type

Simple

Dimensions

N

Required

No

A string indicating the generator of this file.

/Info/GeneratorData

Type

Group

Required

No

A freeform group that the generator can use to store pedigree information about this scene. The contents are left up to the generator.

/Info/Md5Hash

Type

Dataset

Data Type

C_S1 (ASCII)

Dataspace Type

Simple

Dimensions

32

Required

No

Contains the hash of this scene. The hash is computed from the input scene assets and should change on any change to the inputs.

/Info/Wgs84LatLonAltOrigin

Type

Dataset

Data Type

NATIVE_DOUBLE

Dataspace Type

Simple

Dimensions

3

Required

No

Latitude/Longitude/Altitude of the scene origin. Uses WGS84 and ellipsoidal altitude in meters.

/Objects

Type

Group

Required

Yes

Contains information about all objects in the scene.

/Objects/ControlTables

Type

Group

Required

No

Contains all control tables for the scene. Each control table is stored in a named subgroup of this group.

/Objects/ControlTables/:table

Type

Group

Contains the information for a single control table. The name of the group must be "Table{N}", where {N} is a number. A control table is used to define time series in which instances can be enabled/disabled. A control table corresponds to a tag in Tags, called "__controlGroup{N}", where {N} is the number from the group name. The control table will only affect instances that are associated to this tag.

/Objects/ControlTables/:table/States

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains a number of time series, one for each of the rows in TagIndex. The length of each series is defined by the size of Times and each series shares the common set of time samples defined there. The data points are float’s between 0 and 1, where 0 means the instance is disabled and 1 means it is enabled.

/Objects/ControlTables/:table/TagIndex

Type

Dataset

Data Type

StrType<C_S1, VarLen>

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains a list of tag names. These tag names will also appear in Tags/Names and will be mapped to instances via Tags. The order of the tag names here corresponds to the order of the time series in States. Those time series will in turn only affect instances associated to these tags.

/Objects/ControlTables/:table/Times

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains a series of times. This table defines the time component of the time series defined in States. All time series use the common set of time samples defined here.

/Objects/Decals

Type

Dataset

Data Type

DecalRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for the decal instance type. Each decal instance has a row in this table, given by the index in MasterTable.

/Objects/FacetObjects

Type

Group

Required

Yes

Contains the input data for all facetized objects in the scene. Note that this is not the type-specific table for facetized objects, but each facetized object will appear as a group inside of this group.

/Objects/FacetObjects/:object

Type

Group

Contains input data for a single facet object. Note that :object must start with the numeric ID of the type-specific index given to the object in MasterTable.

/Objects/FacetObjects/:object/BoundingBox

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

2 x 3

Required

Yes

Contains the minimum (1st row) and maximum (2nd row) points of the objects bounding box in meters.

/Objects/FacetObjects/:object/FacetMaterials

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains the local material indices for each facet in the object. Rows in this table correspond to rows in Facets. These indices may be remapped by the instance-level property remapping.

/Objects/FacetObjects/:object/Facets

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 3

Required

Yes

Contains all of the facets for the object. Each facet has a row in this table. Each column is the index of a vertex in Vertices.

/Objects/FacetObjects/:object/FacetTemperatureOverrides

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N

Required

No

Contains temperature overrides for each facet in the object. Rows in this table correspond to rows in Facets. If a value of -1 is given, then there is no override and the temperature model given by the material is used.

/Objects/FacetObjects/:object/TextureCoordinates

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 2

Required

No

Contains texture coordinate data. Each row is a u and v texture coordinate.

/Objects/FacetObjects/:object/TextureFacets

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 3

Required

If TextureCoordinates is present

Contains all of the texture facets for the object. Each facet has a row in this table and corresponds to a row in Facets. Each column is the index of a vertex in TextureCoordinates. Every row must contain 3 valid indices of texture vertices.

/Objects/FacetObjects/:object/VertexNormalFacets

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 3

Required

If VertexNormals is present

Contains all of the texture facets for the object. Each facet has a row in this table and corresponds to a row in Facets. Each column is the index of a vertex normal in VertexNormals. If a value of 0xffffffff is found for any of the three vertices, then vertex normal interpolation shall not be performed on this facet and the facet normal will be used instead.

/Objects/FacetObjects/:object/VertexNormals

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 3

Required

No

Contains the vertex normals for the object. Each normal has one row in this table and is stored in XYZ component order.

/Objects/FacetObjects/:object/Vertices

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 3

Required

Yes

Contains all of the vertices of the facetized object as XYZ points in meters in the object’s local coordinate system.

/Objects/FlexMotion

Type

Group

Required

No

Contains information about all FlexMotion instances in the scene.

/Objects/FlexMotion/Engines

Type

Dataset

Data Type

EngineTableRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

This serves as the instance type-specific table for FlexMotion. Rows are referenced by the type-specific indexes given in MasterTable. This table redirects to LocationEngines/Index and OrientationEngines/Index.

/Objects/FlexMotion/LocationEngines

Type

Group

Required

Yes

Contains information about the location engines for all FlexMotion instances in the scene.

/Objects/FlexMotion/LocationEngines/CirclingPath

Type

Dataset

Data Type

CirclingPathRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for the Circling location engine. Each row contains the parameters for one instance and row indices are given by LocationEngines/Index. This table is only required if circling path instances are present in the scene.

/Objects/FlexMotion/LocationEngines/Index

Type

Dataset

Data Type

LocationEngineRecord

Dataspace Type

Simple

Dimensions

N

Each row specifies a location engine. Row indices are given by the location engine indices in EngineTable. An engine is specified by a type and an index into the type-specific table. The type-specific tables are:

Type Type-specific Table

Circling

CirclingPath

Sgp4

Sgp4PTles

StraightPath

StraightPath

Waypoints

WaypointsPath/Ranges

/Objects/FlexMotion/LocationEngines/Sgp4Tles

Type

Dataset

Data Type

C_S1 (ASCII)

Dataspace Type

Simple

Dimensions

N x 138

Required

No

This serves as the type-specific table for the SGP4 location engine. Each row row contains the two-line element (TLE) for one instance and row indices are given by LocationEngines/Index. The TLE is stored without a newline character or a trailing null character. This table is only required if there are SGP4 instances in the scene.

/Objects/FlexMotion/LocationEngines/StraightPath

Type

Dataset

Data Type

StraightPathRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for the Straight Path location engine. Each row contains the parameters for one instance and row indices are given by the type-specific indices in LocationEngines/Index. This table is only required if there are any straight path location engines.

/Objects/FlexMotion/LocationEngines/WaypointsPath

Type

Group

Required

No

Contains information about all instances using the Waypoints location engine. See the Flexible Motion Manual for more information. This group is only required if there are waypoint instances in the scene.

Data

Type

Dataset

Data Type

WaypointsRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Each row contains the parameters for a waypoint. Multiple waypoint time series may be present in this table but within a time series, waypoints must be listed in ascending time order. Time series boundaries are given by the rows in Ranges.

Ranges

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

Yes

This serves as the type-specific table for the Waypoints location engine. Each row contains the parameters for one instance and row indices are given by LocationEngines/Index. The rows specify a range in rows in Data that make up the time series of waypoints for that row’s engine.

/Objects/FlexMotion/MaterialRemapping

/Objects/FlexMotion/MaterialRemappingRanges

/Objects/FlexMotion/OrientationEngines

Type

Group

Required

Yes

Contains information about the orientation engines for all FlexMotion instances in the scene.

/Objects/FlexMotion/OrientationEngines/Index

Type

Dataset

Data Type

OrientationEngineRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Each row contains orientation engine information for a single FlexMotion instance. Row indices are given by the rows in EngineTable. An engine is specified by a type and an index into the type-specific table. The type-specific tables are:

Type Type-specific Table

Quaternions

Quaternions/Ranges

LookAt

LookAt

Spin

Spin/Ranges

Velocity

Velocity

/Objects/FlexMotion/OrientationEngines/LookAt

Type

Dataset

Data Type

LocationEngineRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for the LookAt orientation engine. Each row contains the parameters for one instance and row indices are given by OrientationEngines/Index. The LookAt orientation uses a location engine to provide the point at which to look at. See LocationEngines/Index for more details. This dataset is only required if there are LookAt orientation engines in the scene.

/Objects/FlexMotion/OrientationEngines/Quaternions

Type

Group

Required

No

Contains information about all instances using the Quaternions orientation engine. See the Flexible Motion Manual for more information. This group is only required if there are quaternion instances in the scene.

Data

Type

Dataset

Data Type

QuaternionsRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains data points for the quaternion orientation model. Each row is a data point in a quaternion time series. Multiple time series may be present in this table, but within a time series, quaternions must be given in ascending time order. Time series boundaries are defined in Ranges.

LoopFlags

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains whether each quaternion orientation engine should loop. Rows in this table correspond to rows in Ranges. A non-zero value indicates that the orientations should loop.

Ranges

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

Yes

This serves as the type-specific table for the Quaternions orientation engine. Each row contains the parameters for one instance and row indices are given by OrientationEngines/Index. The rows define ranges in Data that compose the quaternion time series for this engine.

/Objects/FlexMotion/OrientationEngines/Spin

Type

Group

Required

No

Contains information about all instances using the Spin orientation engine. See the Flexible Motion Manual for more information. This group is only required if there are spin engines in the scene.

Axes

Type

Dataset

Data Type

Vector3d

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains the axis of spin for each spinning instance. Rows in this table correspond to rows in Ranges.

Data

Type

Dataset

Data Type

SpinDataRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains data points for the spin orientation model. Each row is a data point in a time series. Multiple time series may be present in this table, but within a time series, data points must be given in ascending time order. Time series boundaries are defined in Ranges.

Ranges

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

Yes

This serves as the type-specific table for the Spin orientation engine. Each row contains the parameters for one instance and row indices are given by OrientationEngines/Index. Each row defines a range of rows in Data that form the time series for this engine.

/Objects/FlexMotion/OrientationEngines/Velocity

Type

Dataset

Data Type

VelocityDataRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for the Velocity orientation engine. Each row contains the parameters for one instance and row indices are given by OrientationEngines/Index. This dataset is only required if there are Velocity engines in the scene.

The velocity orientation assumes the sensor orientation is determined by the velocity vector given by the location engine. Currently, the only supported constraint option is 2, which corresponds to a scene ENU vector that defines the "up" direction for the sensor.

/Objects/KeyframeMotion

Type

Group

Required

No

Contains instancing information for all KeyframeMotion instances in the scene. This group is only required if there are keyframe motion instances in the scene.

/Objects/KeyframeMotion/DataTable

Type

Dataset

Data Type

KeyframeMotionRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains a number of KeyframeMotion records. Multiple time series can be held in this table, but within a time series, records must be in ascending time order. Time series boundaries are defined by the rows in DataTableRanges.

/Objects/KeyframeMotion/DataTableRanges

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

Yes

This serves the the type-specific table for KeyframeMotion instances. Contains a row for each instance that defines a range of rows in DataTable that define the time series of the instance’s position, rotation and scale.

/Objects/KeyframeMotion/MaterialRemapping

/Objects/KeyframeMotion/MaterialRemappingRanges

/Objects/MasterTable

Type

Dataset

Data Type

MasterTableRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains top-level information about all objects in the scene. The type-specific tables for the various row types are:

Type Type-specific Table

Unknown

N/A

StaticInstance

NoMotion

DynamicInstance

KeyframeMotion

DecalInstance

Decals

FlexMotionInstance

FlexMotion

FacetizedObject

FacetObjects/:object

Sphere

Primitives/Spheres

Box

Primitives/Boxes

Disk

Primitives/Disks

Cylinder

Primitives/Cylinders

Source

/Properties/Sources/Index

ConeFrustum

Primitives/ConeFrusta

RegularGrid

RegularGrids

/Objects/NoMotion

Type

Group

Required

No

Contains information about all static instances in the scene. This group is only required if there are any static instances in the scene.

/Objects/NoMotion/MaterialRemapping

/Objects/NoMotion/MaterialRemappingRanges

/Objects/NoMotion/Transforms

Type

Dataset

Data Type

StaticInstanceRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Each row contains the geometric transform for each static instance. Row indices are given by the type-specific indices in MasterTable.

/Objects/NormalMaps

Type

Group

Required

No

Contains datasets for all normal (bump) maps in the scene. See the Property Maps Manual for more details on how these maps work.

/Objects/NormalMaps/:map

Type

Dataset

Data Type

NATIVE_UCHAR

Dataspace Type

Simple

Dimension

N x M x 3

This is an HDF image that holds the normal map. See HDF5 Image Specification for more details. In the case of normal maps, the CLASS attribute must be "IMAGE", IMAGE_SUBCLASS must be "IMAGE_TRUECOLOR", IMAGE_VERSION must be "1.2" and INTERLACE_MODE must be "INTERLACE_PIXEL". In addition to the attributes in Map Projection, the following attributes are defined:

Name Data Type Dimensions Description

"Material Index"

NATIVE_INT

1

ID of the material being used with this map. Currently unused.

/Objects/Primitives

Type

Group

Required

No

Contains information about all primitive geometry objects in the scene. This group is only required if there are primitives in the scene.

/Objects/Primitives/Boxes

Type

Dataset

Data Type

BoxRecord

Dataspace Type

Simple

Dimensions

N

Required

No

Serves as the type-specific table for boxes. Holds the parameters for each box in the scene. Units are in scene ENU meters. Row indices are given by the type-specific indices in MasterTable.

/Objects/Primitives/ConeFrusta

Type

Dataset

Data Type

ConeFrustumRecord

Dataspace Type

Simple

Dimensions

N

Required

No

Serves as the type-specific table for cone frusta. Holds the parameters for each cone frustum in the scene. Units are in scene ENU meters. Row indices are given by the type-specific indices in MasterTable. Top cap radius must be less than the bottom cap radius.

/Objects/Primitives/Cylinders

Type

Dataset

Data Type

CylinderRecord

Dataspace Type

Simple

Dimensions

N

Required

No

Serves as the type-specific table for cylinders. Holds the parameters for each cylinder in the scene. Units are in scene ENU meters. Row indices are given by the type-specific indices in MasterTable.

/Objects/Primitives/Disks

Type

Dataset

Data Type

DiskRecord

Dataspace Type

Simple

Dimensions

N

Required

No

Serves as the type-specific table for disks. Holds the parameters for each disk in the scene. Units are in scene ENU meters. Row indices are given by the type-specific indices in MasterTable.

/Objects/Primitives/Spheres

Type

Dataset

Data Type

SphereRecord

Dataspace Type

Simple

Dimensions

N

Required

No

Serves as the type-specific table for spheres. Holds the parameters for each sphere in the scene. Units are in scene ENU meters. Row indices are given by the type-specific indices in MasterTable.

/Objects/RegularGrids

Type

Group

Required

No

Contains the input data for any regular grids in the scene. This group is only required if there are regular grids in the scene.

/Objects/RegularGrids/:gridname

Type

Group

Contains the input data for a single regular grid in the scene. Note that there is currently no lookup table for grid names, so in order for the indices in MasterTable to be correct, regular grids must be ordered alphabetically.

The following attributes are defined:

Name Data Type Dimensions Description

Filename

StrType<C_S1, VarLen>

1

The filename of the regular grid

Insert

NATIVE_FLOAT

3

The origin of the grid in scene ENU meters

Scale

NATIVE_FLOAT

3

The scale of the grid in X, Y and Z in meters

/Objects/RegularGrids/:gridname/DataTable

Type

Dataset

Data Type

RegularGridDataRecord

Dataspace Type

Simple

Dimensions

N

Contains the regular grid’s voxel data.

/Objects/Tags

Type

Group

Required

No

Contains information about all tagged objects in the scene. This group is only required if there are tagged instances in the scene.

/Objects/Tags/Indexes

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Contains a number of object indices into MasterTable. All objects that are associated to a single tag must be adjacent in this list. As such, a single object ID may appear multiple times if it has multiple tags. Objects are related to tags via the Ranges table.

/Objects/Tags/Names

Type

Dataset

Data Type

StrType<C_S1, VarLen>

Dataspace Type

Simple

Dimensions

N

Each tag has a row in this table which is the name of the tag. Rows correspond to the rows of Ranges.

/Objects/Tags/Ranges

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Each tag has a row in this table. Each row defines a range in Indexes, which are the object indices to which this tag applies.

/Objects/TimeWindows

Type

Group

Required

No

Contains information about time-windowed objects. That is, objects that are only enabled in the scene during certain periods. This group is only required if there are time-windowed objects in the scene.

/Objects/TimeWindows/Definitions

Type

Dataset

Data Type

StrType<C_S1, VarLen>

Dataspace Type

Simple

Dimensions

N

Each row is the definition of a time window. See the GLIST manual section on time windows for the potential formats of these strings.

/Objects/TimeWindows/Indexes

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Rows in this table correspond to rows in Definitions. The values in this list are object indices and relates the time window definitions in Definitions to objects in MasterTable.

/Properties

Type

Group

Required

Yes

Contains material properties for the scene

/Properties/BalfourMaps

Type

Group

Required

No

Contains all of the maps of Balfour thermal model parameters maps. See :dataset for a description of how Balfour maps are stored. This group is only required if there are Balfour maps in the scene.

/Properties/BalfourMaps/Index

This is the type-specific table for Balfour maps. See Map Indexing.

/Properties/BalfourMaps/:dataset

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x M x K

Holds the map data for the Balfour parameter map. The values in this map are the coefficients in the Balfour model, however their interpretation can vary based on the Type attribute. See the Temperature Solvers manual for a detailed description of the Balfour model.

In addition to the attributes in Map Projection, the following attributes are defined:

Name Data Type Dimensions Description

"Type"

NATIVE_UCHAR

1

The variant of Balfour model being mapped

The Type column can take on the following values:

Value Description

0

Classic (K = 5), band i is a_i

1

Iterative (K = 6), band i is a_i

/Properties/ClassicBalfourTable

Type

Dataset

Data Type

ClassicBalfourRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for the classic Balfour model. Each row contains the coefficients for the classic Balfour model.

/Properties/DataDrivenTempModels

Type

Group

Required

No

Contains information about all data-driven temperature models in the bundle.

/Properties/DataDrivenTempModels/Data

Type

Dataset

Data Type

DataDrivenTempRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

This table holds time-temperature samples that form time series for the data-driven temperature model. The bounds of the time series are given by the rows of Ranges.

/Properties/DataDrivenTempModels/Ranges

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

Yes

This serves as the type-specific table for the data-driven temperature model. Each row in this table is an index range into Data that define a time series of temperature samples.

/Properties/IterativeBalfourTable

Type

Dataset

Data Type

IterativeBalfourRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for the iterative Balfour model. Each row contains the coefficients for the iterative Balfour model.

/Properties/MaterialNames

Type

Dataset

Data Type

StrType<C_S1, VarLen>

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains the names for all of the materials. Entries in this table correspond to entries in Materials.

/Properties/Materials

Type

Dataset

Data Type

MaterialRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

This is the top-level material index table. The names of the materials can be found in the corresponding rows in MaterialNames. The last material in this table is the primary material in the bundle.

The type specific tables are:

Type Type-specific Table

Null

N/A

Surface

OpticalProperties, TemperatureModels

Volume

OpticalProperties, TemperatureModels

PureMap

PureMaterialMaps/Index

MixedMap

MixedMaterialMaps/Index

/Properties/MixedMaterialMaps

Type

Group

Required

No

Contains information about all mixed material maps found in the scene. See :mapname for details on how a mixed material map is stored. This group is only required if there are mixed material maps in the scene.

/Properties/MixedMaterialMaps/Index

This is the type-specific table for mixed material maps. See Map Indexing.

/Properties/MixedMaterialMaps/:mapname

Type

Group

Contains information about a single mixed material map. This group has the attributes from Map Projection.

/Properties/MixedMaterialMaps/:mapname/LocalWeights

Type

Dataset

Data Type

NATIVE_USHORT

Dataspace Type

Simple

Dimensions

N x M x K

Required

Yes

Contains the map data for a mixed temperature map. At each pixel location, there is a weight for each of the materials listed in Lut. The weight is computed as the value divided by 65535, so across all channels for a single pixel, the sum should be 65535. Note that the K in this table’s dimensions must be equal to the dimensionality, N, of Lut.

/Properties/MixedMaterialMaps/:mapname/Lut

Type

Dataset

Data Type

NATIVE_INT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Provides a look-up table of channel index in LocalWeights to a material index in Materials. Note that the dimensionality of this table must match the number of channels in the weights map.

/Properties/MixedOpticalPropertiesMaps

Type

Group

Required

No

Contains information about all mixed optical properties maps found in the scene. See :mapname for details on how a mixed optical properties map is stored. This group is only required if there are mixed optical properties maps in the scene.

/Properties/MixedOpticalPropertiesMaps/Index

This is the type-specific table for mixed optical properties maps. See Map Indexing.

/Properties/MixedOpticalPropertiesMaps/:mapname

Type

Group

Contains information about a single mixed optical properties map. This group has the attributes from Map Projection.

/Properties/MixedOpticalPropertiesMaps/:mapname/LocalWeights

Type

Dataset

Data Type

NATIVE_USHORT

Dataspace Type

Simple

Dimensions

N x M x K

Required

Yes

Contains the map data for a mixed optical properties map. At each pixel location, there is a weight for each of the optical properties listed in Lut. The weight is computed as the value divided by 65535, so across all channels for a single pixel, the sum should be 65535. Note that the K in this table’s dimensions must be equal to the dimensionality, N, of Lut.

/Properties/MixedOpticalPropertiesMaps/:mapname/Lut

Type

Dataset

Data Type

NATIVE_INT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Provides a look-up table of channel index in LocalWeights to an optical properties index in OpticalProperties. Note that the dimensionality of this table must match the number of channels in the weights map.

/Properties/OpticalProperties

Type

Dataset

Data Type

OpticalPropertiesRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Each set of optical properties in the scene has one row in this table. The type-specific tables for this file are:

Type Type-specific Table

None

N/A

DiffuseReflectance

SpectralCurvesTable

DiffuseTransmission

SpectralCurvesTable

DeltaReflectance

SpectralCurvesTable

DeltaTransmission

SpectralCurvesTable

WardReflectance

WardData

WardTransmission

WardData

SphericalDataReflectance

SphericalData/Index

SphericalDataTransmission

SphericalData/Index

AbsorptionCoefficient

SpectralCurvesTable

ScatteringCoefficient

(Currently undefined)

PureOpticalPropertiesMap

PureOpticalPropertiesMaps/Index

ReflectanceMap

ReflectanceMaps/Index

MixedOpticalPropertiesMap

MixedOpticalPropertiesMaps/Index

/Properties/PureMaterialMaps

Type

Group

Required

No

Contains information about all pure material maps found in the scene. See :mapname for details on how a pure material map is stored.

/Properties/PureMaterialMaps/Index

This is the type-specific table for pure material maps. See Map Indexing.

/Properties/PureMaterialMaps/:mapname

Type

Group

Contains information about a single pure material map. This group has the attributes from Map Projection.

/Properties/PureMaterialMaps/:mapname/LocalIndexMap

Type

Dataset

Data Type

NATIVE_UCHAR

Dataspace Type

Simple

Dimensions

N x M

Required

Yes

Holds the map data for the pure material map. The values in this map are mapped to material indices in Materials by Lut.

/Properties/PureMaterialMaps/:mapname/Lut

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains a look-up table from values in LocalIndexMap to material indices in Materials.

/Properties/PureOpticalPropertiesMaps

Type

Group

Required

No

Contains information about all optical properties maps found in the scene. See :mapname for details on how a pure optical properties map is stored.

/Properties/PureOpticalPropertiesMaps/Index

This is the type-specific table for pure optical properties maps. See Map Indexing.

/Properties/PureOpticalPropertiesMaps/:mapname

Type

Group

Contains information about a single pure optical properties map. This group has the attributes from Map Projection.

/Properties/PureOpticalPropertiesMaps/:mapname/LocalIndexMap

Type

Dataset

Data Type

NATIVE_UCHAR

Dataspace Type

Simple

Dimensions

N x M

Required

Yes

Holds the map data for the pure optical properties map. The values in this map are mapped to optical properties indices in OpticalProperties by Lut.

/Properties/PureOpticalPropertiesMaps/:mapname/Lut

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains a look-up table from values in LocalIndexMap to optical properties indices in OpticalProperties.

/Properties/ReflectanceMaps

Type

Group

Required

No

Contains all of the reflectance map data sets. It is not the type-specific table for reflectance maps. See :dataset for a description of how reflectance maps are stored. This group is only required if there are reflectance maps in the scene.

/Properties/ReflectanceMaps/Index

This is the type-specific table for reflectance maps. See Map Indexing.

/Properties/ReflectanceMaps/:dataset

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x M x K

Contains the reflectance map data. At each pixel, an entire reflectance spectrum is stored. In addition to the attributes in Map Projection, the following attributes are defined:

Name Data Type Dimensions Required Description

Wavelengths

NATIVE_FLOAT

N

No

The wavelengths (in microns) for the center of each band. If not present, assumes scene-level wavelengths from SpectralSamplesTable.

/Properties/Sources

Type

Group

Required

No

Contains information about all sources in the scene. This group is only required if there are sources in the scene.

/Properties/Sources/BlinkDataTable

Type

Dataset

Data Type

BlinkRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

This is the type-specific table for blinking modulation. Each blinking source has a row in this table, given by the modulation index in Index.

/Properties/Sources/CosineModelDataTable

Type

Dataset

Data Type

CosineModelRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Each row contains a weight and a shape factor for a cosine intensity profile. For more details on how these parameters affect the source distribution, see the User-Defined Sources Manual. Using CosineModelIndexTable, a source can sum multiple cosine distributions in this table to form a more complex source intensity distribution.

/Properties/Sources/CosineModelIndexTable

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

Yes

This is the type-specific table for directional cosine sources. Each directional cosine source has a row in this table, given by the shape model index in Index. Each row stores defines a range of entries in CosineModelDataTable that define the cosine terms to sum for the source’s intensity distribution.

/Properties/Sources/ModulationDataTable

Type

Dataset

Data Type

ModulationRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

Each row describes a cosine function that can be used to describe a source’s modulation. Using ModulationIndexTable, a source can use multiple cosine modulations and sum them to obtain a more complex pattern.

/Properties/Sources/ModulationIndexTable

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

Yes

This is the type-specific table for modulating sources. Each modulating source has a row in this table, given by the modulation index in Index. Each row stores defines a range of rows in ModulationDataTable, which are the cosine terms to sum for the source’s modulation profile.

/Properties/Sources/Index

Type

Dataset

Data Type

SourceRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

This is the master data table for all sources in the scene. Each source has one row. The type-specific tables for source shape models are:

Type Type-specific tables

Unknown

N/A

Omnidirectional

N/A

Directional Cosine

CosineModelIndexTable

The modulation type-specific tables are:

Type Type-specific table

None

N/A

Blinking

BlinkDataTable

Modulating

ModulationIndexTable

/Properties/SpectralCurvesTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N X M

Contains a library of spectral curves, one per row. The sample in column M correspond to the wavelength in column M in SpectralSamplesTable.

/Properties/SpectralSamplesTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

1 x M

Contains the spectral curve samples table. Each row is a wavelength in microns. These are the wavelengths for which spectra in this file are sampled. This is not the spectral resolution of the simulation, however.

/Properties/SphericalData

Type

Group

Required

No

Contains all of the data for spherical data (SQT) optical properties.

/Properties/SphericalData/Data

Type

Dataset

Data Type

NATIVE_CHAR

Dataspace Type

Simple

Dimensions

N

Required

No

Contains the spherical (SQT) data for all materials in the bundle. The bounds of the data for each material are found in Ranges.

/Properties/SphericalData/Index

Type

Dataset

Data Type

SphericalDataIndexRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for spherical data optical properties. Each row has an index of a DHR curve and the index of a range row in Ranges, which has the bounds of the SQT data.

/Properties/SphericalData/Ranges

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

No

This is a range table that specifies the bounds of the SQT binary data in Data. The rows are referred to by rows in Index.

/Properties/TemperatureModels

Type

Dataset

Data Type

TemperatureModelRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

This is the top-level index for temperature models in the bundle. Each row has a temperature model type and a type-specific index. The type-specific tables in this file are:

Type Type-specific Table

None

N/A

DataDriven

DataDrivenTempModels/Ranges

ThermMap

ThermMaps/Index

TemperatureMap

TemperatureMaps/Index

BalfourMap

BalfourMaps/Index

Therm

ThermModels

ClassicBalfour

ClassicBalfourTable

IterativeBalfour

IterativeBalfourTable

/Properties/TemperatureMaps

Type

Group

Required

No

Contains all of the temperature map data sets. See :dataset for a description of how temperature maps are stored. This group is only required if there are temperature maps in the scene.

/Properties/TemperatureMaps/Index

This is the type-specific table for temperature maps. See Map Indexing.

/Properties/TemperatureMaps/:dataset

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x M

Holds the data for the temperature map. Units are Kelvin. This dataset has the attributes for Map Projection.

/Properties/ThermMaps

Type

Group

Required

No

Contains all of the maps of THERM thermal model parameters. See :dataset for a description of how THERM maps are stored. This group is only required if there are THERM maps in the scene.

/Properties/ThermMaps/:dataset

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x M x 8

Holds the map data for the THERM parameter map. The values in this map are the parameters in the THERM model. The meanings of the bands are as follows:

Column Value

0

Specific Heat

1

Mass Density

2

Thermal Conductivity

3

Thickness

4

Solar Absorption

5

Thermal Emissivity

6

Self Generated Power

7

Exposed Area

See the Thermal Handbook for details on these parameters. The dataset has the attributes defined in Map Projection.

/Properties/ThermMaps/Index

This is the type-specific table for THERM maps. See Map Indexing.

/Properties/ThermModels

Type

Dataset

Data Type

ThermRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for THERM. Each row contains the thermal input parameters for a THERM model.

/Properties/WardData

Type

Dataset

Data Type

WardRecord

Dataspace Type

Simple

Dimensions

N

Required

No

This serves as the type-specific table for the Ward optical properties. Each row contains the curve indices in SpectralCurvesTable. Currently, only the first specular width term is used and the specular lobe is assumed to be isotropic.

Material Remapping

Instance-level material remapping is handled the same way between all instance types in the scene (with the exception of decals, which do not perform remapping). The following datasets are defined inside of the instance type’s group.

/Objects/:instancetype/MaterialRemapping

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains a list of material indices. Each entry is an index into /Properties/Materials. Materials are ordered in such a way that all materials that exist in one object are grouped continuously in this list, so that each object has a start index into this list (in /Objects/:instancetype/MaterialRemappingRanges) that can be used to map the local object-level material index to a material index in /Properties/Materials.

scene hdf icd optical remap
Figure 1. Illustration of material index remapping

/Objects/:instancetype/MaterialRemappingRanges

Type

Dataset

Data Type

RangeEndInclusive

Dataspace Type

Simple

Dimensions

N

Required

Yes

Contains a row for each instance that defines a range of material IDs in MaterialRemapping. Object-level material indices can be offset by the start index to obtain the index in MaterialRemapping. The entry in MaterialRemapping then gives the scene-level material index, which can be used in /Properties/Materials to get information about the material. See the figure for an illustration of the remapping.

Map Index Group

All map types share the same indexing mechanism that functions as the type-specific table for that map type.

/Properties/:maptype/Index

Type

Group

Group containing the map indexing tables.

/Properties/:maptype/Index/Index

Type

Dataset

Data Type

MapIndexRecord

Dataspace Type

Simple

Dimensions

N

Required

Yes

This serves as the type-specific table for the map type. Each row contains an index into Paths, which holds the name of the map group/dataset in /Properties/:maptype and a projector index in the map’s projector table.

/Properties/:maptype/Index/Paths

Type

Dataset

Data Type

StrType<C_S1, VarLen>

Dataspace Type

Simple

Dimensions

N

Required

Yes

Each rows is a dataset or group name inside of /Properties/:maptype that contains a single map. These rows are referred to by rows in Index.

Map Projection

There are a number of maps that can be stored in the HDF file and they all share the problem of how to project them onto geometry. This is solved through the use of attributes on the map data set or group. The following attributes are defined on each type of map:

Name Data Type Required Dimensions Description

"Projectors"

ProjectorRecord

Yes

N

Contains projection information for each projection associated with this map

"DrapeParameters"

DrapeProjectorRecord

No

M

Holds drape-projection specific parameters

Note that since UV projection has no additional parameters, there is no type-specific table for it.