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

50 lines
18 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.19551282657519264 0.2561137856183718 C 0.19538877912759423 0.2540186359862298 0.1937761623088146 0.22660029693720196 0.19402425720401145 0.23097199003266786 C 0.1937761623088146 0.22660029693720196 0.19241164038523187 0.20137692500945728 0.1925356878328303 0.20365346847278118" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1925356878328303 0.20365346847278118 C 0.19248668759503604 0.20221330348259917 0.19194589840615459 0.18241712332475166 0.19194768497929923 0.18637148859059705 C 0.19194589840615459 0.18241712332475166 0.192561462619744 0.1536868850069731 0.1925142489550944 0.1562010852826365" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.19851140419529087 0.1562010852826365 C 0.19855861785994047 0.15871528555829986 0.19907618159794144 0.19032585385644243 0.19907796817108608 0.18637148859059705 C 0.19907618159794144 0.19032585385644243 0.19844096507976075 0.2050936334629632 0.198489965317555 0.20365346847278118" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.198489965317555 0.20365346847278118 C 0.19836591786995655 0.20593001193610508 0.19675330105117692 0.23534368312813375 0.19700139594637378 0.23097199003266786 C 0.19675330105117692 0.23534368312813375 0.19538877912759423 0.25820893525051375 0.19551282657519264 0.2561137856183718" 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.16500333224750122 0.17515576294029492 0.19533417422013685 0.1751766495941541 0.19114188028875098 C 0.17515576294029492 0.19533417422013685 0.17440385808132947 0.21475069007529024 0.174463303582316 0.21293462778401798" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.174463303582316 0.21293462778401798 C 0.17437035650371924 0.21494551017418714 0.17318791527029737 0.24097376966509212 0.17334793863915482 0.23706521646604806 C 0.17318791527029737 0.24097376966509212 0.17247594686576584 0.26173493698142153 0.17254302315602654 0.25983726617254665" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17254302315602654 0.25983726617254665 C 0.17236608521994667 0.2579395953636718 0.17013913656845958 0.233156663267004 0.17041976792306798 0.23706521646604806 C 0.17013913656845958 0.233156663267004 0.16907175348219708 0.2109237453938488 0.1691754469007256 0.21293462778401798" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1691754469007256 0.21293462778401798 C 0.16903938478286767 0.2111185654927457 0.16752301049473356 0.1869495863573651 0.16754270148643033 0.19114188028875098 C 0.16752301049473356 0.1869495863573651 0.16905552612652566 0.160250868967274 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.17451013276793553 0.1647823570853411 C 0.17450149544649787 0.1668919158461631 0.17422711329679277 0.1943635569552087 0.17440648491068353 0.19009706221520511 C 0.17422711329679277 0.1943635569552087 0.17218693910879324 0.21813722994456589 0.17235767340124633 0.2159802939653843" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17235767340124633 0.2159802939653843 C 0.17221777668958485 0.21800801934822175 0.17043351713862237 0.244022745542376 0.1706789128613086 0.240312998559434 C 0.17043351713862237 0.244022745542376 0.16930742571798701 0.26217927936079255 0.16941292472901176 0.26049725776068805" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16941292472901176 0.26049725776068805 C 0.16925028698365666 0.25880204760072323 0.16728950080647423 0.23642447011958995 0.16746127178475045 0.24015473584111016 C 0.16728950080647423 0.23642447011958995 0.16734253975677602 0.2136990135408899 0.16735167298969714 0.2157340691024453" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16735167298969714 0.2157340691024453 C 0.1673140269522225 0.21356688373973243 0.16703246417331924 0.18545904673139144 0.16689992054000138 0.1897278447498909 C 0.16703246417331924 0.18545904673139144 0.16911238626030403 0.16240688022466498 0.1689421965895115 0.1645084928804516" 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.17546718492650892 0.16447744805737904 C 0.1754637473085877 0.16657849803356212 0.17530244199614772 0.19398559807582294 0.17542593351145405 0.18969004777157583 C 0.17530244199614772 0.19398559807582294 0.17386523284544797 0.21821855203640822 0.17398528674283306 0.21602405170834418" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17398528674283306 0.21602405170834418 C 0.17384885808143388 0.21764865325825233 0.17206300823518605 0.239423489745092 0.17234814280604294 0.23551927030724196 C 0.17206300823518605 0.239423489745092 0.17041496598309283 0.2651543028504865 0.17056367189255053 0.2628746849625446" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17056367189255053 0.2628746849625446 C 0.1703686337339701 0.2605742243656133 0.16800348959707218 0.23136928657810357 0.16822321398958548 0.23526915779936877 C 0.16800348959707218 0.23136928657810357 0.16790229294845813 0.21447681968302817 0.167926979182391 0.21607623030736206" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.167926979182391 0.21607623030736206 C 0.16788518462639415 0.21388312393717593 0.16750945136530612 0.1854637436318078 0.16742544451042884 0.1897589538651286 C 0.16750945136530612 0.1854637436318078 0.1690608628517923 0.16243160364437786 0.1689350614409182 0.16453370750751253" 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.17451395433503533 0.16430184783156565 C 0.1745575744546823 0.16644123829950747 0.17494607123422967 0.19443440037022966 0.17503739577079896 0.18997453344686746 C 0.17494607123422967 0.19443440037022966 0.17328311523998755 0.22014072736733248 0.17341805989620382 0.2178202509119121" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17341805989620382 0.2178202509119121 C 0.17325568809099395 0.2200119260908584 0.17124488680666275 0.2478216755288034 0.1714695982336854 0.24412035305926763 C 0.17124488680666275 0.2478216755288034 0.17065918315011913 0.26374576783693093 0.17072152277193192 0.26223612054634143" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17072152277193192 0.26223612054634143 C 0.17051998659024947 0.26038545668398855 0.16799269238669692 0.2363410505674169 0.1683030885917427 0.24002815419810686 C 0.16799269238669692 0.2363410505674169 0.16688790828801917 0.2161544372097248 0.16699676831138252 0.21799087697806188" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16699676831138252 0.21799087697806188 C 0.16701045238675505 0.2156428744366341 0.16728497236881168 0.18533057428156652 0.1671609772158528 0.1898148464809286 C 0.16728497236881168 0.18533057428156652 0.16859502122447553 0.16204334092778247 0.16848471014688918 0.16417961058571678" 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.17675686258173068 0.16880402018979246 C 0.17666095311572452 0.17034213070041443 0.17531619886568736 0.19088138193142126 0.1756059489896568 0.18726134631725605 C 0.17531619886568736 0.19088138193142126 0.17308602043613405 0.2143263726633182 0.17327986109409735 0.21224444755977495" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17327986109409735 0.21224444755977495 C 0.17312650518034137 0.21475469040221387 0.17116739558872093 0.24709792542345332 0.17143959012902563 0.2423673616690419 C 0.17116739558872093 0.24709792542345332 0.16989468798389235 0.27123153352468427 0.17001352661044106 0.26901121261271177" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17001352661044106 0.26901121261271177 C 0.1698533863386268 0.26653986634304033 0.16796738847032183 0.23460840533390415 0.16809184334866992 0.23935505737665458 C 0.16796738847032183 0.23460840533390415 0.16855575346373006 0.2097760823266275 0.1685200680702639 0.2120513880997065" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1685200680702639 0.2120513880997065 C 0.16860221038047418 0.20996493245825967 0.1696381250541969 0.18338750053462288 0.1695057757927871 0.18701392040234446 C 0.1696381250541969 0.18338750053462288 0.17015846615838093 0.16699438546077267 0.1701082592071814 0.16853434968704742" 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.16500333224750122 0.17609070595086368 0.19533417422013685 0.17611039694256042 0.19114188028875098 C 0.17609070595086368 0.19533417422013685 0.17434158941040717 0.21475069007529024 0.1744776515282651 0.21293462778401798" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1744776515282651 0.21293462778401798 C 0.17437395810973658 0.21494551017418714 0.1729526991513143 0.24097376966509212 0.1732333305059227 0.23706521646604806 C 0.1729526991513143 0.24097376966509212 0.17093313733688428 0.26173493698142153 0.17111007527296415 0.25983726617254665" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17111007527296415 0.25983726617254665 C 0.17104299898270348 0.2579395953636718 0.17014513642097842 0.233156663267004 0.17030515978983587 0.23706521646604806 C 0.17014513642097842 0.233156663267004 0.169096847768078 0.2109237453938488 0.16918979484667476 0.21293462778401798" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16918979484667476 0.21293462778401798 C 0.16913034934568824 0.2111185654927457 0.16845556218097743 0.1869495863573651 0.16847644883483662 0.19114188028875098 C 0.16845556218097743 0.1869495863573651 0.16897771384749188 0.160250868967274 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.17451013276793564 0.1645084928804516 C 0.17468032243872816 0.16661010553623823 0.17668495245076365 0.19399664276839038 0.17655240881744577 0.1897278447498909 C 0.17668495245076365 0.19399664276839038 0.17606301033027544 0.21790125446515818 0.17610065636775007 0.2157340691024453" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17610065636775007 0.2157340691024453 C 0.17609152313482895 0.2177691246640007 0.17581928659442053 0.24388500156263038 0.17599105757269676 0.24015473584111016 C 0.17581928659442053 0.24388500156263038 0.17387676688308037 0.26219246792065287 0.17403940462843548 0.26049725776068805" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17403940462843548 0.26049725776068805 C 0.17393390561741073 0.25881523616058355 0.1725280207734524 0.236603251576492 0.17277341649613862 0.240312998559434 C 0.1725280207734524 0.236603251576492 0.17095475924453934 0.21395256858254683 0.17109465595620083 0.2159802939653843" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17109465595620083 0.2159802939653843 C 0.17092392166374773 0.2138233579862027 0.16886647283287284 0.1858305674752015 0.1690458444467636 0.1900970622152051 C 0.16886647283287284 0.1858305674752015 0.168933559268074 0.1626727983245191 0.16894219658951165 0.1647823570853411" 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.17546718492650892 0.16453370750751253 C 0.17559298633738304 0.1666358113706472 0.17706080871187563 0.1940541640984494 0.17697680185699835 0.1897589538651286 C 0.17706080871187563 0.1940541640984494 0.1764334726290393 0.2182693366775482 0.17647526718503614 0.21607623030736206" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17647526718503614 0.21607623030736206 C 0.17645058095110328 0.21767564093169595 0.1759593079853284 0.23916902902063397 0.1761790323778417 0.23526915779936877 C 0.1759593079853284 0.23916902902063397 0.1736435363162963 0.26517514555947597 0.17383857447487672 0.2628746849625446" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17383857447487672 0.2628746849625446 C 0.17368986856541901 0.2605950670746027 0.17176896899052738 0.2316150508693919 0.17205410356138426 0.23551927030724196 C 0.17176896899052738 0.2316150508693919 0.1702805309631949 0.21439945015843603 0.17041695962459408 0.21602405170834418" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17041695962459408 0.21602405170834418 C 0.170296905727209 0.21382955138028015 0.16885282134066681 0.18539449746732872 0.16897631285597314 0.18969004777157583 C 0.16885282134066681 0.18539449746732872 0.168931623822997 0.16237639808119597 0.16893506144091824 0.16447744805737904" 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.1745139543350353 0.16417961058571678 C 0.17462426541262166 0.1663158802436511 0.17596168241903062 0.1942991186802907 0.17583768726607174 0.1898148464809286 C 0.17596168241903062 0.1942991186802907 0.17601558024591454 0.22033887951948966 0.17600189617054202 0.21799087697806188" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17600189617054202 0.21799087697806188 C 0.17589303614717866 0.21982731674639897 0.174385179685136 0.24371525782879683 0.17469557589018178 0.24002815419810686 C 0.174385179685136 0.24371525782879683 0.17207560552831017 0.2640867844086943 0.1722771417099926 0.26223612054634143" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1722771417099926 0.26223612054634143 C 0.1722148020881798 0.26072647325575193 0.17130435482121642 0.24041903058973185 0.17152906624823908 0.24412035305926763 C 0.17130435482121642 0.24041903058973185 0.16941823278051088 0.2156285757329658 0.16958060458572075 0.2178202509119121" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.16958060458572075 0.2178202509119121 C 0.16944565992950447 0.2154997744564917 0.16786994417455622 0.18551466652350526 0.16796126871112552 0.18997453344686746 C 0.16786994417455622 0.18551466652350526 0.16852833026653616 0.16216245736362384 0.16848471014688918 0.16430184783156565" 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.17675686258173065 0.16853434968704742 C 0.17680706953293018 0.17007431391332217 0.17749169525753478 0.19064034027006604 0.17735934599612496 0.18701392040234446 C 0.17749169525753478 0.19064034027006604 0.17842719602885854 0.21413784374115333 0.17834505371864826 0.2120513880997065" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17834505371864826 0.2120513880997065 C 0.1783807391121144 0.2143266938727855 0.17864882356189413 0.244101709419405 0.1787732784402422 0.23935505737665458 C 0.17864882356189413 0.244101709419405 0.17669145490665683 0.2714825588823832 0.1768515951784711 0.26901121261271177" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.1768515951784711 0.26901121261271177 C 0.1767327565519224 0.2667908917007393 0.17515333711958173 0.2376367979146305 0.17542553165988642 0.2423673616690419 C 0.17515333711958173 0.2376367979146305 0.17343190478105874 0.20973420471733603 0.17358526069481472 0.21224444755977495" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.17358526069481472 0.21224444755977495 C 0.17339142003685143 0.2101625224562317 0.17096942267528578 0.18364131070309084 0.17125917279925523 0.18726134631725605 C 0.17096942267528578 0.18364131070309084 0.17001234974117527 0.1672659096791705 0.17010825920718142 0.16880402018979246" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></svg>