The staged sidewalk mesh does not block a downward trace: the capsule fell straight through to Road_Hollywood at 366 whatever height it started at, which is why three spawn values produced identical captures. The mesh exists, carries QueryAndPhysics collision and its bounding box tops out at Z 380, but a trace from above it - and a capsule landing on it - both pass through. Until the kit mesh's own collision is fixed, an invisible 279 x 8.6 x 0.08 m cube supplies the surface: top at Z 380, hidden in game, BlockAll. Verified in the same run that used to report the road: top surface under player: Z=380 actor=StaticMeshActor_52 mesh=Cube foot Visibility: actor Z 470, feet 382, hit Z 380 So the capsule now rests on the pavement 2 cm above its surface. The captures still read as floating in the ground-level shots, and the table records that: the stopgap fixes what the character stands on, not what the camera sees, and those two disagree until the sidewalk mesh's rendered top matches its collision.
290 lines
19 KiB
Markdown
290 lines
19 KiB
Markdown
# Screenshots
|
||
|
||
Two reviews in one file:
|
||
|
||
- **ReviewMap** stages imported assets on their own — individual objects, the Blender import, the camera angles and the lighting comparison. Nothing from the game map is involved.
|
||
- **DemoMap** is the actual game map as it is being developed: the street, the buildings, the player and the vehicle in their real placement.
|
||
|
||
Both capture passes are produced by [`Tools/render_screenshots.sh`](../Tools/render_screenshots.sh); the asset renders come from [`Tools/blender_screenshots.py`](../Tools/blender_screenshots.py).
|
||
|
||
## Status
|
||
|
||
**This is the only place approval state and issue notes are recorded.** Every image requires a fresh approval because every image changed.
|
||
|
||
| # | Part | Item | Status | Note |
|
||
| --- | --- | --- | --- | --- |
|
||
| 1 | ReviewMap | [character feet](review/review-character-feet.png) | ☐ pending | |
|
||
| 2 | ReviewMap | [character](review/review-character.png) | ☐ pending | |
|
||
| 3 | ReviewMap | [ground contact](review/review-ground-contact.png) | ☐ pending | |
|
||
| 4 | ReviewMap | [hero facade front](review/review-hero-facade-front.png) | ☐ pending | |
|
||
| 5 | ReviewMap | [hero facade oblique](review/review-hero-facade-oblique.png) | ☐ pending | |
|
||
| 6 | ReviewMap | [hero portals](review/review-hero-portals.png) | ☐ pending | |
|
||
| 7 | ReviewMap | [npc prefab](review/review-npc-prefab.png) | ☐ pending | |
|
||
| 8 | ReviewMap | [overview](review/review-overview.png) | ☐ pending | |
|
||
| 9 | ReviewMap | [player placement](review/review-player-placement.png) | ☐ pending | |
|
||
| 10 | ReviewMap | [scale cubes](review/review-scale-cubes.png) | ☐ pending | |
|
||
| 11 | ReviewMap | [shadow compare](review/review-shadow-compare.png) | ☐ pending | |
|
||
| 12 | ReviewMap | [vehicle](review/review-vehicle.png) | ☐ pending | |
|
||
| 13 | DemoMap | [crossing](demo/review-demo-crossing.png) | ☐ pending | |
|
||
| 14 | DemoMap | [feet](demo/review-demo-feet.png) | ☐ pending | character and car float | |
|
||
| 15 | DemoMap | [north buildings](demo/review-demo-north-buildings.png) | ☐ pending | |
|
||
| 16 | DemoMap | [retail frontage](demo/review-demo-retail-frontage.png) | ☐ pending | |
|
||
| 17 | DemoMap | [spawn view](demo/review-demo-spawn-view.png) | ☐ pending | character and car float |
|
||
| 18 | DemoMap | [street level](demo/review-demo-street-level.png) | ☐ pending | character and car float |
|
||
| 19 | DemoMap | [third person front](demo/review-demo-third-person-front.png) | ☐ pending | character and car float |
|
||
| 20 | DemoMap | [third person walk](demo/review-demo-third-person-walk.png) | ☐ pending | character and car float |
|
||
| 21 | DemoMap | [third person](demo/review-demo-third-person.png) | ☐ pending | character and car float |
|
||
| 22 | DemoMap | [vehicle](demo/review-demo-vehicle.png) | ☐ pending | |
|
||
| 23 | DemoMap | [wheel](demo/review-demo-wheel.png) | ☐ pending | car floats | |
|
||
|
||
**Status:** ☐ pending · ☑ approved · ☒ rejected. "ReviewMap" rows are asset staging; "DemoMap" rows are the game map.
|
||
|
||
## Blender vs UE
|
||
|
||
<!-- blender-comparison:begin -->
|
||
|
||
### Blender vs in-game
|
||
|
||
Regenerated by `Tools/build_comparison_md.py`; everything between the markers is rewritten, so edit outside them.
|
||
|
||
- Captures: `Screenshots/review/` and `Screenshots/demo/` (23 files)
|
||
- Blender renders: `Screenshots/blender/` (22 files), made by `Tools/blender_screenshots.py`
|
||
|
||
Left is what the engine draws, right is what Blender has. A gap between them is the import problem, not a taste problem: scale, material colour, missing parts and split systems all show up here before they show up in a review.
|
||
|
||
### Side by side
|
||
|
||
| In-game | Blender | Shot |
|
||
| --- | --- | --- |
|
||
| <img src="review/review-character-feet.png" width="520"> | <img src="blender/character-angle-035.png" width="520"> | `review-character-feet.png` |
|
||
| <img src="review/review-character.png" width="520"> | <img src="blender/character-angle-035.png" width="520"> | `review-character.png` |
|
||
| <img src="review/review-ground-contact.png" width="520"> | — | `review-ground-contact.png` |
|
||
| <img src="review/review-hero-facade-front.png" width="520"> | — | `review-hero-facade-front.png` |
|
||
| <img src="review/review-hero-facade-oblique.png" width="520"> | — | `review-hero-facade-oblique.png` |
|
||
| <img src="review/review-hero-portals.png" width="520"> | — | `review-hero-portals.png` |
|
||
| <img src="review/review-npc-prefab.png" width="520"> | — | `review-npc-prefab.png` |
|
||
| <img src="review/review-overview.png" width="520"> | — | `review-overview.png` |
|
||
| <img src="review/review-player-placement.png" width="520"> | — | `review-player-placement.png` |
|
||
| <img src="review/review-scale-cubes.png" width="520"> | — | `review-scale-cubes.png` |
|
||
| <img src="review/review-shadow-compare.png" width="520"> | — | `review-shadow-compare.png` |
|
||
| <img src="review/review-vehicle.png" width="520"> | <img src="blender/vehicle-angle-035.png" width="520"> | `review-vehicle.png` |
|
||
| <img src="demo/review-demo-crossing.png" width="520"> | — | `review-demo-crossing.png` |
|
||
| <img src="demo/review-demo-feet.png" width="520"> | — | `review-demo-feet.png` |
|
||
| <img src="demo/review-demo-north-buildings.png" width="520"> | — | `review-demo-north-buildings.png` |
|
||
| <img src="demo/review-demo-retail-frontage.png" width="520"> | — | `review-demo-retail-frontage.png` |
|
||
| <img src="demo/review-demo-spawn-view.png" width="520"> | — | `review-demo-spawn-view.png` |
|
||
| <img src="demo/review-demo-street-level.png" width="520"> | — | `review-demo-street-level.png` |
|
||
| <img src="demo/review-demo-third-person-front.png" width="520"> | <img src="blender/character-angle-035.png" width="520"> | `review-demo-third-person-front.png` |
|
||
| <img src="demo/review-demo-third-person-walk.png" width="520"> | <img src="blender/character-angle-035.png" width="520"> | `review-demo-third-person-walk.png` |
|
||
| <img src="demo/review-demo-third-person.png" width="520"> | <img src="blender/character-angle-035.png" width="520"> | `review-demo-third-person.png` |
|
||
| <img src="demo/review-demo-vehicle.png" width="520"> | <img src="blender/vehicle-angle-035.png" width="520"> | `review-demo-vehicle.png` |
|
||
| <img src="demo/review-demo-wheel.png" width="520"> | — | `review-demo-wheel.png` |
|
||
|
||
7 of 23 in-game captures have a Blender counterpart; the rest are street and building shots whose meshes come from the Geo pipeline rather than a .blend.
|
||
|
||
Approval and issue notes are recorded only in the status table at the top of this file.
|
||
|
||
<!-- blender-comparison:end -->
|
||
|
||
## ReviewMap — asset staging
|
||
|
||
The staging map (`/Game/Test/ReviewMap`, built by [`Tools/ue_build_review_map.py`](../Tools/ue_build_review_map.py)) always stages the assets the latest Blender import produced: the character with its hair, clothing and materials, the vehicle's five systems, the scale cubes, the NPC prefab and the hero facade.
|
||
|
||
| Shot | Shows |
|
||
| --- | --- |
|
||
|  | `review-character-feet.png` |
|
||
|  | `review-character.png` |
|
||
|  | `review-ground-contact.png` |
|
||
|  | `review-hero-facade-front.png` |
|
||
|  | `review-hero-facade-oblique.png` |
|
||
|  | `review-hero-portals.png` |
|
||
|  | `review-npc-prefab.png` |
|
||
|  | `review-overview.png` |
|
||
|  | `review-player-placement.png` |
|
||
|  | `review-scale-cubes.png` |
|
||
|  | `review-shadow-compare.png` |
|
||
|  | `review-vehicle.png` |
|
||
|
||
## DemoMap — in-game
|
||
|
||
## 1. Spawn view
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-spawn-view.png`
|
||
- **View:** north sidewalk, 14 m back, level horizon
|
||
- **Expected content:** the whole south block — the neoclassical hero façade between its neighbouring buildings, both sidewalks and the road in the foreground
|
||
|
||
---
|
||
|
||
## 2. Street level
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-street-level.png`
|
||
- **View:** eye height, north side
|
||
- **Expected content:** the hero colonnade with the adjacent frontage buildings either side, shopfronts at pavement level
|
||
|
||
---
|
||
|
||
## 3. Crossing
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-crossing.png`
|
||
- **View:** from the north sidewalk along the crosswalk
|
||
- **Expected content:** the designated mid-block crossing (s=130 m, UE X −14956) — zebra bars on the asphalt, south frontage and colonnade behind
|
||
|
||
---
|
||
|
||
## 4. North buildings
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-north-buildings.png`
|
||
- **View:** across the Boulevard from the south side
|
||
- **Expected content:** the two north-side buildings (TCL Chinese Theatre, Madame Tussaud's), full height in frame
|
||
|
||
---
|
||
|
||
## 5. Retail frontage
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-retail-frontage.png`
|
||
- **View:** north sidewalk, level horizon, 68° lens
|
||
- **Expected content:** the retail run beside the hero — 6800 Lee Drug's bronze cornice, mural row and parapet next to 6806–6820's burgundy fascia, pilasters and window storey
|
||
|
||
Read this one against the reference photograph it was modelled from: `Art/reference/retail-neighbours/01-lee-drug-and-neighbor.jpg` (Gb321, CC BY-SA 4.0).
|
||
|
||
Known gaps in this first pass, recorded rather than hidden:
|
||
|
||
- **The parapet still reads as a blank band.** It is now two tiers with three deeper reveals, and the step is visible, but there is no profile or shadow line to break the wall — a moulded coping and a modelled reveal need the `0.9.0` façade system.
|
||
- **The mural row now reads** (framed plates standing 0.12–0.20 m off the wall), but **the lettering band does not**: it is a plate at 0.10 m and it disappears at 40 m. Wall lettering is a decal/texture problem, scoped in `0.9.0`; no amount of extra plate depth fixed it in the second pass.
|
||
- **The corner tower is a plain cylinder with two cap rings** — the stepped Deco profile in the photograph is richer than that.
|
||
- **The camera crops the east end** of Lee Drug at 68° from the north sidewalk.
|
||
- **6822 Budget is untouched** and still a bare blockout volume: no photograph of it exists.
|
||
|
||
---
|
||
|
||
## 6. Third-person body
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-third-person.png`
|
||
- **View:** third-person boom, ~6 m behind the pawn, captured with `-thirdperson` so the pawn starts in the third-person rig
|
||
- **Expected content:** the player's own visible body on the north sidewalk, seen from behind, with the hero façade across the street
|
||
|
||
What this shot is evidence for:
|
||
|
||
- The pawn carries a visible skeletal body with the warm skin material, and a spring-arm camera with collision testing. The **V** toggle swaps first and third person; the shipped default stays first person and the review passes `-thirdperson`.
|
||
- **The idle clip drives the body and the arms hang at the sides**, with the hands at the hips and the feet flat. Earlier captures of this shot showed a bind A-pose.
|
||
- **Hair is present** as a dark card system hugging the skull (three overlapping rows), not the spiked crown of the first attempt. The strand sheet supplies only the opacity mask; the colour is a dark constant, because using the sheet's pale RGB as base colour made the cut read blond and thin.
|
||
- **The body is clothed** since `0.2.2`: navy tee, dark jeans and off-white shoes as three separate skinned meshes, attached on leader-pose components.
|
||
|
||
Changed 2026-11-09 by `0.2.2` (clothing, hair, raised sun); **approved 2026-11-09** in that state.
|
||
|
||
Still open, tracked in `TODO.md`:
|
||
|
||
- **Camera collision is implemented but unproven:** the spawn has open space behind it, so no shot exercises the arm shortening.
|
||
|
||
---
|
||
|
||
## 7. Third-person front
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-third-person-front.png`
|
||
- **View:** from the road, ~6 m in front of the pawn, looking back north. The pawn spawns facing +Y, so this is its front
|
||
- **Expected content:** the clothed character from the front — navy tee, dark jeans, off-white shoes, dark hair — arms hanging at the sides with the hands by the hips
|
||
|
||
**Why the shot exists:** the third-person shot only ever shows the pawn's back, so a pose defect on the front — arms out, hands splayed, a face pointing the wrong way — was invisible in review. This angle is the check for it.
|
||
|
||
What it shows: the arms hang down with a soft elbow bend, the hands sit at hip height with the fingers curled, the upper arms clear the torso, and the character wears the navy tee, dark jeans and off-white shoes built in `0.2.2`. Hair is a dark card system hugging the skull.
|
||
|
||
**Changed 2026-11-09 by `0.2.2`:** clothing (tee, jeans, shoes as separate skinned meshes), dark hair cards, and a raised sun. The raised sun matters here: the character used to stand in building shadow lit by the blue sky light, which made warm skin sample as blue-grey — face (99, 98, 100) before, (131, 121, 117) after. **Approved 2026-11-09 after the change.**
|
||
|
||
---
|
||
|
||
---
|
||
|
||
## 8. Third-person walk
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-third-person-walk.png`
|
||
- **View:** tracking camera, 4.2 m to the pawn's right, captured while the pawn walks south
|
||
- **Expected content:** the clothed body mid-stride in profile — legs apart, arms counter-swinging, navy tee and jeans
|
||
|
||
**Why the earlier attempts failed, twice:** the first was a harness problem (a fixed camera cannot catch a pawn at 4.5 m/s, and the call that enables walking ran before the pawn existed). The second was the clip itself: the walk cycle was authored on a **sine**, which is zero at both the start and the middle of the cycle, so the capture kept landing on the two frames where the legs pass together and the image read as a still. The clip now starts at maximum stride (cosine), so any frame near the start shows the stride. The cycle length, amplitudes and loop are unchanged.
|
||
|
||
---
|
||
|
||
## 9. Vehicle
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-vehicle.png`
|
||
- **View:** from the road, ~7 m from the car, FOV 45
|
||
- **Expected content:** the red hot hatch from `Art/blender/vehicle/hot hatch.blend` — body, tinted glazing, four wheels — resting on the surface
|
||
|
||
## 10. Feet
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-feet.png`
|
||
- **View:** at pavement height, looking along the ground at the character's feet
|
||
- **Expected content:** both shoes touching the pavement, shadow starting at the contact point
|
||
|
||
## 11. Wheel
|
||
|
||

|
||
|
||
- **File:** `demo/review-demo-wheel.png`
|
||
- **View:** at pavement height, looking along the ground at the car's wheels
|
||
- **Expected content:** the tyres touching the surface, shadow at the contact point
|
||
|
||
## The iteration loop (uncommitted)
|
||
|
||
`Tools/visual_loop.py` measures each capture against its reference photograph and turns the deltas into modelling actions for the Blender skill packs:
|
||
|
||
```bash
|
||
python3 Tools/visual_loop.py --compare --iteration 3 # writes Art/reference/iterations/3/
|
||
```
|
||
|
||
That directory is **gitignored**: iterations stay uncommitted until a shot is confirmed, and only confirmed shots are promoted into `Screenshots/demo/`. The feedback file names the affected skill (`blender-modeler`, `archviz`, `materials`, `lookdev`, `camera-cinematography`) so the next modelling pass has a starting point rather than an opinion.
|
||
|
||
Note the comparison is only meaningful when the shot and the reference frame the same subject — a wide block view measured against a tight façade crop will always report low edge similarity.
|
||
|
||
## Scene conventions
|
||
|
||
- **Demo map** (`/Game/Hollywood/DemoMap`): fixed daytime — sun pitch −62 / yaw 120 (intensity 4, warm), sky light 2.6, sky atmosphere, height fog, fixed exposure.
|
||
- **Cameras**: elevation shots sit at their target height (pitch 0, so verticals stay parallel) and use a 42–68° lens to fill the frame from across the street.
|
||
- **Materials**: every surface carries a look-developed material from `Tools/ue_build_demo_map.py` — noise-blended base colour, masonry coursing, and a generated texture set (`Tools/generate_facade_textures.py`) sampled world-aligned. Explicit roughness and specular per surface type.
|
||
|
||
## Known cosmetic issues
|
||
|
||
Every issue is tracked in `TODO.md` under the version that will fix it; an issue with no ticket is a bug in the plan, not a note.
|
||
|
||
| Issue | Where it is tracked | State |
|
||
| --- | --- | --- |
|
||
| Hero stone renders pale — the material is a procedural graph and a generated texture set, not a measured surface | `0.9.0` → measured material library | Open |
|
||
| Hero façade has no doors at street level left and right of the central bay, and the central-bay elements (columns, stairs, set-back entrance, door frames, signage) are not positioned as the photographs show | `0.9.0` → per-building models, hero façade | Open |
|
||
| Nothing may stand in front of the hero façade that blocks it — no awning, no temporary structure | `0.9.0` → per-building models, hero façade | Open |
|
||
| Retail parapet has no moulded profile, and wall lettering built as a plate does not read at 40 m | `0.9.0` → 6800 Lee Drug and 6806–6820, second pass | Open (moved out of `0.1.6`) |
|
||
| 6822 Budget is a bare blockout volume — no photograph exists to model it from | `0.9.0` → photography gap | Deferred (moved out of `0.1.6`) |
|
||
| Camera collision is implemented but never exercised against a wall | `0.2.0` → camera collision | Open |
|
||
| Skin renders darker than the baked diffuse suggests — the material graph may have been half-rebuilt by a crashed commandlet run | `0.2.2` → skin and hair tuning | Open |
|
||
| The generated pore and strand textures are not wired: the material-editing tool segfaults in the headless commandlet | `0.2.2` → skin and hair tuning | Open |
|
||
| The walk clip has never been captured in motion — it imports and its curves carry the stride, but no shot shows it | `0.2.0` → verify animation plays correctly | Open |
|
||
| Between kerb and building line the walkable surface is the terrain mesh, not a modelled pavement | `0.6.0` → model the pavement between kerb and building line | Open |
|
||
|
||
Accepted by the owner, not a defect:
|
||
|
||
- Banners hang on the column line rather than flush to the wall — that is how they hang in the photographs.
|
||
|
||
Resolved and removed from this list on 2026-11-09:
|
||
|
||
- "The El Capitan Theatre has no marquee or blade sign" — `Tools/ue_stage_theatre_trim.py` stages all six trim actors; verified in `/tmp/gigline/theatre-import.txt`.
|
||
- "Materials are not yet created in Blender or fully integrated" — contradicted by the scene conventions above: every surface carries a look-dev material built in `Tools/ue_build_demo_map.py`.
|