Phase 0.3-0.5: SVG export + YAML sidecars + asset catalog

- Add hair class KeyMap entries (基髪→BaseHair, 前髪→FrontHair, 胸毛→ChestHair)
- Implement cardinal spline → cubic Bezier SVG export for all 175 body parts
- Generate YAML sidecar files (part.yaml) per part with metadata
- Write Catalog.yaml index for runtime asset loading
- Output to SlaveMatrix/Assets/Parts/{EnglishName}/ structure
- Each part directory contains part.yaml + x{x}y{y}.svg morph variants
- 838 SVGs across 324 morph variants, 175 sidecars, 1 catalog
- Extraction tool now serves as the asset build pipeline step
This commit is contained in:
2026-06-13 17:56:01 +02:00
parent fb0ff502f0
commit 58f3bf6884
1070 changed files with 83799 additions and 32 deletions

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1">
<g transform="translate(0.4285093654377815,0.17558092828914248) rotate(0) scale(1,1) translate(-0.133501349118799,-0.15866835892351938)"><path d="M 0.13643507369698177 0.10925136934295628 C 0.13686062813017863 0.10928366336157991 0.13864606657569256 0.11139069522092918 0.13852131828417746 0.11099789640209207 C 0.13864606657569256 0.11139069522092918 0.13795639091666462 0.11446073733211501 0.13793205319516294 0.11396495516900154 C 0.13795639091666462 0.11446073733211501 0.1390470350749405 0.11760033531053145 0.13881337094219767 0.11694728235945373 C 0.1390470350749405 0.11760033531053145 0.140565257643455 0.12244747818383651 0.14073602278807706 0.1218015905819341 C 0.140565257643455 0.12244747818383651 0.1363044368282205 0.12503120475284854 0.13676418920673294 0.12469793358228269 C 0.1363044368282205 0.12503120475284854 0.1349101164778424 0.1259995488583058 0.1352189942459276 0.1258008446287244 C 0.1349101164778424 0.1259995488583058 0.13265868449470603 0.1271251055538971 0.13305765598971064 0.12708238433725955 C 0.13265868449470603 0.1271251055538971 0.12988274428375296 0.1259700924250443 0.13043133630587211 0.12631349922837504 C 0.12988274428375296 0.1259700924250443 0.1260209749628748 0.1224018438080982 0.12647455172428068 0.12296150269729085 C 0.1260209749628748 0.1224018438080982 0.1249799498490308 0.11917218476248337 0.12498841516900125 0.11959759255806324 C 0.1249799498490308 0.11917218476248337 0.1266729609778226 0.1175502504862149 0.1263729678846353 0.11785660915033239 C 0.1266729609778226 0.1175502504862149 0.12869534591310414 0.11548191793782087 0.12858833228724875 0.11592128858865339 C 0.12869534591310414 0.11548191793782087 0.12775090283639973 0.11202152790411038 0.12765713139490004 0.1125841613403421 C 0.12775090283639973 0.11202152790411038 0.13019338405948783 0.10900520459039481 0.12971358958524493 0.10916968735387261 C 0.13019338405948783 0.10900520459039481 0.13397478876179306 0.11061717501103215 0.13341466508581498 0.1106103681786085 C 0.13397478876179306 0.11061717501103215 0.13686062813017863 0.10928366336157991 0.13643507369698177 0.10925136934295628 Z" fill="#cccccc" stroke="none" stroke-width="0"/>
</g><g transform="translate(0.4285093654377815,0.17558092828914248) rotate(0) scale(1,1) translate(-0.133501349118799,-0.14511974897634428)"><path d="M 0.1348062004764993 0.11025364381228675 C 0.13504092426661404 0.11043081697299649 0.13611434675946021 0.11214619717612179 0.1359192643433893 0.11184582653000878 C 0.13611434675946021 0.11214619717612179 0.13721155505888954 0.11433646741630779 0.1371471894693504 0.11385809156564276 C 0.13721155505888954 0.11433646741630779 0.13654508017859485 0.11813139340797056 0.13669165141785927 0.11758633673798911 C 0.13654508017859485 0.11813139340797056 0.13524504853528663 0.12110844568812909 0.13538833459817745 0.12039877160542016 C 0.13524504853528663 0.12110844568812909 0.13488536308979768 0.12699066459198413 0.1349722186631695 0.12610242573049632 C 0.13488536308979768 0.12699066459198413 0.13422349525568478 0.13226232059820592 0.13434606771771565 0.13105763794327396 C 0.13422349525568478 0.13226232059820592 0.133346031895653 0.14053682258497324 0.133501349118799 0.14055861758967972 C 0.133346031895653 0.14053682258497324 0.13240290717147166 0.12956128750681925 0.1324822610399639 0.13079609788679641 C 0.13240290717147166 0.12956128750681925 0.13247293974791333 0.12483327318260459 0.13254910269689194 0.12574089302995384 C 0.13247293974791333 0.12483327318260459 0.13138853266505754 0.11916728287527172 0.13156830565222055 0.11990465971860545 C 0.13138853266505754 0.11916728287527172 0.13029763678860545 0.11637820245081315 0.13039182685093587 0.11689237090994904 C 0.13029763678860545 0.11637820245081315 0.13050974387668765 0.11330661352649993 0.13043802490425543 0.11373463820897475 C 0.13050974387668765 0.11330661352649993 0.13138437724170002 0.11147107958390505 0.13125245452012255 0.1117560747202511 C 0.13138437724170002 0.11147107958390505 0.13217527459167602 0.11014500272959218 0.1320210975631852 0.11031469657282213 C 0.13217527459167602 0.11014500272959218 0.13333467077145525 0.10971466087144725 0.1331025788620124 0.10971974860149186 C 0.13333467077145525 0.10971466087144725 0.13504092426661404 0.11043081697299649 0.1348062004764993 0.11025364381228675 Z" fill="#cccccc" stroke="none" stroke-width="0"/>
</g></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB