diff --git a/Game/GigLine/Content/Hollywood/DemoMap.umap b/Game/GigLine/Content/Hollywood/DemoMap.umap
index 44f8723..8d5cc73 100644
--- a/Game/GigLine/Content/Hollywood/DemoMap.umap
+++ b/Game/GigLine/Content/Hollywood/DemoMap.umap
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:66c7b6b25565c82ea47c120ad9f34395398941fa7b76723c847f89c85f355838
-size 790771
+oid sha256:e8e8e6056aad9c395b764c79c57098470c582875ab290860fd625de46017d552
+size 790759
diff --git a/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset b/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset
index 0703900..272e7e8 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8113cea62d459d08e17410a4c13362c61b1b224e438e412f6543732f70e5ea5d
+oid sha256:1e9423cc6c4cbe910e4ec7189bbb671792d796009eef22f1f8be77c86f7af682
size 10019
diff --git a/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset
index 43d1210..60afdce 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:12c21fd232255beffa0cf6ba332f2f35609752858253ccdd104acfb499652847
+oid sha256:4e13cba57f3a37b4794628d98af64266c3c6009d4991a73f0271e52c4658b98d
size 10024
diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset
index f04e4fa..294bd46 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:32f7888ef1780f13828f0793edfc0c46f415bc3630e39a342441dfdbf3734064
+oid sha256:4af9fa5a26da127df682673e37893e6224ad0c1e66f38a5a18831fc32874c4e9
size 11419
diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset
index 86fcfd1..ec83a9e 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6123a7c8a5e9e16050fdfc49645fcefc87639843b037eaac4251ef4cf9045b45
+oid sha256:c7737882d41b07886e0a1fc9daa112ee524210e7b4f1f3db8e92834d5a0de13e
size 11414
diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset
index a9eae77..eab7036 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b768fb597e1c394d22940ec45022b0dad3f6701cd133960c38adb003b855960f
+oid sha256:e71ca19260cb15c7e9efb804e0620b1cf39329ba4f9b75fa6f536175612a80cc
size 17083
diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset
index b23d899..b7c8c7b 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e5b42cb1a79926a45292a0d4efba0442fceecfb1c4cf90765383204e72db0a14
+oid sha256:dd62a90211e75fb21e3d07d1fc62a6433d7f8295be2b30de48ffcdda14551614
size 17113
diff --git a/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset b/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset
index 9786fa4..5bed471 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3c2cf596c9f1cc226cef51cc0584af7d3d21fe000732e7368e0f1caee4b9d900
+oid sha256:6afa6e8f93e5330104374f5c129b70cc07d3c997189303a1e6ffbbb5b186ac91
size 10014
diff --git a/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset
index 89c4741..5d0bb9b 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:119d6f42402cd555f1b7981f88348677c724d5e3bac01b8dbb933d800f5a1216
+oid sha256:8c05a19d449d1eec60f1fe847d7b7c179ed8b4d7a60f7dee15d436baf3768620
size 10044
diff --git a/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset b/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset
index d03854c..f1b5082 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cc864aa3afd2c398f674b39238afa0cf475a1339c75e453005ee9adf762198e1
+oid sha256:560fcdbdf6e84d32aaa3a6c89cf93e2feffaa322b403a413305bc1cdc9a68cfd
size 10029
diff --git a/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset b/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset
index cc31b68..63d715c 100644
--- a/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:843edb566f4dd0490aa34cf352fb20a5e0dff7cca684f6aaa70600921477bd27
+oid sha256:ed7d707b0c3b4583a1561e55a019588a346ba23988016deb925cac19df2f2827
size 11389
diff --git a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset
index 7d8305b..37b3595 100644
--- a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset
+++ b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:653bc6721818ae1991832be8fc8f982d08b9a2e90ef9c76461664f2a30d7643f
+oid sha256:be54ed748c11716b53db5237515450a4792e2420e1c478a8fc91578c370bb814
size 357901
diff --git a/Game/GigLine/Content/Hollywood/Textures/T_Asphalt_BC.uasset b/Game/GigLine/Content/Hollywood/Textures/T_Asphalt_BC.uasset
index 368c9f4..07b9162 100644
--- a/Game/GigLine/Content/Hollywood/Textures/T_Asphalt_BC.uasset
+++ b/Game/GigLine/Content/Hollywood/Textures/T_Asphalt_BC.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b62efa4776e7f650ab47e3ba8e652e5ef5595398da5240f46989cd30a2796aea
+oid sha256:e30cc022c78b364abb4997b81fe47f2009558e92706a7b54d7bed3916848f929
size 70879
diff --git a/Game/GigLine/Content/Hollywood/Textures/T_Asphalt_R.uasset b/Game/GigLine/Content/Hollywood/Textures/T_Asphalt_R.uasset
index 4462727..b90ef07 100644
--- a/Game/GigLine/Content/Hollywood/Textures/T_Asphalt_R.uasset
+++ b/Game/GigLine/Content/Hollywood/Textures/T_Asphalt_R.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4515a910914ac627e631c9e755f8d23a595a32e1bc94c99c9790add75c87f17c
+oid sha256:700a855abb616493289d3461187ce4b4585105b8fef91194dec0e02ccd3dfe1c
size 29011
diff --git a/Game/GigLine/Content/Hollywood/Textures/T_Concrete_BC.uasset b/Game/GigLine/Content/Hollywood/Textures/T_Concrete_BC.uasset
index e23808e..03b0c7a 100644
--- a/Game/GigLine/Content/Hollywood/Textures/T_Concrete_BC.uasset
+++ b/Game/GigLine/Content/Hollywood/Textures/T_Concrete_BC.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:677b8028974e213e0999977311344110012088e571235c04aa78e5b4f0ef4092
+oid sha256:05ff69bcef569136c79bd50461ad8482012748b1dcfae6c76db42b5591ab51b6
size 58568
diff --git a/Game/GigLine/Content/Hollywood/Textures/T_Concrete_R.uasset b/Game/GigLine/Content/Hollywood/Textures/T_Concrete_R.uasset
index 638a4b6..1fa500d 100644
--- a/Game/GigLine/Content/Hollywood/Textures/T_Concrete_R.uasset
+++ b/Game/GigLine/Content/Hollywood/Textures/T_Concrete_R.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3518efa68d81f07fd8b000b3b703d4edcddc5481e4cc08c07363cb675337e5a9
+oid sha256:18c8c4ca546b1613ba02819b02246ba1b963f9bba6d985eec69fbb6e2d31ec34
size 17517
diff --git a/Game/GigLine/Content/Hollywood/Textures/T_StoneAshlar_BC.uasset b/Game/GigLine/Content/Hollywood/Textures/T_StoneAshlar_BC.uasset
index 8011db9..045b538 100644
--- a/Game/GigLine/Content/Hollywood/Textures/T_StoneAshlar_BC.uasset
+++ b/Game/GigLine/Content/Hollywood/Textures/T_StoneAshlar_BC.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c61e497ebb3806092250ad4dda54dda11e9fd33fb3b251cd8083cad5a816345d
+oid sha256:68b1f2c7636535ff11b10812c13f3bcd27249c0281292f94b2907d54fafb748e
size 40610
diff --git a/Game/GigLine/Content/Hollywood/Textures/T_StoneAshlar_R.uasset b/Game/GigLine/Content/Hollywood/Textures/T_StoneAshlar_R.uasset
index cdce932..6249830 100644
--- a/Game/GigLine/Content/Hollywood/Textures/T_StoneAshlar_R.uasset
+++ b/Game/GigLine/Content/Hollywood/Textures/T_StoneAshlar_R.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3fbbde29f459c00f5dc702fb1a4d22746bea8328734c9fde4d5ee7d5d22811fb
+oid sha256:4bfbe619983c6a667ca3472c96cd3c0311f317f71735601bfb1cf7a07e93c9cc
size 18770
diff --git a/Game/GigLine/Content/Hollywood/Textures/T_Stucco_BC.uasset b/Game/GigLine/Content/Hollywood/Textures/T_Stucco_BC.uasset
index bc038a8..53bc171 100644
--- a/Game/GigLine/Content/Hollywood/Textures/T_Stucco_BC.uasset
+++ b/Game/GigLine/Content/Hollywood/Textures/T_Stucco_BC.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:fa82c5833a002fa2eaf5538dd24fc1836e76c0c13658f70b8d33f1eea4965fd7
+oid sha256:e14562d78d3b74e6da8ff4dad9bf9488e2dba2ab8e76f6545749841d64099228
size 62746
diff --git a/Game/GigLine/Content/Hollywood/Textures/T_Stucco_R.uasset b/Game/GigLine/Content/Hollywood/Textures/T_Stucco_R.uasset
index 922c438..db219f2 100644
--- a/Game/GigLine/Content/Hollywood/Textures/T_Stucco_R.uasset
+++ b/Game/GigLine/Content/Hollywood/Textures/T_Stucco_R.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:066498d03ac532ec9df49446ad531349483a5ab2293456618703eb6e14cbfbbb
+oid sha256:d8d044bbe2cd6bc90cb12755183602c5bebcd12486e13c819e2403533a8e0983
size 17541
diff --git a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSign.uasset b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSign.uasset
index 9227bb5..6881292 100644
--- a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSign.uasset
+++ b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSign.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0d55641cb9d85be0b08b5dad91ebf17d7197200fff055a89bc453ccdc56a77db
+oid sha256:6d375b8f355a77780aeedaf7935ff22401d15c0160ad5c15334f33afb849bd1a
size 72330
diff --git a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSignBracket.uasset b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSignBracket.uasset
index efcacd5..c794efe 100644
--- a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSignBracket.uasset
+++ b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSignBracket.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f78529722048adbf397e254cbdcce293dcaf2ffcab1c9ebf1c14f2e2de66a19c
+oid sha256:c8e51714656b1bb5d2723e2874ce2fcddceff1d5bdc30337d15af750a44b0962
size 72466
diff --git a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSignFrame.uasset b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSignFrame.uasset
index 81b61d0..a826c92 100644
--- a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSignFrame.uasset
+++ b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_BladeSignFrame.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1520abbba5573e8ab6132e7b81f772ee20ca195c808af30bb89f301466726459
+oid sha256:2097251b310e95ff95972b09e72e83d49d31e0085f60cd4d046c41af5a40bcb4
size 72406
diff --git a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeCanopy.uasset b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeCanopy.uasset
index e95be74..4381fed 100644
--- a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeCanopy.uasset
+++ b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeCanopy.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:31455245092bba468439b5659172ea94552382b89b404bf685755a20bbda513e
+oid sha256:e2e27c8ba84ab0b9067bb494841a91f76a224f3d273ff5d8f062efae0ced9ee4
size 72370
diff --git a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeFascia.uasset b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeFascia.uasset
index 43778af..7db9e61 100644
--- a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeFascia.uasset
+++ b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeFascia.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:83a09ea5883aee80be03c7f3e73afc190d4c92408233633164c97b7953e4a871
+oid sha256:50e9319fa32ee1da11a61f01a41703fab32faa464761017da75e563f5d722afb
size 72438
diff --git a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeSoffit.uasset b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeSoffit.uasset
index ec239ea..d7077d5 100644
--- a/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeSoffit.uasset
+++ b/Game/GigLine/Content/Hollywood/Theatre/SM_Trim_MarqueeSoffit.uasset
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4f5df2e7900669431e3f9ac6c676ada5d32d98e95e1a6433844a02803791385b
+oid sha256:8164bf77fad88ddd369d5e33a8ac8427079f57b7b905900f15eec0bfcb8d4227
size 72413
diff --git a/Game/GigLine/Content/Test/ReviewMap.umap b/Game/GigLine/Content/Test/ReviewMap.umap
index b771d6e..fca4bd9 100644
--- a/Game/GigLine/Content/Test/ReviewMap.umap
+++ b/Game/GigLine/Content/Test/ReviewMap.umap
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3eda62300964b27943bbb15e827fcba371d9a01f59932407ee641ed50fdb2188
-size 30542
+oid sha256:2d05bcc27f359ef220100fb9bcd8e79ad9eba96037c4e353f4dbc7dc8e4f5094
+size 38294
diff --git a/Screenshots/README.md b/Screenshots/README.md
index 3e19943..8d72852 100644
--- a/Screenshots/README.md
+++ b/Screenshots/README.md
@@ -1,36 +1,111 @@
-# Screenshots — demo-map visual review
+# Screenshots
-Rendered captures of **the demo map only** — what a player sees when the demo runs. Generated by [`Tools/render_screenshots.sh`](../Tools/render_screenshots.sh); the PNGs are committed so a reviewer sees exactly what the build rendered.
+Two reviews in one file:
-The review staging map (`/Game/Test/ReviewMap`) is not part of this set: it exists to hold the camera list and the hero detail rig, and it is not what ships.
+- **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.
-## How to regenerate
+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).
-```bash
-Tools/render_screenshots.sh --verify
-```
+## Status
-Stages the demo shot cameras, runs the game on `/Game/Hollywood/DemoMap`, copies the PNGs into `Screenshots/demo/` and then runs [`Tools/visual_loop.py`](../Tools/visual_loop.py) `--verify` to check that each shot still shows the content its expectation describes. About a minute.
+**This is the only place approval state and issue notes are recorded.** Every image requires a fresh approval because every image changed.
-## Status at a glance
+| # | 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 | |
+| 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 | |
-**This is the only place approval state is recorded.** Every image below requires a fresh approval because all of them changed; a note in this table is the record, and the per-shot sections describe what a shot should show rather than whether it passed.
+**Status:** ☐ pending · ☑ approved · ☒ rejected. "ReviewMap" rows are asset staging; "DemoMap" rows are the game map.
-| # | Shot | Status | Note |
-| --- | --- | --- | --- |
-| 1 | [spawn-view](#1-spawn-view) | ☐ pending | character and car float |
-| 2 | [street-level](#2-street-level) | ☐ pending | character and car float |
-| 3 | [crossing](#3-crossing) | ☐ pending | |
-| 4 | [north-buildings](#4-north-buildings) | ☐ pending | |
-| 5 | [retail-frontage](#5-retail-frontage) | ☐ pending | |
-| 6 | [third-person](#6-third-person) | ☐ pending | character and car float |
-| 7 | [third-person-front](#7-third-person-front) | ☐ pending | character and car float |
-| 8 | [third-person-walk](#8-third-person-walk) | ☐ pending | character and car float |
-| 9 | [vehicle](#9-vehicle) | ☐ pending | |
-| 10 | [feet](#10-feet) | ☐ pending | |
-| 11 | [wheel](#11-wheel) | ☐ pending | |
+## Blender vs UE
-**Status:** ☐ pending · ☑ approved · ☒ rejected.
+
+
+### 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 |
+| --- | --- | --- |
+|
|
| `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` |
+|
| — | `review-demo-crossing.png` |
+|
| — | `review-demo-feet.png` |
+|
| — | `review-demo-north-buildings.png` |
+|
| — | `review-demo-retail-frontage.png` |
+|
| — | `review-demo-spawn-view.png` |
+|
| — | `review-demo-street-level.png` |
+|
|
| `review-demo-third-person-front.png` |
+|
|
| `review-demo-third-person-walk.png` |
+|
|
| `review-demo-third-person.png` |
+|
|
| `review-demo-vehicle.png` |
+|
| — | `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.
+
+
+
+## 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
@@ -212,36 +287,3 @@ 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`.
-
-
-
-## Blender vs in-game
-
-Regenerated by `Tools/build_comparison_md.py`; everything between the markers is rewritten, so edit outside them.
-
-- In-game captures: `Screenshots/demo/` (11 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 |
-| --- | --- | --- |
-|
| — | `review-demo-crossing.png` |
-|
| — | `review-demo-feet.png` |
-|
| — | `review-demo-north-buildings.png` |
-|
| — | `review-demo-retail-frontage.png` |
-|
| — | `review-demo-spawn-view.png` |
-|
| — | `review-demo-street-level.png` |
-|
|
| `review-demo-third-person-front.png` |
-|
|
| `review-demo-third-person-walk.png` |
-|
|
| `review-demo-third-person.png` |
-|
|
| `review-demo-vehicle.png` |
-|
| — | `review-demo-wheel.png` |
-
-4 of 11 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.
-
-
diff --git a/Screenshots/demo/review-demo-crossing.png b/Screenshots/demo/review-demo-crossing.png
index c081f5e..e820798 100644
--- a/Screenshots/demo/review-demo-crossing.png
+++ b/Screenshots/demo/review-demo-crossing.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a54a6906e12d8cc43a29f7db5014d4f1c87d6e749372c5d1ad3991a5b0ed4a68
-size 3040622
+oid sha256:fa4440e0ee315185460d2cb857c910944508caae4c4cbb825c912f437346f94a
+size 3038398
diff --git a/Screenshots/demo/review-demo-feet.png b/Screenshots/demo/review-demo-feet.png
index dd0c4a0..4c3e566 100644
--- a/Screenshots/demo/review-demo-feet.png
+++ b/Screenshots/demo/review-demo-feet.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9546d4cffd4350d4d690108d81c5e4d4db4b858f51962bd60d984e2544fa1354
-size 2863136
+oid sha256:9d45705f88b2bd95f69bf93a974ccedfece1b6212f803d2e672952a26cd7c834
+size 2860757
diff --git a/Screenshots/demo/review-demo-north-buildings.png b/Screenshots/demo/review-demo-north-buildings.png
index 6d4ab18..56a66d5 100644
--- a/Screenshots/demo/review-demo-north-buildings.png
+++ b/Screenshots/demo/review-demo-north-buildings.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ac1c17aaf2b5624e0c46c81d8abf1b77e327602a37bb2596cc6c7f833f8dfb4d
-size 2596266
+oid sha256:ecad7be96c671f077c71058d6ebc300dc7f8b3438f224c386c8b7d147312a335
+size 2598985
diff --git a/Screenshots/demo/review-demo-retail-frontage.png b/Screenshots/demo/review-demo-retail-frontage.png
index fdb204a..3df2eb7 100644
--- a/Screenshots/demo/review-demo-retail-frontage.png
+++ b/Screenshots/demo/review-demo-retail-frontage.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9a317db65c66b222046dea689305db27d1ad2a7cdf612ff4bc19d91456a41ef5
-size 2470185
+oid sha256:46cd18f38a1d8337c3f88ff772e8bddad07f11ad4533071d9b3ed8a1fe00efe3
+size 2468688
diff --git a/Screenshots/demo/review-demo-spawn-view.png b/Screenshots/demo/review-demo-spawn-view.png
index 3f915aa..41b60d7 100644
--- a/Screenshots/demo/review-demo-spawn-view.png
+++ b/Screenshots/demo/review-demo-spawn-view.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:18701b437ef1040cc32b49c6478e362aded91f2300ac46a27538be1258838162
-size 2877752
+oid sha256:5e8c4fbc9dfa291532e3fc100c5456ffdf360b7903e01add827e5446a84bea42
+size 2876459
diff --git a/Screenshots/demo/review-demo-street-level.png b/Screenshots/demo/review-demo-street-level.png
index d8a8def..24c5932 100644
--- a/Screenshots/demo/review-demo-street-level.png
+++ b/Screenshots/demo/review-demo-street-level.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d97dcb2e8d3d6a6b2cd0cc9b8f1a9d081231fa2f07a176be8794834baea9c00e
-size 2754595
+oid sha256:488cf3c330f7c4e49194a447305d10fa5a15ddc489c164fa398896d80cce9fcc
+size 2756207
diff --git a/Screenshots/demo/review-demo-third-person-front.png b/Screenshots/demo/review-demo-third-person-front.png
index 99a9304..1551664 100644
--- a/Screenshots/demo/review-demo-third-person-front.png
+++ b/Screenshots/demo/review-demo-third-person-front.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b25c9a3a6f14e7b0d397ec8653734530196fb60bd3b9c0b35470724b1cfb568c
-size 2779065
+oid sha256:0057090fa8103aa59a5ac9e730add40023feeb06e7a13cd41c0134ad25beda14
+size 2780529
diff --git a/Screenshots/demo/review-demo-third-person-walk.png b/Screenshots/demo/review-demo-third-person-walk.png
index 2470dba..d053791 100644
--- a/Screenshots/demo/review-demo-third-person-walk.png
+++ b/Screenshots/demo/review-demo-third-person-walk.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ff4c0f854e4ac2ca62710a10255226240d186582eb8daeea068e43c51e1640ee
-size 2169983
+oid sha256:e56462c9564b9ab71da51f8de66534b730d6e834d27f0a57083fcb767b74967c
+size 2170342
diff --git a/Screenshots/demo/review-demo-third-person.png b/Screenshots/demo/review-demo-third-person.png
index 7535e3e..2d047e6 100644
--- a/Screenshots/demo/review-demo-third-person.png
+++ b/Screenshots/demo/review-demo-third-person.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9dbb7d06be7625329a30563aebf27209cddaad70be0a73a733df8260431c16ce
-size 2936234
+oid sha256:f8553eeb7c9c638c0f9d4e4768f814d09820262f4fab3bbd723a5300b7849ca9
+size 2933420
diff --git a/Screenshots/demo/review-demo-vehicle.png b/Screenshots/demo/review-demo-vehicle.png
index f5b9f03..734e9e9 100644
--- a/Screenshots/demo/review-demo-vehicle.png
+++ b/Screenshots/demo/review-demo-vehicle.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d8581abfd44679af683e619c671912667db40f4f7a14dad4d8f91eb7a60a05d2
-size 2977323
+oid sha256:56048e15b5333ed602620ac9472252efc641dad7cf47890db78d2e9f411e318f
+size 2977090
diff --git a/Screenshots/demo/review-demo-wheel.png b/Screenshots/demo/review-demo-wheel.png
index d0086ef..32b58e9 100644
--- a/Screenshots/demo/review-demo-wheel.png
+++ b/Screenshots/demo/review-demo-wheel.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:a8a93573b7ad3ed94c66a4bfd9db149cfe2af9728523239bc28703c0ebec1976
-size 2798645
+oid sha256:d92d28fb07eca01ac9092ad3c30ac7757902e88a25561361684f4afbc25db2a6
+size 2795686
diff --git a/Screenshots/review/review-character-feet.png b/Screenshots/review/review-character-feet.png
new file mode 100644
index 0000000..2859136
--- /dev/null
+++ b/Screenshots/review/review-character-feet.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:619c5617afaba38b0e72223151a6b09571e20cad793f0bd82dfe1e07193bba79
+size 2014744
diff --git a/Screenshots/review/review-character.png b/Screenshots/review/review-character.png
new file mode 100644
index 0000000..f31214f
--- /dev/null
+++ b/Screenshots/review/review-character.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c0a9fd5500f7000b7c3194b7cfe3795c9a3417210b730b0f8282e7904a3647d
+size 2337464
diff --git a/Screenshots/review/review-ground-contact.png b/Screenshots/review/review-ground-contact.png
new file mode 100644
index 0000000..e82e979
--- /dev/null
+++ b/Screenshots/review/review-ground-contact.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4df1d6d8a47f9c20e41677128b1e71fbdaba7be0785a7b66a6ef15b091ff188
+size 1770961
diff --git a/Screenshots/review/review-hero-facade-front.png b/Screenshots/review/review-hero-facade-front.png
new file mode 100644
index 0000000..d505dd9
--- /dev/null
+++ b/Screenshots/review/review-hero-facade-front.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ff793f14ef7528c87537bc93c6734077724c437c5c43ef5c22a8962cf193190
+size 2330892
diff --git a/Screenshots/review/review-hero-facade-oblique.png b/Screenshots/review/review-hero-facade-oblique.png
new file mode 100644
index 0000000..af3622e
--- /dev/null
+++ b/Screenshots/review/review-hero-facade-oblique.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:925731fbf215e360b3411127b94232f88578617fa232c4c978e55702d4e63632
+size 1576304
diff --git a/Screenshots/review/review-hero-portals.png b/Screenshots/review/review-hero-portals.png
new file mode 100644
index 0000000..5fc4409
--- /dev/null
+++ b/Screenshots/review/review-hero-portals.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:15ca71e7650e5212de2675c66898cd2f4cd3df353cef52dbbb027047ba4c74f6
+size 1327492
diff --git a/Screenshots/review/review-npc-prefab.png b/Screenshots/review/review-npc-prefab.png
new file mode 100644
index 0000000..d060f25
--- /dev/null
+++ b/Screenshots/review/review-npc-prefab.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9c147ff0e06c6340403f2e28a20f2e726531e415c552226471483d386cb1aa2
+size 1723036
diff --git a/Screenshots/review/review-overview.png b/Screenshots/review/review-overview.png
new file mode 100644
index 0000000..951819c
--- /dev/null
+++ b/Screenshots/review/review-overview.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5f4899d0d1398207b317c7f477a162ce4d9a71aab763003d019b5f84cd7ce27
+size 2451550
diff --git a/Screenshots/review/review-player-placement.png b/Screenshots/review/review-player-placement.png
new file mode 100644
index 0000000..c2dbfae
--- /dev/null
+++ b/Screenshots/review/review-player-placement.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e8aa336f67e2902f21e2b808d228f4d04660cec2e0eb5ef3fbf229407d98b514
+size 1642872
diff --git a/Screenshots/review/review-scale-cubes.png b/Screenshots/review/review-scale-cubes.png
new file mode 100644
index 0000000..323fb80
--- /dev/null
+++ b/Screenshots/review/review-scale-cubes.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47dec4349e2f72e3d828151d83d0811d6bd8dd5b3d848a8bb5c9271c69f961c2
+size 1799988
diff --git a/Screenshots/review/review-shadow-compare.png b/Screenshots/review/review-shadow-compare.png
new file mode 100644
index 0000000..9425f8d
--- /dev/null
+++ b/Screenshots/review/review-shadow-compare.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4d363d183d70d721c4e7ffca85ae63f2785899f771da1bdcc999826e6ef87bc
+size 1805446
diff --git a/Screenshots/review/review-vehicle.png b/Screenshots/review/review-vehicle.png
new file mode 100644
index 0000000..54292f5
--- /dev/null
+++ b/Screenshots/review/review-vehicle.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d8109efce42370adf2f737fd6ed9a94d58bcc3dac0dc3fab2b113bdee924d41
+size 2519685
diff --git a/Tools/build_comparison_md.py b/Tools/build_comparison_md.py
index bcc6684..6193c2f 100644
--- a/Tools/build_comparison_md.py
+++ b/Tools/build_comparison_md.py
@@ -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 = ""
@@ -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:
diff --git a/Tools/render_screenshots.sh b/Tools/render_screenshots.sh
index 23170d2..c5603d1 100755
--- a/Tools/render_screenshots.sh
+++ b/Tools/render_screenshots.sh
@@ -69,6 +69,33 @@ done
[ "$found" = "1" ] || { echo "ERROR: no demo screenshots found"; exit 1; }
ls -1 "$REPO/Screenshots/demo"
+echo "== 6b/7 capture the review map (asset staging) =="
+# The ReviewMap stages the models on their own - imported assets, camera angles and the
+# lighting comparison - which is a different question from "does the game map look right".
+# Its shots collect into Screenshots/review/ so the two reviews stay separate.
+rm -rf "$REPO"/Game/GigLine/Saved/Screenshots/* 2>/dev/null || true
+mkdir -p "$REPO/Game/GigLine/Saved/Screenshots/LinuxEditor"
+"$ENGINE/Engine/Binaries/Linux/UnrealEditor-Cmd" "$PROJ" /Game/Test/ReviewMap \
+ -game -windowed -ResX=1920 -ResY=1080 -nopause -nosplash -stdout
+
+echo "== 6c/7 collect the review-map screenshots =="
+mkdir -p "$REPO/Screenshots/review"
+rm -f "$REPO"/Screenshots/review/review-*.png
+found_review=0
+for src in \
+ "$REPO/Game/GigLine/Saved/Screenshots"/*/review-*.png \
+ "$REPO/Game/GigLine/Saved/Screenshots"/*/*/review-*.png \
+ "$HOME/.config/Epic/GigLine/Saved/Screenshots"/*/review-*.png; do
+ [ -e "$src" ] || continue
+ case "$(basename "$src")" in
+ *demo-*) : ;;
+ *) cp -f "$src" "$REPO/Screenshots/review/"; found_review=1 ;;
+ esac
+done
+[ "$found_review" = "1" ] || echo "WARN: no review-map screenshots found"
+ls -1 "$REPO/Screenshots/review" 2>/dev/null | head -20
+
+
# The scene audit is a gate: a wrong-material or misplaced actor is exactly the
# kind of failure that still renders plausibly.
if grep -q "failure(s) ==" /tmp/gigline/scene-audit.txt 2>/dev/null; then
diff --git a/Tools/ue_build_review_map.py b/Tools/ue_build_review_map.py
index 9a7d5c5..da3bbf7 100644
--- a/Tools/ue_build_review_map.py
+++ b/Tools/ue_build_review_map.py
@@ -192,6 +192,32 @@ try:
else:
log("MISSING: /Script/GigLine.GigLineCharacter")
+ # --- vehicle, from the latest Blender import ------------------------------
+ # Staged from the same assets the demo map uses, so the review always shows what
+ # Tools/vehicle_from_template.py most recently produced rather than a copy that can
+ # drift. The panels are plain static meshes because the vehicle pawn keeps its
+ # physics only.
+ vehicle_origin = unreal.Vector(-1600.0, 600.0, 0.0)
+ vehicle_systems = ("SM_Vehicle_Body", "SM_Vehicle_Trim", "SM_Vehicle_Glass",
+ "SM_Vehicle_Lights", "SM_Vehicle_Wheels")
+ staged_vehicle = 0
+ for index, mesh_name in enumerate(vehicle_systems):
+ mesh = unreal.EditorAssetLibrary.load_asset(f"/Game/Hollywood/Vehicle/{mesh_name}")
+ if not mesh:
+ log(f"MISSING vehicle system: {mesh_name}")
+ continue
+ piece = spawn(unreal.StaticMeshActor, vehicle_origin, f"Review_Vehicle_{index:02d}")
+ if piece:
+ piece.static_mesh_component.set_static_mesh(mesh)
+ piece.static_mesh_component.set_mobility(unreal.ComponentMobility.STATIC)
+ if mesh_name == "SM_Vehicle_Body":
+ paint = unreal.EditorAssetLibrary.load_asset(
+ "/Game/Hollywood/Vehicle/M_Vehicle_HatchPaint")
+ if paint:
+ piece.static_mesh_component.set_material(0, paint)
+ staged_vehicle += 1
+ log(f"staged: {staged_vehicle} vehicle systems at the staging area")
+
# --- NPC prefab -----------------------------------------------------------
# The reusable NPC person: a collision capsule + visible MPFB body, standing
# feet on Z 0, placed clear of the pawn so the prefab reads on its own.
@@ -211,6 +237,10 @@ try:
cams = [
# wide scene: character, both cubes, floor
("overview", unreal.Vector(700, -900, 620), unreal.Vector(0, 300, 80)),
+ # the vehicle staging, three-quarter front, same framing idea as the demo shot
+ ("vehicle", unreal.Vector(-900, -200, 260), unreal.Vector(-1600, 600, 90)),
+ # ground-level contact check: feet on the floor, shadow at the contact point
+ ("character-feet", unreal.Vector(220, -420, 45), unreal.Vector(0, 0, 25)),
# the MPFB mannequin, mid shot
("character", unreal.Vector(200, -300, 160), unreal.Vector(0, 0, 85)),
# both cubes from the south: contact shadow vs cast shadow