PhysBone Transforms
Описание
Это общее количество костей, которыми управляют все PhysBone Components на аватаре.
Не изменяя количество PhysBone-компонентов, для оптимизации можно:
- Объединить несколько костей друг с другом
- Удалить end-кости и использовать параметр
Endpoint Positionдля задания длины последних костей в каждой цепочке
End-кости
В конце цепочек костей на зачастую можно встретить кости, которые заканчиваются на _end. Это обычно означает т.к. endbone - кость, к которой не привязан вес, но которая используется для определения длины ее родительской кости.
Unity, например, не знает про длину костей в арматуре, а для PhysBone это нужно знать чтобы определять длину коллайдера последней кости. Это делается двумя способами:
- Используется расстояние до _end кости, но _end кость считается в характеристиках Bones, PhysBone Transforms и (если есть коллайдеры) PhysBone Collider Transforms
- В PhysBone-компоненте задается Endpoint Position (обычно задается только длина кости в координате Y, но при необходимости ее можно наклонить через X и Z). Длина кости будет указана в координатах end-кости (указываются относительно родительской кости):

Способы оптимизации
Объединение костей
Для объединения костей используется компонент AAO Merge Bone (официальная документация). Этот компонент удалит кость и перенесен ее веса на родительскую кость (т.е. родительская кость будет сгибаться так, будто убранная кость осталась на модели и не изменяет своего положения относительно родительской).
- Добавьте компонент
AAO Merge Boneна каждую кость, которые вы хотите объединить:- Объединять кости можно по определенному паттерну, например, через одну, для уменьшения костей в 2 раза
- Компонент можно накидывать на несколько костей в цепочке подряд, тогда они будут объединены с самой первой родительской костью. Тогда можно, например, объединять по 2 кости подряд и одну пропускать для уменьшения числа костей на 2/3
- Компонент нет смысла добавлять на кости, которые не управляются PhysBone. Ненужные кости будут автоматически объединены компонентом
AAO Trace and Optimize(управляется настройкойRemove unused Objects Automatically)
Данная операция не может быть выполнена вручную через удаление кости в Unity, т.к. требует изменения используемой 3D-модели.
Автоматическое удаление end-костей
Компонент AAO Trace and Optimize сам заменит end-кости на Endpoint Position, если в компоненте не установлена галочка Preserve EndBone (по умолчанию).
TODO Проверить
Ручное удаление end-костей
- end-кости можно убрать через
AAO Merge Bone, выключение кости через задание тегаEditor Onlyили удаление из префаба Endpoint Positionне получится использовать, если при объединении костей нужно исправить их поворот, в таком случае наоборот, end-кости будут добавлены на аватар