Перейти к основному содержимому

Количество мешей (Skinned Meshes, Basic Meshes)

Описание

Есть два вида мешей (частей модели):

  • Skinned Meshes - это меши с арматурой (костями) и блендшейпами, основная часть любого аватара
  • Basic Meshes - это меши, которые не деформируются (нет костей и блендшейпов), обычно - какие-либо предметы.

Чтобы уменьшить количество мешей можно сделать следующее:

  1. Объединить меши. Уменьшит в т.ч. количество материалов, если есть одинаковые на разных мешах. Выполняется автоматически при следовании данному гайду, но можно сделать и вручную
  2. Удалить меши.
  3. Статические Skinned Meshes можно заменить на Basic Meshes, а Basic Meshes можно добавить в Skinned Meshes

Способы оптимизации

Автоматическое объединение мешей

Skinned Meshes будут автоматически объединены при наличии компонента AAO Trace and Optimize (должна быть галочка на настройке Merge Skinned Meshes) при следующих условиях:

  1. Меши не включаются/выключаются отдельно анимациями в FX
  2. Меши не включаются/выключаются с помощью тогглов, сделанных через Modular Avatar

Объединенные компонентом меши будут иметь название типа $$AAO_AUTO_MERGE_SKINNED_MESH_0 в собранном аватаре.

Иногда компонент может разделить объединяемые меши на несколько. Это может происходить из-за:

  1. Где-то в аниматоре/Modular Avatar/VRCFury оставлена анимация/тоггл, которая переключает отдельные меши
    1. Если вы удалите параметр аватара (из меню и из списка параметров аватара), который переключает меш, но параметр останется в FX вместе с анимациями - он не будет удален при оптимизации. Нужно удалить анимации из FX или объединить меши вручную.
  2. Разделены меши с блендшейпами, переключаемыми анимациями, и без блендшейпов. Если очень надо, можно объединить меши вручную.

Ручное объединение Skinned и Basic Meshes

Также меши можно объединить вручную при необходимости с помощью компонента AAO Merge Skinned Mesh. Для этого:

  1. Создайте новый GameObject (ПКМ на объекте, которому будет принадлежать меш - Create Empty) и назовите его именем объединенного меша
    1. Если это будет единственный ваш меш (точнее если там есть голова), обязательно назовите его Body
  2. Добавьте компонент AAO Merge Skinned Mesh, вместе с ним будет автоматически добавлен компонент Skinned Mesh Renderer.
  3. Добавьте в список Skinned Renderers все Skinned Meshes, которые вы хотите объединить в один.
  4. Добавьте в список Static Renderers все Basic Meshes, которые вы хотите объединить. Они станут частью получившегося Skinned Mesh
  5. В конце компонента также в Merge Materials будет показан список материалов, который будет объединен в новом меше

Ручное объединение мешей

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

Удаление мешей

Меши можно убрать из аватара через:

  • Удаление GameObject с мешем
  • Через выставление тега Editor Only для GameObject с мешем (в инспекторе под названием GameObject).

Восстановление мешей

  • Если удаленный GameObject был в префабе (95% случаев), меш можно вернуть через меню Overrides под префабом в инспекторе
    Восстановление меша из префаба
  • Для восстановления меша, выключенного через EditorOnly, тег нужно вернуть на Untagged
    Восстановление меша из префаба

Замена Skinned Mesh на Basic Mesh

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

  1. Добавьте компоненты Mesh Filter и Mesh Renderer на GameObject.
  2. В Mesh Filter перетащите меш из исходного Skinned Mesh Renderer, а в Mesh Renderer скопируйте список материалов из исходного компонента.
  3. Удалите с GameObject компонент Skinned Mesh Renderer

alt text

примечание

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