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,6 @@
<?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.4131304579112324) rotate(0) scale(1,1) translate(-0.04650436568689439,-0.04303516593955172)"><path d="M 0.04750759199816761 0.04399533945930303 C 0.04767260421165676 0.04408651950840158 0.04854097220731019 0.04469112098834866 0.04848451224876417 0.04452879042963088 C 0.04854097220731019 0.04469112098834866 0.04814802134077723 0.04613998933311782 0.0481851115007199 0.04594330616391641 C 0.04814802134077723 0.04613998933311782 0.04804660902881445 0.04704096564445652 0.04803943032945217 0.04688898846004771 C 0.04804660902881445 0.04704096564445652 0.04839809822465935 0.047931678649403085 0.04827125589306726 0.047767032376822186 C 0.04839809822465935 0.047931678649403085 0.049665213623081024 0.04913632208413722 0.04956153830855724 0.0488647437310185 C 0.049665213623081024 0.04913632208413722 0.04983952650330736 0.051499435957764655 0.049515359667352724 0.05102597261424687 C 0.04983952650330736 0.051499435957764655 0.053724314826019005 0.055168484393611064 0.05345154034001295 0.05454630385323193 C 0.053724314826019005 0.055168484393611064 0.052209722278332184 0.05895429140639508 0.052788653499425395 0.05849213909879653 C 0.052209722278332184 0.05895429140639508 0.045456984384805915 0.06009213154441454 0.046504365686894415 0.06009213154441454 C 0.045456984384805915 0.06009213154441454 0.039641146653270225 0.05802998679119798 0.040220077874363436 0.05849213909879653 C 0.039641146653270225 0.05802998679119798 0.039829965519781935 0.05392412331285279 0.039557191033775876 0.05454630385323193 C 0.039829965519781935 0.05392412331285279 0.04381753854239074 0.05055250927072909 0.0434933717064361 0.05102597261424687 C 0.04381753854239074 0.05055250927072909 0.04355086837975532 0.048593165377899775 0.04344719306523153 0.0488647437310185 C 0.04355086837975532 0.048593165377899775 0.04486431781231363 0.047602386104241286 0.04473747548072154 0.047767032376822186 C 0.04486431781231363 0.047602386104241286 0.0449764797436989 0.046737011275638896 0.04496930104433662 0.04688898846004771 C 0.0449764797436989 0.046737011275638896 0.04478652971312623 0.045746622994715005 0.0448236198730689 0.04594330616391641 C 0.04478652971312623 0.045746622994715005 0.04458067908357065 0.044366459870913096 0.044524219125024626 0.04452879042963088 C 0.04458067908357065 0.044366459870913096 0.04566615158911033 0.04390415941020447 0.04550113937562118 0.04399533945930303 C 0.04566615158911033 0.04390415941020447 0.04667157007210659 0.04343462984044819 0.04650436568689439 0.04343462984044819 C 0.04667157007210659 0.04343462984044819 0.04767260421165676 0.04408651950840158 0.04750759199816761 0.04399533945930303 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3336656341903538,0.42510644849729395) rotate(0) scale(1,1) translate(-0.1318055601033873,-0.12959541944729636)"><path d="M 0.13408170787583754 0.12464352820164853 C 0.13422944201171982 0.1239888518176733 0.13460649285217846 0.11920438761221012 0.13458875133170078 0.11906210198045454 C 0.13460649285217846 0.11920438761221012 0.1340068328020723 0.1272426841461845 0.13429460612156974 0.1263509557827156 C 0.1340068328020723 0.1272426841461845 0.13095630646426543 0.13019780269256098 0.13113547149773153 0.1297628423420812 C 0.13095630646426543 0.13019780269256098 0.13239983464884317 0.13165636437056444 0.1321446257199766 0.13157047998847293 C 0.13239983464884317 0.13165636437056444 0.13446013534741055 0.13033882803007982 0.13419797864413044 0.1307934549271793 C 0.13446013534741055 0.13033882803007982 0.13538776136903655 0.1262185289092665 0.13529050615933788 0.1261149572232789 C 0.13538776136903655 0.1262185289092665 0.1351294924577897 0.13263651464485587 0.1353650411605143 0.13203631515903064 C 0.1351294924577897 0.13263651464485587 0.13197164189792207 0.13333236126437095 0.1324639217266428 0.13331735105318188 C 0.13197164189792207 0.13333236126437095 0.12919163682521317 0.13192399993087892 0.12945768321586526 0.13221643769329955 C 0.12919163682521317 0.13192399993087892 0.12955121991258847 0.12936657964537246 0.1292713650388178 0.1298080979041343 C 0.12955121991258847 0.12936657964537246 0.13321680360419827 0.12648783777961678 0.1328159417011133 0.12691821858815727 C 0.13321680360419827 0.12648783777961678 0.13422944201171982 0.1239888518176733 0.13408170787583754 0.12464352820164853 Z" fill="#cccccc" stroke="none" stroke-width="0"/>
</g><g transform="translate(0.34293327990576283,0.4275616410952239) rotate(0) scale(1,1) translate(-0.1318055601033873,-0.12959541944729636)"><path d="M 0.12888046478460888 0.13094173184508048 C 0.1283994318815616 0.13104256373281695 0.126353872994983 0.13086538685235669 0.1262563162771977 0.13099585464867067 C 0.126353872994983 0.13086538685235669 0.13038893414826647 0.12905559272736994 0.13005114539803259 0.12937611828931278 C 0.13038893414826647 0.12905559272736994 0.13018279572002991 0.12683307713329287 0.13030978128000442 0.12714954790535674 C 0.13018279572002991 0.12683307713329287 0.12827967239711074 0.12527779179483406 0.12852731867833847 0.12557846902454628 C 0.12827967239711074 0.12527779179483406 0.12720263502076234 0.12301605915257624 0.12733802590527188 0.12354142114880995 C 0.12720263502076234 0.12301605915257624 0.12693142761241913 0.11919646264283495 0.12690262806422398 0.11927412506974185 C 0.12693142761241913 0.11919646264283495 0.12785828100604268 0.12304700713603393 0.12768362048361356 0.12260947202592729 C 0.12785828100604268 0.12304700713603393 0.1293021524482893 0.12478697529797708 0.12899855433337357 0.12452454639102167 C 0.1293021524482893 0.12478697529797708 0.13163197669343063 0.12600101156263685 0.13132679786260223 0.12575861890939216 C 0.13163197669343063 0.12600101156263685 0.13271919307424435 0.12776886265382797 0.13266070030331414 0.1274332582299579 C 0.13271919307424435 0.12776886265382797 0.13171369148720602 0.13007824479709323 0.1320287111137648 0.12978587199583302 C 0.13171369148720602 0.13007824479709323 0.1283994318815616 0.13104256373281695 0.12888046478460888 0.13094173184508048 Z" fill="#cccccc" stroke="none" stroke-width="0"/>
</g></svg>

After

Width:  |  Height:  |  Size: 6.1 KiB