This is the interface control document for the material bundle HDF document. The material bundle supports a subset of the materials that may be found in a scene data model. The supported materials are the ones that could reasonably be considered to be reusable and independent of the scene. Currently, material bundles only support surface materials, which are composed of optical properties and a temperature model. The supported types of optical properties are:
-
Diffuse reflectance and transmission
-
Delta reflectance and transmission
-
Ward reflectance and transmission
-
Spherical data reflectance and transmission
The supported types of temperature models are:
-
Data-driven temperature
-
THERM
-
Classic and iterative Balfour
Mapped properties are not supported at this time due them normally being specific to the scene. However, maps may be supported in the future to support reusable texturing.
This document is for version 2 of the data model.
/
Type |
File |
Contains the standard attributes described in DIRSIG HDF Standard Info Section.
/Properties
Type |
Group |
Required |
Yes |
Contains information about the bundled materials.
/Properties/ClassicBalfourTable
Type |
Dataset |
Data Type |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
Not supported |
Surface |
|
Volume |
Not supported |
PureMap |
Not supported |
MixedMap |
Not supported |
/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 map is stored and Index for the type-specific table.
/Properties/MixedOpticalPropertiesMaps/Index
This group serves as the type-specific table for mixed optical properties maps, see Map Index Group for details.
/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 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/MixedOpticalPropertiesMaps/:mapname/Lut
Type |
Dataset |
Data Type |
NATIVE_INT |
Dataspace Type |
Simple |
Dimensions |
N |
Required |
Yes |
Contains a look-up table from local band indices to optical properties indices in OpticalProperties. A value of -1 is used to indicate a null material.
/Properties/OpticalProperties
Type |
Dataset |
Data Type |
|
Dataspace Type |
Simple |
Dimensions |
N |
Required |
Yes |
This is the top-level index table for optical properties. Each contains a property type (combination of reflectance and transmission property), as well as type-specific indices for the reflectance and transmission properties.
The type-specific tables in this file are:
Type | Type-specific Table |
---|---|
Diffuse Reflectance |
|
Diffuse Transmission |
|
Delta Reflectance |
|
Delta Transmission |
|
Ward Reflectance |
|
Ward Transmission |
|
Spherical Data Reflectance |
|
Spherical Data Transmission |
|
Pure Optical Properties Map |
|
Mixed Optical Properties Map |
/Properties/PureOpticalPropertiesMaps
Type |
Group |
Required |
No |
Contains information about all pure optical properties maps found in the scene. See :mapname for details on how a map is stored and Index for the type-specific table.
/Properties/PureOpticalPropertiesMaps/Index
This group serves as the type-specific table for pure optical properties maps, see Map Index Group for details.
/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 local indices into Lut, which maps them into optical properties indices into OpticalProperties.
/Properties/PureOpticalPropertiesMaps/:mapname/Lut
Type |
Dataset |
Data Type |
NATIVE_UINT |
Dataspace Type |
Simple |
Dimensions |
N |
Required |
Yes |
Contains a look-up table from local indices to optical properties indices in OpticalProperties.
/Properties/SpectralSamplesTable
Type |
Dataset |
Data Type |
NATIVE_FLOAT |
Dataspace Type |
Simple |
Dimensions |
N |
Required |
Yes |
Contains the wavelength samples for the spectral curves in SpectralCurvesTable. Each element is a wavelength in microns.
/Properties/SpectralCurvesTable
Type |
Dataset |
Data Type |
NATIVE_FLOAT |
Dataspace Type |
Simple |
Dimensions |
N x M |
Required |
Yes |
Contains a library of spectral curves, one per row. The sample in column M
correspond to the M
-th wavelength in
SpectralSamplesTable.
/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 |
|
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 |
|
Dataspace Type |
Simple |
Dimensions |
N |
Required |
No |
/Properties/TemperatureModels
Type |
Dataset |
Data Type |
|
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 |
---|---|
DataDriven |
|
Therm |
|
ClassicBalfour |
|
IterativeBalfour |
/Properties/ThermModels
Type |
Dataset |
Data Type |
|
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 |
|
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.
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 |
|
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 |
---|---|---|---|---|
|
Yes |
N |
Contains projection information for each projection associated with this map |
|
|
No |
M |
Holds drape-projection specific parameters |
Note that since UV projection has no additional parameters, there is no type-specific table for it.