Skip to main content

Obstruction encoding

External obstructions — neighbouring buildings and the room's own balconies — block part of the sky seen from a window and are one of the strongest drivers of the daylight factor. LUX encodes them as two angle profiles sampled around the window, which the model reads alongside the room geometry.

Horizon and zenith angles

LUX uses two angle types, each sampled in 64 azimuth directions across a 145° field of view (±72.5° from the window normal):

  • Horizon angle — measured upward from the horizontal through the window reference point to the top of a building obstruction in that direction. Range 0–90°. = clear sky down to the horizon; larger values = a closer or taller building.
  • Zenith angle — measured downward from the zenith to the underside of an overhead obstruction, primarily the room's own balcony or a deep reveal. Range 0–70°.

A sector that is fully blocked is encoded with a 45° sentinel value so the model can distinguish "completely obstructed" from a merely large angle.

Direction sampling

Each of the 64 directions represents one slice of the viewing hemisphere; together they describe the obstruction profile across the whole field of view.

For simple contexts, provide a single value applied to all 64 directions. For complex urban contexts, provide an array of 64 values (one per direction).

// Single value for uniform context
"horizon": 15

// Array for directional context
"horizon": [10, 12, 15, 18, ...]

Calculation Method

Obstruction angles are computed using orthographic projection onto a vertical plane through the window.

The vertical plane contains the window's viewing direction and the world up vector (Y-axis). All obstruction geometry projects onto this plane. The highest projected point determines the obstruction angle.

For a given direction, the angle equals arctan(vertical_distance / horizontal_distance) where vertical distance measures height difference from window to obstruction top, and horizontal distance measures ground-level distance along the viewing direction.

Common Values

Typical obstruction angles for reference:

Urban context examples
ContextHorizontal AngleZenith AngleDescription
Open field70°No obstructions
Low suburban5-10°60-70°Single-story neighbors
Dense suburban15-25°50-60°Two-story buildings
Urban30-45°40-50°4-6 story buildings
Dense urban50-70°20-40°8-12 story buildings
High-rise canyon80-90°5-20°Tall buildings close to facade

Edge Cases

When the window views straight up or down (rad_x = ±π/2), the horizontal direction defaults to forward ([1, 0, 0]). This ensures consistent angle calculation even for unusual viewing directions.

Points behind the window (negative distance along viewing direction) are excluded from angle calculation. If no valid points exist in front of the window, the angle returns 0°.

Technical details