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.28934055605564923,0.2657547545850347) rotate(0) scale(1,1) translate(-0.01713961730213782,-0.01713961730213782)"><path d="M 0.006684605901275758 0.0028157093880058904 C 0.007576934828529871 0.0023971069600923645 0.019235347059129965 -0.002577978812140826 0.017392553028325115 -0.0022075197469564193 C 0.019235347059129965 -0.002577978812140826 0.02974859937448471 -0.0015816560314778662 0.028798134270933973 -0.0016297993942069855" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.2984629674000882,0.26168376785631786) rotate(0) scale(1,1) translate(-0.10030823607636913,-0.06682368514423945)"><path d="M 0.10256670705831186 0.08627767139371725 C 0.10204170477444358 0.08628885871430203 0.09530258076880999 0.08630363464991396 0.09626667965189244 0.08641191924073464 C 0.09530258076880999 0.08630363464991396 0.09014383715169447 0.08460136037070863 0.09099752046132244 0.08497825630386903 C 0.09014383715169447 0.08460136037070863 0.08529128419270768 0.08142686074523244 0.08602247993635685 0.08188916804280981 C 0.08529128419270768 0.08142686074523244 0.08190656250429705 0.07922568545711801 0.08222317153753242 0.07943056873294047" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.08222317153753242 0.07943056873294047 C 0.0819128183942688 0.0791581266362287 0.07787823885894025 0.0755004026324448 0.07849893381836895 0.07616126357239929 C 0.07787823885894025 0.0755004026324448 0.0743899357331889 0.07062026711660455 0.07477483202438816 0.07150023745348658 C 0.0743899357331889 0.07062026711660455 0.07398869214337976 0.06462941115874345 0.07388017832397792 0.06560161952981497 C 0.07398869214337976 0.06462941115874345 0.07663789742465738 0.059037155781641024 0.07607699785721024 0.059833737000628266 C 0.07663789742465738 0.059037155781641024 0.08135679663852231 0.05559448221451755 0.08061097313334346 0.05604264490196805 C 0.08135679663852231 0.05559448221451755 0.08539487215152425 0.054323546405326766 0.0850268799193565 0.05445578475122225" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.0850268799193565 0.05445578475122225 C 0.08531240920948571 0.05439515034328244 0.08899935145172849 0.05359215382891472 0.0884532314009072 0.053728171855944515 C 0.08899935145172849 0.05359215382891472 0.0921166959563195 0.05266747562888841 0.09158032052921196 0.05282356842686467 C 0.0921166959563195 0.05266747562888841 0.09545250906821315 0.05169221293643565 0.09488973652619768 0.05185505828022941 C 0.09545250906821315 0.05169221293643565 0.09862057890899756 0.05078728813643209 0.09833359103339757 0.050869424301339575" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.09833359103339757 0.050869424301339575 C 0.09876389363547286 0.05081189750974789 0.10455180241592532 0.050258201002457356 0.10349722225830098 0.050179102802239334 C 0.10455180241592532 0.050258201002457356 0.11211236605149666 0.052370491479117584 0.11098855292488963 0.051818602703955816 C 0.11211236605149666 0.052370491479117584 0.11781100487032051 0.05780975379821435 0.11698297977758536 0.05680176810418052 C 0.11781100487032051 0.05780975379821435 0.12125334355938858 0.06450715294304346 0.1209248540377114 0.06391443103236169" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1209248540377114 0.06391443103236169 C 0.12091664466271257 0.06455032672967832 0.12053809099234904 0.07285596407848052 0.12082634153772544 0.07154517940016125 C 0.12053809099234904 0.07285596407848052 0.11658391973756177 0.08075663960795583 0.11746584749319466 0.07964384717219292 C 0.11658391973756177 0.08075663960795583 0.10900161343389056 0.08545150731444318 0.11024320847013079 0.08489868862931615 C 0.10900161343389056 0.08545150731444318 0.10192699860732696 0.08639258662408401 0.10256670705831186 0.08627767139371725" fill="none" stroke="none" stroke-width="0"/>
</g><g transform="translate(0.28934055605564923,0.2657547545850347) rotate(0) scale(1,1) translate(-0.01713961730213782,-0.01713961730213782)"><path d="M 0.021097744229037003 0.029961047926365635 C 0.020279586699656373 0.02979492626425909 0.009844189688233185 0.027293691163660254 0.011279853876469452 0.02796758798108709 C 0.009844189688233185 0.027293691163660254 0.0032522673113461577 0.021366510961923334 0.0038697739702017956 0.021874286117243624" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.0038697739702017956 0.021874286117243624 C 0.004039117619896665 0.021268897432638097 0.00675863246773358 0.013804745252757359 0.005901897766540232 0.014609621901977303 C 0.00675863246773358 0.013804745252757359 0.014837981436020442 0.012016278361989867 0.014150590384521964 0.012215766326604285" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.014150590384521964 0.012215766326604285 C 0.014802091412544191 0.012316007341140975 0.023115045162315058 0.013896857209737743 0.021968602720788696 0.013418658501044563 C 0.023115045162315058 0.013896857209737743 0.02840284109634242 0.018332108525078925 0.027907899682838286 0.017954150830922434" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.027907899682838286 0.017954150830922434 C 0.028014187040628944 0.0185901588699094 0.028615835021842763 0.02658682205671963 0.029183347976326202 0.02558624729876603 C 0.028615835021842763 0.02658682205671963 0.0204239439167629 0.030325614645332268 0.021097744229037003 0.029961047926365635" fill="none" stroke="none" stroke-width="0"/>
</g></svg>

After

Width:  |  Height:  |  Size: 5.4 KiB