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,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1">
<g transform="translate(0.3373434528286707,0.07847599559563229) rotate(0) scale(1,1) translate(-0.027518731894252097,-0.027518731894252104)"><path d="M 0.03193564947043487 0.030518859602013837 C 0.03156757300575297 0.03126889152895428 0.022733737853387437 0.029768827675073394 0.023101814318069337 0.030518859602013837 C 0.022733737853387437 0.029768827675073394 0.02825488482361589 0.02151847647872851 0.027518731894252097 0.02151847647872851 C 0.02825488482361589 0.02151847647872851 0.03156757300575297 0.03126889152895428 0.03193564947043487 0.030518859602013837 Z" fill="#cccccc" stroke="none" stroke-width="0"/>
</g><g id="お下げ">
<g transform="translate(0.3373434528286707,0.06806009361139365) rotate(0) scale(1,1) translate(-0.19551282657519264,-0.15443650689281874)"><path d="M 0.19841028830046384 0.24950628194903168 C 0.19816883315669123 0.24950628194903168 0.1950299162876475 0.24950628194903168 0.19551282657519267 0.24950628194903168 C 0.1950299162876475 0.24950628194903168 0.19237390970614887 0.24950628194903168 0.19261536484992148 0.24950628194903168" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.19261536484992148 0.24950628194903168 C 0.19247636737445278 0.24417061687939104 0.19088014358138075 0.17745575162097676 0.1909473951442972 0.18547830111334399 C 0.19088014358138075 0.17745575162097676 0.19188009200747624 0.15054880361789846 0.191808346094924 0.15323568804062504" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.191808346094924 0.15323568804062504 C 0.19211705280161306 0.15299505725441673 0.19613023998857074 0.15034811860612515 0.19551282657519264 0.15034811860612515 C 0.19613023998857074 0.15034811860612515 0.1995260137621503 0.15347631882683335 0.19921730705546123 0.15323568804062504" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.19921730705546123 0.15323568804062504 C 0.19928905296801347 0.15592257246335162 0.20001100644317163 0.1935008506057112 0.20007825800608808 0.18547830111334399 C 0.20001100644317163 0.1935008506057112 0.19827129082499514 0.2548419470186723 0.19841028830046384 0.24950628194903168" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3325761350110321,0.0702381471854133) rotate(0) scale(1,1) translate(-0.17216491458587796,-0.1608813292440714)"><path d="M 0.1685604221025655 0.16216507857200807 C 0.1689821390652209 0.16164175170973313 0.17413865334230522 0.15555302025830312 0.17362102565443016 0.1558851562247087 C 0.17413865334230522 0.15555302025830312 0.1748678650822858 0.15837063787101063 0.17477195435706613 0.15817944697514125" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17477195435706613 0.15817944697514125 C 0.17478500586983425 0.160562005878536 0.17477973320604456 0.19424634352353326 0.17492857251028363 0.18677015381587841 C 0.17477973320604456 0.19424634352353326 0.17282399188919026 0.2529873542712594 0.17298588270619744 0.2478937234669993" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17298588270619744 0.2478937234669993 C 0.17277173153656503 0.24789771541754385 0.1699877663313436 0.2479496107746227 0.17041606867060843 0.24794162687353363 C 0.1699877663313436 0.2479496107746227 0.16763210346538704 0.2479935222306124 0.16784625463501945 0.2479895302800679" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16784625463501945 0.2479895302800679 C 0.1678122185920189 0.24289960166348745 0.16749733607464143 0.1797583492387641 0.1674378221190126 0.18691038688110242 C 0.16749733607464143 0.1797583492387641 0.1686539721011949 0.1601029695462502 0.1685604221025655 0.16216507857200807" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3307361150184658,0.07029511789090495) rotate(0) scale(1,1) translate(-0.17478315274251371,-0.16762787884009597)"><path d="M 0.17144353295610681 0.17355719535978548 C 0.17179407168794578 0.1728051631175722 0.17609208880902724 0.16402441655477812 0.1756499977381745 0.16453280845322615 C 0.17609208880902724 0.16402441655477812 0.17684017814535363 0.16770013292217412 0.17674862580633985 0.1674564925784089" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17674862580633985 0.1674564925784089 C 0.1766253806697123 0.17063699470062538 0.17480676705884102 0.2125657120004539 0.17526968416680946 0.20562251804500678 C 0.17480676705884102 0.2125657120004539 0.1708539485393777 0.2545375118770049 0.1711936205107186 0.25077482004377427" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1711936205107186 0.25077482004377427 C 0.17098533598099597 0.25077482004377427 0.1682776370946016 0.25077482004377427 0.1686942061540469 0.25077482004377427 C 0.1682776370946016 0.25077482004377427 0.16598650726765257 0.25077482004377427 0.1661947917973752 0.25077482004377427" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1661947917973752 0.25077482004377427 C 0.1665221224208525 0.24528774045301507 0.17056015437566355 0.1784950628976649 0.1701227592791026 0.18492986495466396 C 0.17056015437566355 0.1784950628976649 0.1715535974291905 0.1726094728935456 0.17144353295610681 0.17355719535978548" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.32876568411187773,0.07179114989584906) rotate(0) scale(1,1) translate(-0.17594161129954422,-0.17052112892115934)"><path d="M 0.17302817910709076 0.1764245003141878 C 0.17331082716542306 0.17583082676528822 0.17665975808541184 0.16931794455963284 0.17641995580707834 0.1693004177273928 C 0.17665975808541184 0.16931794455963284 0.17586296066709395 0.17724602268220793 0.17590580644709275 0.1766348223010683" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17590580644709275 0.1766348223010683 C 0.17573549712806744 0.17948552176320215 0.17328025765700553 0.2164131379343811 0.17386209461878896 0.2108432158466746 C 0.17328025765700553 0.2164131379343811 0.16851223526293357 0.24619310997911922 0.1689237629056917 0.24347388735354655" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1689237629056917 0.24347388735354655 C 0.16873714366433887 0.2434674425868882 0.16631109352675208 0.24338366062032982 0.16668433200945773 0.2433965501536465 C 0.16631109352675208 0.24338366062032982 0.16425828187187094 0.24331276818708808 0.16444490111322377 0.24331921295374642" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16444490111322377 0.24331921295374642 C 0.16493784342595308 0.2401165036141471 0.1710754820321312 0.19931214149192483 0.1703602088659756 0.2048867008785547 C 0.1710754820321312 0.19931214149192483 0.17325050996051702 0.17405265026715722 0.17302817910709076 0.1764245003141878" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.34211077064630924,0.0702381471854133) rotate(0) scale(1,1) translate(-0.17212136038923373,-0.1608813292440714)"><path d="M 0.17572585287254613 0.16216507857200807 C 0.17581940287117553 0.16422718759776594 0.1769079668117279 0.19406242452344075 0.17684845285609907 0.18691038688110242 C 0.1769079668117279 0.19406242452344075 0.1764059842970917 0.25307945889664835 0.17644002034009226 0.2479895302800679" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17644002034009226 0.2479895302800679 C 0.17622586917045985 0.2479855383295234 0.1734419039652384 0.24793364297244458 0.17387020630450323 0.24794162687353363 C 0.1734419039652384 0.24793364297244458 0.17108624109928178 0.24788973151645477 0.1713003922689142 0.2478937234669993" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1713003922689142 0.2478937234669993 C 0.171138501451907 0.24280009266273925 0.169208863160589 0.17929396410822357 0.16935770246482806 0.18677015381587841 C 0.169208863160589 0.17929396410822357 0.16952737213081367 0.1557968880717465 0.16951432061804556 0.15817944697514125" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16951432061804556 0.15817944697514125 C 0.16961023134326522 0.15798825607927186 0.17118287700855656 0.15621729219111427 0.1706652493206815 0.1558851562247087 C 0.17118287700855656 0.15621729219111427 0.17614756983520152 0.162688405434283 0.17572585287254613 0.16216507857200807" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.34395079063887546,0.07029511789090495) rotate(0) scale(1,1) translate(-0.17464380656719036,-0.16762787884009597)"><path d="M 0.17798342635359735 0.17355719535978548 C 0.17809349082668102 0.17450491782602534 0.17974159512716245 0.19136466701166302 0.1793042000306015 0.18492986495466396 C 0.17974159512716245 0.19136466701166302 0.18355949813580616 0.25626189963453344 0.18323216751232888 0.25077482004377427" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.18323216751232888 0.25077482004377427 C 0.18302388298260625 0.25077482004377427 0.18031618409621186 0.25077482004377427 0.18073275315565715 0.25077482004377427 C 0.18031618409621186 0.25077482004377427 0.17802505426926288 0.25077482004377427 0.1782333387989855 0.25077482004377427" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1782333387989855 0.25077482004377427 C 0.1778936668276446 0.24701212821054364 0.17369435803492622 0.19867932408955966 0.17415727514289467 0.20562251804500678 C 0.17369435803492622 0.19867932408955966 0.17255508836673675 0.1642759904561924 0.17267833350336428 0.1674564925784089" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17267833350336428 0.1674564925784089 C 0.17276988584237807 0.16721285223464366 0.17421905264238238 0.1650412003516742 0.17377696157152964 0.16453280845322615 C 0.17421905264238238 0.1650412003516742 0.1783339650854363 0.17430922760199874 0.17798342635359735 0.17355719535978548" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.34592122154546356,0.07179114989584906) rotate(0) scale(1,1) translate(-0.17571295307502857,-0.17052112892115934)"><path d="M 0.17862638526748204 0.1764245003141878 C 0.1788487161209083 0.17879635036121838 0.18200962867475276 0.21046126026518458 0.18129435550859718 0.2048867008785547 C 0.18200962867475276 0.21046126026518458 0.18770260557407836 0.24652192229334574 0.18720966326134905 0.24331921295374642" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.18720966326134905 0.24331921295374642 C 0.18702304401999623 0.24332565772040476 0.1845969938824094 0.24340943968696319 0.18497023236511506 0.2433965501536465 C 0.1845969938824094 0.24340943968696319 0.18254418222752825 0.2434803321202049 0.18273080146888107 0.24347388735354655" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.18273080146888107 0.24347388735354655 C 0.18231927382612298 0.24075466472797388 0.17721063279400043 0.20527329375896808 0.17779246975578386 0.2108432158466746 C 0.17721063279400043 0.20527329375896808 0.17557844860845467 0.17378412283893446 0.17574875792748 0.1766348223010683" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17574875792748 0.1766348223010683 C 0.17570591214748119 0.17602362191992868 0.175474410845828 0.16928289089515275 0.17523460856749448 0.1693004177273928 C 0.175474410845828 0.16928289089515275 0.17890903332581434 0.17701817386308738 0.17862638526748204 0.1764245003141878" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB