feat(materials): generated facade texture maps, sampled world-aligned
New Tools/generate_facade_textures.py: deterministic, stdlib-only PNG generator for four facade surface sets (ashlar stone, stucco, asphalt, concrete), each as base colour (_BC) plus roughness (_R). Pure zlib encoder and hash-based value noise, so re-running produces byte-identical files (verified by md5sum); ~14 s for eight 512² maps. ue_build_demo_map.py imports them into /Game/Hollywood/Textures and samples them world-aligned: WorldPosition (cm) * 1/tile_cm -> ComponentMask(R,G) -> TextureSample UVs, with per-material tile sizes (stone 440, stucco 260, asphalt 900, concrete 250 cm). A textured material skips the graph coursing deliberately - overlaying both would double the course pattern. Textures imported 8/8, hero 4/4 slots assigned, map saved; screenshots re-rendered.
This commit is contained in:
1 parent
0f928531df
commit
73e535a24b
39 files changed
+401
-48
No files matched your search
@@ -550,3 +550,21 @@ Scope: facts and traps that cost time to establish. Planned work lives in [TODO.
|
||||
a 4th element on the shot tuples; a long lens (42–55°) fills the frame from
|
||||
across the street while the camera stays level, so verticals stay parallel.
|
||||
`review-hero-facade-front` sky 39 → 20 %, `demo-spawn-view` 23 → 16 %.
|
||||
|
||||
## 2026-11-09 — facade texture maps (0.1.4)
|
||||
|
||||
- `Tools/generate_facade_textures.py` writes deterministic 512² base-colour and
|
||||
roughness maps (ashlar stone, stucco, asphalt, concrete) with a pure-zlib PNG
|
||||
encoder and hash-based value noise — no numpy/Pillow, ~14 s for all eight, and
|
||||
byte-identical on a re-run (checked by md5sum).
|
||||
- `ue_build_demo_map.py` imports them to `/Game/Hollywood/Textures` and samples
|
||||
them **world-aligned**: WorldPosition (cm) → ×(1/tile_cm) → ComponentMask(R,G)
|
||||
→ TextureSample UVs. `tile_cm` per material: stone 440, stucco 260, asphalt 900,
|
||||
concrete 250.
|
||||
- Gotchas: `MaterialExpressionTextureSample`'s UV input pin is **"UVs"**, and the
|
||||
output pin for colour is **"RGB"** / roughness **"R"**. `ComponentMask` pins are
|
||||
R/G/B/A booleans. A textured material skips the graph coursing on purpose —
|
||||
overlaying both would double the course pattern.
|
||||
- The script needs `ROOT` in `ue_build_demo_map.py` and `sys` imported; forgetting
|
||||
either fails with `NameError` and an exit code of 0 from the commandlet (always
|
||||
read the result file under /tmp/gigline).
|
||||
Reference in new issue
Block a user