Количество мешей (Skinned Meshes, Basic Meshes)
Описание
Есть два вида мешей (частей модели):
Skinned Meshes- это меши с арматурой (костями) и блендшейпами, основная часть любого аватараBasic Meshes- это меши, которые не деформируются (нет костей и блендшейпов), обычно - какие-либо предметы.
Чтобы уменьшить количество мешей можно сделать следующее:
- Объединить меши. Уменьшит в т.ч. количество материалов, если есть одинаковые на разных мешах. Выполняется автоматически при следовании данному гайду, но можно сделать и вручную
- Удалить меши.
- Статические
Skinned Meshesможно заменить наBasic Meshes, аBasic Meshesможно добавить вSkinned Meshes
Способы оптимизации
Автоматическое объединение мешей
Skinned Meshes будут автоматически объединены при наличии компонента AAO Trace and Optimize (должна быть галочка на настройке Merge Skinned Meshes) при следующих условиях:
- Меши не включаются/выключаются отдельно анимациями в FX
- Меши не включаются/выключаются с помощью тогглов, сделанных через Modular Avatar
Объединенные компонентом меши будут иметь название типа $$AAO_AUTO_MERGE_SKINNED_MESH_0 в собранном аватаре.
Иногда компонент может разделить объединяемые меши на несколько. Это может происходить из-за:
- Где-то в аниматоре/Modular Avatar/VRCFury оставлена анимация/тоггл, которая переключает отдельные меши
- Если вы удалите параметр аватара (из меню и из списка параметров аватара), который переключает меш, но параметр останется в FX вместе с анимациями - он не будет удален при оптимизации. Нужно удалить анимации из FX или объединить меши вручную.
- Разделены меши с блендшейпами, переключаемыми анимациями, и без блендшейпов. Если очень надо, можно объединить меши вручную.
Ручное объединение Skinned и Basic Meshes
Также меши можно объединить вручную при необходимости с помощью компонента AAO Merge Skinned Mesh. Для этого:
- Создайте новый GameObject (ПКМ на объекте, которому будет принадлежать меш -
Create Empty) и назовите его именем объединенного меша- Если это будет единственный ваш меш (точнее если там есть голова), обязательно назовите его
Body
- Если это будет единственный ваш меш (точнее если там есть голова), обязательно назовите его
- Добавьте компонент
AAO Merge Skinned Mesh, вместе с ним будет автоматически добавлен компонентSkinned Mesh Renderer. - Добавьте в список
Skinned Renderersвсе Skinned Meshes, которые вы хотите объединить в один. - Добавьте в список
Static Renderersвсе Basic Meshes, которые вы хотите объединить. Они станут частью получившегося Skinned Mesh - В конце компонента также в
Merge Materialsбудет показан список материалов, который будет объединен в новом меше

При ручном объединении мешей, которые переключаются анимациями по отдельности, будет выскакивать указанное ниже предупреждение при сборке аватара. Если вы намеренно объединили так меши, предупреждение можно игнорировать

Удаление мешей
Меши можно убрать из аватара через:
- Удаление GameObject с мешем
- Через выставление тега
Editor Onlyдля GameObject с мешем (в инспекторе под названием GameObject).
Восстановление мешей
- Если удаленный GameObject был в префабе (95% случаев), меш можно вернуть через меню
Overridesпод префабом в инспекторе

- Для восстановления меша, выключенного через
EditorOnly, тег нужно вернуть наUntagged

Замена Skinned Mesh на Basic Mesh
Если меш не деформируется костями, но его нужно выключать отдельно от остальной части аватара, то его можно перевести из Skinned Mesh в Basic Mesh. Это освободит один слот Skinned Meshes, но количество материалов останется неизменным. Пример такого меша - кепка.
- Добавьте компоненты
Mesh FilterиMesh Rendererна GameObject. - В
Mesh Filterперетащите меш из исходногоSkinned Mesh Renderer, а вMesh Rendererскопируйте список материалов из исходного компонента. - Удалите с GameObject компонент
Skinned Mesh Renderer

При ручном задании границ не забудьте выставить Anchor Override.