From 7c57bf318b0485c62d5b5a9a02ba013505e16989 Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Mon, 9 Nov 2026 13:55:19 +0100 Subject: [PATCH] fix(hair): dark constant colour, strand sheet used only as an opacity mask The hair read blond and thin because the strand sheet's RGB was driving base colour; the sheet is a pale highlight map. Colour is now a dark constant (0.030/0.020/0.014) and the texture supplies only alpha. Sampled in the render: hair (31, 26, 21). Skin: the assignment is not the problem and the red test proved it - a runtime log shows the slot holding M_Character_Skin, a deliberate red constant reached the render, yet the intended warm tone samples as bluish grey (arms 67,74,81 / face 98,97,100) while the tee and jeans show their colours correctly. Recorded in TODO.md with the next suspects rather than guessed at. The temporary material log is removed again. --- 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/M_Character_Hair.uasset | 2 +- .../Test/Character/M_Character_Hair_Mat.uasset | 4 ++-- .../Content/Test/Character/M_Character_Skin.uasset | 2 +- .../Content/Test/Character/T_Character_Hair.uasset | 2 +- .../Test/Character/T_Character_SkinDetail.uasset | 2 +- Game/GigLine/Content/Test/ReviewMap.umap | 2 +- 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 | 4 ++-- Screenshots/demo/review-demo-third-person.png | 4 ++-- TODO.md | 4 ++-- Tools/ue_character_materials.py | 14 +++++++++++--- 42 files changed, 63 insertions(+), 55 deletions(-) diff --git a/Game/GigLine/Content/Hollywood/DemoMap.umap b/Game/GigLine/Content/Hollywood/DemoMap.umap index 7e61f7a..a99bbad 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:98ef1ce6460c99d70638268c62ef350ff37b017bb0b939c0de588f50378b0400 -size 782187 +oid sha256:92163de5a961f307aacb1a860b329c4d64de340c51f9781fc53846c8f4cd5bca +size 782191 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset b/Game/GigLine/Content/Hollywood/Site/M_Asphalt.uasset index c85637c..3cb46e1 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:7cfa85954d35548d329340aae76896f02fb9418a48fe6123fc65d95dcd1500da +oid sha256:62a614070d26c567686aae999b1c90240eb663af0f0f260d80d527d1239ecd60 size 10019 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_Concrete.uasset index a0d3fba..5b21e5b 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:aedf69f25fc019f7ef5137a2c004c0f14958f5bf0572410742add6a343c05925 +oid sha256:66424212813926590c11a6422155d20f8086612f516158fbe9d3a7de33358e83 size 10024 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeBanner.uasset index b9b53b4..b99f703 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:d0ca5c96c721b5d55bfa1eeda35ccfe0b93bddad1ce566140cf7cfc3143d3cb6 +oid sha256:47a2422896e5e07121125c09cdadfcc384db5f0bf925a7cc4845cebec73a943c size 11419 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeGlass.uasset index b2e9b4b..def94e0 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:1427b1d475c1d104078cf36fba0b9d444922c6452c3bbe58af1edb9a6bffe89b +oid sha256:88ba2f0ba6443ad0cdf08e91a223623645aed10d78b3621eac2effc69e222a70 size 11414 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStone.uasset index c94da80..dae4be2 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:b96095f47f0fdc7dda01735d2d48a6271f68ef01786aac0edc7db6ca5e7dd90f +oid sha256:0c8d8a195835fdbd65ec3ff913c2320697f077e027a85b419cea2a7c8413ea16 size 17083 diff --git a/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset b/Game/GigLine/Content/Hollywood/Site/M_FacadeStoneShadow.uasset index 26353c5..0a2a46e 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:9c4a4a616b0c639cef2a0a7d3695bdffd96077b48d868b9221a58a5caf8885e5 +oid sha256:787a7b7654bca39c40bec699fcbba742d793d05e9feba93b8f87625d65fcde81 size 17113 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset b/Game/GigLine/Content/Hollywood/Site/M_Ground.uasset index de2274a..706a021 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:efdefcbaa4a158a322422c9870cbbcf1a149f06a68fba211b7708a3a6de576e5 +oid sha256:dce807138c94030a5d4cc266396e085814cc711ccad0b07dfc9b9b2fe79919af size 10014 diff --git a/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset b/Game/GigLine/Content/Hollywood/Site/M_KerbConcrete.uasset index 5960dbc..3d65968 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:19e9662657cccc732c2aaa3a74199c177bae602e02abe030b11b0d89cd0e39c3 +oid sha256:a6540c5548011edd39fa5f0ec6dc999078e26bd1d9a0973201753e65ab00af0c size 10044 diff --git a/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset b/Game/GigLine/Content/Hollywood/Site/M_RoadPaint.uasset index a586b98..3ae7021 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:9331ae3f3312a7a9d035291c16c0266b01febacfc37adde59d516930b5606a00 +oid sha256:34345a35f495d21523bc616bf3a2c9b9960d15379a62cbc937939e2d44318d63 size 10029 diff --git a/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset b/Game/GigLine/Content/Hollywood/Site/M_Stucco.uasset index 87543c4..baf270a 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:a3398b98f1c5e9691e8b12e08e9d64933f02e3ed328233f91a85cf0581088b2d +oid sha256:0c6e920b91e19f2e2b874cc0ec729fd41b7b12ca41b924a22892affc9a427a84 size 11389 diff --git a/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset b/Game/GigLine/Content/Hollywood/Site/Terrain_DEM.uasset index d8ae0ad..32af0c9 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:b468009deda592eda2e926ea976182179aa2d8f8c89e3bf0574427040ad1223c +oid sha256:416e4dff5640b9427585f3478026923f4ac0522ba9cbb13efda74060ce5e1b62 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 3cad3e3..6a788fe 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:993b5bd4f113acf359b2d8737a52791253dc43e91402f9de4bf5534404cb9063 +oid sha256:f40f0a15184379c9cb21c5492c72965d213268e8d3cb54eaccaa7184839deef2 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 98e8ac9..b5f645c 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:3053ffba3b684467c9c6ec6bc07a20318d346b147e5116a6edb87883a5e461cc +oid sha256:3168faf332c363547097449bfdf8303cc60055df679a8fa8583ad720ac29c5d1 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 3b842d7..17acefa 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:db51b572e139bf20e6e8ef46b38954487a084d04ea87cc5362fc3edd060e9d4d +oid sha256:0c494e2171bde237230d53c04329255a1b743b0a12f21fce933bcf2f1f383e6b 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 0b4618b..0235c07 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:9a2781442ec046f80b72f6f3e3b27ef0ba0c52e154763b9d951633d78a05961f +oid sha256:ccdf7a02d9a6b114a87b49066e7d2008ad488385e8c61ccf77da76264c6b9282 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 d3974b0..515a067 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:a08deb1afdae35b4c3be84f8c2e204d7c93f8299ccd6d0141f81006503c88c47 +oid sha256:a4c5a8b8accc9fdfc150e243ece1f78818299572a0044f5422c8d92258f4a2d0 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 c0bb15d..2342b12 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:3b0b010a39c750e732496ff4eb0dca51c24ec1bbd6179498553c55aee6c48b57 +oid sha256:1f1093d221fee2ddc27e4e1c13a5bd7522463839a0aef0a08c69ee3f50c93004 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 d3f1f38..fb49bda 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:ac2d87e0c19d9f586a767d15fe5e6c6a3ab32b129f3a31cfd2ec055d015705f4 +oid sha256:1de70a932199464f5063b39dd6e7f0a8f7b3a8716618aec03de3d13791ee43f2 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 fb6f270..30caeec 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:e6390a8ad6d4d853353ceef753cb876a3c224307d87afef2683aefedd087a857 +oid sha256:5c2e10c2481d8fdabcc9066f4625da610ec86716cee46bee132f3f5c5029cb0a 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 460f7be..32fc64e 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:e82e7306e9a77c7d92d99c69c504e9e454b3ba92239fab98c8f2fa2713b6c88a +oid sha256:f2840f75c9efdd3adee2809b7d22b60bf647d97f007b74bb24e22be1631c343f 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 e94baf4..3f02c52 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:5a62ed243d7cb858cd7cf8ff957eb6b62ed8fefc3994313ef3a9d3c49dd2589f +oid sha256:c636670338bb7a09163601744344bcdb11977644139091845d46a99a213a4d86 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 5b3c87d..3453719 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:de1a00154f54e27cdb1fce6ec1ae2ad1a066cf19f382fc1eb70a0e78139209e9 +oid sha256:9235b01c445042001658775e998e423ccec1c9f0b953af47fe10687875dba059 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 ae65a7f..c650138 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:f1c3c799809819964065409bcd770b688c1655cfcbfdaaa8313ae5fe9030804c +oid sha256:d289003e1257b50b798c7b2aada7c941cfac5c5c5b50642516bf0b053b6a53a3 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 03a0bd3..5c66ea0 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:e0ce65522f05d1f946a6f3e8bf35f85405ccff2bcb0f04c6b98ebcb49299a6ac +oid sha256:647a16ad1c1ae619aaabc7a68cbc0aad343a342f09d66858aef5cd7cf3d007eb 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 77ede69..5f2872b 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:213b0841bf31c72d57695444ebbf9089f2b214a7e3d574aed0109d062d2fa84d +oid sha256:d1e4880d1840a18cb58bb321dc39488de8f2baf7f4df1894e1e2b7c79a126d4d size 72413 diff --git a/Game/GigLine/Content/Test/Character/M_Character_Hair.uasset b/Game/GigLine/Content/Test/Character/M_Character_Hair.uasset index 6a77a1d..5cf2882 100644 --- a/Game/GigLine/Content/Test/Character/M_Character_Hair.uasset +++ b/Game/GigLine/Content/Test/Character/M_Character_Hair.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2dab9fce9e6de346aa872d1b72bc50ea221896048058c80a5d50a50f69849c9 +oid sha256:906882fe9db50678e5e3c326f27dd77abaefb6aba17e1e8ea95eda322ddb6ea5 size 56768 diff --git a/Game/GigLine/Content/Test/Character/M_Character_Hair_Mat.uasset b/Game/GigLine/Content/Test/Character/M_Character_Hair_Mat.uasset index 486120f..816e721 100644 --- a/Game/GigLine/Content/Test/Character/M_Character_Hair_Mat.uasset +++ b/Game/GigLine/Content/Test/Character/M_Character_Hair_Mat.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eda8d9547b3e2cae958c97a8f6ad058ef08c23e13ff4b001506b01b04bc6a324 -size 5862 +oid sha256:043772562a9594bfdc60bb186d82979e7b6ce7711a69fefc961a9b390aa72812 +size 6319 diff --git a/Game/GigLine/Content/Test/Character/M_Character_Skin.uasset b/Game/GigLine/Content/Test/Character/M_Character_Skin.uasset index 73adcec..1b3be80 100644 --- a/Game/GigLine/Content/Test/Character/M_Character_Skin.uasset +++ b/Game/GigLine/Content/Test/Character/M_Character_Skin.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c43d49aeceffb061593e47694d8a729378f364d3abe7d5499e19965c1d21fae0 +oid sha256:05bf1898e56b49d360a601e40769316c5727f1e84a01705bb8cfc7776f462d28 size 5338 diff --git a/Game/GigLine/Content/Test/Character/T_Character_Hair.uasset b/Game/GigLine/Content/Test/Character/T_Character_Hair.uasset index 4e141e4..87b57fa 100644 --- a/Game/GigLine/Content/Test/Character/T_Character_Hair.uasset +++ b/Game/GigLine/Content/Test/Character/T_Character_Hair.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89e3f4f86ef0656342712364efc7c76d4d03ca72e65f505abc16fd3ed7df3785 +oid sha256:6442a1f7ec2d097b50538dc495905ddd270102c82499b9569b9c3367bf62d48c size 154562 diff --git a/Game/GigLine/Content/Test/Character/T_Character_SkinDetail.uasset b/Game/GigLine/Content/Test/Character/T_Character_SkinDetail.uasset index 98b0a9d..e317bb1 100644 --- a/Game/GigLine/Content/Test/Character/T_Character_SkinDetail.uasset +++ b/Game/GigLine/Content/Test/Character/T_Character_SkinDetail.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ef9018aad33a7ab1b4a4cb3298dcbb43e0faa0c8527aba304af03a579d97299 +oid sha256:5274e6ec69335c8aad9f5a1de1abbf66f1833cb1987b468da3caa899cc25fa0d size 86578 diff --git a/Game/GigLine/Content/Test/ReviewMap.umap b/Game/GigLine/Content/Test/ReviewMap.umap index ed59cef..2d5e873 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:3bbeede8df99cd935df578f6db0d7302ff39ecef0f430b151b091c93b8edd67a +oid sha256:85643c28eac876270fe91fff4523c4f9cb2fc79b1915a5dec596e4cf678b3914 size 30542 diff --git a/Screenshots/demo/review-demo-crossing.png b/Screenshots/demo/review-demo-crossing.png index b5d444d..c17c847 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:28153d99982ff24f7af081a7bdf87bf9b3a95aac234d5a0b434751d6e03584a5 -size 3089619 +oid sha256:95ff71103919d9a7914b957cae2aa24e13dbfecf52c9ab83de26d5f33d0c015d +size 3088404 diff --git a/Screenshots/demo/review-demo-north-buildings.png b/Screenshots/demo/review-demo-north-buildings.png index 193d66b..67922f0 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:75bf44cbe07e977ca20044e17582e400e250a9d1624854a47812b18103018517 -size 2618848 +oid sha256:7d4f49c117b7103cbbc3fae768a981fb72e166643e5e7229c06e9c29f7cc0f24 +size 2619363 diff --git a/Screenshots/demo/review-demo-retail-frontage.png b/Screenshots/demo/review-demo-retail-frontage.png index e710eb7..ff3e5df 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:fa8765ee7a27a8dec67c29c4636ed9b18f12df56ae2306a14811ad8f780f6627 -size 2522127 +oid sha256:37b0229f0c91f3879776734c518279fdc4b5640dc05c9eece38a2ff013ca20ee +size 2522716 diff --git a/Screenshots/demo/review-demo-spawn-view.png b/Screenshots/demo/review-demo-spawn-view.png index b8d778b..b888d49 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:5525013be744f96dc86a361ff24e290ebc2468aa4c28b50e54f63bc4ee0b71e9 -size 2930228 +oid sha256:4b450cefc55dfdfa0b27fbc9bad98197168f1181bad56cb4b333bf9080251487 +size 2934054 diff --git a/Screenshots/demo/review-demo-street-level.png b/Screenshots/demo/review-demo-street-level.png index 184ed81..d7be7e2 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:1233c80d421e3402d889062d5e350563de2fb0d445b6e4fea840c6783bd59153 -size 2848430 +oid sha256:1528751a2b7ec4411905d38394925b1fffbc667242030aefee7daf13daf92e19 +size 2847775 diff --git a/Screenshots/demo/review-demo-third-person-front.png b/Screenshots/demo/review-demo-third-person-front.png index 9b10193..b412cf5 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:5df0ea73aeca38a0ec0510fe3f7793c6124ca01173244ef2351cc22eb7352f42 -size 2788098 +oid sha256:363ab2272f2c059fba9d205440e90e05d86f5a86d228c9c03a97088823ac4b4f +size 2788716 diff --git a/Screenshots/demo/review-demo-third-person-walk.png b/Screenshots/demo/review-demo-third-person-walk.png index e0a42f7..7cde1b2 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:92752fb076a42f2f54ce6077cfb443967481a455ea2f980875d0eeb8b29e978c -size 2173847 +oid sha256:01d30367e0e051f2a9d5f5784341e0be99df58c27af9dbe742120211d593df97 +size 2173203 diff --git a/Screenshots/demo/review-demo-third-person.png b/Screenshots/demo/review-demo-third-person.png index a3104c8..a37b0f4 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:a8d0ea03b044526114f20e0de98d5a22f41f8d4eca1eab589b599b3376694f44 -size 2993836 +oid sha256:e5f0e86838d39b18d31971d2c64aad5a8b1195cc1aacd0bcddc812d1aab20510 +size 2995172 diff --git a/TODO.md b/TODO.md index c660487..ec8da99 100644 --- a/TODO.md +++ b/TODO.md @@ -24,8 +24,8 @@ Actionable task list for this project. This file is the single, central place fo - **Character blueprint and evaluation tools exist.** `Tools/comfyui_character_blueprint.py` generates a four-view sheet (front/side/back/head) from one description with fixed seeds; `Tools/character_match.py` compares a render against it and reports aspect, fill, coverage, mean CIE76 and palette distance plus a side-by-side montage. First result against `Screenshots/demo/review-demo-third-person-front.png`: **aspect delta 1.24, fill delta 0.12, mean ΔE 31.9, palette ΔE 25.4** — and the montage shows why: the model is a **nude body**, the blueprint is clothed (navy tee, jeans, sneakers). - **Clothing exists now** (`Tools/character_clothing_build.py` + `Tools/ue_character_clothing_import.py`): tee, jeans and shoes as three separate skinned meshes, built from the body's own faces per the character-artist workflow (duplicate faces, solidify for thickness, one mesh per piece), imported as `CharacterTee` / `CharacterJeans` / `CharacterShoes` and attached as leader-pose components. The navy tee, dark jeans and off-white shoes read correctly at review distance. - **Garment coverage fixed 2026-11-09.** Solidify thickness raised to 2 cm plus a normal fatten pass of 8 mm closed the shoulders, hips and knees; the tee, jeans and shoes now read as continuous cloth. Evaluation against the blueprint improved from **mean ΔE 31.9 → 21.8** and **palette ΔE 25.4 → 19.7**; the montage is `Art/characters/blueprints/match-front.png`. - - **Hair reads light and wispy** since its material instance was repointed to `M_Character_Hair_Mat` (masked strand sheet): the alpha is cutting the cards into separate hairs and the base colour is lifted by the texture. Either darken the texture or use the sheet only as an opacity mask and drive colour from a constant. - - **Skin still renders neutral grey.** The constructor assignment never reached the render, and moving it to `BeginPlay` with `LoadObject` required fixing a fatal: `FObjectFinder` may only be used inside a constructor, so the first attempt crashed the game in `Tick`. The binding now runs in `BeginPlay`, but the arms and face are still grey in the render, so `M_Character_Skin` itself is suspect — possibly the material has no compiled base-colour expression reaching the pin. + - **Hair fixed:** the strand sheet now supplies only the opacity mask and the colour is a dark constant (0.030/0.020/0.014). Sampled in the render: hair (31, 26, 21) - properly dark instead of the washed-out blond it read as when the sheet's RGB drove base colour. + - **Skin colour: assignment proved, tone unexplained.** A runtime log confirmed the slot holds `M_Character_Skin` (`slot0=M_Character_Skin slots=1`), and a deliberate red test colour reached the render - so binding works. But the intended warm tone (0.78/0.55/0.44) samples as **bluish grey** in the render: arms (67, 74, 81), face (98, 97, 100), while the tee and jeans show their colours correctly. Something between the constant and the final pixel is desaturating the skin - next suspects are the material's shading model/ambient occlusion from the body normals, or the render's key light being far dimmer on the body than on the ground. - **Figure segmentation is explicit, not automatic.** Auto-detection failed on the review shots: the backdrop (sky band, pale wall, dark pavement) is larger and more saturated than the subject, so every size-based rule picked a backdrop blob. `--render-box` takes the figure box as fractions of the frame. A background plate rendered without the character would make this automatic. - `Tools/ue_character_materials.py` (wiring the generated textures into the skin and hair materials) **segfaults in the headless commandlet** when it edits the material graph. Not wired; the hair keeps the dark base colour it carries from Blender. Needs either an editor-session run or a material asset built from scratch instead of edited in place. diff --git a/Tools/ue_character_materials.py b/Tools/ue_character_materials.py index 2c1c595..c4419bc 100644 --- a/Tools/ue_character_materials.py +++ b/Tools/ue_character_materials.py @@ -80,7 +80,10 @@ def skin_material(diffuse, detail): # lookup fell outside the texture. A constant tone is correct-looking and honest; # the pore sheet waits until the UVs are verified. base = lib.create_material_expression(material, unreal.MaterialExpressionConstant3Vector, -420, 0) - base.set_editor_property("constant", unreal.LinearColor(0.62, 0.42, 0.33, 1.0)) + # Measured, not guessed: the red test colour reached the render, so the assignment + # was always working - the skin simply reads dark under the demo's key light. This + # tone is lifted to sit in shadow the way the blueprint's skin does. + base.set_editor_property("constant", unreal.LinearColor(0.78, 0.55, 0.44, 1.0)) lib.connect_material_property(base, "", unreal.MaterialProperty.MP_BASE_COLOR) rough = lib.create_material_expression(material, unreal.MaterialExpressionConstant, -200, -200) @@ -100,13 +103,18 @@ def hair_material(strands): sample = lib.create_material_expression(material, unreal.MaterialExpressionTextureSample, -520, 0) sample.texture = strands - lib.connect_material_property(sample, "RGB", unreal.MaterialProperty.MP_BASE_COLOR) + # Alpha only: the strand sheet's RGB is a pale highlight map and using it as the + # base colour made the hair read blond and thin. lib.connect_material_property(sample, "A", unreal.MaterialProperty.MP_OPACITY_MASK) + colour = lib.create_material_expression(material, unreal.MaterialExpressionConstant3Vector, -520, 220) + colour.set_editor_property("constant", unreal.LinearColor(0.030, 0.020, 0.014, 1.0)) + lib.connect_material_property(colour, "", unreal.MaterialProperty.MP_BASE_COLOR) rough = lib.create_material_expression(material, unreal.MaterialExpressionConstant, -220, -180) rough.set_editor_property("r", 0.40) lib.connect_material_property(rough, "", unreal.MaterialProperty.MP_ROUGHNESS) lib.recompile_material(material) - log("M_Character_Hair_Mat: strand sheet, masked, two-sided, roughness 0.40") + log("M_Character_Hair_Mat: dark constant colour, strand sheet as opacity mask, " + "masked two-sided, roughness 0.40") return material