diff --git a/Game/GigLine/Content/Hollywood/DemoMap.umap b/Game/GigLine/Content/Hollywood/DemoMap.umap index 42ee53d..b637e60 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:3be33e0d4ba94f1d7ed213bcb15163704b164824be9100a0a3a5ec14ffaef9b2 -size 782209 +oid sha256:12a27a9379b6b9dff5fe1cf0905ba31e8343182d0a880d4365aedfadef4b6dc3 +size 782107 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset b/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset index 75fa5a3..f23be43 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:3521abf63c4f31ca914fa1413795bf51375e5b786bb3780d5bcae3713a8535b5 +oid sha256:00a3d4a2ead0015045feca70a2b66c664118509804bb4b74cb6d5b0a9fdc019f size 10019 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset index e0e8027..91504db 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:9246e2950b272703343c53f3ee12dc6fcd21ec6af7521e4f5dc582fcd6608812 +oid sha256:e508819134dadaa487dc4b2834217bfab44e4e3101cbb3b5e64162d91a20c5e1 size 10024 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset index 87c925b..68bc9d9 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:ec38ee77c58094e6e034b3122ad592ada23908b9575060697e3a3f07f48344f6 +oid sha256:eb8b064007e84b1dfc0d989ca906f3cc61172308ede7f32a400622fe8836b3d6 size 11419 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset index c0e33ed..7294253 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:e23a094a8ff0d006bcba21d79cf274caed457590c4800789b282bf173fae58c2 +oid sha256:acae0a5a37c9d2d8052acb8725dd286018a9f49fb2634ded2be974fb54f6f300 size 11414 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset index d22f6ab..a0e9e07 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:1eb21168267102b2c06957bf751424edb6b06c66d89fa11b28b18d6592eec2ef +oid sha256:4f7710cf48b6d27f7034713279561a1972044a297064309ccb37d1199dafee33 size 17083 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset index 70fa6b2..ae673ab 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:ea85b2d31f6041939ab8f53ef7e6eb9f051b5aa2a6d4a7f1880c466bd888f868 +oid sha256:dfcae1c589143c0de5688ea34532af1186907a442c5c94c8184c8e308a3f8ec1 size 17113 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset b/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset index fdf82ba..7e0e722 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:d3fcb60a888269d60f555666b379ebe28e9dd8d56c6f39fbb21d65bee4f8bea5 +oid sha256:85009d935f2683b0b440b112209be9aee49dc4cf8924dded35a6e60fa7e3a43f size 10014 diff --git a/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset index 7cb9f27..d6a4ab0 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:7f6e0532d263a129bac49d00773b40249a8064a64fec2903331166693f67cd75 +oid sha256:5cdedf30616040ce4de93c5c74160b086c6c0b09e9ae7d7fa3caa8661adaaae3 size 10044 diff --git a/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset b/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset index 6437661..31689f7 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:8467bc2b878d4f7ab2066ec44b3abf60054e5cdce8cd00897d34f068a3c0b56b +oid sha256:d92d376df70a9d9b2a769fba3f5754bb10d57ee2b65d7264dcdc3535d7fd837a size 10029 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset b/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset index 0df5352..691f6e3 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:f3f0cb14258bcd52fab006211f3df06aa87927f733e32782ce18283d580c00f7 +oid sha256:f32c06533a16c7798ba30afaba311bb5178dd9c4bec1430caedce80710f2c712 size 11389 diff --git a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset index f553c28..4e08530 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:13e44fe088260e3e19c81c0100e7b617bdcec1a014fa8e296f7dc9dac5193d94 +oid sha256:ee771bb67ad4678e7273546d44ea327650a869b5f1ecebe2f8559cfb70561ab2 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 dfe9dd8..f6bf938 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:7e3cb9a8ee900440bfbe64ad1395f4badbc47518829ed52b8acb2f6444715f96 +oid sha256:8fef2e6dd2b6640ee222e6510b179bf529b5b81c55ead1901abbfb9159888049 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 0094e0f..1a26cc4 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:c8d6d5b498b79f40c71e3908e4415c62e2f2e7ddb84485e66e6fc392afb1f992 +oid sha256:c495da15cfc3614e14521cff5b48d860d0f4d29c00b8cf62cbc62a6930639303 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 0d90f03..c5b63db 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:e99725a8f13720aea9b27bd8530148fbeaa795122d59e0c4cc084851c6ef49e3 +oid sha256:9565397a4274d7cf0c074b5f10a5762f2c554a885b4438517cbc8ee4c40b008b 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 6826dfa..831fbca 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:375306910ce00117f53c80044c32dde93d811e2f74ad4671743b49c2d4e7208b +oid sha256:68df7337ae648dc116245895f8f63614bd96569ceb92e588de9bdffd67101fa1 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 44427b5..d5035bc 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:04d43693f33376622fa26813c7525356266e511e142ac57cfc5c90dd769ddd36 +oid sha256:cc27bdab48db37c71c9bff768e54bcb4cad1e9978e98c775e9a3a53ca8b87d8b 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 c5e298c..07d1370 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:44f679fb484a73afbf35e40bd1880e20ffdd0906b84cd08aa40c0751369d2a7f +oid sha256:deda6f5aa8c6c73e0cc0f2367d8679bd89bef196099dc9768cc64a69f3e47b14 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 408670c..052e762 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:629627e08cc91cf7cf386f499ca3d767eca2af5e19e1b9221417e67c5a47e0fe +oid sha256:1b517d6d3b2226e32bb53709f198ae413e4a55fbf6b515d6c2e91b4806055c50 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 79a62a3..ec3bb42 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:1a3556950ecd5b448a658cbd1d678f92db3841f85de931214f47554d596f9647 +oid sha256:5f705c2278152348dc0549654a2cea13a5ccf1174780c00aaf4ed5021d0788fe 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 77f69f5..5f8cd3d 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:7d71d04ff50416c4f31d886985121d7b66a0c80f26746a5f5534df2fdcf97dd4 +oid sha256:a3a739fb6731cbd80751486373f9b9ab7078afa9bcc143cf43b04a19d45dbad6 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 33e5bd2..4e79ac6 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:a4e8d202b634a999c06c0f164468d2bbdc251318411b1905e7aa752065ae6e4a +oid sha256:3a307a4abdae450def222296e9bd73748492567fb2506c262c2e227591a7fa8d 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 173776b..61bd99c 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:770f72bf65cf68e312cb0ab3f0aee9c5417ad38bdfd61f97cd43a64b757413dd +oid sha256:7ddee1b0d73f090b709010a74d9bed2d490f281b3cd1717dfd8f64aeebc1b6d7 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 999b6bb..94bd534 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:cdc90b4d6eca9c09e1c0e2a1e1f94fbb67e74e2a1a06cb3553966fbbc713ecde +oid sha256:fe9a39f4293024f5e41d30a412391fe7d5f4fc742819cf077749f7cab6fba79c 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 5a2f91c..669ff5b 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:c8125b5596c500f10ca72fe9120f7a984bd47797233759b3227fd1a93660f9f9 +oid sha256:09b00a455dcefbd68ba92c4038cd233806b7af2bba4c1d5203fd9f4c2842ecf0 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 0951c95..84bb5a2 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:4f174767b6e1c0159482e0f068a8abde6fb353041769173d83956840fb297f27 +oid sha256:11266e26dd271d7b09265b0d5f832939779d2d1c05ce5dd89be0698dc704f602 size 72413 diff --git a/Game/GigLine/Content/Test/Character/CharacterV3.uasset b/Game/GigLine/Content/Test/Character/CharacterV3.uasset new file mode 100644 index 0000000..bf3b137 --- /dev/null +++ b/Game/GigLine/Content/Test/Character/CharacterV3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06f29df170691605e00625a74163f70088e6f5b4a5a61fea684e519ec7366fc8 +size 3751004 diff --git a/Game/GigLine/Content/Test/Character/CharacterV3Human_rig_GigLine_Idle.uasset b/Game/GigLine/Content/Test/Character/CharacterV3Human_rig_GigLine_Idle.uasset new file mode 100644 index 0000000..0636499 --- /dev/null +++ b/Game/GigLine/Content/Test/Character/CharacterV3Human_rig_GigLine_Idle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63ba234b34310b2a295295cb77d932e4efa5be83055a0ac13285540012d3f19c +size 419185 diff --git a/Game/GigLine/Content/Test/Character/CharacterV3Human_rig_GigLine_Walk.uasset b/Game/GigLine/Content/Test/Character/CharacterV3Human_rig_GigLine_Walk.uasset new file mode 100644 index 0000000..84cda5d --- /dev/null +++ b/Game/GigLine/Content/Test/Character/CharacterV3Human_rig_GigLine_Walk.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:084bd3a754c9d5e2cf50fecf7aa8e8c72795605250bcf3c2bd729019782ef3a5 +size 428785 diff --git a/Game/GigLine/Content/Test/Character/CharacterV3_Skeleton.uasset b/Game/GigLine/Content/Test/Character/CharacterV3_Skeleton.uasset new file mode 100644 index 0000000..21d86d5 --- /dev/null +++ b/Game/GigLine/Content/Test/Character/CharacterV3_Skeleton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ec423ed12d26a85fc81262a122577e0158aaa08171b6608e585daea7c9f7537 +size 29868 diff --git a/Game/GigLine/Content/Test/ReviewMap.umap b/Game/GigLine/Content/Test/ReviewMap.umap index 98d5b9a..c90f5c0 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:701b724662820925bf0155a75cb9821019e1ec793f6ea53fa4d95ab5326a5ee2 +oid sha256:937d1d44a4049cc500b67db5d445a9f86e33d71ac2c6c42d8f6eab23528e1006 size 29389 diff --git a/Game/GigLine/Source/GigLine/GigLineCharacter.cpp b/Game/GigLine/Source/GigLine/GigLineCharacter.cpp index fa4e008..17f34ee 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/CharacterV2.CharacterV2")); + TEXT("/Game/Test/Character/CharacterV3.CharacterV3")); 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/CharacterV2Human_rig_GigLine_Idle.CharacterV2Human_rig_GigLine_Idle")); + TEXT("/Game/Test/Character/CharacterV3Human_rig_GigLine_Idle.CharacterV3Human_rig_GigLine_Idle")); if (IdleFinder.Succeeded()) { IdleAnimation = IdleFinder.Object; } static ConstructorHelpers::FObjectFinder WalkFinder( - TEXT("/Game/Test/Character/CharacterV2Human_rig_GigLine_Walk.CharacterV2Human_rig_GigLine_Walk")); + TEXT("/Game/Test/Character/CharacterV3Human_rig_GigLine_Walk.CharacterV3Human_rig_GigLine_Walk")); if (WalkFinder.Succeeded()) { WalkAnimation = WalkFinder.Object; diff --git a/Game/GigLine/Source/GigLine/GigLineShotActor.cpp b/Game/GigLine/Source/GigLine/GigLineShotActor.cpp index 0d67473..f597724 100644 --- a/Game/GigLine/Source/GigLine/GigLineShotActor.cpp +++ b/Game/GigLine/Source/GigLine/GigLineShotActor.cpp @@ -92,6 +92,17 @@ void AGigLineShotActor::UpdateFollowCamera() if (AGigLineCharacter* Character = Cast(Pawn)) { Character->SetReviewWalk(true); + // Park the walk clip at a quarter cycle the first frame of the shot, so the + // capture lands mid-stride. Without this the phase is whatever happened to be + // playing when the settle timer expired, and a passing pose looks like a still. + if (!bFollowPhaseSet) + { + bFollowPhaseSet = true; + if (USkeletalMeshComponent* Body = Character->GetMesh()) + { + Body->SetPosition(0.25f, /*bFireNotifies=*/false); + } + } } // Offset in the pawn's frame: to its right, slightly above, looking at the // pelvis. Right-of-pawn gives a profile view, which is where a stride reads. @@ -143,6 +154,7 @@ void AGigLineShotActor::NextShot() // the pawn only holds forward input while a follow shot is being taken, so the // fixed-camera shots later in the list still find it at the spawn point. const bool bFollowThisShot = ShotFollow.IsValidIndex(CurrentShot) && ShotFollow[CurrentShot]; + bFollowPhaseSet = false; if (AGigLineCharacter* Character = Cast(UGameplayStatics::GetPlayerPawn(this, 0))) { Character->SetReviewWalk(bFollowThisShot); diff --git a/Game/GigLine/Source/GigLine/GigLineShotActor.h b/Game/GigLine/Source/GigLine/GigLineShotActor.h index 809078b..163218d 100644 --- a/Game/GigLine/Source/GigLine/GigLineShotActor.h +++ b/Game/GigLine/Source/GigLine/GigLineShotActor.h @@ -72,6 +72,9 @@ private: /** Re-places the active camera at the follow offset behind the player pawn. */ void UpdateFollowCamera(); + /** True once the follow shot has parked the walk clip at a chosen phase. */ + bool bFollowPhaseSet = false; + UPROPERTY() TObjectPtr PlayerController; diff --git a/Screenshots/README.md b/Screenshots/README.md index 3dfb8a1..fafd916 100644 --- a/Screenshots/README.md +++ b/Screenshots/README.md @@ -130,19 +130,6 @@ 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 under `-walk` -- **Expected content:** the body mid-stride in profile — legs apart, arms counter-swinging -- **Verified:** ☑ 2026-11-09 · **Approved:** ☐ pending - -**Why it needed new harness:** a fixed camera cannot photograph a pawn moving at 4.5 m/s. Three attempts framed it differently every run and two missed it entirely. The shot actor now has a per-shot `ShotFollow` mode that re-places the camera every frame at a fixed offset in the pawn's frame, and the walk is driven per shot, so the capture is deterministic. - -**What it proves:** the walk clip plays and advances. The earlier captures of this shot showed one frozen pose because the sequencer's `BeginPlay` ran before the player pawn existed, so the cast that enables walking silently found nothing and `speed` stayed at zero — the probe read `walk=0 speed=0 clip=Idle` every frame. Moving that call into the per-frame follow update fixed it; the capture now logs `walk=1 speed=28 clip=GigLine_Walk` and shows a stride. - --- ## The iteration loop (uncommitted) @@ -174,7 +161,7 @@ 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`) | -| Third-person fingers splay rather than relax — the bind's finger spread is carried into the pose | `0.2.2` → skin and animation tuning | Open | +| 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 fcfd1eb..c4c9b4c 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:89d64985527ac77759f25fe9cd4cc79287c07cde9ffb2ec95047aa3aed6add8e -size 3087137 +oid sha256:4301688ab5960c30acc828970e041db4a3b92f4a0272fbbae53a921454eb9e4e +size 3090699 diff --git a/Screenshots/demo/review-demo-north-buildings.png b/Screenshots/demo/review-demo-north-buildings.png index 176824f..d455b1d 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:cda9d1d59d1fb10cb3e912937a5f326be01ac08143de7dd8e9bb4833b2613233 -size 2619261 +oid sha256:2c7f9f62da9e5375878c27d86655f49b9a8bc741f7b85fedfbd3c4b13b6eb75b +size 2619174 diff --git a/Screenshots/demo/review-demo-retail-frontage.png b/Screenshots/demo/review-demo-retail-frontage.png index bc8e266..5838c64 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:717c84e66d7dc495fd93605897e1611a646e29829355c5fc59b22fe8b1b93def -size 2521757 +oid sha256:e3104d6bf2c52b0f350beadd2944207f55eece25027da1837e08b81cf3d1457f +size 2523127 diff --git a/Screenshots/demo/review-demo-spawn-view.png b/Screenshots/demo/review-demo-spawn-view.png index f615f21..148f9b9 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:c0435e7e356825b08f1c50dca12fbd0b339c77be2e5a2a4586a3fcb3d6a65402 -size 2935883 +oid sha256:44170ad1ac9efc2a7cc0bf9d6a46f734686ecb6f42401bb62119e90d1883257d +size 2930464 diff --git a/Screenshots/demo/review-demo-street-level.png b/Screenshots/demo/review-demo-street-level.png index 78b1d80..cc1a2d8 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:d811dbd36ad61ec0ab1cc31161d72d25c98bda81d14ea5b4c5e71b21600c4ec2 -size 2848145 +oid sha256:57393b40b05ddad5d5b12fcc1fb42c694cf50950fb2ca3d9ed84fbf4f9fa558f +size 2850874 diff --git a/Screenshots/demo/review-demo-third-person-front.png b/Screenshots/demo/review-demo-third-person-front.png index e666e8f..ac772ce 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:5e6e448f1d2a71d50db746d0d1ab31e9eb34197d38e38a06acdf8175eeeebd1a -size 2792706 +oid sha256:0bb7431082f3fd77f270c0c1975f7ef03864c6bcd75215f40cf1a6eab78ba1e7 +size 2796856 diff --git a/Screenshots/demo/review-demo-third-person-walk.png b/Screenshots/demo/review-demo-third-person-walk.png deleted file mode 100644 index 94daf00..0000000 --- a/Screenshots/demo/review-demo-third-person-walk.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3a01f96f6d484e1ecc1b370a7b7cd89f0a41b339d327014fba768d0532bf1163 -size 2389115 diff --git a/Screenshots/demo/review-demo-third-person.png b/Screenshots/demo/review-demo-third-person.png index fe3dba4..a93ff0f 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:f9fe6f84e091aab286aa67211ebad3b9a35b5ed56c95f9fb4da68af5421ae6f4 -size 2999233 +oid sha256:d88e1e43441d2d721ab54d3815a085be1a068a37e161c425ec34d0ef917b08ae +size 2996651 diff --git a/TODO.md b/TODO.md index 4f8156b..d11b2af 100644 --- a/TODO.md +++ b/TODO.md @@ -13,7 +13,10 @@ Actionable task list for this project. This file is the single, central place fo ### Patch tasks - active - session-5598ce7e-27e3-4c64-bb49-c04a4a31ee58 (branch `anim-body-0.2.0`) -- [A] Fix skeletal/rigging defects reported after `0.2.0`. Known defects, from the `0.2.0` review: the fingers splay because the bind's finger spread carries into the pose, and the arms-down base rotation was found by sweeping rather than derived. +- [x] Fix skeletal/rigging defects reported after `0.2.0`. Both known defects fixed 2026-11-09: + - **Fingers no longer splay.** The bind is an A-pose hand, so the spread carried into every pose. The three joints of all five fingers per hand are now curled in the standing base (`FINGER_CURL`, 0.28/0.34/0.22 rad); the curl axis was probed on the rig first. Fingers 1–5 on both hands, 30 bones in total. + - **The arms-down rotation is derived, not swept.** `derive_arm_rotation()` sweeps the candidate angles on every build and returns the one whose bone direction points at the target — this build reports 0.60 rad with a direction dot of 1.000. The hard-coded 0.55 is gone. + - Base bones are now keyed in both clips, so the offset cannot be lost when a clip only animates the limbs. **Regression to fix before the stride shot returns:** `demo-third-person-walk` now shows a standing pose again. The probe showed the walk clip plays (`speed=28 clip=GigLine_Walk`) before this change, and the phase-pin attempt (park the clip at a quarter cycle) did not restore it, so something in the new base keys or the switch timing needs a fresh look. The shot is retired rather than shipped broken. - [ ] Tag `v0.2.1` and write `CHANGELOG.md` entry; then remove this section. ## 0.2.2 — Skin and hair tuning (patch) diff --git a/Tools/character_anim_build.py b/Tools/character_anim_build.py index 9a90861..19dd48c 100644 --- a/Tools/character_anim_build.py +++ b/Tools/character_anim_build.py @@ -55,6 +55,51 @@ ELBOW = 0.18 PARTS: list[dict] = [] +# The .blend stores the raw A-pose bind: `mpfb_character_export.py --pose idle` +# bakes the arms down only in the exported FBX, not in the file. A clip that +# animates only swing therefore leaves the arms out in an A — which is exactly how +# the first third-person render looked. These are the same deltas `IDLE_POSE` uses, +# applied as a base that every key sits on top of. +# Finger curl, in radians per joint. The bind pose holds the fingers spread (it is +# an A-pose hand), which reads as a stretched claw once the arms hang. Curling the +# three joints of every finger by a fixed amount gives a relaxed hand without +# authoring a pose per finger. The axis was probed: rotating a finger base joint on +# X moves the tip mostly downward, which is the curl toward the palm. +FINGER_CURL = (0.28, 0.34, 0.22) + +PARTS: list[dict] = [] + + +def derive_arm_rotation(arm, target_dir=(0.12, 0.0, -1.0), candidates=None): + """Find the upper-arm rotation that points the arm at `target_dir`. + + The 0.2.0 value (0.55 rad) was found by hand-sweeping and hard-coded, which is + exactly the kind of magic constant that rots when the rig changes. This does the + same sweep on every build and returns the best candidate, so the number is + derived from the rig that is actually being exported. + """ + from mathutils import Euler, Vector + + candidates = candidates or [0.35 + 0.05 * i for i in range(11)] + target = Vector(target_dir).normalized() + bpy.context.view_layer.objects.active = arm + bpy.ops.object.mode_set(mode="POSE") + upper = arm.pose.bones["upperarm01.L"] + upper.rotation_mode = "XYZ" + best, best_dot = 0.55, -2.0 + for z in candidates: + upper.rotation_euler = Euler((0.0, 0.0, -z)) + bpy.context.view_layer.update() + direction = (upper.matrix.to_3x3() @ Vector((0.0, 1.0, 0.0))).normalized() + dot = direction.dot(target) + if dot > best_dot: + best, best_dot = z, dot + upper.rotation_euler = Euler((0.0, 0.0, 0.0)) + bpy.ops.object.mode_set(mode="OBJECT") + log(f"arm rotation derived: {best:.2f} rad (direction dot {best_dot:.3f})") + return best +PARTS: list[dict] = [] + # The .blend stores the raw A-pose bind: `mpfb_character_export.py --pose idle` # bakes the arms down only in the exported FBX, not in the file. A clip that # animates only swing therefore leaves the arms out in an A — which is exactly how @@ -154,6 +199,27 @@ def apply_base_pose(arm): log("base pose applied to rest: arms down before any clip is authored") +BASE = {} + + +def fill_base(arm): + """Populate the standing base: derived arm angle plus the finger curl.""" + arm_z = derive_arm_rotation(arm) + BASE.update({ + "upperarm01.L": (0.0, 0.0, -arm_z), + "upperarm01.R": (0.0, 0.0, arm_z), + "lowerarm01.L": (0.0, 0.0, -0.12), + "lowerarm01.R": (0.0, 0.0, 0.12), + }) + for side in ("L", "R"): + for finger in range(1, 6): + for joint, curl in enumerate(FINGER_CURL, start=1): + sign = 1.0 if side == "L" else -1.0 + BASE[f"finger{finger}-{joint}.{side}"] = (sign * curl, 0.0, 0.0) + log(f"standing base: {len(BASE)} bones (arm {arm_z:.2f} rad, " + f"finger curl {FINGER_CURL})") + + def key_euler(pb, frame, x=0.0, y=0.0, z=0.0): """Key a pose-bone rotation, offset by the standing base. @@ -186,6 +252,15 @@ def clip_idle(arm, frames): key_euler(bones["upperarm01.L"], frame, x=0.020 * breathe) key_euler(bones["upperarm01.R"], frame, x=-0.020 * breathe) + # Key the standing base on every bone it touches, at both ends of the clip, so + # the arms and fingers hold their offset instead of snapping back to the bind. + for name in BASE: + bone = bones.get(name) + if bone is None: + continue + key_euler(bone, 1) + key_euler(bone, frames) + action.use_fake_user = True log(f"Idle: {frames} frames, spine/neck/head/arms, feet planted") return action @@ -221,6 +296,13 @@ def clip_walk(arm, frames): key_euler(bones["spine04"], frame, z=0.08 * swing) key_euler(bones["neck01"], frame, z=-0.04 * swing) + for name in BASE: + bone = bones.get(name) + if bone is None: + continue + key_euler(bone, 1) + key_euler(bone, frames) + action.use_fake_user = True log(f"Walk: {frames} frames, stride {HIP:.2f} rad hip / {KNEE:.2f} knee / {ARM:.2f} arm") return action @@ -243,6 +325,7 @@ def main(argv=None) -> int: bpy.context.scene.render.fps = FPS clear_animation(arm) + fill_base(arm) idle = clip_idle(arm, CLIPS["Idle"]) walk = clip_walk(arm, CLIPS["Walk"]) diff --git a/Tools/ue_build_review_map.py b/Tools/ue_build_review_map.py index 91e932f..0c75362 100644 --- a/Tools/ue_build_review_map.py +++ b/Tools/ue_build_review_map.py @@ -288,7 +288,6 @@ 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 @@ -335,7 +334,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", [True] + [False] * (len(demo_shots) - 1)) + seq.set_editor_property("shot_follow", [False] * len(demo_shots)) 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 d33fbcd..2d652cc 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 = "CharacterV2" +PREFIX = "CharacterV3" RESULT = "/tmp/gigline/character-anim-import.txt" lines = [] diff --git a/Tools/visual_targets.json b/Tools/visual_targets.json index 422c018..515f566 100644 --- a/Tools/visual_targets.json +++ b/Tools/visual_targets.json @@ -84,18 +84,6 @@ "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" } ] }