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.33734345282867073,0.37369955748837125) rotate(0) scale(1,1) translate(-0.02695798876394463,-0.04927464038615216)"><path d="M -0.005128239691956741 -0.00788739794027731 C -0.002454387320631629 -0.008894802020865906 0.03230569350659482 -0.019976246907340466 0.026957988763944597 -0.019976246907340466 C 0.03230569350659482 -0.019976246907340466 0.061718069591171064 -0.0068799938596887135 0.05904421721984595 -0.00788739794027731" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.05904421721984595 -0.00788739794027731 C 0.059675199128410135 -0.006486130598076484 0.06746709899749334 0.011598598419412165 0.06661600012261615 0.008927810166132602 C 0.06746709899749334 0.011598598419412165 0.0694775206846852 0.025431582010156176 0.06925740371837219 0.02416206109907744" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.06925740371837219 0.02416206109907744 C 0.06908892131792738 0.025360693779603892 0.06650192919714004 0.040783110458502525 0.06723561491303451 0.038545653265394865 C 0.06650192919714004 0.040783110458502525 0.05988797181218892 0.05205037192895059 0.06045317512763858 0.05101154741636938" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.06045317512763858 0.05101154741636938 C 0.057661909597330745 0.05193322951725709 0.021375457703328937 0.06207173262702184 0.026957988763944597 0.06207173262702184 C 0.021375457703328937 0.06207173262702184 -0.00932846313005717 0.05008986531548167 -0.006537197599749342 0.05101154741636938" fill="none" stroke="none" stroke-width="0"/>
<path d="M -0.006537197599749342 0.05101154741636938 C -0.007102400915199007 0.04997272290378817 -0.014053323101039784 0.036308196072287205 -0.013319637385145319 0.038545653265394865 C -0.014053323101039784 0.036308196072287205 -0.015509908590927712 0.022963428418550993 -0.015341426190482912 0.024162061099077446" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M -0.015341426190482912 0.024162061099077446 C -0.015121309224169911 0.02289254018799871 -0.011848923719849715 0.0062570219128530394 -0.012700022594726896 0.008927810166132602 C -0.011848923719849715 0.0062570219128530394 -0.004497257783392561 -0.009288665282478136 -0.005128239691956741 -0.00788739794027731" fill="none" stroke="#000000" stroke-width="0.001"/>
</g><g transform="translate(0.33734345282867073,0.35310522183180115) rotate(0) scale(1,1) translate(-0.35878523175949983,-0.35878523175950006)"><path d="M 0.3593641214722264 0.3568663484126816 C 0.3594421767414705 0.3569274274308515 0.36040865443224945 0.35775920357628826 0.3603007847031552 0.35759929663072004 C 0.36040865443224945 0.35775920357628826 0.36065855822135773 0.35898288761429675 0.36065855822135773 0.35878523175950006 C 0.36065855822135773 0.35898288761429675 0.3601929149740609 0.36013107383384835 0.3603007847031552 0.3599711668882802 C 0.3601929149740609 0.36013107383384835 0.35918958458419464 0.36076519412448826 0.3593641214722264 0.3607041151063184 C 0.35918958458419464 0.36076519412448826 0.358031805158742 0.3606430360881485 0.3582063420467738 0.3607041151063184 C 0.358031805158742 0.3606430360881485 0.35716180908675066 0.359811259942712 0.3572696788158449 0.3599711668882802 C 0.35716180908675066 0.359811259942712 0.3569119052976423 0.35858757590470336 0.3569119052976423 0.35878523175950006 C 0.3569119052976423 0.35858757590470336 0.3573775485449392 0.3574393896851518 0.3572696788158449 0.35759929663072004 C 0.3573775485449392 0.3574393896851518 0.3582843973160179 0.35680526939451174 0.3582063420467738 0.3568663484126816" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB