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,10 @@
<?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.01919286476298845 0.028100586173949643 C 0.01892279834832026 0.027980549749459273 0.015531649844698717 0.026284703285652234 0.015952067786970156 0.026660149080065178 C 0.015531649844698717 0.026284703285652234 0.014217332354789987 0.02282088166927427 0.014147849455731186 0.023595236640994315 C 0.014217332354789987 0.02282088166927427 0.017064902850957804 0.016551055096981928 0.01678586257567576 0.017367889419424635 C 0.017064902850957804 0.016551055096981928 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.02187890722558315 0.01818472374186733 0.021599866950301104 0.017367889419424624 C 0.02187890722558315 0.01818472374186733 0.024307362969304448 0.024369591612714344 0.02423788007024565 0.0235952366409943 C 0.024307362969304448 0.024369591612714344 0.02201324379673527 0.027035594874478094 0.022433661739006704 0.02666014908006515 C 0.02201324379673527 0.027035594874478094 0.018922798348320263 0.028220622598440017 0.01919286476298845 0.028100586173949643" 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.01919286476298845 0.024662010958448496 C 0.01898753183202074 0.024574576608241812 0.016461990033564942 0.023178618952599334 0.01672886959137593 0.023612798755968303 C 0.016461990033564942 0.023178618952599334 0.016004564259047355 0.01876040477230978 0.015990310069256566 0.019451853318020882 C 0.016004564259047355 0.01876040477230978 0.017035894179464005 0.014793994626478325 0.016899919868865416 0.015315416207435071 C 0.017035894179464005 0.014793994626478325 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.021621783967710032 0.015836837788391806 0.021485809657111443 0.01531541620743506 C 0.021621783967710032 0.015836837788391806 0.022409673646511072 0.02014330186373198 0.022395419456720283 0.01945185331802088 C 0.022409673646511072 0.02014330186373198 0.021389980376789932 0.024046978559337264 0.021656859934600918 0.023612798755968296 C 0.021389980376789932 0.024046978559337264 0.018987531832020746 0.02474944530865518 0.01919286476298845 0.024662010958448496" 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.04481464761927567,-0.044322296567054956)"><path d="M 0.04744094453106685 0.044322296567054956 C 0.047576206260736505 0.04462253336527269 0.04608366856965925 0.04673453166469105 0.046437788375311505 0.04654897511871904 C 0.04608366856965925 0.04673453166469105 0.042837387057587564 0.046363418572747034 0.04319150686323982 0.04654897511871904 C 0.042837387057587564 0.046363418572747034 0.04232361243715414 0.04402205976883722 0.042188350707484494 0.044322296567054956 C 0.04232361243715414 0.04402205976883722 0.04525236377124083 0.04294613354010617 0.04481464761927564 0.04294613354010617 C 0.04525236377124083 0.04294613354010617 0.047576206260736505 0.04462253336527269 0.04744094453106685 0.044322296567054956 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g></svg>

After

Width:  |  Height:  |  Size: 6.2 KiB