From 4b9ad2210807f17feb0cfdf81f38908e5f4157ad Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Mon, 9 Nov 2026 12:55:53 +0100 Subject: [PATCH] fix(walk): the cycle starts at maximum stride, so the capture shows one The stride shot regressed twice for two different reasons, and only the second was the clip. The walk cycle was authored on a sine, which is zero at both the start and the middle of the cycle - exactly the two frames where the legs pass together - so a deterministic capture at any phase near those frames read as a still. The probe proved it: frames 0 and 15 carried identical hip rotations while 7 and 22 were the stride. The cycle now starts at maximum stride (cosine). Length, amplitudes, keys and loop are unchanged; only the phase moved. demo-third-person-walk is back as shot 8 and shows a genuine stride with the curled hands from 0.2.1. 8/8 shots verify. --- Game/GigLine/Content/Hollywood/DemoMap.umap | 4 ++-- .../Content/Hollywood/Site/M_Asphalt.uasset | 2 +- .../Content/Hollywood/Site/M_Concrete.uasset | 2 +- .../Content/Hollywood/Site/M_FacadeBanner.uasset | 2 +- .../Content/Hollywood/Site/M_FacadeGlass.uasset | 2 +- .../Content/Hollywood/Site/M_FacadeStone.uasset | 2 +- .../Hollywood/Site/M_FacadeStoneShadow.uasset | 2 +- .../GigLine/Content/Hollywood/Site/M_Ground.uasset | 2 +- .../Content/Hollywood/Site/M_KerbConcrete.uasset | 2 +- .../Content/Hollywood/Site/M_RoadPaint.uasset | 2 +- .../GigLine/Content/Hollywood/Site/M_Stucco.uasset | 2 +- .../Content/Hollywood/Site/Terrain_DEM.uasset | 2 +- .../Content/Hollywood/Textures/T_Asphalt_BC.uasset | 2 +- .../Content/Hollywood/Textures/T_Asphalt_R.uasset | 2 +- .../Hollywood/Textures/T_Concrete_BC.uasset | 2 +- .../Content/Hollywood/Textures/T_Concrete_R.uasset | 2 +- .../Hollywood/Textures/T_StoneAshlar_BC.uasset | 2 +- .../Hollywood/Textures/T_StoneAshlar_R.uasset | 2 +- .../Content/Hollywood/Textures/T_Stucco_BC.uasset | 2 +- .../Content/Hollywood/Textures/T_Stucco_R.uasset | 2 +- .../Hollywood/Theatre/SM_Trim_BladeSign.uasset | 2 +- .../Theatre/SM_Trim_BladeSignBracket.uasset | 2 +- .../Theatre/SM_Trim_BladeSignFrame.uasset | 2 +- .../Hollywood/Theatre/SM_Trim_MarqueeCanopy.uasset | 2 +- .../Hollywood/Theatre/SM_Trim_MarqueeFascia.uasset | 2 +- .../Hollywood/Theatre/SM_Trim_MarqueeSoffit.uasset | 2 +- .../Content/Test/Character/CharacterV4.uasset | 3 +++ .../CharacterV4Human_rig_GigLine_Idle.uasset | 3 +++ .../CharacterV4Human_rig_GigLine_Walk.uasset | 3 +++ .../Test/Character/CharacterV4_Skeleton.uasset | 3 +++ Game/GigLine/Content/Test/ReviewMap.umap | 2 +- Game/GigLine/Source/GigLine/GigLineCharacter.cpp | 6 +++--- Screenshots/README.md | 14 +++++++++++++- Screenshots/demo/review-demo-crossing.png | 4 ++-- Screenshots/demo/review-demo-north-buildings.png | 4 ++-- Screenshots/demo/review-demo-retail-frontage.png | 4 ++-- Screenshots/demo/review-demo-spawn-view.png | 4 ++-- Screenshots/demo/review-demo-street-level.png | 4 ++-- .../demo/review-demo-third-person-front.png | 4 ++-- Screenshots/demo/review-demo-third-person-walk.png | 3 +++ Screenshots/demo/review-demo-third-person.png | 4 ++-- TODO.md | 4 +++- Tools/character_anim_build.py | 5 ++++- Tools/ue_build_review_map.py | 3 ++- Tools/ue_character_anim_import.py | 2 +- Tools/visual_targets.json | 12 ++++++++++++ 46 files changed, 95 insertions(+), 50 deletions(-) create mode 100644 Game/GigLine/Content/Test/Character/CharacterV4.uasset create mode 100644 Game/GigLine/Content/Test/Character/CharacterV4Human_rig_GigLine_Idle.uasset create mode 100644 Game/GigLine/Content/Test/Character/CharacterV4Human_rig_GigLine_Walk.uasset create mode 100644 Game/GigLine/Content/Test/Character/CharacterV4_Skeleton.uasset create mode 100644 Screenshots/demo/review-demo-third-person-walk.png diff --git a/Game/GigLine/Content/Hollywood/DemoMap.umap b/Game/GigLine/Content/Hollywood/DemoMap.umap index b637e60..882a6ce 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:12a27a9379b6b9dff5fe1cf0905ba31e8343182d0a880d4365aedfadef4b6dc3 -size 782107 +oid sha256:8ee1152c552fe9c5adb248bbe37d7eee916491de53342e333bbdec1b0be87d85 +size 782209 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset b/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset index f23be43..9cc902d 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:00a3d4a2ead0015045feca70a2b66c664118509804bb4b74cb6d5b0a9fdc019f +oid sha256:651f952a6d2ffbc17a6b2ffc3135c6c0dc34a44586df13a33407f624ba2a08d2 size 10019 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset index 91504db..3b636f6 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:e508819134dadaa487dc4b2834217bfab44e4e3101cbb3b5e64162d91a20c5e1 +oid sha256:fca615e16e91bccb675c1c488909bb040545b94f9c7c8939f19c402c27c5ae12 size 10024 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset index 68bc9d9..5efcdd3 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:eb8b064007e84b1dfc0d989ca906f3cc61172308ede7f32a400622fe8836b3d6 +oid sha256:c6a7eb30e172a1b47f7227906b10b1fe48461538fa58589a8c0342cadfbf7ec7 size 11419 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset index 7294253..0c5a4e9 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:acae0a5a37c9d2d8052acb8725dd286018a9f49fb2634ded2be974fb54f6f300 +oid sha256:47127423d51096bf371229d628bc8b2746507fa7ce194a910b5d84394038ca40 size 11414 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset index a0e9e07..6b0038a 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:4f7710cf48b6d27f7034713279561a1972044a297064309ccb37d1199dafee33 +oid sha256:574b0b126316cd397dcf6d3333973a864316cfe5ace05c1902dc016556eb5507 size 17083 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset index ae673ab..dca95b7 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:dfcae1c589143c0de5688ea34532af1186907a442c5c94c8184c8e308a3f8ec1 +oid sha256:92dcffb33f436b87cfc968ae186251724c3d01699d6dbbbcee597fc4101ff8ed size 17113 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset b/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset index 7e0e722..4edbaa8 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:85009d935f2683b0b440b112209be9aee49dc4cf8924dded35a6e60fa7e3a43f +oid sha256:19064403d1e3aa6e5136b9f0c380d8bba4a8995217dd125b1a6439daabb1c957 size 10014 diff --git a/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset index d6a4ab0..f4e3ec4 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:5cdedf30616040ce4de93c5c74160b086c6c0b09e9ae7d7fa3caa8661adaaae3 +oid sha256:7769b486798ff7102a91e7f15efe79fc50d01d0e9294f56c9e0234312f0d725f size 10044 diff --git a/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset b/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset index 31689f7..05ae287 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:d92d376df70a9d9b2a769fba3f5754bb10d57ee2b65d7264dcdc3535d7fd837a +oid sha256:bc564e79b15bc4f8017f86a0ff4be08972239fcc1504bdb3b6a9b2484c3a151b size 10029 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset b/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset index 691f6e3..75c5373 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:f32c06533a16c7798ba30afaba311bb5178dd9c4bec1430caedce80710f2c712 +oid sha256:b88198d114a9df941d9d5c336e1e6d6e0f9afde9c745140c2f5bfb510d63ceee size 11389 diff --git a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset index 4e08530..c8f5581 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:ee771bb67ad4678e7273546d44ea327650a869b5f1ecebe2f8559cfb70561ab2 +oid sha256:af790678e731b1dd4ac4f34771aeef9c1be89edc932ed2de83bb7b7494de32f8 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 f6bf938..e577000 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:8fef2e6dd2b6640ee222e6510b179bf529b5b81c55ead1901abbfb9159888049 +oid sha256:7acd6f954ee57bf6b65e08c2677839dfd8a1b16fbf298d4b1e34b743fc628b5b 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 1a26cc4..34afc73 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:c495da15cfc3614e14521cff5b48d860d0f4d29c00b8cf62cbc62a6930639303 +oid sha256:bc96f07a2f92b97a407fba04032639731256434e3604b85ded787f78bc517159 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 c5b63db..8e01e45 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:9565397a4274d7cf0c074b5f10a5762f2c554a885b4438517cbc8ee4c40b008b +oid sha256:f32ca16fd7c706d03b591ae308ff386d39c73e80de802a79b529010caf69b7f9 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 831fbca..677f4a7 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:68df7337ae648dc116245895f8f63614bd96569ceb92e588de9bdffd67101fa1 +oid sha256:c7caace9c1e1b5d91c2b1b5b909a6483724f970d67e0be3b900ab2d248d355ca 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 d5035bc..283960f 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:cc27bdab48db37c71c9bff768e54bcb4cad1e9978e98c775e9a3a53ca8b87d8b +oid sha256:7841d3f1617542f32fc60bb36d8c7274e1fef97d70ced199012a03ea33d3a2e3 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 07d1370..95e01e6 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:deda6f5aa8c6c73e0cc0f2367d8679bd89bef196099dc9768cc64a69f3e47b14 +oid sha256:3b44d0b794082a1f897057bf3925dcd9eac74d66ae424b986402b4d862ce287f 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 052e762..0595cbf 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:1b517d6d3b2226e32bb53709f198ae413e4a55fbf6b515d6c2e91b4806055c50 +oid sha256:273a5cfb0fb8a34bb0d98fac9ef43e6277a0de3aca76a3326384a03f9c030da5 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 ec3bb42..7081b75 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:5f705c2278152348dc0549654a2cea13a5ccf1174780c00aaf4ed5021d0788fe +oid sha256:83f8f70607f1207474b73ad5828b77cd35dcc32b484c4301783f1f54e527c48a 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 5f8cd3d..865dec2 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:a3a739fb6731cbd80751486373f9b9ab7078afa9bcc143cf43b04a19d45dbad6 +oid sha256:5aef601f1bcbb16f789ff3416f5f30a2757433c8e4bc61d38492c46c4df50fc6 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 4e79ac6..e033655 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:3a307a4abdae450def222296e9bd73748492567fb2506c262c2e227591a7fa8d +oid sha256:665e70443277d4741f3bb88e2508703e57d851e5dd80b987e5d359f8e571cb2a 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 61bd99c..998ac9d 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:7ddee1b0d73f090b709010a74d9bed2d490f281b3cd1717dfd8f64aeebc1b6d7 +oid sha256:df0ca8d0c679a6ba6cda8930e995a2617bfafcb84dffc47fd3f750ec707ebe8f 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 94bd534..5ec1856 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:fe9a39f4293024f5e41d30a412391fe7d5f4fc742819cf077749f7cab6fba79c +oid sha256:284e2d0c031ce2f0fada9a52c850f94ce16cfce6b907f1d8fcbe6849be96488c 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 669ff5b..87f60eb 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:09b00a455dcefbd68ba92c4038cd233806b7af2bba4c1d5203fd9f4c2842ecf0 +oid sha256:537d5b86cc5023005c15e07c209c1815ec99ea12b01861333049bb7a3807a695 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 84bb5a2..a001306 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:11266e26dd271d7b09265b0d5f832939779d2d1c05ce5dd89be0698dc704f602 +oid sha256:44f285bc9dc54018cf9b670ad9f910663104ccd16aaea45171ebe919980aba9b size 72413 diff --git a/Game/GigLine/Content/Test/Character/CharacterV4.uasset b/Game/GigLine/Content/Test/Character/CharacterV4.uasset new file mode 100644 index 0000000..deaa9bd --- /dev/null +++ b/Game/GigLine/Content/Test/Character/CharacterV4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8706b3e162c12dc36fbec55037f7e797616de89659169981629295e6c62a0493 +size 3751004 diff --git a/Game/GigLine/Content/Test/Character/CharacterV4Human_rig_GigLine_Idle.uasset b/Game/GigLine/Content/Test/Character/CharacterV4Human_rig_GigLine_Idle.uasset new file mode 100644 index 0000000..79bb2f4 --- /dev/null +++ b/Game/GigLine/Content/Test/Character/CharacterV4Human_rig_GigLine_Idle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dda5c68abec6b2f0c74c40349ba1f8804e6ce2a6c5423477753b87bc4cb1d9c4 +size 421105 diff --git a/Game/GigLine/Content/Test/Character/CharacterV4Human_rig_GigLine_Walk.uasset b/Game/GigLine/Content/Test/Character/CharacterV4Human_rig_GigLine_Walk.uasset new file mode 100644 index 0000000..e0c42d7 --- /dev/null +++ b/Game/GigLine/Content/Test/Character/CharacterV4Human_rig_GigLine_Walk.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b59c226731feb3a797312b6220bcc86d8a4a35337cb7f9cb6f26fdbe2e302ee +size 432625 diff --git a/Game/GigLine/Content/Test/Character/CharacterV4_Skeleton.uasset b/Game/GigLine/Content/Test/Character/CharacterV4_Skeleton.uasset new file mode 100644 index 0000000..3de1f5f --- /dev/null +++ b/Game/GigLine/Content/Test/Character/CharacterV4_Skeleton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e5ff2b06c0e145c30ecbade2e54d5e316995fcca1068d3333bfe76a8096c8e7 +size 29868 diff --git a/Game/GigLine/Content/Test/ReviewMap.umap b/Game/GigLine/Content/Test/ReviewMap.umap index c90f5c0..3401d4d 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:937d1d44a4049cc500b67db5d445a9f86e33d71ac2c6c42d8f6eab23528e1006 +oid sha256:f7625816e4fb9cad4eb1fb6aaefca5c3be516609ca1cfd775dbaf639ebb2b892 size 29389 diff --git a/Game/GigLine/Source/GigLine/GigLineCharacter.cpp b/Game/GigLine/Source/GigLine/GigLineCharacter.cpp index 17f34ee..a4483e6 100644 --- a/Game/GigLine/Source/GigLine/GigLineCharacter.cpp +++ b/Game/GigLine/Source/GigLine/GigLineCharacter.cpp @@ -60,7 +60,7 @@ AGigLineCharacter::AGigLineCharacter() // clips resolve without a retarget step; it is hidden while the first-person // camera is active and shown in third person. static ConstructorHelpers::FObjectFinder BodyFinder( - TEXT("/Game/Test/Character/CharacterV3.CharacterV3")); + TEXT("/Game/Test/Character/CharacterV4.CharacterV4")); if (BodyFinder.Succeeded()) { GetMesh()->SetSkeletalMesh(BodyFinder.Object); @@ -74,13 +74,13 @@ AGigLineCharacter::AGigLineCharacter() GetMesh()->SetMaterial(0, SkinFinder.Object); } static ConstructorHelpers::FObjectFinder IdleFinder( - TEXT("/Game/Test/Character/CharacterV3Human_rig_GigLine_Idle.CharacterV3Human_rig_GigLine_Idle")); + TEXT("/Game/Test/Character/CharacterV4Human_rig_GigLine_Idle.CharacterV4Human_rig_GigLine_Idle")); if (IdleFinder.Succeeded()) { IdleAnimation = IdleFinder.Object; } static ConstructorHelpers::FObjectFinder WalkFinder( - TEXT("/Game/Test/Character/CharacterV3Human_rig_GigLine_Walk.CharacterV3Human_rig_GigLine_Walk")); + TEXT("/Game/Test/Character/CharacterV4Human_rig_GigLine_Walk.CharacterV4Human_rig_GigLine_Walk")); if (WalkFinder.Succeeded()) { WalkAnimation = WalkFinder.Object; diff --git a/Screenshots/README.md b/Screenshots/README.md index fafd916..6e1503a 100644 --- a/Screenshots/README.md +++ b/Screenshots/README.md @@ -132,6 +132,19 @@ What it shows: the arms hang down with a soft elbow bend, the hands sit at hip h --- +## 8. Third-person walk + +![Third-person walk: the body mid-stride in profile](demo/review-demo-third-person-walk.png) + +- **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 body mid-stride in profile — legs apart, arms counter-swinging +- **Verified:** ☑ 2026-11-09 · **Approved:** ☐ pending + +**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. + +--- + ## 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: @@ -161,7 +174,6 @@ Every issue is tracked in `TODO.md` under the version that will fix it; an issue | 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`) | -| The stride shot shows a standing pose again since the finger-curl and derived-arm change; the walk clip plays (`speed=28 clip=GigLine_Walk` in the probe) but the capture lands on a still | `0.2.3` → camera and capture fixes | Open | | Camera collision is implemented but never exercised against a wall | `0.2.0` → camera collision | 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 | diff --git a/Screenshots/demo/review-demo-crossing.png b/Screenshots/demo/review-demo-crossing.png index c4c9b4c..25a7e37 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:4301688ab5960c30acc828970e041db4a3b92f4a0272fbbae53a921454eb9e4e -size 3090699 +oid sha256:04815c57a62d8dbf49e2b865bfe80d3086eb0018935f97e4b37fc731b5728b15 +size 3089627 diff --git a/Screenshots/demo/review-demo-north-buildings.png b/Screenshots/demo/review-demo-north-buildings.png index d455b1d..308d3df 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:2c7f9f62da9e5375878c27d86655f49b9a8bc741f7b85fedfbd3c4b13b6eb75b -size 2619174 +oid sha256:03e809eb6030933ae54976bc99802acb7db55cf0f07291def52eb7bbe5a7dc7a +size 2619660 diff --git a/Screenshots/demo/review-demo-retail-frontage.png b/Screenshots/demo/review-demo-retail-frontage.png index 5838c64..dd45ed0 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:e3104d6bf2c52b0f350beadd2944207f55eece25027da1837e08b81cf3d1457f -size 2523127 +oid sha256:54cd2f15447c2bc8edc7a3318d0c9c1ffeca6a7f7f0f61296218f395135ba9d9 +size 2522842 diff --git a/Screenshots/demo/review-demo-spawn-view.png b/Screenshots/demo/review-demo-spawn-view.png index 148f9b9..680706a 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:44170ad1ac9efc2a7cc0bf9d6a46f734686ecb6f42401bb62119e90d1883257d -size 2930464 +oid sha256:72a75a105c2a4519309870e6dae33af21d377ca5b2295369366aa6f9b8bd60ea +size 2931849 diff --git a/Screenshots/demo/review-demo-street-level.png b/Screenshots/demo/review-demo-street-level.png index cc1a2d8..50eddb0 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:57393b40b05ddad5d5b12fcc1fb42c694cf50950fb2ca3d9ed84fbf4f9fa558f -size 2850874 +oid sha256:517e9a5c943b2f7cbacbff26baab8d50d2de9c064d055e5f54870bfe17ccdbca +size 2849623 diff --git a/Screenshots/demo/review-demo-third-person-front.png b/Screenshots/demo/review-demo-third-person-front.png index ac772ce..6b0a38f 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:0bb7431082f3fd77f270c0c1975f7ef03864c6bcd75215f40cf1a6eab78ba1e7 -size 2796856 +oid sha256:d902db3e0d2bfbd32eab5b72b2a0737231f814612175c6b0e0c329929d7eb2c4 +size 2792211 diff --git a/Screenshots/demo/review-demo-third-person-walk.png b/Screenshots/demo/review-demo-third-person-walk.png new file mode 100644 index 0000000..70f62d0 --- /dev/null +++ b/Screenshots/demo/review-demo-third-person-walk.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e38a6612aeddd93205ce62fd693d6dcf84dff8f84168a36074fc771fd99dca1a +size 2584712 diff --git a/Screenshots/demo/review-demo-third-person.png b/Screenshots/demo/review-demo-third-person.png index a93ff0f..37e850f 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:d88e1e43441d2d721ab54d3815a085be1a068a37e161c425ec34d0ef917b08ae -size 2996651 +oid sha256:a7ce29fc68f463b32b4e99cbe7fbde99b87e0bc915d06e7aac98d87604164c88 +size 2998930 diff --git a/TODO.md b/TODO.md index b58841c..b29c62d 100644 --- a/TODO.md +++ b/TODO.md @@ -11,7 +11,9 @@ Actionable task list for this project. This file is the single, central place fo ## 0.2.2 — Skin and hair tuning (patch) -### Patch tasks +### Patch tasks - active - session-5598ce7e-27e3-4c64-bb49-c04a4a31ee58 (branch `anim-body-0.2.0`) + +- [x] Restore the stride capture after the pose rewrite. The walk cycle started on a **sine**, zero at both the start and the middle of the cycle, so the deterministic capture kept landing on the two passing frames where the legs are together. Starting the cycle at maximum stride (cosine) fixed it with no other change; `demo-third-person-walk` is back as shot 8 and shows a genuine stride. - [ ] Tune skin shading and hair materials on the player character. - [ ] Tag `v0.2.2` and write `CHANGELOG.md` entry; then remove this section. diff --git a/Tools/character_anim_build.py b/Tools/character_anim_build.py index 19dd48c..16ec71b 100644 --- a/Tools/character_anim_build.py +++ b/Tools/character_anim_build.py @@ -274,7 +274,10 @@ def clip_walk(arm, frames): for frame in range(1, frames + 1): t = 2.0 * math.pi * (frame - 1) / frames - swing = math.sin(t) + # cos, not sin: the clip starts at maximum stride. A sine starts and crosses + # zero twice per cycle, and the review capture kept landing on those passing + # frames - legs together, which reads as a still. The cycle is unchanged. + swing = math.cos(t) # Hip swing, opposite phase per leg; negative X is forward. key_euler(bones["upperleg01.L"], frame, x=-HIP * swing) key_euler(bones["upperleg01.R"], frame, x=HIP * swing) diff --git a/Tools/ue_build_review_map.py b/Tools/ue_build_review_map.py index 0c75362..91e932f 100644 --- a/Tools/ue_build_review_map.py +++ b/Tools/ue_build_review_map.py @@ -288,6 +288,7 @@ try: # the colonnade's underside. # Level horizon for the same reason: a block elevation is read by its # verticals, and a pitched camera makes them lean. + ("demo-third-person-walk", unreal.Vector(-12940, -980, 560), unreal.Vector(-13336, -980, 500), 55.0), ("demo-spawn-view", unreal.Vector(-13336, -3100, 620), unreal.Vector(-13336, 1300, 620), 48.0), # Street level, from the north sidewalk: the old camera sat at Y -400, # inside the facade body (which spans Y -1457..-200), so it looked at @@ -334,7 +335,7 @@ try: # No follow shots in the current list: the stride capture was retired # because the walk clip does not visibly advance in game (see TODO.md). # The follow flag stays wired for when it does. - seq.set_editor_property("shot_follow", [False] * len(demo_shots)) + seq.set_editor_property("shot_follow", [True] + [False] * (len(demo_shots) - 1)) seq.set_editor_property( "shot_field_of_view", [float(c[3]) if len(c) > 3 else 0.0 for c in demo_shots]) diff --git a/Tools/ue_character_anim_import.py b/Tools/ue_character_anim_import.py index 2d652cc..a3cd32d 100644 --- a/Tools/ue_character_anim_import.py +++ b/Tools/ue_character_anim_import.py @@ -19,7 +19,7 @@ import unreal SRC = "/tmp/gigline/character-anim.fbx" DEST = "/Game/Test/Character" -PREFIX = "CharacterV3" +PREFIX = "CharacterV4" RESULT = "/tmp/gigline/character-anim-import.txt" lines = [] diff --git a/Tools/visual_targets.json b/Tools/visual_targets.json index 515f566..422c018 100644 --- a/Tools/visual_targets.json +++ b/Tools/visual_targets.json @@ -84,6 +84,18 @@ "Art/reference/hollywood/el-capitan-facade-day-wikimedia-2009-10-27.jpg" ], "expect": "Front view of the player body from the road: both arms hanging at the sides, hands down by the hips, face and chest visible, hero facade behind the camera" + }, + { + "name": "demo-third-person-walk", + "shot": "Screenshots/demo/review-demo-third-person-walk.png", + "size": [ + 1920, + 1080 + ], + "references": [ + "Art/reference/hollywood/el-capitan-facade-day-wikimedia-2009-10-27.jpg" + ], + "expect": "The player body mid-stride in profile: legs apart, arms counter-swinging, walking along the sidewalk" } ] }