# 3D-Assets

Alle heruntergeladenen Modelle und Texturen stammen von Poly Haven und stehen unter CC0 (gemeinfrei).

Die Renderbibliothek Three.js und ihre lokal eingebundenen SSAO-/Ausgabe-Addons
verwenden Version r170 (`three@0.170.0`) unter MIT. Herkunft und unveränderte
Upstream-Dateien sind in [`vendor/three/ADDONS.md`](../../vendor/three/ADDONS.md)
dokumentiert; der Lizenztext liegt daneben in `LICENSE.txt`. Die Bibliothekslizenz
ist von der CC0-Lizenz der Modelle und Texturen unabhängig.

## Prozedurale Möbel (Obversa)

Die über 1000 Katalogvarianten aus `public/js/furniture/` (Sofas, Stühle, Tische, Betten, Schränke, Küche, Bad, Leuchten, Textilien, Deko, Pflanzen, Outdoor)
sind eigene, im Browser mit three.js erzeugte Geometrie. Blattformen, Teppichmuster, Wandbild-Motive und Geflecht werden per Canvas gezeichnet.
Sie verwenden keine fremden Modelle; für Holz, Stoffe, Leder und Beton nutzen sie die unten gelisteten CC0-Texturen (512 px, verkleinert mit
`node scripts/fetch-3d-furniture-textures.mjs`). Vorschaubilder in `thumbs/` und die gemessenen Masse in `public/js/furniture/measured.js`
entstehen mit `node scripts/render-catalog-thumbs.mjs`.

<!-- quellen:polyhaven:anfang (erzeugt von scripts/build-quellen.mjs, von Hand nichts ändern) -->
## Poly Haven

Alle Modelle und Texturen in diesem Abschnitt stammen von [Poly Haven](https://polyhaven.com) und stehen unter der Lizenz
[CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.de) (gemeinfrei; Lizenzhinweis von Poly Haven: https://polyhaven.com/license).
Die Liste entsteht aus `catalog.json`, `LOCAL_IDS` in `public/js/catalog.js` und den Ordnern `models/` und `textures/`;
neu schreiben mit `node scripts/build-quellen.mjs` (`npm run quellen`).

### Modelle (122)

122 Modelle liegen lokal in `models/<id>/`, 0 werden extern geladen. Texturen und Vorschaubilder dieser Modelle liegen ebenfalls lokal.

- Modell `alarm_clock_01` (Alarm Clock 01), lokal: https://polyhaven.com/a/alarm_clock_01
- Modell `antique_ceramic_vase_01` (Antique Ceramic Vase 01), lokal: https://polyhaven.com/a/antique_ceramic_vase_01
- Modell `ArmChair_01` (Arm Chair 01), lokal: https://polyhaven.com/a/ArmChair_01
- Modell `bar_chair_round_01` (Bar Chair Round 01), lokal: https://polyhaven.com/a/bar_chair_round_01
- Modell `BarberShopChair_01` (Barber Shop Chair 01), lokal: https://polyhaven.com/a/BarberShopChair_01
- Modell `book_encyclopedia_set_01` (Book Encyclopedia Set 01), lokal: https://polyhaven.com/a/book_encyclopedia_set_01
- Modell `brass_candleholders` (Brass Candleholders), lokal: https://polyhaven.com/a/brass_candleholders
- Modell `brass_diya_lantern` (Brass Diya Lantern), lokal: https://polyhaven.com/a/brass_diya_lantern
- Modell `brass_goblets` (Brass Goblets), lokal: https://polyhaven.com/a/brass_goblets
- Modell `brass_pan_01` (Brass Pan 01), lokal: https://polyhaven.com/a/brass_pan_01
- Modell `brass_pot_01` (Brass Pot 01), lokal: https://polyhaven.com/a/brass_pot_01
- Modell `brass_pot_02` (Brass Pot 02), lokal: https://polyhaven.com/a/brass_pot_02
- Modell `brass_vase_01` (Brass Vase 01), lokal: https://polyhaven.com/a/brass_vase_01
- Modell `brass_vase_02` (Brass Vase 02), lokal: https://polyhaven.com/a/brass_vase_02
- Modell `brass_vase_03` (Brass Vase 03), lokal: https://polyhaven.com/a/brass_vase_03
- Modell `brass_vase_04` (Brass Vase 04), lokal: https://polyhaven.com/a/brass_vase_04
- Modell `bull_head` (Bull Head), lokal: https://polyhaven.com/a/bull_head
- Modell `Camera_01` (Camera 01), lokal: https://polyhaven.com/a/Camera_01
- Modell `carved_wooden_elephant` (Carved Wooden Elephant), lokal: https://polyhaven.com/a/carved_wooden_elephant
- Modell `carved_wooden_plate` (Carved Wooden Plate), lokal: https://polyhaven.com/a/carved_wooden_plate
- Modell `CashRegister_01` (Cash Register 01), lokal: https://polyhaven.com/a/CashRegister_01
- Modell `ceiling_fan` (Ceiling Fan), lokal: https://polyhaven.com/a/ceiling_fan
- Modell `celandine_01` (Celandine 01), lokal: https://polyhaven.com/a/celandine_01
- Modell `ceramic_vase_01` (Ceramic Vase 01), lokal: https://polyhaven.com/a/ceramic_vase_01
- Modell `ceramic_vase_02` (Ceramic Vase 02), lokal: https://polyhaven.com/a/ceramic_vase_02
- Modell `ceramic_vase_03` (Ceramic Vase 03), lokal: https://polyhaven.com/a/ceramic_vase_03
- Modell `ceramic_vase_04` (Ceramic Vase 04), lokal: https://polyhaven.com/a/ceramic_vase_04
- Modell `Chandelier_01` (Chandelier 01), lokal: https://polyhaven.com/a/Chandelier_01
- Modell `Chandelier_02` (Chandelier 02), lokal: https://polyhaven.com/a/Chandelier_02
- Modell `Chandelier_03` (Chandelier 03), lokal: https://polyhaven.com/a/Chandelier_03
- Modell `chess_set` (Chess Set), lokal: https://polyhaven.com/a/chess_set
- Modell `chinese_armchair` (Chinese Armchair), lokal: https://polyhaven.com/a/chinese_armchair
- Modell `chinese_chandelier` (Chinese Chandelier), lokal: https://polyhaven.com/a/chinese_chandelier
- Modell `chinese_commode` (Chinese Commode), lokal: https://polyhaven.com/a/chinese_commode
- Modell `chinese_console_table` (Chinese Console Table), lokal: https://polyhaven.com/a/chinese_console_table
- Modell `chinese_screen_panels` (Chinese Screen Panels), lokal: https://polyhaven.com/a/chinese_screen_panels
- Modell `chinese_sofa` (Chinese Sofa), lokal: https://polyhaven.com/a/chinese_sofa
- Modell `chinese_tea_table` (Chinese Tea Table), lokal: https://polyhaven.com/a/chinese_tea_table
- Modell `ClassicConsole_01` (Classic Console 01), lokal: https://polyhaven.com/a/ClassicConsole_01
- Modell `ClassicNightstand_01` (Classic Nightstand 01), lokal: https://polyhaven.com/a/ClassicNightstand_01
- Modell `coffee_table_round_01` (Coffee Table Round 01), lokal: https://polyhaven.com/a/coffee_table_round_01
- Modell `CoffeeCart_01` (Coffee Cart 01), lokal: https://polyhaven.com/a/CoffeeCart_01
- Modell `CoffeeTable_01` (Coffee Table 01), lokal: https://polyhaven.com/a/CoffeeTable_01
- Modell `concrete_cat_statue` (Concrete Cat Statue), lokal: https://polyhaven.com/a/concrete_cat_statue
- Modell `dandelion_01` (Dandelion 01), lokal: https://polyhaven.com/a/dandelion_01
- Modell `dining_chair_02` (Dining Chair 02), lokal: https://polyhaven.com/a/dining_chair_02
- Modell `electric_stove` (Electric Stove), lokal: https://polyhaven.com/a/electric_stove
- Modell `fancy_picture_frame_01` (Fancy Picture Frame 01), lokal: https://polyhaven.com/a/fancy_picture_frame_01
- Modell `fancy_picture_frame_02` (Fancy Picture Frame 02), lokal: https://polyhaven.com/a/fancy_picture_frame_02
- Modell `gallinera_chair` (Gallinera Chair), lokal: https://polyhaven.com/a/gallinera_chair
- Modell `gallinera_table` (Gallinera Table), lokal: https://polyhaven.com/a/gallinera_table
- Modell `gaming_console` (Gaming Console), lokal: https://polyhaven.com/a/gaming_console
- Modell `gothic_coffee_table` (Gothic Coffee Table), lokal: https://polyhaven.com/a/gothic_coffee_table
- Modell `GothicBed_01` (Gothic Bed 01), lokal: https://polyhaven.com/a/GothicBed_01
- Modell `GothicCommode_01` (Gothic Commode 01), lokal: https://polyhaven.com/a/GothicCommode_01
- Modell `GreenChair_01` (Green Chair 01), lokal: https://polyhaven.com/a/GreenChair_01
- Modell `hanging_picture_frame_01` (Hanging Picture Frame 01), lokal: https://polyhaven.com/a/hanging_picture_frame_01
- Modell `hanging_picture_frame_02` (Hanging Picture Frame 02), lokal: https://polyhaven.com/a/hanging_picture_frame_02
- Modell `hanging_picture_frame_03` (Hanging Picture Frame 03), lokal: https://polyhaven.com/a/hanging_picture_frame_03
- Modell `horse_head` (Horse Head), lokal: https://polyhaven.com/a/horse_head
- Modell `horse_statue_01` (Horse Statue 01), lokal: https://polyhaven.com/a/horse_statue_01
- Modell `jug_01` (Jug 01), lokal: https://polyhaven.com/a/jug_01
- Modell `katana_stand_01` (Katana Stand 01), lokal: https://polyhaven.com/a/katana_stand_01
- Modell `lambis_shell` (Lambis Shell), lokal: https://polyhaven.com/a/lambis_shell
- Modell `Lantern_01` (Lantern 01), lokal: https://polyhaven.com/a/Lantern_01
- Modell `lantern_chandelier_01` (Lantern Chandelier 01), lokal: https://polyhaven.com/a/lantern_chandelier_01
- Modell `lion_head` (Lion Head), lokal: https://polyhaven.com/a/lion_head
- Modell `mantel_clock_01` (Mantel Clock 01), lokal: https://polyhaven.com/a/mantel_clock_01
- Modell `marble_bust_01` (Marble Bust 01), lokal: https://polyhaven.com/a/marble_bust_01
- Modell `Megaphone_01` (Megaphone 01), lokal: https://polyhaven.com/a/Megaphone_01
- Modell `metal_detector` (Metal Detector), lokal: https://polyhaven.com/a/metal_detector
- Modell `metal_jug` (Metal Jug), lokal: https://polyhaven.com/a/metal_jug
- Modell `mid_century_lounge_chair` (Mid Century Lounge Chair), lokal: https://polyhaven.com/a/mid_century_lounge_chair
- Modell `modern_arm_chair_01` (Modern Arm Chair 01), lokal: https://polyhaven.com/a/modern_arm_chair_01
- Modell `modern_ceiling_lamp_01` (Modern Ceiling Lamp 01), lokal: https://polyhaven.com/a/modern_ceiling_lamp_01
- Modell `modern_coffee_table_01` (Modern Coffee Table 01), lokal: https://polyhaven.com/a/modern_coffee_table_01
- Modell `modern_coffee_table_02` (Modern Coffee Table 02), lokal: https://polyhaven.com/a/modern_coffee_table_02
- Modell `modern_wooden_cabinet` (Modern Wooden Cabinet), lokal, nicht in catalog.json: https://polyhaven.com/a/modern_wooden_cabinet
- Modell `ornate_mirror_01` (Ornate Mirror 01), lokal: https://polyhaven.com/a/ornate_mirror_01
- Modell `Ottoman_01` (Ottoman 01), lokal: https://polyhaven.com/a/Ottoman_01
- Modell `pot_enamel_01` (Pot Enamel 01), lokal: https://polyhaven.com/a/pot_enamel_01
- Modell `potted_plant_01` (Potted Plant 01), lokal: https://polyhaven.com/a/potted_plant_01
- Modell `potted_plant_02` (Potted Plant 02), lokal: https://polyhaven.com/a/potted_plant_02
- Modell `potted_plant_04` (Potted Plant 04), lokal: https://polyhaven.com/a/potted_plant_04
- Modell `round_wooden_table_01` (Round Wooden Table 01), lokal: https://polyhaven.com/a/round_wooden_table_01
- Modell `round_wooden_table_02` (Round Wooden Table 02), lokal: https://polyhaven.com/a/round_wooden_table_02
- Modell `russian_food_cans_01` (Russian Food Cans 01), lokal: https://polyhaven.com/a/russian_food_cans_01
- Modell `scandinavian_masonry_heater` (Scandinavian Masonry Heater), lokal: https://polyhaven.com/a/scandinavian_masonry_heater
- Modell `SchoolChair_01` (School Chair 01), lokal: https://polyhaven.com/a/SchoolChair_01
- Modell `SchoolDesk_01` (School Desk 01), lokal: https://polyhaven.com/a/SchoolDesk_01
- Modell `Shelf_01` (Shelf 01), lokal: https://polyhaven.com/a/Shelf_01
- Modell `side_table_01` (Side Table 01), lokal: https://polyhaven.com/a/side_table_01
- Modell `side_table_tall_01` (Side Table Tall 01), lokal: https://polyhaven.com/a/side_table_tall_01
- Modell `small_wooden_table_01` (Small Wooden Table 01), lokal: https://polyhaven.com/a/small_wooden_table_01
- Modell `Sofa_01` (Sofa 01), lokal: https://polyhaven.com/a/Sofa_01
- Modell `sofa_02` (Sofa 02), lokal: https://polyhaven.com/a/sofa_02
- Modell `sofa_03` (Sofa 03), lokal: https://polyhaven.com/a/sofa_03
- Modell `standing_chalkboard_01` (Standing Chalkboard 01), lokal: https://polyhaven.com/a/standing_chalkboard_01
- Modell `standing_picture_frame_01` (Standing Picture Frame 01), lokal: https://polyhaven.com/a/standing_picture_frame_01
- Modell `standing_picture_frame_02` (Standing Picture Frame 02), lokal: https://polyhaven.com/a/standing_picture_frame_02
- Modell `steel_frame_shelves_03` (Steel Frame Shelves 03), lokal: https://polyhaven.com/a/steel_frame_shelves_03
- Modell `sungka_board_02` (Sungka Board 02), lokal: https://polyhaven.com/a/sungka_board_02
- Modell `tea_set_01` (Tea Set 01), lokal: https://polyhaven.com/a/tea_set_01
- Modell `throw_pillows_01` (Throw Pillows 01), lokal: https://polyhaven.com/a/throw_pillows_01
- Modell `vintage_grandfather_clock_01` (Vintage Grandfather Clock 01), lokal: https://polyhaven.com/a/vintage_grandfather_clock_01
- Modell `vintage_oil_lamp` (Vintage Oil Lamp), lokal: https://polyhaven.com/a/vintage_oil_lamp
- Modell `vintage_suitcase` (Vintage Suitcase), lokal: https://polyhaven.com/a/vintage_suitcase
- Modell `vintage_video_camera` (Vintage Video Camera), lokal: https://polyhaven.com/a/vintage_video_camera
- Modell `vintage_wooden_drawer_01` (Vintage Wooden Drawer 01), lokal: https://polyhaven.com/a/vintage_wooden_drawer_01
- Modell `WetFloorSign_01` (Wet Floor Sign 01), lokal: https://polyhaven.com/a/WetFloorSign_01
- Modell `wicker_basket_02` (Wicker Basket 02), lokal: https://polyhaven.com/a/wicker_basket_02
- Modell `wine_bottles_01` (Wine Bottles 01), lokal: https://polyhaven.com/a/wine_bottles_01
- Modell `wooden_bowl_01` (Wooden Bowl 01), lokal: https://polyhaven.com/a/wooden_bowl_01
- Modell `wooden_bowl_02` (Wooden Bowl 02), lokal: https://polyhaven.com/a/wooden_bowl_02
- Modell `wooden_candlestick` (Wooden Candlestick), lokal: https://polyhaven.com/a/wooden_candlestick
- Modell `wooden_display_shelves_01` (Wooden Display Shelves 01), lokal: https://polyhaven.com/a/wooden_display_shelves_01
- Modell `wooden_picnic_table` (Wooden Picnic Table), lokal: https://polyhaven.com/a/wooden_picnic_table
- Modell `wooden_spoon` (Wooden Spoon), lokal: https://polyhaven.com/a/wooden_spoon
- Modell `wooden_table_02` (Wooden Table 02), lokal: https://polyhaven.com/a/wooden_table_02
- Modell `WoodenChair_01` (Wooden Chair 01), lokal: https://polyhaven.com/a/WoodenChair_01
- Modell `WoodenTable_01` (Wooden Table 01), lokal: https://polyhaven.com/a/WoodenTable_01
- Modell `WoodenTable_02` (Wooden Table 02), lokal: https://polyhaven.com/a/WoodenTable_02

### Texturen (32)

Je Ordner `textures/<id>/` die Karten Farbe (diffuse oder detail), normal, rough, teils arm; 1k, Möbeltexturen 512 px. In Klammern Verwendung und das Skript, das die Textur holt.

- Textur `american_walnut_veneer` (prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/american_walnut_veneer
- Textur `brown_leather` (prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/brown_leather
- Textur `concrete_brick_wall_001` (Fassade; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/concrete_brick_wall_001
- Textur `concrete_floor_worn_001` (Boden von heute; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/concrete_floor_worn_001
- Textur `concrete_wall_008` (Fassade; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/concrete_wall_008
- Textur `corrugated_iron_02` (Fassade; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/corrugated_iron_02
- Textur `curly_teddy_natural` (prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/curly_teddy_natural
- Textur `dirty_carpet` (Boden von heute; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/dirty_carpet
- Textur `exterior_wall_cladding_03` (Fassade; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/exterior_wall_cladding_03
- Textur `fabric_pattern_07` (Schauraum; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/fabric_pattern_07
- Textur `granite_tile` (Boden von heute; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/granite_tile
- Textur `grey_plaster` (Schauraum, Fassade; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/grey_plaster
- Textur `herringbone_parquet` (Boden von heute, Schauraum; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/herringbone_parquet
- Textur `japanese_cedar_planks` (Fassade; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/japanese_cedar_planks
- Textur `knitted_fleece` (prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/knitted_fleece
- Textur `laminate_floor_02` (Boden von heute, Schauraum; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/laminate_floor_02
- Textur `linoleum_brown` (Planer-Beläge; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/linoleum_brown
- Textur `marble_01` (Boden von heute, Schauraum; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/marble_01
- Textur `mixed_stone_tiles` (Boden von heute; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/mixed_stone_tiles
- Textur `oak_veneer_01` (prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/oak_veneer_01
- Textur `oak_wood_planks` (Planer-Beläge; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/oak_wood_planks
- Textur `plaster_grey_04` (Fassade; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/plaster_grey_04
- Textur `rectangular_parquet` (Boden von heute; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/rectangular_parquet
- Textur `red_brick_03` (Fassade; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/red_brick_03
- Textur `rough_linen` (prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/rough_linen
- Textur `rubber_tiles` (Planer-Beläge; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/rubber_tiles
- Textur `smooth_concrete_floor` (Planer-Beläge, prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/smooth_concrete_floor
- Textur `terracotta_floor_tiles` (Planer-Beläge; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/terracotta_floor_tiles
- Textur `terrazzo_tiles` (Planer-Beläge; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/terrazzo_tiles
- Textur `velour_velvet` (prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/velour_velvet
- Textur `wood_floor` (Boden von heute; scripts/fetch-3d-assets.mjs): https://polyhaven.com/a/wood_floor
- Textur `wool_boucle` (prozedurale Möbel, 512 px; scripts/fetch-3d-furniture-textures.mjs): https://polyhaven.com/a/wool_boucle

## Lokale Modellbereitstellung

Geometrie, Texturen und Vorschaubilder kommen vom eigenen Hosting. Poly Haven erhält beim Anzeigen eines Raums keine Browseranfragen.
Die ursprünglichen CC0-Dateien werden geprüft, ohne Polygonvereinfachung mit Meshopt komprimiert und mit lokalen Vorschaubildern ausgeliefert.
Neuaufbau: `python3 scripts/fetch-polyhaven.py`, `node scripts/optimize-polyhaven.mjs`, `node scripts/install-polyhaven.mjs`, `npm run catalog:sources`.
Werkzeugversionen, Dateihashes, Texturausnahmen und Grössen stehen in `models-manifest.json`; Prüfung: `docs/recherche/MODELL-OPTIMIERUNG.md`.
<!-- quellen:polyhaven:ende -->


## HDRI für den Fensterblick (`hdri/`)

Die drei lokalen Himmel stammen aus `proto-fenster-hybrid` (Commit `778e10e`) und sind
CC0-Material von Poly Haven, jeweils 1k (1024 × 512), unveränderte Radiance-Dateien.
Zusammen 3’886’001 Bytes. Nur die sichtbare Tageszeit lädt ihren Himmel, ohne Vorladen.

- `hdri/mittag.hdr`: [kloofendal_48d_partly_cloudy_puresky](https://polyhaven.com/a/kloofendal_48d_partly_cloudy_puresky)
- `hdri/abend.hdr`: [qwantani_sunset_puresky](https://polyhaven.com/a/qwantani_sunset_puresky)
- `hdri/nacht.hdr`: [qwantani_night_puresky](https://polyhaven.com/a/qwantani_night_puresky)

Dieselben drei Dateien dienen der Lichtpipeline (`js/lighting.js`) als Umgebung des Innenraums
(PMREM-vorgefiltert, nach Sonnenstand gedreht): Planer und Portal laden je Tageslage genau ein HDRI,
die Stil-Vorschau auf /start eines je Stimmung (Tageslicht: mittag, Abendgold: abend, Abend: nacht).
Für die Innenumgebung wird im Browser eine aufbereitete Kopie gefiltert (`prepareHdri`: Sonne gedeckelt,
Weissabgleich, warme Zenit-Dämpfung für abend/nacht); die Dateien selbst bleiben unverändert.

Kleine Fassungen für die Stufe mobile (`HDRI_SMALL` in `js/lighting.js`), aus denselben Dateien
2 × 2 linear gemittelt (512 × 256, RGBE mit RLE-Zeilen, zusammen 1’044’487 Bytes), gleiche CC0-Quelle:

- `hdri/mittag_512.hdr` (380’331 Bytes) aus `mittag.hdr`
- `hdri/abend_512.hdr` (304’302 Bytes) aus `abend.hdr`
- `hdri/nacht_512.hdr` (359’854 Bytes) aus `nacht.hdr`

Häuser, Strasse, Sitzbänke, Autos, Laternen und Bäume sind eigene prozedurale Geometrie.
Asphalt, Pflaster, Blätter, Fensterrahmen und die entfernte Silhouette werden lokal
gezeichnet. Putz verwendet die bereits gelistete CC0-Textur `grey_plaster`. Die Umgebung
ist eine beispielhafte Gestaltung, kein Foto oder digitales Abbild der Projektadresse.
