Add fish-pipeline skill

This commit is contained in:
emil28092005
2026-11-09 18:23:06 +03:00
parent 50151743a0
commit 6cd9967566
3 changed files with 345 additions and 0 deletions
+60
View File
@@ -0,0 +1,60 @@
# Проверенный опыт Fish Pipeline
Обновлять только после подтверждения. Повторяющиеся записи объединять. Устаревшие правила
заменять в `SKILL.md`, а здесь сохранять краткую историю причин и проверок.
## 2026-11-09 — Базовый физический скелет
- Создана цепочка из 6 Rigidbody и 6 ConfigurableJoint с kinematic mouth anchor.
- Нестабильность уменьшается, когда физический transform не масштабируется, а размер задаётся
CapsuleCollider. Визуальная капсула находится в дочернем объекте.
- Tail Impulse через `AddForceAtPosition` к кончику последнего сегмента успешно раскачивает цепь.
## 2026-11-09 — GLB и skinning
- `com.unity.cloud.gltfast` импортирует mesh, материалы, morph targets и AnimationClips.
- Для первой модели 6 костей и 6194 вершины успешно деформировались после импульса.
- Направление модели нужно определять отдельно; поворот `Z +90` подходит только для проверенной
ориентации `head +Y` к `tail +X`.
## 2026-11-09 — Независимая morph-анимация
- Shape keys `Eye_Look_Left`, `Eye_Look_Right`, `Open_mouths`, `Breath` экспортированы из Blender
с `export_morph=True`, `export_morph_animation=True`, `ACTIVE_ACTIONS`.
- В Unity найден один 4-секундный клип с кривыми `blendShape.*`.
- Для независимого loop создан новый legacy `AnimationClip`, путь кривой изменён на пустой,
transform-кривые отброшены. Физика и morph-анимация работают одновременно.
## 2026-11-09 — Нормализация morph-frame
Симптом: рыба сильно надувалась, `Breath = 10` давало смещение вершины `0.17772 м`.
Причина: glTFast вернул `GetBlendShapeFrameWeight = 1`, тогда Unity ожидал диапазон `0–100`.
Копирование значения `1` приводило к экстраполяции в 10 раз.
Исправление: нормализовать frame weight к `0–100` при создании target mesh.
Проверка после исправления: при `Breath = 10` максимальное смещение стало `0.00178 м`.
Не уменьшать анимацию до такой проверки — сначала исправить frame weight.
## 2026-11-09 — Значения кривых
- Исходные morph-кривые имеют диапазон `0–1`, Unity BlendShape использует `0–100`.
- При переносе ключи копируются в новый `AnimationCurve`; исходный клип не изменяется.
- Текущая пользовательская сила воспроизведения — 20% от исходной амплитуды. Это настройка после
исправления frame weight, а не решение проблемы надувания.
## 2026-11-09 — UV Data Transfer в Blender
- В Blender 5.2 направление оператора критично: для selected source → active target требуется
`use_reverse_transfer=True`.
- Неправильное направление повредило UV исходника в текущей сцене; источник восстановлен из
отдельной сохранённой копии.
- Перед вызовом читать RNA: допустимые enum для `layers_select_src/dst` зависят от контекста.
## 2026-11-09 — Ретопология
- Простой Decimate не признан подходящим для анимации этой рыбы.
- QuadriFlow отклонил исходную поверхность; Voxel/Sharp ReMesh дал 16166 квадов и сохранил форму.
- UV восстановлены через Data Transfer в правильном направлении. Для скелета нужна отдельная
проверка non-manifold участков.