Files
REDCODE 58f3bf6884 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
2026-06-13 17:56:01 +02:00

39 lines
14 KiB
XML

<?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.2178778082444383,-0.21061995408824444)"><path d="M 0.2456020006120999 0.23378664862188522 C 0.24529247248894492 0.23493027155705123 0.24073248845225406 0.2494909368722861 0.24188766313423996 0.2475101238438775 C 0.24073248845225406 0.2494909368722861 0.2297390831874525 0.2587673083827231 0.23173990442826928 0.25755640496278853 C 0.2297390831874525 0.2587673083827231 0.2155674588804668 0.2620409648830925 0.2178778082444386 0.2620409648830925 C 0.2155674588804668 0.2620409648830925 0.2020148908197911 0.25634550154285407 0.2040157120606079 0.25755640496278864 C 0.2020148908197911 0.25634550154285407 0.19271277867265127 0.24552931081546894 0.19386795335463716 0.24751012384387755 C 0.19271277867265127 0.24552931081546894 0.18984408775362221 0.23264302568671918 0.1901536158767772 0.23378664862188522" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1901536158767772 0.23378664862188522 C 0.1904631439999322 0.23264302568671918 0.19502312803662308 0.2180823603714842 0.1938679533546372 0.22006317339989281 C 0.19502312803662308 0.2180823603714842 0.20601653330142475 0.20887326934581574 0.20401571206060795 0.21001689228098178 C 0.20601653330142475 0.20887326934581574 0.22018815760841043 0.20633969817790035 0.21787780824443864 0.20633969817790035 C 0.22018815760841043 0.20633969817790035 0.2337407256690861 0.21116051521614781 0.23173990442826933 0.21001689228098178 C 0.2337407256690861 0.21116051521614781 0.24304283781622593 0.22204398642830142 0.24188766313424004 0.22006317339989281 C 0.24304283781622593 0.22204398642830142 0.2459115287352549 0.23493027155705126 0.2456020006120999 0.23378664862188522" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33734345282867095,0.12428215862934613) rotate(0) scale(1,1) translate(-0.19551282657519264,-0.15725534279570835)"><path d="M 0.19819225144331876 0.2310348219816778 C 0.19796896603764158 0.2310348219816778 0.1950662557638383 0.2310348219816778 0.19551282657519264 0.2310348219816778 C 0.1950662557638383 0.2310348219816778 0.19261011630138936 0.2310348219816778 0.19283340170706653 0.2310348219816778" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.19283340170706653 0.2310348219816778 C 0.1927595919797526 0.2273539757739595 0.1919210889166349 0.1806270346506281 0.19194768497929923 0.1868646674890582 C 0.1919210889166349 0.1806270346506281 0.192561462619744 0.153626441289805 0.1925142489550944 0.15618322792051678" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.19851140419529087 0.15618322792051678 C 0.19855861785994047 0.15874001455122858 0.19905137210842175 0.1931023003274883 0.19907796817108608 0.1868646674890582 C 0.19905137210842175 0.1931023003274883 0.19811844171600482 0.2347156681893961 0.19819225144331876 0.2310348219816778" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3315941297101035,0.12302840530544282) rotate(0) scale(1,1) translate(-0.17182654921449536,-0.1626271006073876)"><path d="M 0.1747139434286262 0.1626271006073876 C 0.17475250227575354 0.16705886641689588 0.17515576294029492 0.22206585571359197 0.1751766495941541 0.21580829032148688 C 0.17515576294029492 0.22206585571359197 0.17440385808132947 0.2395436848952454 0.174463303582316 0.2377178853126486" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.174463303582316 0.2377178853126486 C 0.17424297622058305 0.2377178853126486 0.17137872051805492 0.2377178853126486 0.17181937524152077 0.2377178853126486 C 0.17137872051805492 0.2377178853126486 0.16895511953899267 0.2377178853126486 0.1691754469007256 0.2377178853126486" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1691754469007256 0.2377178853126486 C 0.16903938478286767 0.23589208573005177 0.16752301049473356 0.2095507249293818 0.16754270148643033 0.21580829032148688 C 0.16752301049473356 0.2095507249293818 0.16905552612652566 0.15819533479787934 0.1689391550003645 0.1626271006073876" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3279408233169804,0.1204963061541541) rotate(0) scale(1,1) translate(-0.17172616467872354,-0.16464542498289636)"><path d="M 0.1745117662633915 0.164791067082083 C 0.17453482795603673 0.1686085219200617 0.1746841284781732 0.21719548298229926 0.1747885065751343 0.21060052513782768 C 0.1746841284781732 0.21719548298229926 0.1731317893102518 0.2467080642222348 0.17325922909985816 0.24393056121574194" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17325922909985816 0.24393056121574194 C 0.17305052336293275 0.24383591004585287 0.17033734878290235 0.2426057385256824 0.17075476025675318 0.2427947471770732 C 0.17033734878290235 0.2426057385256824 0.16804158567672284 0.2415680999175506 0.16825029141364825 0.24166245739905234" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16825029141364825 0.24166245739905234 C 0.1681692286060051 0.2390412378187324 0.1673350603619646 0.2037775995589344 0.16727753772193066 0.21020782243521297 C 0.1673350603619646 0.2037775995589344 0.16907914854173264 0.160690779587751 0.16894056309405556 0.16449978288370962" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.32219150019841303,0.11486552260992469) rotate(0) scale(1,1) translate(-0.17220112318371358,-0.1645055777824458)"><path d="M 0.17546626481932254 0.1643478140001234 C 0.17549439757268942 0.16786126884411492 0.17578194406586442 0.21370828805739733 0.17580385785972497 0.20650927212802161 C 0.17578194406586442 0.21370828805739733 0.1751532527457685 0.2544215662380161 0.17520329929299594 0.2507360051526319" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17520329929299594 0.2507360051526319 C 0.17493243339704886 0.2506010218588223 0.17141117674973694 0.24883256938880605 0.1719529085416311 0.2491162056269168 C 0.17141117674973694 0.24883256938880605 0.16843165189431916 0.2471837173510018 0.16870251779026624 0.24733237029530297" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16870251779026624 0.24733237029530297 C 0.16862777653587166 0.24396265007000312 0.16782507805068447 0.20000664186416026 0.16780562273753127 0.20689572759170483 C 0.16782507805068447 0.20000664186416026 0.16903017811565235 0.16114397606252331 0.16893598154810457 0.16466334156476806" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.31644217707984557,0.10970774271469325) rotate(0) scale(1,1) translate(-0.17149933224096225,-0.16424072920864125)"><path d="M 0.17451441354652203 0.16424072920864125 C 0.1745901729649076 0.16765095667538008 0.175399228776772 0.21288727419619569 0.1754235265671486 0.20516345880950712 C 0.175399228776772 0.21288727419619569 0.17412278285324065 0.2612401017688538 0.1742228400620028 0.2569265138489041" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1742228400620028 0.2569265138489041 C 0.17399859150244168 0.25682352400997227 0.17108336022814713 0.25547828531173644 0.17153185734726936 0.2556906357817223 C 0.17108336022814713 0.25547828531173644 0.16861662607297476 0.2542689475780196 0.1688408746325359 0.25437830820907364" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1688408746325359 0.25437830820907364 C 0.16873296076422215 0.25027707075910977 0.16751618957134318 0.1976519938928044 0.16754590821277096 0.20516345880950712 C 0.16751618957134318 0.1976519938928044 0.16856244616228844 0.16083050174190242 0.16848425093540248 0.16424072920864125" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3130281152203159,0.10164269012927307) rotate(0) scale(1,1) translate(-0.17343256089445602,-0.16866918493841992)"><path d="M 0.1767588888908717 0.16866918493841992 C 0.17670925333262266 0.17112705498246805 0.17605648960601458 0.20659791430129926 0.17616326219188302 0.19816362546699756 C 0.17605648960601458 0.20659791430129926 0.17542048083283096 0.2758570697402938 0.17547761786045035 0.2698806509500402" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17547761786045035 0.2698806509500402 C 0.1752421572072315 0.26978012657970335 0.17218116871538616 0.2684791849004509 0.1726520900218239 0.2686743585059981 C 0.17218116871538616 0.2684791849004509 0.16959110152997864 0.26744391844826393 0.1698265621831975 0.2675385676834742" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1698265621831975 0.2675385676834742 C 0.169845962890366 0.2617573224987678 0.1700826765621229 0.18992451023824303 0.17005937066921933 0.19816362546699756 C 0.1700826765621229 0.18992451023824303 0.17011013808377545 0.1662113148943718 0.17010623289804036 0.16866918493841992" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3430927759472383,0.12302840530544282) rotate(0) scale(1,1) translate(-0.17182654921449536,-0.1626271006073876)"><path d="M 0.17471394342862617 0.1626271006073876 C 0.17483031455478737 0.16705886641689588 0.17609070595086368 0.22206585571359197 0.17611039694256042 0.21580829032148688 C 0.17609070595086368 0.22206585571359197 0.17434158941040717 0.23954368489524547 0.1744776515282651 0.23771788531264865" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1744776515282651 0.23771788531264865 C 0.17425732416653217 0.23771788531264865 0.1713930684640041 0.23771788531264865 0.17183372318746995 0.23771788531264865 C 0.1713930684640041 0.23771788531264865 0.16896946748494182 0.23771788531264865 0.16918979484667476 0.23771788531264865" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16918979484667476 0.23771788531264865 C 0.16913034934568824 0.23589208573005183 0.16845556218097743 0.2095507249293818 0.16847644883483662 0.21580829032148688 C 0.16845556218097743 0.2095507249293818 0.16897771384749188 0.15819533479787934 0.16893915500036455 0.1626271006073876" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3467460823403615,0.1204963061541541) rotate(0) scale(1,1) translate(-0.17172616467872354,-0.16464542498289636)"><path d="M 0.1745117662633916 0.16449978288370962 C 0.17465035171106869 0.16830878617966824 0.17625403212047144 0.21663804531149153 0.1761747916355165 0.21020782243521297 C 0.17625403212047144 0.21663804531149153 0.17540330712012897 0.24428367697937228 0.17546265208285108 0.24166245739905234" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17546265208285108 0.24166245739905234 C 0.17525394634592567 0.2417568148805541 0.17254077176589525 0.242983755828464 0.17295818323974607 0.2427947471770732 C 0.17254077176589525 0.242983755828464 0.1702450086597157 0.24402521238563102 0.17045371439664112 0.24393056121574194" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17045371439664112 0.24393056121574194 C 0.17030455676211376 0.2411530582092491 0.1685377268404307 0.2040055672933561 0.16866382278231282 0.21060052513782768 C 0.1685377268404307 0.2040055672933561 0.16896362478670093 0.16097361224410428 0.1689405630940557 0.164791067082083" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3524954054589289,0.11486552260992469) rotate(0) scale(1,1) translate(-0.17220112318371358,-0.1645055777824458)"><path d="M 0.17546626481932254 0.16466334156476806 C 0.17556046138687031 0.1681827070670128 0.17661607894304912 0.2137848133192494 0.17659662362989592 0.20689572759170483 C 0.17661607894304912 0.2137848133192494 0.17562498732276632 0.2507020905206028 0.1756997285771609 0.24733237029530297" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1756997285771609 0.24733237029530297 C 0.17542886268121383 0.24748102323960414 0.1719076060339019 0.24939984186502756 0.17244933782579605 0.2491162056269168 C 0.1719076060339019 0.24939984186502756 0.16892808117848412 0.25087098844644146 0.1691989470744312 0.2507360051526319" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1691989470744312 0.2507360051526319 C 0.16914890052720377 0.2470504440672477 0.16857647471384168 0.1993102561986459 0.16859838850770223 0.20650927212802161 C 0.16857647471384168 0.1993102561986459 0.16896411430147149 0.1608343591561319 0.16893598154810463 0.1643478140001234" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.3582447285774963,0.10970774271469325) rotate(0) scale(1,1) translate(-0.17149933224096225,-0.16424072920864125)"><path d="M 0.174514413546522 0.16424072920864125 C 0.17459260877340796 0.16765095667538008 0.1754230376277258 0.21267492372620983 0.17545275626915358 0.20516345880950712 C 0.1754230376277258 0.21267492372620983 0.1740498759810749 0.2584795456590375 0.17415778984938865 0.25437830820907364" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17415778984938865 0.25437830820907364 C 0.17393354128982752 0.2544876688401277 0.17101831001553297 0.25590298625170815 0.1714668071346552 0.2556906357817223 C 0.17101831001553297 0.25590298625170815 0.16855157586036063 0.2570295036878359 0.16877582441992175 0.2569265138489041" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16877582441992175 0.2569265138489041 C 0.1686757672111596 0.25261292592895435 0.16755084012439928 0.19743964342281856 0.16757513791477588 0.20516345880950712 C 0.16755084012439928 0.19743964342281856 0.16856001035378804 0.16083050174190242 0.16848425093540248 0.16424072920864125" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.361658790437026,0.10164269012927307) rotate(0) scale(1,1) translate(-0.17343256089445602,-0.16866918493841992)"><path d="M 0.17675888889087168 0.16866918493841992 C 0.17676279407660678 0.17112705498246805 0.17682905701259632 0.2064027406957521 0.17680575111969274 0.19816362546699756 C 0.17682905701259632 0.2064027406957521 0.17705796031288315 0.27331981286818074 0.17703855960571466 0.26753856768347434" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17703855960571466 0.26753856768347434 C 0.1768030989524958 0.26763321691868464 0.17374211046065044 0.26886953211154535 0.1742130317670882 0.2686743585059982 C 0.17374211046065044 0.26886953211154535 0.1711520432752429 0.269981175320377 0.17138750392846175 0.2698806509500402" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17138750392846175 0.2698806509500402 C 0.17133036690084236 0.26390423215978664 0.17059508701116058 0.18972933663269587 0.17070185959702902 0.19816362546699756 C 0.17059508701116058 0.18972933663269587 0.17005659733979134 0.1662113148943718 0.1701062328980404 0.16866918493841992" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></svg>