Files
skills/fish-pipeline/references/experience.md
T
2026-11-09 18:23:06 +03:00

61 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Проверенный опыт 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 участков.