Light¶
Qualified name: algan.rendering.lights.Light
- class Light(*args, intensity=1.0, **kwargs)[source]¶
Bases:
MobBase class of all light sources.
- Parameters:
intensity – Dimensionless multiplier applied to the light’s color: at
2the light contributes exactly twice the radiance it does at1. Pixel values do not double with it, because exposure and the sRGB transfer function sit between radiance and the byte written to the frame. Must be a finite number of at least0.0. Defaults to1.0. The constructor argument is the light’s initial value and is not animated; animate with assignment after spawn – see Animation below.- Raises:
.AlganConfigurationError – If
intensityis not a finite number of at least0.0, on construction or on any later write.
- intensity¶
The light’s brightness multiplier: a dimensionless finite number of at least
0.0, applied to the light’s color every frame. Defaults to1.0.
Animation
Writing
light.intensity = 3after spawn is recorded: the value interpolates from its current value to the target over the current context’s runtime (1 second by default), exactly like writingcolor– wrap it inwith Off():to apply instantly instead. Writes made before spawn are instant setup, as withlocation. Like any Mob attribute write the change propagates to descendants (lights normally have none).Methods
Animate one animatable attribute to a new value, by name.
Spawn this light and register it with its owning scene exactly once.
Attributes
animation_managerThis mob's scene-owned animation manager.
basisThe Mob's orientation and scale, as a flattened 3x3 matrix of shape
(*, 9).casts_shadowsWhether this Mob's geometry blocks light on its way from a light source to another surface -- whether it casts a shadow.
childrenThe Mobs attached below this one, in attachment order.
closed_shellWhether this Mob's triangles form a CLOSED shell -- every camera ray that enters the geometry crosses a second time on its way out.
draws_descendantsWhether
get_render_primitivesreturns geometry belonging to this Mob's DESCENDANTS as well as its own.forwardGet the direction the Mob is facing.
lifespanThis mob's [spawn, despawn) interval on its Scene timeline (a
Lifespan).light_typelocationThe Mob's position in world space, shape
(*, 3).normalized_basisThe Mob's orientation with scale divided out, shape
(*, 9).parentsThe Mobs this one is attached to, in attachment order.
receives_shadowsWhether this Mob's surfaces are darkened by shadows cast onto them.
rightGet the Mob's own rightward direction.
scale_coefficientThe Mob's scale along its own right, up and forward axes, shape
(*, 3).two_sidedWhether this Mob's geometry should be lit from whichever side the ray arrives on.
upGet the Mob's own upward direction.
xThe Mob's x coordinate in world units, shape
(*, 1).xyThe Mob's x and y coordinates in world units, shape
(*, 2).yThe Mob's y coordinate in world units, shape
(*, 1).zThe Mob's z coordinate in world units, shape
(*, 1).- set_animated_attribute(attr, value, recursive=True)[source]¶
Animate one animatable attribute to a new value, by name.
As
set_animated_attribute(), and additionally the one place anintensitywrite is checked. Every route to that attribute – assignment,set_intensity,set()andset_non_recursive()– passes through here, so a light cannot reach the renderer with a negative or non-finite brightness.- Raises:
.AlganConfigurationError – If
attris"intensity"andvalueis not a finite number (or tensor of numbers) of at least0.0.