docs(review): split into ReviewMap and DemoMap, with one status table

The review file now separates the two questions it was mixing:

  ReviewMap - assets staged on their own: individual objects, the Blender import, camera angles
  and the lighting comparison. Nothing from the game map is involved.
  DemoMap   - the actual game map in development: street, buildings, player, vehicle in place.

One status table at the top covers both parts, with a Part column, and remains the only place
approval and issue notes are recorded. Between them sits the Blender-vs-UE comparison, which now
pairs ReviewMap captures as well as DemoMap ones, followed by the ReviewMap image grid and the
existing in-game shot sections.

Tools/ue_build_review_map.py also stages the LATEST vehicle assets (five systems plus the hatch
paint) and two new cameras - a three-quarter view of the car and a ground-level look at the
character's feet - so the staging map never drifts from what the Blender tools last produced.
Tools/render_screenshots.sh gained a second capture pass that renders ReviewMap into
Screenshots/review/, after the demo collection because that pass clears the engine's screenshot
folder.
This commit is contained in:
zwitschi committed 2026-11-09 17:34:12 +01:00
1 parent a983dfdcdf
commit 72d5bab427
54 files changed
+254 -112

No files matched your search

+11 -4
View File
@@ -23,6 +23,7 @@ import shutil
import subprocess
DEMO_DIR = "Screenshots/demo"
REVIEW_DIR = "Screenshots/review"
BLENDER_DIR = "Screenshots/blender"
OUT = "Screenshots/README.md"
BEGIN = "<!-- blender-comparison:begin -->"
@@ -43,6 +44,12 @@ SHOT_ALIASES = {
}
def review_shots():
if not os.path.isdir(REVIEW_DIR):
return []
return sorted(f for f in os.listdir(REVIEW_DIR) if f.endswith(".png"))
def demo_shots():
if not os.path.isdir(DEMO_DIR):
return []
@@ -95,15 +102,15 @@ def image_cell(path, width=520):
def build():
shots = demo_shots()
shots = review_shots() + demo_shots()
renders = blender_renders()
lines = [
"## Blender vs in-game",
"### Blender vs in-game",
"",
"Regenerated by `Tools/build_comparison_md.py`; everything between the markers is",
"rewritten, so edit outside them.",
"",
f"- In-game captures: `{DEMO_DIR}/` ({len(shots)} files)",
f"- Captures: `{REVIEW_DIR}/` and `{DEMO_DIR}/` ({len(shots)} files)",
f"- Blender renders: `{BLENDER_DIR}/` ({len(renders)} files), made by `Tools/blender_screenshots.py`",
"",
"Left is what the engine draws, right is what Blender has. A gap between them is the",
@@ -121,7 +128,7 @@ def build():
match = best_blender_match(shot, renders)
paired[shot] = match
lines.append(
f"| {image_cell(f'{DEMO_DIR}/{shot}')} "
f"| {image_cell(f'{REVIEW_DIR if shot in review_shots() else DEMO_DIR}/{shot}')} "
f"| {image_cell(f'{BLENDER_DIR}/{match}' if match else None)} "
f"| `{shot}` |")
if not shots: