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,50 @@
id: 羽根箒
original_key: 羽根箒
resource: カーソル
morph_x: 1
morph_y: 1
variants:
- x: 0
y: 0
file: x0y0.svg
fields:
- name: 羽根1
- name: 羽根2
- name: 羽根3
- name: 羽根4
- name: 羽根5
- name: 羽根
- name:
joints:
- position: [
0.2630468763449424,
0.29353895764985083
]
- position: [
0.2645048960227844,
0.2444700333174513
]
- position: [
0.2598452193677602,
0.25113386943765986
]
- position: [
0.2555697159233386,
0.25554641846963594
]
- position: [
0.252280345465558,
0.26005648940840986
]
- position: [
0.249928475267765,
0.2643595320473664
]
- position: [
0.009302710415341274,
0.0007441923450368609
]
- position: [
0.009302710415341272,
0.009302710415341276
]

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1">
<g transform="translate(0.5323014342098605,0.36824412472980855) rotate(0) scale(1,1) translate(-0.2633794567427419,-0.29643375126541543)"><path d="M 0.26521516414101876 0.2564736768775684 C 0.2653252728889634 0.2592971535425948 0.26669381456205377 0.27865888857444643 0.2668467901785768 0.27532888237545916 C 0.26669381456205377 0.27865888857444643 0.2629810108121842 0.297141390166688 0.2633794567427419 0.29643375126541543 C 0.2629810108121842 0.297141390166688 0.26183045401377103 0.28225888308404024 0.2620654390118851 0.28382054919072985 C 0.26183045401377103 0.28225888308404024 0.26038817302872397 0.2759659777329493 0.2605596367653726 0.27769375798513973 C 0.26038817302872397 0.2759659777329493 0.26009855707875923 0.26076493018699737 0.2600078741721019 0.26308718616444426 C 0.26009855707875923 0.26076493018699737 0.2621076325645222 0.24802335094166875 0.2616478316452606 0.24982668625577722 C 0.2621076325645222 0.24802335094166875 0.26582276291122064 0.24200107828029166 0.2655254852032408 0.24144716239514238 C 0.26582276291122064 0.24200107828029166 0.2653252728889634 0.2592971535425948 0.26521516414101876 0.2564736768775684 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.531968853812061,0.36534933111424395) rotate(0) scale(1,1) translate(-0.2632530614056048,-0.2946546412021447)"><path d="M 0.26145335308526696 0.26103338547005267 C 0.26178964961428725 0.2634420303427855 0.2646484167332196 0.28024052761585627 0.2644848722112844 0.277342971674118 C 0.2646484167332196 0.28024052761585627 0.26312999182359054 0.29638256359444565 0.2634158873484891 0.295804056770912 C 0.26312999182359054 0.29638256359444565 0.2607060343217278 0.2829146595113104 0.261054125912502 0.2842850535565218 C 0.2607060343217278 0.2829146595113104 0.258944923474443 0.2779377883456326 0.259238788259199 0.27935932822837517 C 0.258944923474443 0.2779377883456326 0.25740937999808966 0.26527474710895066 0.2575277484954301 0.26722657496361063 C 0.25740937999808966 0.26527474710895066 0.2580618300717479 0.2543717821589317 0.25781836629111365 0.2559373939724556 C 0.2580618300717479 0.2543717821589317 0.2607522294292203 0.2488638991594569 0.2604493138630408 0.2484392332013238 C 0.2607522294292203 0.2488638991594569 0.26178964961428725 0.2634420303427855 0.26145335308526696 0.26103338547005267 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.531968853812061,0.36534933111424395) rotate(0) scale(1,1) translate(-0.2631329858353245,-0.29296448664203745)"><path d="M 0.2580417066242432 0.2640839008179833 C 0.258584645734632 0.2661772576299091 0.2627986674930168 0.2809278898268493 0.262355012047537 0.27843456602395306 C 0.2627986674930168 0.2809278898268493 0.2631771182252809 0.2944925621262718 0.2633655719700009 0.2940037864527384 C 0.2631771182252809 0.2944925621262718 0.2596431785949442 0.2831577175761344 0.26009356711089726 0.28429987410635355 C 0.2596431785949442 0.2831577175761344 0.2575510195333226 0.279108978830207 0.2579609097785638 0.2802979080901088 C 0.2575510195333226 0.279108978830207 0.2548669050241813 0.2683581589001544 0.2551748841680032 0.2700327229875321 C 0.2548669050241813 0.2683581589001544 0.25432056493227284 0.2588099358160189 0.2542651600527005 0.2602031390415763 C 0.25432056493227284 0.2588099358160189 0.2561544549371662 0.25363768109554347 0.25583974272287097 0.2533142842808429 C 0.2561544549371662 0.25363768109554347 0.258584645734632 0.2661772576299091 0.2580417066242432 0.2640839008179833 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.531968853812061,0.36534933111424395) rotate(0) scale(1,1) translate(-0.26301891404355826,-0.2913588398099356)"><path d="M 0.25538446284528454 0.2670516526087577 C 0.25608776324807386 0.26884216650079346 0.2613666434578661 0.28162038230809316 0.2607059990557138 0.27951710833692534 C 0.2613666434578661 0.28162038230809316 0.2632014624823762 0.29268809543431923 0.2633121956711122 0.29229094026277175 C 0.2632014624823762 0.29268809543431923 0.25885483621154454 0.283351995469836 0.25937720079088145 0.2842829703954952 C 0.25885483621154454 0.283351995469836 0.2565505237180082 0.28014728670613187 0.25704382071906906 0.28111924115486164 C 0.2565505237180082 0.28014728670613187 0.2530035563079408 0.2712119598558494 0.25345763677815114 0.2726195170107378 C 0.2530035563079408 0.2712119598558494 0.2514955848635522 0.26301284068134784 0.25159485507654467 0.2642285552962013 C 0.2514955848635522 0.26301284068134784 0.25258219486963684 0.25826619974187565 0.25226639422224184 0.25803094163249596 C 0.25258219486963684 0.25826619974187565 0.25608776324807386 0.26884216650079346 0.25538446284528454 0.2670516526087577 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.531968853812061,0.36534933111424395) rotate(0) scale(1,1) translate(-0.26291054584138035,-0.2898334753194388)"><path d="M 0.2534113479738519 0.2698225941356777 C 0.25423318008991125 0.27132918974840325 0.26031387223962327 0.2822516737128369 0.25949350527915865 0.28051503444846976 C 0.26031387223962327 0.2822516737128369 0.2632043635426385 0.2909698079383606 0.2632557514994271 0.29066226530808326 C 0.2632043635426385 0.2909698079383606 0.2583091330032319 0.28346595893195947 0.2588768497976953 0.2842055460117976 C 0.2583091330032319 0.28346595893195947 0.25589527236768417 0.28101319362840405 0.25644314996586576 0.2817872203500257 C 0.25589527236768417 0.28101319362840405 0.2517415307475582 0.2737601213766993 0.25230231861951624 0.2749172253523379 C 0.2517415307475582 0.2737601213766993 0.2494911289412795 0.2668618611209809 0.24971369550236866 0.26790197264236215 C 0.2494911289412795 0.2668618611209809 0.24993965759240347 0.26259593888687277 0.24963151988644652 0.26243588709576315 C 0.24993965759240347 0.26259593888687277 0.25423318008991125 0.27132918974840325 0.2534113479738519 0.2698225941356777 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.5323014342098605,0.36824412472980855) rotate(0) scale(1,1) translate(-0.06401338818387854,-0.07098894006094567)"><path d="M 0.06388316609960389 0.05057761628799777 C 0.06428605187952532 0.04954567511818967 0.06908937326124602 0.03807528410660996 0.06871779545866107 0.038194322250300554 C 0.06908937326124602 0.03807528410660996 0.06831079175328686 0.0500620615898281 0.06834209973062334 0.0491491585637106" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.06834209973062334 0.0491491585637106 C 0.06838968232290554 0.049562379368014435 0.06892474713464551 0.054845738603158695 0.0689130908380097 0.05410780821535664 C 0.06892474713464551 0.054845738603158695 0.06844604899460667 0.058329032800833465 0.06848197529025306 0.05800432321733525" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.06848197529025306 0.05800432321733525 C 0.0684391522077104 0.05851856181430648 0.06784165755061483 0.06494108683210163 0.06796809829974106 0.06417518638098997 C 0.06784165755061483 0.06494108683210163 0.06688106863415483 0.06744679048481558 0.06696468630073839 0.06719512863067516" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.06696468630073839 0.06719512863067516 C 0.06686798502925849 0.06739415809677966 0.06555832953324132 0.0701238799672137 0.06580427104297965 0.06958348222392916 C 0.06555832953324132 0.0701238799672137 0.06386414794562012 0.07402126982726964 0.06401338818387854 0.0736799015500896" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.06401338818387854 0.0736799015500896 C 0.06390664100191691 0.07343892311841074 0.06235547573998254 0.06998794223950852 0.06273242200033896 0.07078816036994333 C 0.06235547573998254 0.06998794223950852 0.05921983398120667 0.06351804428611592 0.05949003305960146 0.06407728398487188" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.05949003305960146 0.06407728398487188 C 0.059146728868394706 0.06372137593825396 0.05532365490579278 0.05945885186001645 0.05537038276512043 0.05980638742545678 C 0.05532365490579278 0.05945885186001645 0.05922587507954876 0.059915229680765396 0.05892929874766966 0.05990685719958781" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.05892929874766966 0.05990685719958781 C 0.05872588067031711 0.059125417008530315 0.056617519416892664 0.05010435881602109 0.05648828181943907 0.05052957490689782 C 0.056617519416892664 0.05010435881602109 0.06081280559191886 0.05516048820924788 0.06048014991711272 0.0548042641090671" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.06048014991711272 0.0548042641090671 C 0.06047296510106367 0.05368153425562641 0.0606775168063983 0.040979285216023016 0.06039393212452404 0.04133150586777879 C 0.0606775168063983 0.040979285216023016 0.06417393559752721 0.05134812548968269 0.06388316609960389 0.05057761628799778" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.5323014342098605,0.37680264280011294) rotate(0) scale(1,1) translate(-0.009302710415341272,-0.009302710415341276)"><path d="M 0.007741359145758711 0.0007441923450368609 C 0.00763962766580408 0.0004766511200889795 0.006574500935578193 -0.0029707342467376334 0.006520581386303129 -0.0024663023543377164 C 0.006574500935578193 -0.0029707342467376334 0.008773646603986144 -0.005903116888739984 0.008388393737059473 -0.005308990363762146 C 0.008773646603986144 -0.005903116888739984 0.011587784847424435 -0.010081383112087335 0.011143615789423167 -0.00959582065407178 C 0.011587784847424435 -0.010081383112087335 0.013869525055052345 -0.01070699412629047 0.013718422433074688 -0.011135739859948791 C 0.013869525055052345 -0.01070699412629047 0.012718983857475816 -0.003460877499756462 0.012956847253155053 -0.004450871850171933 C 0.012718983857475816 -0.003460877499756462 0.010689662887571233 0.0011771143613042605 0.010864061684923834 0.0007441923450368609" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.010864061684923834 0.0007441923450368609 C 0.010864061684923834 0.0014574021842288952 0.010864061684923834 0.010729130093725343 0.010864061684923834 0.009302710415341274 C 0.010864061684923834 0.010729130093725343 0.010864061684923834 0.018574438324837718 0.010864061684923834 0.017861228485645683" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.010864061684923834 0.017861228485645683 C 0.010733949079125287 0.01794317937993236 0.00904248520374418 0.01884463921708581 0.009302710415341274 0.01884463921708581 C 0.00904248520374418 0.01884463921708581 0.007611246539960165 0.017779277591359006 0.007741359145758711 0.017861228485645683" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.007741359145758711 0.017861228485645683 C 0.007741359145758711 0.01714801864645365 0.007741359145758711 0.007876290736957205 0.007741359145758711 0.009302710415341274 C 0.007741359145758711 0.007876290736957205 0.007741359145758711 3.0982505844826566E-05 0.007741359145758711 0.0007441923450368609" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></svg>

After

Width:  |  Height:  |  Size: 11 KiB