VR-Vantage 3.0 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes | Friends
ssMaterialSet Class Reference

Contains information on a set of material systems. More...

Inheritance diagram for ssMaterialSet:
Inheritance graph
[legend]

Classes

struct  ssEmission
 emission structure More...
struct  ssIntensityModulationParameters
 Intensity modulation structure. More...
struct  ssTemperature
 Temperature structure. More...

Public Member Functions

 ssMaterialSet ()
 constructor
 ~ssMaterialSet ()
 destructor
 ssMaterialSet (ssMaterialSet &copyObj)
 copy method
float * getResponseData (ssSensor *sensor, unsigned int &numMaterials, unsigned int &numBins, unsigned int &numParameters)
 get the response data in float array form for a particular sensor useful for binding to a texture table is organized as float responseData[material][wavelength][parameter] There are 8 parameters per spectral wavelength per material.
float * getPhongResponseData (ssSensor *sensor, unsigned int &numMaterials, unsigned int &numBins, unsigned int &numParameters)
 get the Phong response data in float array form for a particular sensor
float * getSandfordRobertsonResponseData (ssSensor *sensor, unsigned int &numMaterials, unsigned int &numBins, unsigned int &numParameters)
 get the SandfordRobertson response data in float array form for a particular sensor
float * getRadarResponseData (ssSensor *sensor, unsigned int &numMaterials, unsigned int &numBins, unsigned int &numParameters)
 get the radar response data in float array form for a particular sensor
float * getVisualData (unsigned int &numMaterials, ssSensor *sensor)
 gets the visual band response data for a particular sensor
float getMSBandDHR (ssMaterialTable *table, ssSensor *sensor, int msindex, double ax, double bx, double thetarad)
 get the DHR value for a particular material and sensor band
void getPhongMaterialResponse (ssSensor *sensor, unsigned int matCode, float &ambient, float &emission, float &cosEmission)
 Gets the Phong response data for a particular sensor and material code.
void getSanfordRobertson (ssSensor *sensor, unsigned int matCode, float &reflectance, float &lobeWidth, float &emissivity, float &grazingB)
 Gets the response data for a particular sensor and material code.
unsigned int getNumberMaterials ()
 get the number of materials in this set
unsigned int getNumberResponses ()
 get the number of material response entries in this set this is the same as the number of materials unless the light data is appended to the end of the response data and in that case it is 256 if the number of materials is less than 256.
unsigned int getNumberResponseValues ()
 get the number of response parameter values per material in this set
bool initializeEmats (ssEnvironment *env)
 Initializes the E Materials.
void getEmatEmission (double &baseEmission, double &cosEmission, double &twoSideFlag, double &absorbRatio, ssSensor *sensor, unsigned int index)
 Gets the Eigen material emission data for a particular sensor.
int getEmatIndex (unsigned int ematIndex)
 Gets the material index from the full set for a particular emat index.
bool setThermalSpinUpTime (double spinUp)
 set the thermal spin up time period.
double getThermalSpinUpTime ()
 get the thermal spin up time period
void setFullResponseEnable (bool flag)
 sets the full response flag full response flag - set true for mcm textures
bool getFullResponseEnable ()
 get the full response flag
void setIncludeEmissivity (bool flag)
 set the Include Emissivity flag flag indicating whether to combine the temperature with the emissivity for the full emission respons in the response data or leave the emissivity value to be combined in the GPU
bool getIncludeEmissivity ()
 get the Include Emissivity flag
double getMaximumTemperature ()
 get maximum temperature for the current time of day for all the materials
double getMinimumTemperature ()
 get minimum temperature for the current time of day for all the materials
unsigned int getNumberTemperatures ()
 get the number of temperatures in ssTemperature arrays
void setNumberTemperatures (unsigned int n)
 set the number of temperatures in ssTemperature arrays
void setAutoRadianceScale (bool flag)
 set flag indicating whether the min/max radiance should use automatically generated values
bool isAutoRadianceScale ()
 returns true if the the min/max radiance should use automatically generated values from this material set.
double getAverageAbsorbRatio ()
 Get the average value of the absorption ratio in the material set.
double getAverageTwoSidedFlag ()
 Get the average value of the two-sided flag in the material set.
double getAverageConductionFactor ()
 Get the average value of the conduction factor in the material set.
void setAbsorbRatio (double absorbRatio)
 set the absorption ratio to use for the material set rather than the calculated value for each material.
double getAbsorbRatio ()
 get the absorption ratio
void setTwoSidedFlag (double twoSidedFlag)
 set the two-sided flag to use for the material set rather than the calculated value for each material.
double getTwoSidedFlag ()
 get the two-sided flag
void setAppendLightData (bool flag)
 returns true if the man made light data should be appended to the end of the response data - used if the material texture contains lights or luminous texels
bool isAppendLightData ()
 set flag indicating whether the man made light data should be appended to the end of the response data - used if the material texture contains lights or luminous texels
bool isEmatType ()
 returns true if set is being used with eigen materials
void setEmatType (bool flag)
 set flag indicating whether the set is to be used with eigen materials.
void setNumberEMats (unsigned int numEmats)
 set the number of Emats in this set
unsigned int getNumberEMats ()
 get the number of Emats in this set
MATL_PROP_TABLEgetMaterialPropertyTablePtr ()
 Gets the MaterialPropertyTable structure pointer.
MATERIAL_EIGENFRACTIONSgetEmatFractionsPtr ()
 Gets the EMAT fraction structure pointer.
bool isUsingSimpleGpuFactor ()
 returns true if using old mode 2 thermal solver implementation - only use DotNL with cosSurfaceTemp.
void setUseSimpleGpuFactor (bool flag)
 set flag indicating whether the set is to be using the old mode 2 thermal solver implementation - only use DotNL with cosSurfaceTemp.
bool isCacheDirty (ssEnvironment *env)
 returns true if the temperature cache needs to be updated either due to a change in the environment or the user has forced an update
void forceCacheUpdate ()
 force the temperature cache to be updated
bool getUseInstance ()
 returns true if the set should be reused for multiple instances of a model
void setUseInstance (bool flag)
 indicate that the set should be reused for multiple instances of a model
void initActiveRegions (bool loadFile=true)
 indicates that the set has active regions and that materials may change temperature over time - like a vehicle engine
ssMaterialPropertiesgetActiveMaterials ()
 get the active region material system table
ssMaterialPropertiesgetInactiveMaterials ()
 get the inactive region material system table
bool setActiveRegion (unsigned int index, bool activeFlag)
 set an active region's material to be in the active or inactive state
bool sendActiveRegionImpulse (unsigned int index)
 send an impules to the active region which causes it to heat quickly gunfire is an example of what this is used for.
int getActiveRegionImpulseCount (unsigned int index)
 get the number of outstanding impulses for this active region
double getActiveRegionImpulseDeltaTime (unsigned int index)
 get the delta time an impulse skips for this active region
bool getActiveRegion (unsigned int index)
 get an active region's material whether in the active or inactive state
int getNumberActiveRegions ()
 return the number of active regions for the model
char * getActiveRegionName (int index)
bool hasActiveRegionsFile (char *msName=NULL)
 Find out if the active regions (ar) file that matches the ms file exists or not.
float * getRCSData (ssSensor *sensor, unsigned int &numBins, unsigned int &x, unsigned int &y, unsigned int &z)
 Gets the material set's RCS source data for a particular sensor based on Ulaby-Dobson.
void setNumberRCSangle (unsigned int angles)
 set the number of RCS angles to use for the Material set's rcs data array
unsigned int getNumberRCSangle ()
 get thenumber of RCS angles to use for the Material set's rcs data array
bool hasIntensityModulationFile ()
 Find out if the intensity modulation (imod) file that matches the ms file exists or not.
bool loadIntensityModulationFile ()
 Open the intensity modulation file associated with the ms file for a specific object.
void writeIntensityModulationFile ()
 write out the intensity modulation file according to what is in the m_imodGain ssIntensityModulationParameters struct.
void setIntensityModulationParameters (ssIntensityModulationParameters imodGain, int index)
 Set the parameters for intensity modulation gain to desired values.
void setIntensityModulationParameters (double visAvg, double NVGGain, double IRGain, double RFGain, int index)
 Set the parameters for intensity modulation gain to desired values.
void getIntensityModulationParameters (ssIntensityModulationParameters &imodGain, int index)
 Open the intensity modulation file associated with the ms file for a specific object.
void getIntensityModulationParameters (double &visAvg, double &NVGGain, double &FLIRGain, double &RFGain, int index)
 Open the intensity modulation file associated with the ms file for a specific object.
const char * getMSfilename ()
 Returns MS filename from ssMaterialProperties.
void setImmediateActiveRegionUpdate (bool flag)
 set immediate update flag to cause active regions to immediately go to current active state
bool getImmediateActiveRegionUpdate ()
 get immediate update flag to cause active regions to immediately go to current active state
bool isMarkedDelete ()
 returns true if set is ready to be deleted
void setMarkedDelete (bool flag)
 set flag indicating whether the set is ready to be deleted
- Public Member Functions inherited from ssMaterialProperties
 ssMaterialProperties ()
 constructor
 ~ssMaterialProperties ()
 destructor
 ssMaterialProperties (ssMaterialProperties &copyObj)
 copy method
void setMaterialSystemFileName (char *name)
 Sets the material system file name (.ms) for the material set.
void setSigSimDataDirectory (char *name)
 Sets the SigSim data directory.
bool isValid ()
 Returns true if this is a valid material system, false otherwise.
unsigned int getNumberLayers (unsigned int materialIndex)
 get the number of layers for a material
unsigned int getNumberWavelengths (unsigned int materialIndex)
 get the number of spectral wavelengths used by a material in this set
char * getMaterialName (unsigned int materialIndex)
 get the material name for the index into the material system table.
void setMaterialName (unsigned int materialIndex, char *matName)
 set the material name for the index into the material system table.
double getIntensityModulationScalarParameter (unsigned int material, bool visualBand)
bool getAltitude (unsigned int materialIndex, double &altitude)
 get the altitude for the index into the material system table This value is not used in SigSimRT since the altitude varies.
void setAltitude (unsigned int materialIndex, double altitude)
 set the altitude for the index into the material system table.
bool getUpperBoundaryConditionType (unsigned int materialIndex, unsigned int &boundaryConditionType)
 get the upper boundary condition type for the index into the material system table 0 - Forced Boundary Condition Temperature 1 - Natural Air Convection 2 - Forced Boundary Condition Air Convection 3 - Forced Ambient Air Convection 4 - Aerodynamic Skin Heating 5 - Forced Ambient Temperature
void setUpperBoundaryConditionType (unsigned int materialIndex, unsigned int boundaryConditionType)
 set the upper boundary condition type for the index into the material system table 0 - Forced Boundary Condition Temperature 1 - Natural Air Convection 2 - Forced Boundary Condition Air Convection 3 - Forced Ambient Air Convection 4 - Aerodynamic Skin Heating 5 - Forced Ambient Temperature
const char * getUpperBoundaryConditionType (unsigned int materialIndex)
 get the upper boundary condition type for the index into the material system table
bool getUpperBoundaryTemperature (unsigned int materialIndex, double &temperature)
 get the upper boundary condition temperature for the index into the material system table
bool setUpperBoundaryTemperature (unsigned int materialIndex, double temperature)
 set the upper boundary condition temperature for the index into the material system table
bool getUpperBoundaryWindSpeed (unsigned int materialIndex, double &windSpeed)
 get the upper boundary condition wind speed for the index into the material system table
bool setUpperBoundaryWindSpeed (unsigned int materialIndex, double windSpeed)
 set the upper boundary condition wind speed for the index into the material system table
bool getUpperBoundaryHeatLoad (unsigned int materialIndex, double &heatLoad)
 get the upper boundary condition heat load for the index into the material system table
bool setUpperBoundaryHeatLoad (unsigned int materialIndex, double heatLoad)
 set the upper boundary condition heat load for the index into the material system table
bool getLowerBoundaryConditionType (unsigned int materialIndex, unsigned int &boundaryConditionType)
 get the lower boundary condition type for the index into the material system table 0 - Conduction at Boundary Condition 1 - Natural Air Convection 2 - Forced Boundary Condition Air Convection 3 - Forced Ambient Air Convection 4 - Aerodynamic Skin Heating 5 - Solid Contact at Ambient Temperature 6 - Insulated
void setLowerBoundaryConditionType (unsigned int materialIndex, unsigned int boundaryConditionType)
 set the upper boundary condition type for the index into the material system table 0 - Forced Boundary Condition Temperature 1 - Natural Air Convection 2 - Forced Boundary Condition Air Convection 3 - Forced Ambient Air Convection 4 - Aerodynamic Skin Heating 5 - Forced Ambient Temperature
const char * getLowerBoundaryConditionType (unsigned int materialIndex)
 get the lower boundary condition type for the index into the material system table
bool getLowerBoundaryTemperature (unsigned int materialIndex, double &temperature)
 get the lower boundary condition temperature for the index into the material system table
bool setLowerBoundaryTemperature (unsigned int materialIndex, double temperature)
 set the lower boundary condition temperature for the index into the material system table
bool getLowerBoundaryWindSpeed (unsigned int materialIndex, double &windSpeed)
 get the lower boundary condition wind speed for the index into the material system table
bool setLowerBoundaryWindSpeed (unsigned int materialIndex, double windSpeed)
 set the lower boundary condition wind speed for the index into the material system table
bool getLowerBoundaryHeatLoad (unsigned int materialIndex, double &heatLoad)
 get the lower boundary condition heat load for the index into the material system table
bool setLowerBoundaryHeatLoad (unsigned int materialIndex, double heatLoad)
 set the lower boundary condition heat load for the index into the material system table
bool getReflectType (unsigned int materialIndex, unsigned int wavelengthIndex, enum ReflectType &reflectType)
 get the relection type for the index into the material system table and the wavelength index io - Infrared & Optical rf - RadioFrequency
const char * getReflectType (unsigned int materialIndex, unsigned int wavelengthIndex)
 get the reflection type for the index into the material system table and the wavelength index io - Infrared & Optical rf - RadioFrequency
void setReflectType (unsigned int materialIndex, unsigned int wavelengthIndex, enum ReflectType &reflectType)
 set the reflection type for the index into the material system table and the wavelength index io - Infrared & Optical rf - RadioFrequency
bool getDHR (unsigned int materialIndex, unsigned int wavelengthIndex, double &DHR)
 get the DHR material paramater for the index into the material system table and the wavelength index
void setDHR (unsigned int materialIndex, unsigned int wavelengthIndex, double DHR)
 set the DHR material paramater for the index into the material system table and the wavelength index
bool getPercentSpecular (unsigned int materialIndex, unsigned int wavelengthIndex, double &PercentSpecular)
 get the percent specular parameter for the index into the material system table and the wavelength index
void setPercentSpecular (unsigned int materialIndex, unsigned int wavelengthIndex, double PercentSpecular)
 set the percent specular parameter for the index into the material system table and the wavelength index
bool getLobeWidth (unsigned int materialIndex, unsigned int wavelengthIndex, double &LobeWidth)
 get the lobe width parameter for the index into the material system table and the wavelength index
void setLobeWidth (unsigned int materialIndex, unsigned int wavelengthIndex, double LobeWidth)
 set the lobe width parameter for the index into the material system table and the wavelength index
bool isValidMaterialIndex (unsigned int materialIndex)
 Returns true if this is a valid material system, false otherwise.
bool isValidMaterialLayerIndex (unsigned int materialIndex, unsigned int layerIndex)
 Returns true if this is a valid material system, false otherwise.
bool isValidMaterialWavelengthIndex (unsigned int materialIndex, unsigned int wavelengthIndex)
 Returns true if this is a valid material system, false otherwise.
void setUpdateTimeofDay (unsigned int materialIndex, JRMTIME time)
bool getUpdateTimeofDay (unsigned int materialIndex, JRMTIME &time)
double getEnvironmentUpdateInterval ()
 Returns environment update interval used as interval between thermal spinup calculations.
void setEnvironmentUpdateInterval (double interval)
 sets the environment update interval used as interval between thermal spinup calculations
bool hasChanged ()
 Returns true if the MS file has changed since last used.

Private Member Functions

bool initialize (ssEnvironment *env, char *dataDir)
 initialization of the material set
void update (ssSensor *sensor, ssEnvironment *env)
 update the material responses for this sensor and environment
bool insertMaterialTable (ssSensor *sensor)
 inserts a material table into a set.
bool insertPhongMaterialTable (ssSensor *sensor)
bool insertSRMaterialTable (ssSensor *sensor)
bool insertRadarMaterialTable (ssSensor *sensor)
void updatePhong (ssSensor *sensor, ssEnvironment *env, bool dirty)
void updateSR (ssSensor *sensor, ssEnvironment *env, bool dirty)
void updateRadar (ssSensor *sensor, ssEnvironment *env, bool dirty)
void getTemperatureData (ssEnvironment *env)
 extracts the current temperature data from the m_temperatureCache for a particular tod
bool thermalSpinUp (ssEnvironment *env)
 spins up the material systems in this set SigSim routine: AdvanceThermalTime
bool dynamicThermalSpinUp (ssEnvironment *env, float deltaTime)
 description: incrementally adjust the thermal conditions of the materials in this set
bool computeSpectralReflectanceParameters (ssSensor *sensor, ssMaterialTable *table)
 fills in the materials spectral reflectance parameters for this sensor
void computeBaseAndLoadedRadiances (ssTemperature inTemp, double ax, double bx, double emissivity, ssEmission &emission)
 Compute spectral solar loading.
void updateFullTemperatureCache (ssEnvironment *env)
 updates the diurnal temperature cache for all the materials for all tods
bool queryTemperatureCache (ssEnvironment *env)
 Checks to see if there is a valid temperature cache.
ssTemperaturegetTemperatureCache ()
 Returns pointer to temperatureCache.
void saveTemperatureCache (ssEnvironment *env)
 saves the temperature cache and relivant state data.
ssTemperaturegetEmatTemperatureCache ()
 Returns pointer to EmatTemperatureCache.
bool compareFloat (float float1, float float2)
void loadActiveRegionsFile ()
 Load the active region file that corresponds to the ms file of the same name.

Private Attributes

ssMaterialTablem_visualMaterialTable
 material table for the visual domain to use to compare with visual rgb texture for intensity modulation.
SENSOR m_visualSensor
 sensor for visual domain to use to compare with visual rgb texture for intensity modulation.
float * m_visualData
 visual band reflectance data
bool m_fullResponse
 full response flag - set true for mcm textures - false for temperature maps/poly level temperatures indicates whether to place the full response in the response data or leave the emission value to be combined in the GPU
bool m_includeEmissivity
 flag indicating whether to combine the temperature with the emissivity for the full emission respons in the response data or leave the emissivity value to be combined in the GPU
ssTemperaturem_temperatureCache
 temperature diurnal cache for all materials.
ssTemperaturem_temperatureData
 current temperature data for all materials.
ssTemperaturem_eMatTemperatureCache
 temperature diurnal cache for all materials.
ssTemperaturem_eMatTemperatureData
 current temperature data for all materials.
ssTemperaturem_eMatRadianceData
 current radiance data for all materials.
JRMTIME m_updateTime
 date/time of last update of the material table
double m_thermalSpinUp
 thermal spin up time for this material set.
double m_userAbsorbRatio
 user defined absorption ratio to be used rather than value calculated for each material
double m_userTwoSidedFlag
 user defined two-sided flag to be used rather than value calculated for each material
double m_maxTemperature
 maximum temperature for the current tod for all the materials
double m_minTemperature
 minimum temperature for the current tod for all the materials
bool m_autoRadianceScale
 flag indicating whether the min/max radiance should use automatically generated values
bool m_appendLightData
 flag indicating whether the man made light data should be appended to the response data.
bool m_ematType
 flag indicating whether eigen materials are being used.
MATERIAL_EIGENFRACTIONSm_EmatFractions
 fractions for each eigen material
intm_ematIndexes
 material indexes for each eigen material.
unsigned int m_numEMats
 Number of E materials.
bool m_useSimpleGpuFactor
 Use old mode 2 thermal solver implementation - only use DotNL with cosSurfaceTemp.
bool m_cacheForceUpdate
 flag to indicate that the temperature cache must be regenerated
bool m_useInstance
 flag to indicate that the set should be used for multiple instances of a model
bool m_immediateActiveRegionUpdate
 immediate update of active regions flag
bool m_setMarkedDelete
 flag to indicate that the materialSet is ready to be deleted
ssMaterialProperties m_activeMaterials
ssMaterialProperties m_inactiveMaterials
unsigned int m_numRCSangles
Implementation * m_impl

Friends

class ssObject
class SigSimRT

Additional Inherited Members

- Protected Member Functions inherited from ssMaterialProperties
bool validate ()
 Validate the setting of the data directory and ms file name and if ok then load the MS file.
void clean ()
 free the allocated material property table.
- Protected Attributes inherited from ssMaterialProperties
MATL_PROP_TABLEm_materialPropertyTablePtr
 SigSim material properties table.
unsigned int m_numMaterials
 Number of materials.
unsigned int m_numTemperatures
 Number of temperature intervals.
char m_dataDirectory [256]
 SigSim data directory.
char m_materialSystemFileName [256]
 material system file name
char m_timeStamp [256]
 MS file time stamp.
double m_updateInterval
 Update interval.

Detailed Description

Contains information on a set of material systems.

The material system information is read in from a .ms file that contains the list of material systems and their material structure and thermal characteristics. This data is then used to determine the temperature and the reflective and emissive response of each material. The data needed to perform the BRDF calculation externally (GPU) is provided in an array indexed by material and the spectral wavelength.

Constructor & Destructor Documentation

ssMaterialSet::ssMaterialSet ( )

constructor

ssMaterialSet::~ssMaterialSet ( )

destructor

ssMaterialSet::ssMaterialSet ( ssMaterialSet copyObj)

copy method

Member Function Documentation

float* ssMaterialSet::getResponseData ( ssSensor sensor,
unsigned int numMaterials,
unsigned int numBins,
unsigned int numParameters 
)

get the response data in float array form for a particular sensor useful for binding to a texture table is organized as float responseData[material][wavelength][parameter] There are 8 parameters per spectral wavelength per material.

If the full reponse flag is selected then the parameters are defined as: 0: ambient reflectivity - unitless 0-1 1: diffuse reflectivity - unitless 0-1 2: base emission - unitless (radiance scaled by max radiance) 3: directional sun emission - unitless (radiance scaled by max radiance) 4: specular reflectivity - unitless 0-1 5: shininess - unitless 0-127 6: two-sided flag (d) - unitless 7: absorbRatio - unitless aS/eL

If the full response flag is false then the parameters are defined as: 0: ambient reflectivity - unitless 0-1 1: diffuse reflectivity - unitless 0-1 2: emissivity - unitless 0-1 3: unused 4: specular reflectivity - unitless 0-1 5: shininess - unitless 0-127 6: unused 7: unused

In both cases the Sandford Robertson parameters are also provided as: 8: Total angle-independent diffuse reflectance (pd) 9: Lobe Width Parameter (w or omega) 10: Total angle-independent emissivity (epsilon) 11: Grazing Parameter (b)

For Radar sensors, apparently what we have are the coefficients of expansions in sin(zenith) : 0: scaled 0th order HH arealRCS[dB] - unitless 0-1 1: scaled 1st order HH arealRCS[dB] - unitless 0-1 2: scaled 1st order HH arealRCS[dB] - unitless 0-1 NOTE duplicate of above, seems a waste given: 3: scaled sum of 2nd + 3rd order HH arealRCS[dB] - unitless 0-1 4: scaled 0th order HH stddevRCS[dB] - unitless 0-1 5: scaled 1st order HH stddevRCS[dB] - unitless 0-1 6: scaled 2nd order HH stddevRCS[dB] - unitless 0-1 7: unused

For MMLS light points if placed at end of response table : 0: = 0.0 1: = 0.0 2: = scaled in-bin radiance[W/cm2/sr] - unitless 0-1 3: = 0.0 4: = 0.0 5: = 0.0 6: = 1.0 7: = 1.0

Parameters
sensor
numMaterials
numBins
numParameters
Returns
float *
float* ssMaterialSet::getPhongResponseData ( ssSensor sensor,
unsigned int numMaterials,
unsigned int numBins,
unsigned int numParameters 
)

get the Phong response data in float array form for a particular sensor

Parameters
sensor
numMaterials
numBins
numParameters
Returns
float *
float* ssMaterialSet::getSandfordRobertsonResponseData ( ssSensor sensor,
unsigned int numMaterials,
unsigned int numBins,
unsigned int numParameters 
)

get the SandfordRobertson response data in float array form for a particular sensor

Parameters
sensor
numMaterials
numBins
numParameters
Returns
float *
float* ssMaterialSet::getRadarResponseData ( ssSensor sensor,
unsigned int numMaterials,
unsigned int numBins,
unsigned int numParameters 
)

get the radar response data in float array form for a particular sensor

Parameters
sensor
numMaterials
numBins
numParameters
Returns
float *
float* ssMaterialSet::getVisualData ( unsigned int numMaterials,
ssSensor sensor 
)

gets the visual band response data for a particular sensor

Parameters
numMaterials
sensor
Returns
pointer to the response data
float ssMaterialSet::getMSBandDHR ( ssMaterialTable table,
ssSensor sensor,
int  msindex,
double  ax,
double  bx,
double  thetarad 
)

get the DHR value for a particular material and sensor band

Parameters
table
sensor
msindex
ax
bx
thetarad
Returns
float
void ssMaterialSet::getPhongMaterialResponse ( ssSensor sensor,
unsigned int  matCode,
float &  ambient,
float &  emission,
float &  cosEmission 
)

Gets the Phong response data for a particular sensor and material code.

Parameters
sensor
matCode
ambient
emission
cosEmission
void ssMaterialSet::getSanfordRobertson ( ssSensor sensor,
unsigned int  matCode,
float &  reflectance,
float &  lobeWidth,
float &  emissivity,
float &  grazingB 
)

Gets the response data for a particular sensor and material code.

Parameters
sensor
matCode
reflectance
lobeWidth
emissivity
grazingBThe return values are checked
unsigned int ssMaterialSet::getNumberMaterials ( )

get the number of materials in this set

Returns
unsigned int

Reimplemented from ssMaterialProperties.

unsigned int ssMaterialSet::getNumberResponses ( )

get the number of material response entries in this set this is the same as the number of materials unless the light data is appended to the end of the response data and in that case it is 256 if the number of materials is less than 256.

Returns
unsigned int
unsigned int ssMaterialSet::getNumberResponseValues ( )

get the number of response parameter values per material in this set

Returns
unsigned int
bool ssMaterialSet::initializeEmats ( ssEnvironment env)

Initializes the E Materials.

Returns
bool
void ssMaterialSet::getEmatEmission ( double &  baseEmission,
double &  cosEmission,
double &  twoSideFlag,
double &  absorbRatio,
ssSensor sensor,
unsigned int  index 
)

Gets the Eigen material emission data for a particular sensor.

Parameters
baseEmission
cosEmission
twoSideFlag
absorbRatio
sensor
index
int ssMaterialSet::getEmatIndex ( unsigned int  ematIndex)

Gets the material index from the full set for a particular emat index.

bool ssMaterialSet::setThermalSpinUpTime ( double  spinUp)

set the thermal spin up time period.

This is the time period that the thermal solvers to use to incrementally determine the temperature of a material. Three days (72 hours) is the default and gives enough time to reach close to steady state. The longer the time period the more accurate the temperatures, but it also takes longer to do the calculations.

Parameters
spinUp[hours]
Returns
bool
double ssMaterialSet::getThermalSpinUpTime ( )

get the thermal spin up time period

Returns
double [hours]
void ssMaterialSet::setFullResponseEnable ( bool  flag)

sets the full response flag full response flag - set true for mcm textures

       - false for temperature maps/poly level temperatures

indicates whether to place the full response in the response data or leave the emission value to be combined in the GPU

Returns
bool
bool ssMaterialSet::getFullResponseEnable ( )

get the full response flag

Returns
bool
void ssMaterialSet::setIncludeEmissivity ( bool  flag)

set the Include Emissivity flag flag indicating whether to combine the temperature with the emissivity for the full emission respons in the response data or leave the emissivity value to be combined in the GPU

Returns
bool
bool ssMaterialSet::getIncludeEmissivity ( )

get the Include Emissivity flag

Returns
bool
double ssMaterialSet::getMaximumTemperature ( )

get maximum temperature for the current time of day for all the materials

Returns
double [degrees C]
double ssMaterialSet::getMinimumTemperature ( )

get minimum temperature for the current time of day for all the materials

Returns
double [degrees C]
unsigned int ssMaterialSet::getNumberTemperatures ( )

get the number of temperatures in ssTemperature arrays

Returns
unsigned int
void ssMaterialSet::setNumberTemperatures ( unsigned int  n)

set the number of temperatures in ssTemperature arrays

Returns
unsigned int
void ssMaterialSet::setAutoRadianceScale ( bool  flag)

set flag indicating whether the min/max radiance should use automatically generated values

Parameters
flag
bool ssMaterialSet::isAutoRadianceScale ( )

returns true if the the min/max radiance should use automatically generated values from this material set.

Only one material set should be selected.

Returns
bool
double ssMaterialSet::getAverageAbsorbRatio ( )

Get the average value of the absorption ratio in the material set.

Returns
double
double ssMaterialSet::getAverageTwoSidedFlag ( )

Get the average value of the two-sided flag in the material set.

Returns
double
double ssMaterialSet::getAverageConductionFactor ( )

Get the average value of the conduction factor in the material set.

Returns
double
void ssMaterialSet::setAbsorbRatio ( double  absorbRatio)

set the absorption ratio to use for the material set rather than the calculated value for each material.

If set to -1 then the calculated value for each material is used and this is the default case. The average value of the ms file would generally be used given by getAverageAbsorbRatio.

Returns
double
double ssMaterialSet::getAbsorbRatio ( )

get the absorption ratio

Returns
double
void ssMaterialSet::setTwoSidedFlag ( double  twoSidedFlag)

set the two-sided flag to use for the material set rather than the calculated value for each material.

If set to -1 then the calculated value for each material is used and this is the default case. 0.0 would generally be used unless the ms file contained a lot of two-sided materials

Returns
double
double ssMaterialSet::getTwoSidedFlag ( )

get the two-sided flag

Returns
double
void ssMaterialSet::setAppendLightData ( bool  flag)

returns true if the man made light data should be appended to the end of the response data - used if the material texture contains lights or luminous texels

Parameters
flag
bool ssMaterialSet::isAppendLightData ( )

set flag indicating whether the man made light data should be appended to the end of the response data - used if the material texture contains lights or luminous texels

Returns
bool
bool ssMaterialSet::isEmatType ( )

returns true if set is being used with eigen materials

Returns
bool
void ssMaterialSet::setEmatType ( bool  flag)

set flag indicating whether the set is to be used with eigen materials.

Parameters
flag
void ssMaterialSet::setNumberEMats ( unsigned int  numEmats)

set the number of Emats in this set

Parameters
numEmats
unsigned int ssMaterialSet::getNumberEMats ( )

get the number of Emats in this set

Returns
unsigned int
MATL_PROP_TABLE* ssMaterialSet::getMaterialPropertyTablePtr ( )

Gets the MaterialPropertyTable structure pointer.

Returns
MATL_PROP_TABLE *

Reimplemented from ssMaterialProperties.

MATERIAL_EIGENFRACTIONS* ssMaterialSet::getEmatFractionsPtr ( )

Gets the EMAT fraction structure pointer.

Returns
MATERIAL_EIGENFRACTIONS
bool ssMaterialSet::isUsingSimpleGpuFactor ( )

returns true if using old mode 2 thermal solver implementation - only use DotNL with cosSurfaceTemp.

Returns
bool
void ssMaterialSet::setUseSimpleGpuFactor ( bool  flag)

set flag indicating whether the set is to be using the old mode 2 thermal solver implementation - only use DotNL with cosSurfaceTemp.

Parameters
flag
bool ssMaterialSet::isCacheDirty ( ssEnvironment env)

returns true if the temperature cache needs to be updated either due to a change in the environment or the user has forced an update

Returns
bool
void ssMaterialSet::forceCacheUpdate ( )

force the temperature cache to be updated

bool ssMaterialSet::getUseInstance ( )

returns true if the set should be reused for multiple instances of a model

Returns
bool
void ssMaterialSet::setUseInstance ( bool  flag)

indicate that the set should be reused for multiple instances of a model

void ssMaterialSet::initActiveRegions ( bool  loadFile = true)

indicates that the set has active regions and that materials may change temperature over time - like a vehicle engine

ssMaterialProperties* ssMaterialSet::getActiveMaterials ( )

get the active region material system table

ssMaterialProperties* ssMaterialSet::getInactiveMaterials ( )

get the inactive region material system table

bool ssMaterialSet::setActiveRegion ( unsigned int  index,
bool  activeFlag 
)

set an active region's material to be in the active or inactive state

Parameters
index- active region index
activeFlag- true for active state and false for inactive state
Returns
bool - true if active regions have been initialized
bool ssMaterialSet::sendActiveRegionImpulse ( unsigned int  index)

send an impules to the active region which causes it to heat quickly gunfire is an example of what this is used for.

Set the active region state to false and call this every time the gun is fired.

Parameters
index- active region index
int ssMaterialSet::getActiveRegionImpulseCount ( unsigned int  index)

get the number of outstanding impulses for this active region

Parameters
index- active region index
double ssMaterialSet::getActiveRegionImpulseDeltaTime ( unsigned int  index)

get the delta time an impulse skips for this active region

Parameters
index- active region index
bool ssMaterialSet::getActiveRegion ( unsigned int  index)

get an active region's material whether in the active or inactive state

Parameters
msIndex- material system index
Returns
bool - true for active state and false for inactive state
int ssMaterialSet::getNumberActiveRegions ( )

return the number of active regions for the model

Returns
int - number of active regions
char* ssMaterialSet::getActiveRegionName ( int  index)
Parameters
index- index of the active region
Returns
char * - the name of the active region
bool ssMaterialSet::hasActiveRegionsFile ( char *  msName = NULL)

Find out if the active regions (ar) file that matches the ms file exists or not.

Parameters
msName- ms file name - defaults to the materialSet's MS filename.
Returns
bool - true if ar file exists, false otherwise
float* ssMaterialSet::getRCSData ( ssSensor sensor,
unsigned int numBins,
unsigned int x,
unsigned int y,
unsigned int z 
)

Gets the material set's RCS source data for a particular sensor based on Ulaby-Dobson.

Parameters
sensor- the sensor
numBins- number of wavelengths
x- dimension of x
y- dimension of y
Returns
float pointer to material set's RCS data
Parameters
z= dimension of z (like that tells you anything). Indexed as : index = (l * z*y*x + i * z*y + j * z + k); where l=numBins index, i=z=polarization index, j=y=angle index, k=x=material index.
void ssMaterialSet::setNumberRCSangle ( unsigned int  angles)

set the number of RCS angles to use for the Material set's rcs data array

Parameters
angles
unsigned int ssMaterialSet::getNumberRCSangle ( )

get thenumber of RCS angles to use for the Material set's rcs data array

Returns
unsigned int
bool ssMaterialSet::hasIntensityModulationFile ( )

Find out if the intensity modulation (imod) file that matches the ms file exists or not.

Returns
bool - true if imod file exists, false otherwise
bool ssMaterialSet::loadIntensityModulationFile ( )

Open the intensity modulation file associated with the ms file for a specific object.

void ssMaterialSet::writeIntensityModulationFile ( )

write out the intensity modulation file according to what is in the m_imodGain ssIntensityModulationParameters struct.

void ssMaterialSet::setIntensityModulationParameters ( ssIntensityModulationParameters  imodGain,
int  index 
)

Set the parameters for intensity modulation gain to desired values.

void ssMaterialSet::setIntensityModulationParameters ( double  visAvg,
double  NVGGain,
double  IRGain,
double  RFGain,
int  index 
)

Set the parameters for intensity modulation gain to desired values.

void ssMaterialSet::getIntensityModulationParameters ( ssIntensityModulationParameters imodGain,
int  index 
)

Open the intensity modulation file associated with the ms file for a specific object.

void ssMaterialSet::getIntensityModulationParameters ( double &  visAvg,
double &  NVGGain,
double &  FLIRGain,
double &  RFGain,
int  index 
)

Open the intensity modulation file associated with the ms file for a specific object.

const char* ssMaterialSet::getMSfilename ( )

Returns MS filename from ssMaterialProperties.

Returns
MS filename
void ssMaterialSet::setImmediateActiveRegionUpdate ( bool  flag)

set immediate update flag to cause active regions to immediately go to current active state

Parameters
boolflag
bool ssMaterialSet::getImmediateActiveRegionUpdate ( )

get immediate update flag to cause active regions to immediately go to current active state

Returns
bool flag
bool ssMaterialSet::isMarkedDelete ( )

returns true if set is ready to be deleted

Returns
bool
void ssMaterialSet::setMarkedDelete ( bool  flag)

set flag indicating whether the set is ready to be deleted

Parameters
flag
bool ssMaterialSet::initialize ( ssEnvironment env,
char *  dataDir 
)
private

initialization of the material set

Parameters
env
dataDir
void ssMaterialSet::update ( ssSensor sensor,
ssEnvironment env 
)
private

update the material responses for this sensor and environment

Parameters
sensor
env
bool ssMaterialSet::insertMaterialTable ( ssSensor sensor)
private

inserts a material table into a set.

There is 1 per sensor

Parameters
sensor
Returns
bool
bool ssMaterialSet::insertPhongMaterialTable ( ssSensor sensor)
private
bool ssMaterialSet::insertSRMaterialTable ( ssSensor sensor)
private
bool ssMaterialSet::insertRadarMaterialTable ( ssSensor sensor)
private
void ssMaterialSet::updatePhong ( ssSensor sensor,
ssEnvironment env,
bool  dirty 
)
private
void ssMaterialSet::updateSR ( ssSensor sensor,
ssEnvironment env,
bool  dirty 
)
private
void ssMaterialSet::updateRadar ( ssSensor sensor,
ssEnvironment env,
bool  dirty 
)
private
void ssMaterialSet::getTemperatureData ( ssEnvironment env)
private

extracts the current temperature data from the m_temperatureCache for a particular tod

Parameters
env
bool ssMaterialSet::thermalSpinUp ( ssEnvironment env)
private

spins up the material systems in this set SigSim routine: AdvanceThermalTime

Parameters
env
Returns
bool
bool ssMaterialSet::dynamicThermalSpinUp ( ssEnvironment env,
float  deltaTime 
)
private

description: incrementally adjust the thermal conditions of the materials in this set

Parameters
deltaTime- time since last update [hours]
envreturns: true if it material temperature is updated
bool ssMaterialSet::computeSpectralReflectanceParameters ( ssSensor sensor,
ssMaterialTable table 
)
private

fills in the materials spectral reflectance parameters for this sensor

Parameters
sensor
Returns
bool
void ssMaterialSet::computeBaseAndLoadedRadiances ( ssTemperature  inTemp,
double  ax,
double  bx,
double  emissivity,
ssEmission emission 
)
private

Compute spectral solar loading.

Parameters
inTemp
ax
bx
emissivity
ssEmission&emission
void ssMaterialSet::updateFullTemperatureCache ( ssEnvironment env)
private

updates the diurnal temperature cache for all the materials for all tods

bool ssMaterialSet::queryTemperatureCache ( ssEnvironment env)
private

Checks to see if there is a valid temperature cache.

If so, it loads it.

Parameters
sgObject*ent - The entity object.
Returns
bool - returns true if a valid cache is loaded, false if no valid cache is found
ssTemperature* ssMaterialSet::getTemperatureCache ( )
private

Returns pointer to temperatureCache.

Returns
ssTemperature pointer to m_temperatureCache
void ssMaterialSet::saveTemperatureCache ( ssEnvironment env)
private

saves the temperature cache and relivant state data.

Parameters
sgObject*ent - The entity object.
ssTemperature* ssMaterialSet::getEmatTemperatureCache ( )
private

Returns pointer to EmatTemperatureCache.

Returns
ssTemperature pointer to m_eMatTemperatureCache
bool ssMaterialSet::compareFloat ( float  float1,
float  float2 
)
private
Parameters
float1
float2
Returns
bool
void ssMaterialSet::loadActiveRegionsFile ( )
private

Load the active region file that corresponds to the ms file of the same name.

Active region entries with the same name get put into the same ssActiveRegion. This is how they are grouped when we want multiple materials to be part of the same active region.

Friends And Related Function Documentation

friend class ssObject
friend
friend class SigSimRT
friend

Member Data Documentation

ssMaterialTable* ssMaterialSet::m_visualMaterialTable
private

material table for the visual domain to use to compare with visual rgb texture for intensity modulation.

SENSOR ssMaterialSet::m_visualSensor
private

sensor for visual domain to use to compare with visual rgb texture for intensity modulation.

float* ssMaterialSet::m_visualData
private

visual band reflectance data

bool ssMaterialSet::m_fullResponse
private

full response flag - set true for mcm textures - false for temperature maps/poly level temperatures indicates whether to place the full response in the response data or leave the emission value to be combined in the GPU

bool ssMaterialSet::m_includeEmissivity
private

flag indicating whether to combine the temperature with the emissivity for the full emission respons in the response data or leave the emissivity value to be combined in the GPU

ssTemperature* ssMaterialSet::m_temperatureCache
private

temperature diurnal cache for all materials.

ssTemperature* ssMaterialSet::m_temperatureData
private

current temperature data for all materials.

ssTemperature* ssMaterialSet::m_eMatTemperatureCache
private

temperature diurnal cache for all materials.

ssTemperature* ssMaterialSet::m_eMatTemperatureData
private

current temperature data for all materials.

ssTemperature* ssMaterialSet::m_eMatRadianceData
private

current radiance data for all materials.

JRMTIME ssMaterialSet::m_updateTime
private

date/time of last update of the material table

double ssMaterialSet::m_thermalSpinUp
private

thermal spin up time for this material set.

double ssMaterialSet::m_userAbsorbRatio
private

user defined absorption ratio to be used rather than value calculated for each material

double ssMaterialSet::m_userTwoSidedFlag
private

user defined two-sided flag to be used rather than value calculated for each material

double ssMaterialSet::m_maxTemperature
private

maximum temperature for the current tod for all the materials

double ssMaterialSet::m_minTemperature
private

minimum temperature for the current tod for all the materials

bool ssMaterialSet::m_autoRadianceScale
private

flag indicating whether the min/max radiance should use automatically generated values

bool ssMaterialSet::m_appendLightData
private

flag indicating whether the man made light data should be appended to the response data.

bool ssMaterialSet::m_ematType
private

flag indicating whether eigen materials are being used.

MATERIAL_EIGENFRACTIONS* ssMaterialSet::m_EmatFractions
private

fractions for each eigen material

int* ssMaterialSet::m_ematIndexes
private

material indexes for each eigen material.

unsigned int ssMaterialSet::m_numEMats
private

Number of E materials.

bool ssMaterialSet::m_useSimpleGpuFactor
private

Use old mode 2 thermal solver implementation - only use DotNL with cosSurfaceTemp.

bool ssMaterialSet::m_cacheForceUpdate
private

flag to indicate that the temperature cache must be regenerated

bool ssMaterialSet::m_useInstance
private

flag to indicate that the set should be used for multiple instances of a model

bool ssMaterialSet::m_immediateActiveRegionUpdate
private

immediate update of active regions flag

bool ssMaterialSet::m_setMarkedDelete
private

flag to indicate that the materialSet is ready to be deleted

ssMaterialProperties ssMaterialSet::m_activeMaterials
private
ssMaterialProperties ssMaterialSet::m_inactiveMaterials
private
unsigned int ssMaterialSet::m_numRCSangles
private
Implementation* ssMaterialSet::m_impl
private

The documentation for this class was generated from the following file:


Copyright © 2005-2022 MAK Technologies. All Rights Reserved (www.mak.com)