4.5 KiB
4.5 KiB
Проверенный опыт 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 участков.