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,10 @@
<?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.4071172026683852) rotate(0) scale(1,1) translate(-0.01919286476298845,-0.019735317662897982)"><path d="M 0.01919286476298842 0.028100586173949643 C 0.018948183979597084 0.02798054974945927 0.015875795754345456 0.026284703285652206 0.0162566953622924 0.02666014908006515 C 0.015875795754345456 0.026284703285652206 0.014666166735407061 0.02282088166927426 0.014622069467625114 0.0235952366409943 C 0.014666166735407061 0.02282088166927426 0.017078665605998106 0.016551055096981918 0.016785862575675763 0.017367889419424624 C 0.017078665605998106 0.016551055096981918 0.01833628934710262 0.013254993538436538 0.01813570583149323 0.013793224771681802 C 0.01833628934710262 0.013254993538436538 0.01928096134061302 0.010668772107881442 0.01919286476298842 0.01090911462048147" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.01919286476298842 0.01090911462048147 C 0.01943547649977093 0.011232042821596936 0.02234741399147978 0.015333140484985285 0.022104205604378556 0.014784253033867063 C 0.02234741399147978 0.015333140484985285 0.022249653279367527 0.01823001266782741 0.022111365408203097 0.01749576403390014 C 0.022249653279367527 0.01823001266782741 0.023765132454641836 0.0243589353948414 0.023763660058351725 0.023595236640994315 C 0.023765132454641836 0.0243589353948414 0.021748134555737497 0.02703559487447812 0.02212903416368444 0.026660149080065178 C 0.021748134555737497 0.02703559487447812 0.018948183979597084 0.028220622598440014 0.01919286476298842 0.028100586173949643" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33734039743949185,0.4109771216464815) rotate(0) scale(1,1) translate(-0.01919286476298845,-0.0207756729228991)"><path d="M 0.01919286476298842 0.024662010958448496 C 0.019022762682374763 0.02458576563700842 0.01693915222861984 0.023260139019327462 0.017151639795624528 0.02374706710116758 C 0.01693915222861984 0.023260139019327462 0.016622037298368895 0.01811623640188937 0.01664301395893216 0.01881887397636708 C 0.016622037298368895 0.01811623640188937 0.017066751931641314 0.014825430469203545 0.016899919868865347 0.01531541620743506 C 0.017066751931641314 0.014825430469203545 0.018939975577682056 0.012590714817959078 0.01864499871224378 0.012939045117588886 C 0.018939975577682056 0.012590714817959078 0.02058919588261471 0.010985153236401394 0.02043964225412464 0.011135452611877355" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.02043964225412464 0.011135452611877355 C 0.020557227228995844 0.011275095769480357 0.021937842569494655 0.01315950080274319 0.021850661952579085 0.012811170503113381 C 0.021937842569494655 0.01315950080274319 0.021476814124983624 0.015816058163539547 0.021485809657111492 0.015315416207435071 C 0.021476814124983624 0.015816058163539547 0.02172173890648141 0.019521511550844795 0.021742715567044678 0.018818873976367084 C 0.02172173890648141 0.019521511550844795 0.021021602163347624 0.02423399518300771 0.02123408973035231 0.023747067101167592 C 0.021021602163347624 0.02423399518300771 0.019022762682374763 0.02473825627988857 0.01919286476298842 0.024662010958448496" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33858717493062807,0.403424644273706) rotate(0) scale(1,1) translate(-0.022933258138484177,-0.022933258138484177)"><path d="M 0.02293325813848411 0.02169557602592558 C 0.02313585619735949 0.02169557602592558 0.02427516431532147 0.022287666987709766 0.024148846491736306 0.022161575963360918 C 0.02427516431532147 0.022287666987709766 0.024403989712227365 0.023365901253686594 0.02444907202150605 0.02320866831811174 C 0.024403989712227365 0.023365901253686594 0.02342532423664791 0.02411834642960478 0.02360785878039208 0.02404837119025916 C 0.02342532423664791 0.02411834642960478 0.022076122952831834 0.023978395950913542 0.022258657496576004 0.02404837119025916 C 0.022076122952831834 0.023978395950913542 0.02137236194618335 0.023051435382536886 0.021417444255462034 0.02320866831811174 C 0.02137236194618335 0.023051435382536886 0.02184398760881695 0.02203548493901207 0.021717669785231777 0.022161575963360918 C 0.02184398760881695 0.02203548493901207 0.02313585619735949 0.02169557602592558 0.02293325813848411 0.02169557602592558 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3373403974394918,0.40740572241943596) rotate(0) scale(1,1) translate(-0.02456377814682995,-0.024563778146829942)"><path d="M 0.024740338727974882 0.024395581603393682 C 0.024784478873261108 0.02440959798201337 0.024916899309119785 0.024591810904069315 0.024916899309119785 0.02456377814682994 C 0.024916899309119785 0.024591810904069315 0.024696198582688657 0.024745991068885892 0.024740338727974882 0.024731974690266202 C 0.024696198582688657 0.024745991068885892 0.024343077420398852 0.024717958311646512 0.024387217565685078 0.024731974690266202 C 0.024343077420398852 0.024717958311646512 0.024210656984540176 0.024535745389590562 0.024210656984540176 0.02456377814682994 C 0.024210656984540176 0.024535745389590562 0.024431357710971303 0.024381565224773992 0.024387217565685078 0.024395581603393682 C 0.024431357710971303 0.024381565224773992 0.024784478873261108 0.02440959798201337 0.024740338727974882 0.024395581603393682 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33734039743949185,0.4109771216464815) rotate(0) scale(1,1) translate(-0.04481464761927567,-0.044322296567054956)"><path d="M 0.04481464761927567 0.04294613354010617 C 0.0452112194443857 0.04294613354010617 0.04731662600338511 0.04462253336527269 0.04719407856993582 0.044322296567054956 C 0.04731662600338511 0.04462253336527269 0.04596438347466288 0.04673453166469105 0.04628521682066719 0.04654897511871904 C 0.04596438347466288 0.04673453166469105 0.043023245071879844 0.046363418572747034 0.04334407841788415 0.04654897511871904 C 0.043023245071879844 0.046363418572747034 0.04255776410206481 0.04402205976883722 0.04243521666861552 0.044322296567054956 C 0.04255776410206481 0.04402205976883722 0.0452112194443857 0.04294613354010617 0.04481464761927567 0.04294613354010617 Z" fill="#cccccc" stroke="#000000" stroke-width="0.001"/>
</g></svg>

After

Width:  |  Height:  |  Size: 6.2 KiB