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,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1">
<g transform="translate(0.21966171751867267,0.4243972925111011) rotate(0) scale(1,1) translate(-0.011628401968068889,0.004161837954568095)"><path d="M 0.010547043301748698 -0.004161837954568094 C 0.010573436853454559 -0.004248496706431077 0.010953879144412391 -0.005324296959106848 0.010863765922219042 -0.005201742976923892 C 0.010953879144412391 -0.005324296959106848 0.01175584130904387 -0.005632485740763562 0.011628401968068894 -0.005632485740763562 C 0.01175584130904387 -0.005632485740763562 0.012483151236112095 -0.005079188994740939 0.012393038013918745 -0.005201742976923895 C 0.012483151236112095 -0.005079188994740939 0.012736154186094948 -0.004075179202705113 0.012709760634389087 -0.004161837954568096" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.012709760634389087 -0.004161837954568096 C 0.012769706814109338 -0.0037059327807303344 0.014184379874004003 0.0031964850766680944 0.013429114791032093 0.0013090241314850468 C 0.014184379874004003 0.0031964850766680944 0.022466769801927678 0.021297968055753496 0.021772941630052018 0.018487693387628474 C 0.022466769801927678 0.021297968055753496 0.02175356212216401 0.03641103904576504 0.02175505285354001 0.0350323201489853" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.02175505285354001 0.0350323201489853 C 0.02137732318488866 0.03525976844276846 0.01923118522038937 0.03706792929175553 0.019488674841631918 0.03639700991168424 C 0.01923118522038937 0.03706792929175553 0.020099594513211517 0.039814112825328755 0.02021011512608472 0.03905783642941303 C 0.020099594513211517 0.039814112825328755 0.01887732082630155 0.041977727171928415 0.0188255511643927 0.04093466828717857 C 0.01887732082630155 0.041977727171928415 0.020803263419728674 0.046046443313034355 0.02052073309753782 0.0453161897379121" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.02052073309753782 0.0453161897379121 C 0.020449108827029307 0.04596904112423048 0.019504737836038684 0.0544748880678813 0.01966124185143565 0.053150406373732716 C 0.019504737836038684 0.0544748880678813 0.018557805167885744 0.06188160037552526 0.0186426849127742 0.06120997006769506" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.0186426849127742 0.06120997006769506 C 0.018386569728579612 0.06132314243202588 0.015251179382792215 0.06344706985856725 0.015569302702439163 0.06256803843966487 C 0.015251179382792215 0.06344706985856725 0.014763196941558464 0.07252420614909533 0.014825205077010826 0.07175834709452375" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.014825205077010826 0.07175834709452375 C 0.014373952328121874 0.07077538874953558 0.00866304753306185 0.058254337239987006 0.009410172090343404 0.059962846954665645 C 0.00866304753306185 0.058254337239987006 0.005563838581239574 0.05053067914868957 0.005859710389632176 0.05125623051838004" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.005859710389632176 0.05125623051838004 C 0.006308858733559969 0.05069713053565691 0.00897879257091437 0.04681518090469114 0.008554600453198937 0.04790163062204123 C 0.00897879257091437 0.04681518090469114 0.007942572566443587 0.044217396918987656 0.00840486309592477 0.04473753221427949 C 0.007942572566443587 0.044217396918987656 0.004906188669774191 0.044382869651903994 0.005780857276311833 0.04478081885029021 C 0.004906188669774191 0.044382869651903994 0.0027195171534300966 0.04194467338624084 0.003156851456698916 0.04234983702396218" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.003156851456698916 0.04234983702396218 C 0.0030340620167480657 0.04180707236429479 0.0014912136002269265 0.03481059055738859 0.0016833781772887095 0.03583666110795352 C 0.0014912136002269265 0.03481059055738859 0.0007815013948465873 0.029553684526285477 0.0008508765319575198 0.03003699041718302" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.0008508765319575198 0.03003699041718302 C 0.0011177386144176533 0.029592091314246154 0.004078817621625851 0.023876153384703384 0.004053221521479123 0.024698201181940643 C 0.004078817621625851 0.023876153384703384 0.0009167637514048513 0.019795268156035543 0.0011580297337182568 0.020172416850335936" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.0011580297337182568 0.020172416850335936 C 0.0013253190550226092 0.01968407801542699 0.003905383670772843 0.0126764669353145 0.0031655015893704854 0.014312350831428603 C 0.003905383670772843 0.0126764669353145 0.010651743186578069 -0.000997705635199696 0.010036614710546551 0.0005418100969666955 C 0.010651743186578069 -0.000997705635199696 0.01058957901768221 -0.004553808625529326 0.010547043301748698 -0.004161837954568094" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.2196617175186727,0.44870514801193717) rotate(0) scale(1,1) translate(-0.030470409749388385,-0.030470409749388392)"><path d="M 0.030470409749388392 0.009257914270467245 C 0.03046093120543167 0.011699915372076836 0.030631805874919784 0.04413790329275355 0.030356667221907715 0.03856192748978235 C 0.030631805874919784 0.04413790329275355 0.034056690782502015 0.07930359860748325 0.033772073585533226 0.07616962390612164" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.033772073585533226 0.07616962390612164 C 0.033329732380352355 0.07303564920476004 0.028188840470350682 0.03298595168681115 0.02846397912336275 0.03856192748978235 C 0.028188840470350682 0.03298595168681115 0.030637612301557187 0.006815913168857653 0.030470409749388385 0.009257914270467245" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></svg>

After

Width:  |  Height:  |  Size: 5.6 KiB