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 @@
id: 衝撃
original_key: 衝撃
resource: その他
morph_x: 1
morph_y: 1
variants:
- x: 0
y: 0
file: x0y0.svg
fields:
- name: 衝撃

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.2238235739143592,0.17737176577394465) rotate(0) scale(1,1) translate(-0.26085154999999993,-0.26085154999999993)"><path d="M 0.2732687073036286 0.24799320720098642 C 0.27314615329364916 0.24866809596292316 0.2722526692019446 0.25713740380618283 0.27179805918387534 0.25609187234422737 C 0.2722526692019446 0.25713740380618283 0.27930119154850813 0.2609102274444709 0.27872402752045944 0.26053958474445216" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.27872402752045944 0.26053958474445216 C 0.2781601503288293 0.2609301443930462 0.2715396566607774 0.2662870607408449 0.2719575012208979 0.2652263005275802 C 0.2715396566607774 0.2662870607408449 0.273855925430523 0.2739389078682992 0.27370989279901337 0.2732687073036285" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.27370989279901337 0.2732687073036285 C 0.27303500403707665 0.2731461532936491 0.26456569619381703 0.2722526692019446 0.2656112276557725 0.27179805918387534 C 0.26456569619381703 0.2722526692019446 0.26079287255552885 0.27930119154850813 0.2611635152555476 0.27872402752045944" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.2611635152555476 0.27872402752045944 C 0.26077295560695357 0.2781601503288293 0.25541603925915496 0.2715396566607774 0.25647679947241964 0.2719575012208979 C 0.25541603925915496 0.2715396566607774 0.24776419213170053 0.273855925430523 0.24843439269637124 0.27370989279901337" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.24843439269637124 0.27370989279901337 C 0.24855694670635067 0.27303500403707665 0.24945043079805526 0.26456569619381703 0.2499050408161245 0.2656112276557725 C 0.24945043079805526 0.26456569619381703 0.24240190845149176 0.26079287255552885 0.24297907247954043 0.2611635152555476" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.24297907247954043 0.2611635152555476 C 0.24354294967117054 0.26077295560695357 0.2501634433392224 0.25541603925915496 0.24974559877910193 0.25647679947241964 C 0.2501634433392224 0.25541603925915496 0.24784717456947683 0.2477641921317005 0.24799320720098644 0.24843439269637121" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.24799320720098644 0.24843439269637121 C 0.2486680959629232 0.24855694670635065 0.25713740380618283 0.24945043079805526 0.25609187234422737 0.2499050408161245 C 0.25713740380618283 0.24945043079805526 0.2609102274444709 0.2424019084514917 0.26053958474445216 0.24297907247954037" fill="none" stroke="none" stroke-width="0"/>
<path d="M 0.26053958474445216 0.24297907247954037 C 0.2609301443930462 0.2435429496711705 0.26628706074084496 0.2501634433392224 0.2652263005275802 0.2497455987791019 C 0.26628706074084496 0.2501634433392224 0.27393890786829933 0.2478471745694768 0.2732687073036286 0.24799320720098642" fill="none" stroke="none" stroke-width="0"/>
</g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB