Unresolved Object¶
-
template<IsSpectral TSpectral>
class UnresolvedObject : public huira::SceneObject<UnresolvedObject<TSpectral>, TSpectral>¶ Represents an unresolved object to be rendered.
UnresolvedObject serves as a base class for objects whose irradiance can be computed or updated based on light sources in the scene. Subclasses can override resolve_irradiance() to implement custom irradiance computation logic. This base class assumes that the object’s spectral irradiance is constant and does not depend on any observer or light positions.
- Template Parameters:
TSpectral – The spectral representation type.
Subclassed by huira::UnresolvedAsteroid< TSpectral >, huira::UnresolvedEmitter< TSpectral >, huira::UnresolvedLambertianSphere< TSpectral >
Public Functions
-
UnresolvedObject() = default¶
-
UnresolvedObject(const units::SpectralWattsPerMeterSquared<TSpectral> &spectral_irradiance)¶
Constructs an UnresolvedObject with specified spectral irradiance.
Creates an unresolved object and initializes its spectral irradiance value. The provided irradiance is validated to ensure all components are non-negative and finite.
- Parameters:
spectral_irradiance – The initial spectral irradiance in \(W \cdot m^{-2}\).
- Throws:
std::runtime_error – if the irradiance contains invalid values.
-
UnresolvedObject(const units::WattsPerMeterSquared &irradiance)¶
Constructs an UnresolvedObject from total irradiance.
Creates an unresolved object with a total irradiance value that is distributed across spectral bins proportionally to their wavelength widths.
- Parameters:
irradiance – The total irradiance in \(W \cdot m^{-2}\).
- Throws:
std::runtime_error – if the irradiance is negative, NaN, or infinite.
-
UnresolvedObject(const UnresolvedObject&) = delete¶
-
UnresolvedObject &operator=(const UnresolvedObject&) = delete¶
-
void set_irradiance(const units::SpectralWattsPerMeterSquared<TSpectral> &spectral_irradiance)¶
Sets the spectral irradiance of the unresolved object.
Updates the object’s irradiance value. All spectral components must be non-negative, as negative irradiance is physically meaningless.
- Parameters:
spectral_irradiance – The new spectral irradiance value in \(W \cdot m^{-2}\).
- Throws:
std::runtime_error – if any irradiance component is negative.
-
void set_irradiance(const units::WattsPerMeterSquared &irradiance)¶
Sets the total irradiance of the unresolved object.
Updates the object’s irradiance by converting a total irradiance value (in watts per square meter) to the spectral representation. The total irradiance must be non-negative, as negative values are physically meaningless.
- Parameters:
irradiance – The new total irradiance value in \(W \cdot m^{-2}\).
- Throws:
std::runtime_error – if the total irradiance is negative, NaN, or infinite.
-
virtual TSpectral get_irradiance(Time time) const¶
Returns the spectral irradiance at a given time.
This method provides a hook for future derived classes to implement time-varying irradiance. The default implementation assumes irradiance is constant once computed or set.
- Parameters:
time – The time at which to query irradiance (unused in default implementation).
- Returns:
The current spectral irradiance value.
-
virtual void resolve_irradiance(const Transform<float> &self_transform, const std::vector<LightInstance<TSpectral>> &lights)¶
Resolves the spectral irradiance based on scene lights and object transform.
This method provides a hook for subclasses to compute or update the object’s irradiance based on its transform and the lights present in the scene. The default implementation does nothing, leaving the irradiance unchanged.
- Parameters:
self_transform – The world-space transform of this object.
lights – A vector of all light instances in the scene.
-
inline virtual std::uint64_t id() const override¶
Get the object’s unique ID.
- Returns:
std::uint64_t ID
-
inline virtual std::string type() const override¶
Get the object’s type string.
- Returns:
std::string Type
-
inline bool is_scene_owned() const¶
Check if the object is owned by the scene.
- Returns:
bool True if owned
-
inline void set_scene_owned(bool owned)¶
Set scene ownership flag.
- Parameters:
owned – True if owned
-
inline std::string name() const¶
Get the object’s name.
- Returns:
std::string Name
-
inline virtual std::string get_info() const¶
Get a descriptive info string for the object.
- Returns:
std::string Info string
Protected Static Attributes
-
static std::uint64_t next_id_ = 0¶