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,18 @@
<?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.23715836376383106) rotate(0) scale(1,1) translate(-0.5000000000000002,-0.49207099631256435)"><path d="M 0.4797179758448602 0.47210778026026223 C 0.4802970209125285 0.47206794706492133 0.4883566853364748 0.4715829528337222 0.4866665166568798 0.4716297819161717 C 0.4883566853364748 0.4715829528337222 0.5022222472238537 0.47154583127086785 0.5000000000000002 0.47154583127086785 C 0.5022222472238537 0.47154583127086785 0.5150236520227156 0.47167661099862124 0.5133334833431206 0.4716297819161717 C 0.5150236520227156 0.47167661099862124 0.5208610692228084 0.47214761345560313 0.5202820241551401 0.47210778026026223" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.5202820241551401 0.47210778026026223 C 0.5206031562042632 0.47269284989052135 0.5248792829636385 0.4802987550838901 0.5241356087446167 0.47912861582337185 C 0.5248792829636385 0.4802987550838901 0.5296286569533005 0.4867345210167404 0.5292061147834017 0.4861494513864813" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.5292061147834017 0.4861494513864813 C 0.5293582299645653 0.4866429134636549 0.5315836187260321 0.4933642713792419 0.5310314969573644 0.49207099631256435 C 0.5315836187260321 0.4933642713792419 0.5362315825949183 0.5024685651761154 0.5358315760074142 0.5016687521866114" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.5358315760074142 0.5016687521866114 C 0.5359977002534245 0.5022577741122469 0.5381074501114262 0.510144458087274 0.5378250669595382 0.508737015294237 C 0.5381074501114262 0.510144458087274 0.5391426085859086 0.5201326043112421 0.5392201738300705 0.5185580657030563 C 0.5391426085859086 0.5201326043112421 0.5361195202309377 0.5290477432905308 0.5368942840295949 0.5276314785924671 C 0.5361195202309377 0.5290477432905308 0.5284484027530066 0.5364799948706956 0.5299230082461828 0.5355532420798217 C 0.5284484027530066 0.5364799948706956 0.5173698320480079 0.5387715450664196 0.5191990181114815 0.5387525120829542 C 0.5173698320480079 0.5387715450664196 0.5063728573085428 0.5352366487606954 0.5079727754844995 0.5357816378814061 C 0.5063728573085428 0.5352366487606954 0.4993356020429586 0.5319152263638443 0.5000000000000002 0.5322126426344259" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.5000000000000002 0.5322126426344259 C 0.4993356020429585 0.5325100589050076 0.49042730633954307 0.5363266270021168 0.49202722451549996 0.5357816378814061 C 0.49042730633954307 0.5363266270021168 0.4789717958250443 0.5387334790994889 0.48080098188851755 0.5387525120829543 C 0.4789717958250443 0.5387334790994889 0.46860238626064454 0.534626489288948 0.4700769917538206 0.5355532420798219 C 0.46860238626064454 0.534626489288948 0.46233095217174697 0.5262152138944035 0.46310571597040456 0.5276314785924673 C 0.46233095217174697 0.5262152138944035 0.46070226092576744 0.5169835270948705 0.46077982616992935 0.5185580657030564 C 0.46070226092576744 0.5169835270948705 0.46245731619234987 0.5073295725011999 0.4621749330404618 0.508737015294237 C 0.46245731619234987 0.5073295725011999 0.46433454823859643 0.501079730260976 0.46416842399258607 0.5016687521866114" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.46416842399258607 0.5016687521866114 C 0.46456843058009023 0.5008689391971075 0.46952062481130363 0.4907777212458868 0.46896850304263593 0.49207099631256435 C 0.46952062481130363 0.4907777212458868 0.470946000397762 0.4856559893093077 0.4707938852165985 0.4861494513864813" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.4707938852165985 0.4861494513864813 C 0.4712164273864972 0.4855643817562222 0.4766080654744054 0.4779584765628536 0.47586439125538355 0.47912861582337185 C 0.4766080654744054 0.4779584765628536 0.4800391078939832 0.4715227106300031 0.47971797584486014 0.47210778026026223" fill="none" stroke="none" stroke-width="0"/>
</g><g transform="translate(0.33734345282867056,0.22421598327463857) rotate(0) scale(1,1) translate(-0.01602013802246163,-0.01602013802246163)"><path d="M -0.0042618860693931886 0.008999302439849867 C -0.0036828409972901248 0.008959469247159466 0.004376823470164816 0.008474475052213336 0.002686654795843578 0.008521304127565046 C 0.004376823470164816 0.008474475052213336 0.018242385235274872 0.00843735353562936 0.016020138022461675 0.00843735353562936 C 0.018242385235274872 0.00843735353562936 0.031043790023923185 0.008568133202916755 0.029353621349601948 0.008521304127565046 C 0.031043790023923185 0.008568133202916755 0.036881207178042746 0.009039135632540269 0.036302162114316534 0.008999302439849867" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.036302162114316534 0.008999302439849867 C 0.036395125972093566 0.00917549112785393 0.03760365612319501 0.011465944071906741 0.03741772840764094 0.011113566695898617 C 0.03760365612319501 0.011465944071906741 0.038626258558742375 0.013404019639951428 0.038533294700965344 0.013227830951947366" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.038533294700965344 0.013227830951947366 C 0.03778984124949454 0.013187598832009388 0.02773575689344043 0.012699029585672738 0.029611853283315736 0.012745045512691632 C 0.02773575689344043 0.012699029585672738 0.013754852154029511 0.012675639827720634 0.016020138022461675 0.012675639827720634 C 0.013754852154029511 0.012675639827720634 0.000552326385783764 0.012791061439710526 0.002428422862129769 0.012745045512691632 C 0.000552326385783764 0.012791061439710526 -0.007236473240008733 0.013268063071885343 -0.006493019693690386 0.013227830951947366" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M -0.006493019693690386 0.013227830951947366 C -0.006400055792678004 0.013051642263943303 -0.0051915250795170325 0.010761189319890492 -0.0053774528815417975 0.011113566695898617 C -0.0051915250795170325 0.010761189319890492 -0.004168922168380827 0.008823113751845805 -0.004261886069393209 0.008999302439849867" fill="none" stroke="none" stroke-width="0"/>
</g><g transform="translate(0.33734345282867056,0.22421598327463857) rotate(0) scale(1,1) translate(-0.027518731894252097,-0.027518731894252097)"><path d="M 0.026926710318461215 0.02417411653667298 C 0.026976045449777122 0.02417412627693564 0.02761740215688391 0.024174233419824935 0.027518731894252097 0.024174233419824935 C 0.02761740215688391 0.024174233419824935 0.02816008860135889 0.024174106796410317 0.028110753470042982 0.02417411653667298" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.028110753470042982 0.02417411653667298 C 0.028110753470042982 0.026509371388630486 0.028110753470042982 0.056942525845928085 0.028110753470042982 0.05219717476016307 C 0.028110753470042982 0.056942525845928085 0.028110753470042982 0.0835284257996607 0.028110753470042982 0.08111832956585319" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.028110753470042982 0.08111832956585319 C 0.028012083207411168 0.08103240100424924 0.02732139136898847 0.08060275819622949 0.027518731894252097 0.08060275819622949 C 0.02732139136898847 0.08060275819622949 0.0268280400558294 0.08120425812745713 0.026926710318461215 0.08111832956585319" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.026926710318461215 0.08111832956585319 C 0.026926710318461215 0.07870823333204569 0.026926710318461215 0.04745182367439807 0.026926710318461215 0.052197174760163084 C 0.026926710318461215 0.04745182367439807 0.026926710318461215 0.021838861684715487 0.026926710318461215 0.024174116536672993" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></svg>

After

Width:  |  Height:  |  Size: 7.4 KiB