observer_points
Detects seats and screens in an OBJ room model to generate eye-level observer points for lighting analysis, with fallbacks for missing geometry.
Instructions
Workstation eye-point observers from an OBJ room.
Auto-detects seat objects (seat_pattern) paired to screen objects (screen_pattern) by trailing suffix: eye = seat centroid at floor-top+eye_height, gaze = eye->screen centroid (dz=0). Fallback when no screen: direction_fallback in {window, azimuth, sweep}. No seats: position_fallback. Pass workstations=[{eye:[x,y], target:[x,y]|azimuth}] to bypass detection. Returns observers + glare_views (DGP fisheye) + a .pts. material_map OR sidecar required. clip_to_footprint (default True) does NOT move observers (they are furniture-anchored) — it only reports, via a warning, any observer whose eye position falls outside the floor slab.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| units | No | ||
| sidecar | No | ||
| sweep_n | No | ||
| up_axis | No | ||
| obj_path | Yes | ||
| work_dir | No | ||
| write_pts | No | observers.pts | |
| eye_height | No | ||
| material_map | No | ||
| seat_pattern | No | (?i)chair.*seat|seat | |
| workstations | No | ||
| screen_pattern | No | (?i)disp.*panel|screen|monitor|display | |
| north_angle_deg | No | ||
| fallback_azimuth | No | ||
| clip_to_footprint | No | ||
| position_fallback | No | room_center | |
| direction_fallback | No | window |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||