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,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1">
<g transform="translate(0.33734039743949185,0.4071172026683852) rotate(0) scale(1,1) translate(-0.01919286476298845,-0.019735317662897982)"><path d="M 0.024519933884819073 0.026234760589480693 C 0.02442632840888548 0.026121480332043534 0.022952745746796774 0.024643690639344434 0.023396668173615992 0.02487539750023481 C 0.022952745746796774 0.024643690639344434 0.018492230861217197 0.023454278258796188 0.019192864762988454 0.023454278258796188 C 0.018492230861217197 0.023454278258796188 0.014545138925541698 0.025107104361125183 0.014989061352360916 0.02487539750023481 C 0.014545138925541698 0.025107104361125183 0.013772190165224234 0.026348040846917855 0.013865795641157825 0.026234760589480696" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.013865795641157825 0.026234760589480696 C 0.013816301008247754 0.026091744538472617 0.013323180523471924 0.024180050097889993 0.013271860046236972 0.024518567977383752 C 0.013323180523471924 0.024180050097889993 0.014774474912097142 0.02157665615572568 0.014481641367977242 0.022172546035555605 C 0.014774474912097142 0.02157665615572568 0.017037086858270635 0.016669612647435154 0.01678586257567576 0.017367889419424635 C 0.017037086858270635 0.016669612647435154 0.01769691627472512 0.013254993538436559 0.017496332759115732 0.013793224771681822 C 0.01769691627472512 0.013254993538436559 0.01933424242997782 0.01066877210788144 0.019192864762988426 0.01090911462048147" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.019192864762988426 0.01090911462048147 C 0.01933424242997782 0.011149457133081497 0.021089980282470503 0.014331456004927065 0.020889396766861114 0.013793224771681802 C 0.021089980282470503 0.014331456004927065 0.02185109123289597 0.01806616619141411 0.021599866950301104 0.017367889419424624 C 0.02185109123289597 0.01806616619141411 0.024196921702119404 0.022768435915385517 0.023904088157999503 0.02217254603555559 C 0.024196921702119404 0.022768435915385517 0.025165189956974865 0.024857085856877487 0.0251138694797399 0.024518567977383728 C 0.025165189956974865 0.024857085856877487 0.024470439251909004 0.026377776640488772 0.024519933884819073 0.026234760589480693" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33734039743949185,0.4109771216464815) rotate(0) scale(1,1) translate(-0.01919286476298845,-0.0207756729228991)"><path d="M 0.02407495310509541 0.02260005157346109 C 0.023858794954017687 0.02246583786760259 0.021074087797259587 0.020820027384368077 0.021481055292162727 0.020989487103159083 C 0.021074087797259587 0.020820027384368077 0.018809724478606873 0.020566534947969017 0.01919134316625771 0.020566534947969017 C 0.018809724478606873 0.020566534947969017 0.016494650305593238 0.02115894682195009 0.016901631040352694 0.020989487103159083 C 0.016494650305593238 0.02115894682195009 0.0140914029582102 0.0227342652793196 0.014307574349144238 0.022600051573461098" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.014307574349144238 0.022600051573461098 C 0.014400141749016273 0.02237149814787899 0.015582117725442756 0.019452620688871252 0.015418383147608662 0.019857410466475798 C 0.015582117725442756 0.019452620688871252 0.016395850676591415 0.017364074720619814 0.016272389283153353 0.01774257424220654 C 0.016395850676591415 0.017364074720619814 0.01701238757830594 0.014936434549462854 0.016899919868865416 0.015315416207435071 C 0.01701238757830594 0.014936434549462854 0.01781308053761655 0.012878432700529 0.017622001796439635 0.013194794346539931 C 0.01781308053761655 0.012878432700529 0.019323770010200827 0.011379433297700896 0.019192864762988426 0.011519076455303898" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.019192864762988426 0.011519076455303898 C 0.019323770010200827 0.0116587196129069 0.02095480647071414 0.013511155992550844 0.02076372772953722 0.013194794346539914 C 0.02095480647071414 0.013511155992550844 0.021603256575365954 0.01569439786540728 0.021485809657111443 0.01531541620743506 C 0.021603256575365954 0.01569439786540728 0.02229629854257428 0.01812107376379326 0.02217309074859134 0.017742574242206533 C 0.02229629854257428 0.01812107376379326 0.023122791714615374 0.020262200244080337 0.022964303184906703 0.01985741046647579 C 0.023122791714615374 0.020262200244080337 0.024167507265111136 0.022828604999043198 0.02407495310509541 0.02260005157346109" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33734039743949185,0.4040959859997025) rotate(0) scale(1,1) translate(-0.022933258138484177,-0.022933258138484177)"><path d="M 0.02414884649173639 0.022161575963360918 C 0.02427516431532156 0.022287666987709766 0.024403989712227507 0.023365901253686594 0.02444907202150619 0.02320866831811174 C 0.024403989712227507 0.023365901253686594 0.023425324236648008 0.02411834642960478 0.023607858780392177 0.02404837119025916 C 0.023425324236648008 0.02411834642960478 0.022076122952832004 0.023978395950913542 0.022258657496576174 0.02404837119025916 C 0.022076122952832004 0.023978395950913542 0.02137236194618348 0.023051435382536886 0.021417444255462166 0.02320866831811174 C 0.02137236194618348 0.023051435382536886 0.02184398760881713 0.02203548493901207 0.021717669785231965 0.022161575963360918 C 0.02184398760881713 0.02203548493901207 0.02313585619735954 0.02169557602592558 0.022933258138484174 0.02169557602592558 C 0.02313585619735954 0.02169557602592558 0.02427516431532156 0.022287666987709766 0.02414884649173639 0.022161575963360918 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33734039743949185,0.40740572241943596) rotate(0) scale(1,1) translate(-0.02456377814682995,-0.024563778146829942)"><path d="M 0.02474033872797484 0.024395581603393682 C 0.024784478873261063 0.02440959798201337 0.02491689930911973 0.024591810904069315 0.02491689930911973 0.02456377814682994 C 0.02491689930911973 0.024591810904069315 0.02469619858268862 0.024745991068885892 0.02474033872797484 0.024731974690266202 C 0.02469619858268862 0.024745991068885892 0.02434307742039884 0.024717958311646512 0.02438721756568506 0.024731974690266202 C 0.02434307742039884 0.024717958311646512 0.02421065698454017 0.024535745389590562 0.02421065698454017 0.02456377814682994 C 0.02421065698454017 0.024535745389590562 0.024431357710971283 0.024381565224773992 0.02438721756568506 0.024395581603393682 C 0.024431357710971283 0.024381565224773992 0.024784478873261063 0.02440959798201337 0.02474033872797484 0.024395581603393682 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33734039743949185,0.4109771216464815) rotate(0) scale(1,1) translate(-0.04809024934050082,-0.04760144134155646)"><path d="M 0.05313864982085187 0.0494807445127136 C 0.052948218835834684 0.04937130355190935 0.05043277796061636 0.04802024074194863 0.050853478000645616 0.04816745298306261 C 0.05043277796061636 0.04802024074194863 0.04762971123047669 0.04771419761934586 0.048090249340500824 0.04771419761934586 C 0.04762971123047669 0.04771419761934586 0.044906320640326784 0.04831466522417659 0.04532702068035604 0.04816745298306261 C 0.044906320640326784 0.04831466522417659 0.04285141787513259 0.04959018547351785 0.04304184886014978 0.0494807445127136" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.04304184886014978 0.0494807445127136 C 0.04316529525717248 0.04930403066042178 0.04494390566445142 0.047078334891791966 0.04452320562442216 0.04736017828521175 C 0.04494390566445142 0.047078334891791966 0.04868475662651393 0.046098623791676153 0.04809024934050082 0.046098623791676153 C 0.04868475662651393 0.046098623791676153 0.052077993096608724 0.04764202167863154 0.05165729305657947 0.04736017828521175 C 0.052077993096608724 0.04764202167863154 0.05326209621787457 0.04965745836500542 0.05313864982085187 0.0494807445127136" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></svg>

After

Width:  |  Height:  |  Size: 7.8 KiB