Materials
Material definition, derived from Eradiate/Mitsuba
s2gos_utils.scene.materials.Material
pydantic-model
Bases: BaseModel
Base material class with Pydantic validation and auto-registration.
Provides factory method to create material instances from dictionary specifications with automatic type registration and precise validation based on Eradiate and Mitsuba BSDF specifications.
Fields:
-
id(str)
Attributes
Functions
__init_subclass__
Auto-register material types when classes are defined.
from_dict
classmethod
Create material instance from dictionary with automatic type dispatch.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data
|
Dict[str, Any]
|
Dictionary with 'type' key and material parameters |
required |
**kwargs
|
Additional arguments passed to material constructor |
{}
|
Returns:
| Type | Description |
|---|---|
Material
|
Material instance of appropriate subtype |
Raises:
| Type | Description |
|---|---|
ValueError
|
If material type is unknown |
get_registered_types
classmethod
Get list of all registered material types.
s2gos_utils.scene.materials.DiffuseMaterial
pydantic-model
Bases: Material
Perfectly diffuse material (Lambertian reflectance).
Based on Mitsuba specification: - Optional reflectance parameter with default 0.5 - Reflectance must be in [0,1] for physical validity
Fields:
-
id(str) -
reflectance(Dict[str, Any])
Validators:
-
validate_reflectance→reflectance
s2gos_utils.scene.materials.BilambertianMaterial
pydantic-model
Bases: Material
Bilambertian material with energy conservation validation.
Based on Eradiate specification: - Mandatory reflectance and transmittance parameters - Energy conservation: reflectance + transmittance ≤ 1
Fields:
-
id(str) -
reflectance(Dict[str, Any]) -
transmittance(Dict[str, Any])
Validators:
-
validate_spectral_params→reflectance,transmittance -
validate_energy_conservation
Attributes
Functions
s2gos_utils.scene.materials.RPVMaterial
pydantic-model
Bases: Material
RPV (Rahman-Pinty-Verstraete) reflection model with physical bounds.
Based on Eradiate specification: - All parameters are mandatory - Physical bounds: rho_0,rho_c ∈ [0,1], k ≥ 0, Theta ∈ [-1,1] - k=1 corresponds to Lambertian surface
Fields:
Validators:
-
validate_reflectance_params→rho_0,rho_c -
validate_k_parameter→k -
validate_theta_parameter→Theta
Attributes
Functions
validate_k_parameter
pydantic-validator
Validate k parameter physical bounds (k ≥ 0).
s2gos_utils.scene.materials.OceanLegacyMaterial
pydantic-model
Bases: Material
Ocean legacy material with realistic oceanographic parameter bounds.
Based on Eradiate specification: - All parameters are mandatory - Physical bounds based on oceanographic measurements
Fields:
-
id(str) -
chlorinity(float) -
pigmentation(float) -
wind_speed(float) -
wind_direction(float)
Attributes
s2gos_utils.scene.materials.DielectricMaterial
pydantic-model
Bases: Material
Dielectric material (glass, plastic) based on Mitsuba specification.
Based on Mitsuba specification: - All parameters optional with physical defaults - IOR values must be > 1.0 for physical validity
Fields:
-
id(str) -
int_ior(Union[float, str]) -
ext_ior(Union[float, str]) -
specular_reflectance(Optional[Dict[str, Any]]) -
specular_transmittance(Optional[Dict[str, Any]])
Validators:
-
validate_ior→int_ior,ext_ior -
validate_spectral_params→specular_reflectance,specular_transmittance
Attributes
specular_reflectance
pydantic-field
Spectral reflectance override
s2gos_utils.scene.materials.ConductorMaterial
pydantic-model
Bases: Material
Conductor material with mutually exclusive parameter validation.
Based on Mitsuba specification: - Mutually exclusive: material preset XOR manual eta/k - Energy conservation: specular_reflectance ≤ 1
Fields:
-
id(str) -
material(Optional[str]) -
eta(Optional[Dict[str, Any]]) -
k(Optional[Dict[str, Any]]) -
specular_reflectance(Optional[Dict[str, Any]])
Validators:
-
validate_ior_params→eta,k -
validate_reflectance_param→specular_reflectance -
validate_mutually_exclusive_params
Attributes
specular_reflectance
pydantic-field
Spectral reflectance override
Functions
s2gos_utils.scene.materials.RoughConductorMaterial
pydantic-model
Bases: Material
Rough conductor with anisotropic roughness validation.
Based on Mitsuba specification: - Inherits conductor parameter validation - Mutually exclusive roughness: roughness XOR (alpha_u AND/OR alpha_v) - Distribution validation: beckmann or ggx only
Fields:
-
id(str) -
material(Optional[str]) -
eta(Optional[Dict[str, Any]]) -
k(Optional[Dict[str, Any]]) -
specular_reflectance(Optional[Dict[str, Any]]) -
distribution(Literal['beckmann', 'ggx']) -
roughness(Optional[float]) -
alpha_u(Optional[float]) -
alpha_v(Optional[float])
Validators:
-
validate_ior_params→eta,k -
validate_reflectance_param→specular_reflectance -
validate_conductor_params -
validate_roughness_params
Attributes
distribution
pydantic-field
Microfacet distribution
specular_reflectance
pydantic-field
Spectral reflectance
Functions
validate_conductor_params
pydantic-validator
Validate conductor parameter mutual exclusion.
s2gos_utils.scene.materials.PlasticMaterial
pydantic-model
Bases: Material
Plastic material based on Eradiate specification.
Fields:
-
id(str) -
diffuse_reflectance(Dict[str, Any]) -
int_ior(Union[float, str]) -
ext_ior(Union[float, str]) -
nonlinear(bool)
Validators:
-
validate_reflectance→diffuse_reflectance
Attributes
diffuse_reflectance
pydantic-field
Diffuse reflectance component