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,11 @@
<?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.1307709240821216) rotate(0) scale(1,1) translate(-0.06997226266504053,-0.16697994324701732)"><path d="M 0.028543739204345275 0.12632544342915727 C 0.028543739204345275 0.12740707976150453 0.028543739204345275 0.14146835208201888 0.028543739204345275 0.1393050794173243 C 0.028543739204345275 0.14146835208201888 0.028543739204345275 0.15336635173783947 0.028543739204345275 0.15228471540549215" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.028543739204345275 0.15228471540549215 C 0.028502572042632752 0.15361565131154079 0.02974758721952427 0.16273156440290595 0.02829673623407014 0.1602703308417839 C 0.02974758721952427 0.16273156440290595 0.036133505300927606 0.1681674565883668 0.03724884511707005 0.16705211677222448 C 0.036133505300927606 0.1681674565883668 0.0176664034678579 0.166988579061419 0.021604697337215484 0.1669623697386378 C 0.0176664034678579 0.166988579061419 0.012288145994876043 0.16725053987062405 0.013619081900924535 0.16720937270891173" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.013619081900924535 0.16720937270891173 C 0.01050799119332387 0.16720937270891173 -0.029936188005484782 0.16720937270891173 -0.023714006590283443 0.16720937270891173 C -0.029936188005484782 0.16720937270891173 -0.0641581857890922 0.16720937270891173 -0.06104709508149153 0.16720937270891173" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M -0.06104709508149153 0.16720937270891173 C -0.06171256303451591 0.16718878912805554 -0.07006694026835743 0.16675287804725908 -0.06903271051778403 0.1669623697386374 C -0.07006694026835743 0.16675287804725908 -0.07401552199644325 0.16413780250430077 -0.07345785208837219 0.16469547241237198 C -0.07401552199644325 0.16413780250430077 -0.07593424110601489 0.15923610109120942 -0.0757247494146367 0.16027033084178274 C -0.07593424110601489 0.15923610109120942 -0.07599233596576677 0.15161924745246794 -0.0759717523849106 0.15228471540549215" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M -0.0759717523849106 0.15228471540549215 C -0.0759717523849106 0.15120307907314484 -0.0759717523849106 0.13714180675262969 -0.0759717523849106 0.1393050794173243 C -0.0759717523849106 0.13714180675262969 -0.0759717523849106 0.12524380709680918 -0.0759717523849106 0.1263254434291565" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M -0.0759717523849106 0.1263254434291565 C -0.07595116880405452 0.12565997547613225 -0.07551525772325939 0.11730559824229217 -0.07572474941463758 0.11833982799286549 C -0.07551525772325939 0.11730559824229217 -0.07290018218030096 0.11335701651420542 -0.07345785208837219 0.11391468642227665 C -0.07290018218030096 0.11335701651420542 -0.06799848076720953 0.11143829740463253 -0.06903271051778292 0.11164778909601084 C -0.06799848076720953 0.11143829740463253 -0.06038162712846725 0.11138020254488076 -0.06104709508149153 0.11140078612573692" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M -0.06104709508149153 0.11140078612573692 C -0.057936004373890855 0.11140078612573692 -0.017491825175082104 0.11140078612573692 -0.023714006590283443 0.11140078612573692 C -0.017491825175082104 0.11140078612573692 0.0167301726085252 0.11140078612573692 0.013619081900924535 0.11140078612573692" fill="none" stroke="#000000" stroke-width="0.001"/>
<path d="M 0.013619081900924535 0.11140078612573692 C 0.01428454985394878 0.11142136970659305 0.022638927087788835 0.11185728078738873 0.021604697337215484 0.11164778909601045 C 0.022638927087788835 0.11185728078738873 0.026587508815876005 0.11447235633034751 0.026029838907804748 0.11391468642227626 C 0.026587508815876005 0.11447235633034751 0.028506227925448963 0.11937405774343891 0.028296736234070585 0.11833982799286549 C 0.028506227925448963 0.11937405774343891 0.0285643227852015 0.1269909113821816 0.028543739204345275 0.12632544342915727" fill="none" stroke="#000000" stroke-width="0.001"/>
</g></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB