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

4.5 KiB
Raw Blame History

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