/Info

Type

Group

Contains metadata about the scene.

/Info/Author

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

512

Contains the name of the author of this scene. scene2hdf extracts this from the Author(s) metadata entry in the .scene file.

/Info/BoundingBox

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

2 x 3

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/Description

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

512

Contains a description of this scene. scene2hdf extracts this from the Description metadata entry in the .scene file.

/Info/FileType

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

1

A value of 0 indicates a scene file. No other values are currently used.

/Info/FormatVersion

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

1

Holds the version of this file. Currently, only version 8 is supported.

/Info/Generator

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

512

A string indicating the generator of this file.

/Info/GeneratorData

Type

Group

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

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/Name

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

512

Contains the name of this scene. scene2hdf extracts this from the Name metadata entry in the .scene file.

/Info/Organization

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

512

Contains the organization that made this scene. scene2hdf extracts this from the Organization metadata entry in the .scene file.

/Info/Wgs84LatLonAltOrigin

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

1 x 3

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

/Objects

Type

Group

Contains information about all objects in the scene.

/Objects/ControlTables

Type

Group

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 /Objects/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/Filename

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

256

Contains the source filename for this control table.

/Objects/ControlTables/:table/States

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N

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

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

N x 32

Contains a list of tag names. These tag names will also appear in /Objects/Tags/Names and will be mapped to instances via /Objects/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

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

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

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. The first column is a material index into /Properties/OpticalPropertiesTable. The second column is the index of the object in MasterTable onto which the decal is applied. The decal will only appear on that object and only if that object’s material matches the material ID in the first column.

/Objects/FacetObjects

Type

Group

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 be of the form ID_name, where ID is 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

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

/Objects/FacetObjects/:object/PropertyTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Contains material and temperature model properties for each facet in the object. Rows in this table correspond to rows in VertexIndexTable. The first column is the material index and the second column is the temperature model index. These indices may be remapped by the instance-level property remapping.

/Objects/FacetObjects/:object/TextureVertexDataTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 2

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

/Objects/FacetObjects/:object/TextureVertexIndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 3

Contains all of the texture facets for the object. Each facet has a row in this table and corresponds to a row in VertexIndexTable. Each column is the index of a vertex in TextureVertexDataTable. This table is optional, however, if it is specified, every row must contain 3 valid indices of texture vertices.

/Objects/FacetObjects/:object/VertexDataTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 3

Contains all of the vertices of the facetized object as XYZ points in meters.

/Objects/FacetObjects/:object/VertexIndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 3

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 VertexDataTable.

/Objects/FacetObjects/:object/VertexNormalDataTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 3

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

/Objects/FacetObjects/:object/VertexNormalIndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 3

Contains all of the texture facets for the object. Each facet has a row in this table and corresponds to a row in VertexIndexTable. Each column is the index of a vertex normal in VertexNormalDataTable. 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. This table is optional.

/Objects/FlexMotion

Type

Group

Contains information about all FlexMotion instances in the scene.

/Objects/FlexMotion/EngineTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

This serves as the instance type-specific table for FlexMotion. Rows correspond to the indexes given in MasterTable. The first column is the index for this instance in LocationEngines/IndexTable and the second column is the index for this instance in OrientationEngines/IndexTable.

/Objects/FlexMotion/LocationEngines

Type

Group

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

/Objects/FlexMotion/LocationEngines/CirclingPath

Type

Group

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

DataTable

Type

Dataset

Data Type

NATIVE_DOUBLE

Dataspace Type

Simple

Dimensions

N x 6

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/IndexTable. Each row is of the form:

Column Description

0

Start time of the path in seconds

1

X location of the center in scene ENU meters

2

Y location of the center in scene ENU meters

3

Z location of the center in scene ENU meters

4

Radius of the circle in meters

5

Linear velocity for the path in meters/second

/Objects/FlexMotion/LocationEngines/IndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Each row contains location engine information for a single FlexMotion instance. Row indices are given by the rows in EngineTable. The first column is the type of the location engine for this instance and the second index is the row index in the type-specific table. The following types are supported:

Type Value Type-specific Table

Circling Path

0

CirclingPath/DataTable

SGP4

1

Sgp4Path/DataTable

Straight Path

2

StraightPath/DataTable

Waypoints

3

WaypointsPath/RangesTable

/Objects/FlexMotion/LocationEngines/Sgp4Path

Type

Group

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

DataTable

Type

Dataset

Data Type

C_S1 (ASCII)

Dataspace Type

Simple

Dimensions

N x 138

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/IndexTable. The TLE is stored without a newline character or a trailing null character.

/Objects/FlexMotion/LocationEngines/StraightPath

Type

Group

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

DataTable

Type

Dataset

Data Type

NATIVE_DOUBLE

Dataspace Type

Simple

Dimensions

N x 6

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 LocationEngines/IndexTable. Each row is of the form:

Column Description

0

Start time of the path in seconds

1

X starting location in scene ENU meters

2

Y starting location in scene ENU meters

3

Z starting location in scene ENU meters

4

Heading direction in degrees east of north (+CW)

5

Linear velocity for the path in meters/second

/Objects/FlexMotion/LocationEngines/WaypointsPath

Type

Group

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.

DataTable

Type

Dataset

Data Type

NATIVE_DOUBLE

Dataspace Type

Simple

Dimensions

N x 4

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 RangesTable. Each row is of the form:

Column Description

0

Time of the waypoint

1

X location in scene ENU meters

2

Y location in scene ENU meters

3

Z location in scene ENU meters

RangesTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

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/IndexTable. The first column is the starting index of the waypoint time series in DataTable and the second column is the ending index (inclusive).

/Objects/FlexMotion/OpticalRemapTable

/Objects/FlexMotion/OpticalRemapTableRanges

/Objects/FlexMotion/OrientationEngines

Type

Group

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

/Objects/FlexMotion/OrientationEngines/IndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Each row contains orientation engine information for a single FlexMotion instance. Row indices are given by the rows in EngineTable. The first column is the type of the orientation engine for this instance and the second index is the row index in the type-specific table. The following types are supported:

Type Value Type-specific Table

Quaternions

0

Quaternions/RangesTable

LookAt

1

LookAt/IndexTable

Spin

2

Spin/RangesTable

Velocity

3

Velocity/DataTable

/Objects/FlexMotion/OrientationEngines/LookAt

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

IndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

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/IndexTable. The LookAt orientation uses a location engine to provide the point at which to look at. The first column is the type of location engine and the second is the index in the type-specific table. See LocationEngines/IndexTable for more details.

/Objects/FlexMotion/OrientationEngines/Quaternions

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.

DataTable

Type

Dataset

Data Type

NATIVE_DOUBLE

Dataspace Type

Simple

Dimensions

N x 5

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 RangesTable. Each row is of the form:

Column Description

0

Time in seconds

1

W (scalar) part of the quaternion

2

X component of the quaternion

3

Y component of the quaternion

4

Z component of the quaternion

FlagTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 1

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

RangesTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

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/IndexTable. The first element in the row is the starting index in DataTable of the quaternion time series for this instance and the second element is the ending (inclusive) index of the time series.

/Objects/FlexMotion/OrientationEngines/Spin

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 instances in the scene.

AxisTable

Type

Dataset

Data Type

NATIVE_DOUBLE

Dataspace Type

Simple

Dimensions

N x 3

Contains the axis of spin for each spinning instance. Rows in this table correspond to rows in RangesTable. Each row is of the form:

Column Description

0

X component of the axis

1

Y component of the axis

2

Z component of the axis

DataTable

Type

Dataset

Data Type

NATIVE_DOUBLE

Dataspace Type

Simple

Dimensions

N x 2

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 RangesTable. Each row is of the form:

Column Description

0

Time in seconds

1

Spin rate in radians/second

RangesTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

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/IndexTable. The first element in the row is the starting index in DataTable of the time series for this instance and the second element is the ending (inclusive) index of the time series.

/Objects/FlexMotion/OrientationEngines/Velocity

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

DataTable

Type

Dataset

Data Type

NATIVE_DOUBLE

Dataspace Type

Simple

Dimensions

N x 4

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/IndexTable. Each row is of the form:

Column Description

0

Constraint Option

1

X component of constraint vector

2

Y component of constraint vector

3

Z component of constraint vector

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

Contains instancing information for all KeyframeMotion instances in the scene.

/Objects/KeyframeMotion/DataTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 12

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 /Objects/KeyframeMotion/DataTableRanges. Each row is of the form:

Column Description

0

Time (seconds)

1

X component of real part of the dual quaternion

2

Y component of real part of the dual quaternion

3

Z component of real part of the dual quaternion

4

W (scalar) real part of the dual quaternion

5

X component of dual part of the dual quaternion

6

Y component of dual part of the dual quaternion

7

Z component of dual part of the dual quaternion

8

W (scalar) dual part of the dual quaternion

9

Scale factor in X

10

Scale factor in Y

11

Scale factor in Z

/Objects/KeyframeMotion/DataTableRanges

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

This serves the the type-specific table for KeyframeMotion instances. Contains a row for each instance that stores the beginning and ending (inclusive) index for that object’s rows in DataTable. This defines the time series of the instance’s position, rotation and scale.

/Objects/KeyframeMotion/OpticalRemapTable

/Objects/KeyframeMotion/OpticalRemapTableRanges

/Objects/KeyframeMotion/TempRemapTable

/Objects/KeyframeMotion/TempRemapTableRanges

/Objects/MasterTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 3

Contains top-level information about all objects in the scene. Each row is of the form

Object Type

Index in object type group

Index of parent object in this table

Object type is an integer that encodes the type of instance and the type of geometry. The instance type and geometry type are combined via a bitwise or. The available instance types are:

Type Value Type-specific Table

Static

0x00000001

/Objects/NoMotion

Dynamic (KeyframeMotion)

0x00000002

/Objects/KeyframeMotion

Decal

0x00000004

/Objects/Decals

FlexMotion

0x00000008

/Objects/FlexMotion/EngineTable

The available types of geometry are:

Type Value Type-specific Table

Unknown/None

0x00000000

N/A

Facetized

0x00000010

N/A

Sphere

0x00000020

Spheres

Box

0x00000040

Boxes

Disk

0x00000080

Disks

Cylinder

0x00000100

Cylinders

Source

0x00000200

/Properties/Sources/TypeDataTable

Cone Frustum

0x00000400

ConeFrusta

Regular Grid

0x00000800

RegularGrids

If an object has no parent object, 0xffffffff is used.

/Objects/NoMotion

Type

Group

Contains information about all static objects in the scene.

/Objects/NoMotion/OpticalRemapTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Contains a list of material indices. Each entry is an index into /Properties/OpticalPropertiesTable. 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 OpticalRemapTableRanges) that can be used to map the local object-level material index to a material index in /Properties/OpticalPropertiesTable.

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

/Objects/NoMotion/OpticalRemapTableRanges

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Contains a row for each object that stores the beginning and ending (inclusive) index for that object’s rows in OpticalRemapTable. Object-level material indices can be offset by the start index to obtain the index in OpticalRemapTable. The entry in OpticalRemapTable then gives the scene-level material index, which can be used in /Properties/OpticalPropertiesTable to get information about the material. See the figure for an illustration of the remapping.

/Objects/NoMotion/TempRemapTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N

Contains a list of temperature model indices. Each entry is an index into /Properties/TempModelTable. Temperature models are ordered in such a way that all models that exist in one object are grouped continuously in this list, so that each object has a start index into this list (in TempRemapTableRanges) that can be used to map the local object-level temperature model index to an index in /Properties/TempModelTable. This works in the same way as optical property remapping, which is illustrated in this figure.

/Objects/NoMotion/TempRemapTableRanges

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Contains a row for each object that stores the beginning and ending (inclusive) index for that object’s rows in TempRemapTable. Object-level temperature model indices can be offset by the start index to obtain the index in TempRemapTable. The entry in TempRemapTable then gives the scene-level temperature model index, which can be used in /Properties/TempModelTable to get information about the temperature model. See the figure for an illustration of how the remapping works for optical properties, which is identical to how it works for temperature models.

/Objects/NoMotion/Transforms

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 12

Each row is an affine transformation for a static object. The 12 numbers are the first 3 rows (row-major ordering) of the 4 x 4 3D homogenous transformation matrix. Since an affine transform is assumed, the last row can be omitted.

/Objects/NormalMaps

Type

Group

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

Contains information about all primitive geometry objects in the scene.

/Objects/Primitives/Boxes

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 6

Serves as the type-specific table for boxes. Holds the minimum and maximum points for each box in the scene. Units are in scene ENU meters. Each row is of the form:

Column Value

0

Minimum X

1

Minimum Y

2

Minimum Z

3

Maximum X

4

Maximum Y

5

Maximum Z

/Objects/Primitives/ConeFrusta

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 9

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. A cone frustum is defined by the radii for the top and bottom caps, the center of the bottom cap, the height, whether each cap is present, and whether the whole shape is flipped. Top cap radius must be less than the bottom cap radius. Each row is of the form:

Column Value

0

Radius of the top cap

1

Radius of the bottom cap

2

Center X of bottom cap

3

Center Y of bottom cap

4

Center Z of bottom cap

5

Height

6

Non-zero if top cap is present

7

Non-zero if bottom cap is present

8

Non-zero if shape is flipped

/Objects/Primitives/Cylinders

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 9

Serves as the type-specific table for cylinders. Holds the parameters for each cylinder in the scene. Units are in scene ENU meters. A cylinder is defined by the center point of the two caps, a and b, the radius, and whether each cap is present. Each row is of the form:

Column Value

0

Center X of cap a

1

Center Y of cap a

2

Center Z of cap a

3

Center X of cap b

4

Center Y of cap b

5

Center Z of cap b

6

Non-zero if cap a is present

7

Non-zero if cap b is present

8

Radius of the cylinder

/Objects/Primitives/Disks

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 7

Serves as the type-specific table for disks. Holds the parameters for each disk in the scene. Units are in scene ENU meters. A disk is defined by its center point, normal vector and radius. Each row is of the form:

Column Value

0

Center X

1

Center Y

2

Center Z

3

Normal X component

4

Normal Y component

5

Normal Z component

6

Radius

/Objects/Primitives/Spheres

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 4

Serves as the type-specific table for spheres. Holds the parameters for each sphere in the scene. Units are in scene ENU meters. A sphere is defined by its center point and radius. Each row is of the form:

Column Value

0

Center X

1

Center Y

2

Center Z

3

Radius

/Objects/RegularGrids

Type

Group

Contains the input data for any 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, such as /Properties/MapPathsTable, so in order for the indices in MasterTable to be correct, regular grids must be ordered alphabetically.

/Objects/RegularGrids/:gridname/Filename

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

512

The filename of the regular grid.

/Objects/RegularGrids/:gridname/IndexXYZMatID

Type

Dataset

Data Type

NATIVE_INT

Dataspace Type

Simple

Dimensions

N x 4

Contains voxel data about the grid. Each row is of the form:

Column Value

0

X index of voxel

1

Y index of voxel

2

Z index of voxel

3

Material index of voxel

It is common for the material index to be a direct index into /Properties/OpticalPropertiesTable, in which case, there would be no instance-level optical property remapping for the regular grid.

/Objects/RegularGrids/:gridname/Insert

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

1 x 3

The origin of the grid in scene ENU meters.

/Objects/RegularGrids/:gridname/Scale

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

1 x 3

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

/Object/RegularGrids/:gridname/TempConc

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 2

Rows in this table correspond to rows in IndexXYZMatID. The tables are separated due to differing data type. The first column is the temperature in Kelvin and the second is the concentration of the material in parts per million (ppm).

/Objects/Tags

Type

Group

Contains information about all tagged objects 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

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

N x 32

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

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Each tag has a row in this table. Each row is a pair of indices, starting and ending (inclusive), of the object indices to which this tag applies, given in Indexes.

/Objects/TimeWindows

Type

Group

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

/Objects/TimeWindows/Definitions

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

N x 128

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

Contains material properties for the scene

/Properties/BalfourMaps

Type

Group

Contains all of the maps of Balfour thermal model parameters. It is not the model-specific table for Balfour maps, but /Properties/MapPathsTable will always refer to datasets in this group for Balfour maps. See /Properties/BalfourMaps/:dataset for a description of how Balfour maps are stored.

/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

/Properties/DataDrivenTempDataTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 2

Each row is a pair of time (seconds) and temperature (Kelvin). Multiple time series of temperatures can be given, but within a time series, times must appear in ascending order. Time series boundaries are defined in /Properties/DataDrivenTempIndexTable.

/Properties/DataDrivenTempIndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

This is the model-specific table for data-driven temperatures. Each row is a pair of starting and ending (inclusive) indices into /Properties/DataDrivenTempDataTable that define a time series of temperatures.

/Properties/MapPathsTable

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

N x 512

This serves as the model-specific table for all map-based models. Each row is a string of the form "<path>:<projector index>" where <path> is a path to a dataset in the HDF file that contains the map and <projector index> is the row index in the Projectors attribute on the map dataset that holds the projection information. See the sections for the various types of maps for more details on that type of map.

/Properties/MixedMaterialMaps

Type

Group

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

/Properties/MixedMaterialMaps/:mapname

Type

Group

Contains information about a single mixed material map.

/Properties/MixedMaterialMaps/:mapname/LocalMatIndexTable

Type

Dataset

Data Type

NATIVE_INT

Dataspace Type

Simple

Dimensions

N

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

/Properties/MixedMaterialMaps/:mapname/LocalMatWeights

Type

Dataset

Data Type

NATIVE_USHORT

Dataspace Type

Simple

Dimensions

N x M x K

Contains the map data for a mixed temperature map. At each pixel location, there is a weight for each of the materials listed in LocalMatIndexTable. 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 LocalMatIndexTable.

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 replaced by this map. Currently unused.

"Has null materials"

NATIVE_INT

1

If non-zero, there is a null material in the map. Currently unused.

/Properties/NameLabelTable

Type

Dataset

Data Type

C_S1 (ASCII Null-terminated)

Dataspace Type

Simple

Dimensions

N x 512

Each row contains the name of the material with that row’s index.

/Properties/OpticalPropertiesTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 3

Each material in the scene has one row in the table. The rows are of the form

Material Type

Reflectance Index

Transmission Index

The type can be any of the following values:

Type Value Type-specific Table

Surface

0x00000000

N/A

Volume

0x00000001

N/A

Source

0x00000002

N/A

Reserved

0x00000003

N/A

Diffuse Reflectance

0x00000004

SpectralCurvesTable

Diffuse Transmission

0x00000008

SpectralCurvesTable

Delta Reflectance

0x00000010

SpectralCurvesTable

Delta Transmission

0x00000020

SpectralCurvesTable

Ward Reflectance

0x00000040

WardDataTable

Ward Transmission

0x00000080

WardDataTable

Spherical Data Reflectance

0x00000100

SphericalData/DataIndexTable

Spherical Data Transmission

0x00000200

SphericalData/DataIndexTable

Absorption Coefficient

0x00000400

SpectralCurvesTable

Scattering Coefficient

0x00000800

ScatteringTable (Currently undefined)

Material Map

0x10000000

MapPathsTable, PureMaterialMaps, MixedMaterialMaps

Reflectance Map

0x20000000

MapPathsTable, ReflectanceMaps

/Properties/PureMaterialMaps

Type

Group

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

/Properties/PureMaterialMaps/:mapname

Type

Group

Contains information about a single pure material map.

/Properties/PureMaterialMaps/:mapname/LocalMatIndexMap

Type

Dataset

Data Type

NATIVE_UCHAR

Dataspace Type

Simple

Dimensions

N x M

Holds the map data for the pure material map. The values in this map are mapped to material indices in /Properties/OpticalPropertiesTable by LocalMatIndexTable. 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 replaced by this map. Currently unused.

"Has null materials"

NATIVE_INT

1

If non-zero, there is a null material in the map. Currently unused.

/Properties/PureMaterialMaps/:mapname/LocalMatIndexTable

Type

Dataset

Data Type

NATIVE_INT

Dataspace Type

Simple

Dimensions

N

Contains a look-up table from values in LocalMatIndexMap to material indices in OpticalPropertiesTable. A value of -1 is used to indicate a null material.

/Properties/ReflectanceMaps

Type

Group

Contains all of the reflectance map data sets. It is not the type-specific table for reflectance maps, but /Properties/MapPathsTable will always refer to datasets in this group for reflectance maps. See /Properties/ReflectanceMaps/:dataset for a description of how reflectance maps are stored.

/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. Note that the dimension K here is the same as the dimensionality, M in SpectralSamplesTable and the wavelengths in that table correspond to the channels in this map.

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

Name Data Type Dimensions Description

"Parent Material Index"

NATIVE_INT

1

ID of the material whose reflectance is being mapped.

/Properties/Sources

Type

Group

Contains information about all sources in the scene.

/Properties/Sources/BlinkDataTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 2

Each blinking source has a row in this table, given by the index in TypeDataTable. Each row has two columns, the frequency of the blinking in Hz and the offset of the blinking in seconds.

/Properties/Sources/CosineModelDataTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 2

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

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Each directional cosine source has a row in this table, given by the index in TypeDataTable. Each row stores an index pair in ModulationDataTable of the starting and ending (inclusive) index of the cosines to sum for the source’s intensity distribution.

/Properties/Sources/GainTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 1

Each source in the scene has a row in this table, corresponding to the rows in TypeDataTable. The tables are separated due to varying data type. Each row is the gain that is applied to the power curve for the source.

/Properties/Sources/ModulationDataTable

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x 3

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. The three columns are the frequency of the cosine in Hz, the magnitude of the cosine, and the phase of the cosine in radians.

/Properties/Sources/ModulationIndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Each modulating source has a row in this table, given by the index in TypeDataTable. Each row stores an index pair in ModulationDataTable of the starting and ending (inclusive) index of the cosines to sum for the source’s modulation profile.

/Properties/Sources/TypeDataTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 5

This is the master data table for all sources in the scene. Each source has one row. Rows are of the form:

Column Description

0

Index of power curve in SpectralCurvesTable

1

Type of the shape model

2

If this is a cosine source, index into CosineModelIndexTable

3

Modulation type

4

If the source modulates, index into type-specific table

The type of the shape model can be the following values:

Type Value

Unknown

0x00000000

Omnidirectional

0x00000001

Directional Cosine

0x00000002

The modulation type can be any of the following values:

Type Value Type-specific table

None

0x00000000

N/A

Blinking

0x00000001

BlinkDataTable

Modulating

0x00000002

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 /Properties/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

Contains information about all spherical (SQT) data in the scene.

/Properties/SphericalData/DataBufferRangeTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Contains the bounds of the SQT data series for each material. Each material has a row in this table. The first column is the start index in DataBufferTable for the material’s SQT data and the second column is the end (inclusive) index of the data.

/Properties/SphericalData/DataBufferTable

Type

Dataset

Data Type

NATIVE_CHAR

Dataspace Type

Simple

Dimensions

N x 1

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

/Properties/SphericalData/DataIndexTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

This serves as the type-specific table for spherical data (SQT) reflectance and transmission. Each SQT material has a row in this table. The first column is an index into SpectralCurvesTable and the second is an index into DataBufferRangeTable, which allows for the retrieval of the spherical data.

/Properties/TempModelTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 2

Contains a list of all of the temperature models present in this scene. Rows are of the form:

Model Type

Index in model-specific table

Model type can be any of the following values

Model Value Model-specific Table

None

0x00

N/A

Data-Driven

0x01

DataDrivenTempIndexTable

THERM Map

0x02

MapPathsTable,, ThermMaps

Temperature Map

0x03

TemperatureMaps

Balfour Map

0x04

MapPathsTable, BalfourMaps

/Properties/TemperatureMaps

Type

Group

Contains all of the temperature map data sets. It is not the model-specific table for temperature maps, but /Properties/MapPathsTable will always refer to datasets in this group for temperature maps. See /Properties/TemperatureMaps/:dataset for a description of how temperature maps are stored.

/Properties/TemperatureMaps/:dataset

Type

Dataset

Data Type

NATIVE_FLOAT

Dataspace Type

Simple

Dimensions

N x M

Holds the data for the temperature map. In addition to the attributes in Map Projection, the following attributes are defined:

Name Data Type Dimensions Description

"Material Index"

NATIVE_INT

1

Currently unused, always -9999

/Properties/ThermMaps

Type

Group

Contains all of the maps of THERM thermal model parameters. It is not the model-specific table for THERM maps, but /Properties/MapPathsTable will always refer to datasets in this group for THERM maps. See /Properties/ThermMaps/:dataset for a description of how THERM maps are stored.

/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 Balfour 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/WardDataTable

Type

Dataset

Data Type

NATIVE_UINT

Dataspace Type

Simple

Dimensions

N x 4

This table serves as the type-specific table for Ward Reflectance and Ward Transmission material types. Each row has 4 indices that identify 4 spectral curves in /Properties/SpectralCurvesTable. In order, the indices refer to the diffuse spectrum, the specular spectrum, and the specular width spectra in the parallel and orthogonal directions. Currently, only the first width term is used and the specular lobe is assumed to be isotropic.

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. The following attributes are defined on each type of map:

Name Data Type Required Dimensions Description

"Projectors"

NATIVE_UINT

Yes

N x 4

Contains projection information for each projection associated with this map

"DrapeParameters"

NATIVE_FLOAT

No

M x 3

Holds drape-projection specific parameters

The columns of Projectors are as follows:

Column Value

0

Type of projection (0 for UV, 1 for drape)

1

Index in type-specific table

2

X mirroring (non-zero to mirror)

3

Y mirroring (non-zero to mirror)

The columns of DrapeParameters are as follows:

Column Value

0

X origin in scene ENU meters

1

Y origin in scene ENU meters

2

Pixel size in meters

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