Пример оптимизации
TODO В следующих версиях пример будет дополнен остальными пунктами оптимизации
Оптимизируем стандартный префаб аватара Eku и добавим на него вручную одежду "Asteria Lycee", которая идет вместе с аватаром, но оставим чулки от оригинальной одежды. Никакая часть одежды сниматься не будет.
- Вытаскиваем аватар на сцену, смотрим характеристики:

- Перетягиваем префаб одежды внутрь аватара (не используем версию из папки MA, расставим все сами для примера):

- В корень аватара на сцене добавляем следующие компоненты:
AAO Trace and optimize, настройки не меняемMA Mesh Settings, задаем настройки:- Anchor Override Mode:
Set - Anchor Override: выбираем точку, относительно которой считается освещение аватара, я обычно ставлю
Chest, также иногда встречаетсяHips(но сHipsаватар может почернеть если погрузить попу в землю) - Bounds Override Mode:
Set - Root Bone:
Hips - В
Boundsоставляем Center всегда по нулям, аExtent(размер границ) ставим по 1.5 (размер будет 3х3х3 метра, соответствует Good аватару с запасом)
- Anchor Override Mode:
MA VRChat Settings, галочкаMMD World Supportдолжна быть включена
- Убираем меши, которые не будут использоваться в аватаре, одним из двух способов:
- Удаляем с префаба кнопкой delete. В случае необходимости меш можно будет восстановить из Overrides префаба
- Ставим tag: "Editor Only" (чтобы объект не добавлялся в аватар при загрузке) и выключаем GameObject чтобы видеть, что меша нет. В примере далее используется этот вариант

- Удалим с тела полигоны, которые не видно под одеждой, используем способ с компонентом
AAO Remove Mesh By Blendshape:- Выбираем Body_base и разжимаем все BlendShapes, понадобится чтобы видеть что мы удаляем:

- Добавляем компонент
AAO Remove Mesh By Blendshape - Отмечаем BlendShapes, полигоны которых необходимо удалить. На меше и его контуре удаляемые части исчезнут. Осматриваем аватар и убеждаемся, что удалены только невидимые под одеждой части тела:

- Выбираем Body_base и разжимаем все BlendShapes, понадобится чтобы видеть что мы удаляем:
- На одежде присутствуют рукава без блендшейпов, большая часть которых не будет видна под одеждой. Удаляем лишнее с помощью AAO
- Выбираем рукава
- Добавляем компонент
AAO Remove Mesh By Box - Нажимаем
Edit this boxв компоненте (Gizmos должен быть включен), перетягиваем и настраиваем размеры куба, чтобы внутри оказались все невидимые полигоны, и нажимаемFinish editing box
- Стандартные чулки клипают с обувью из надеваемого костюма, поэтому тоже их обрежем с помощью
AAO Remove Mesh By Box, добавляем компонент на чулки и выполняем все действия из предыдущего шага:
- Если собрать аватар (ПКМ на аватар ->
Modular Avatar->Manual Bake Avatar), то на сцене появится копия аватара, которая будет загружаться в VRChat, и из VRChat SDK будет видно, что:- На аватаре, в котором меши не удалялись вообще, а одежда была добавлена поверх стандартной, будет 184 тысячи полигонов.
- Количество полигонов с выключенными стандартными частями одежды было 116 тысяч
- После удаления лишних полигонов на оставшихся мешах будет 95 тысяч (удалено 21 тысяча полигонов). Чтобы аватар мог быть хотя бы Poor, нужно убрать еще 25 тысяч.
- Сжатие полигонов оставим напоследок, т.к. это самая долгая операция.
- Сделаем копию аниматора FX и удалим все лишнее (в частности тогглы на оставшиеся части одежды). Для данного аватара остаются:
- Лицевые анимации
- Управление ушками
- Обнуление блендшейпов рта при разговоре (слой LipSyncController)
- Управление волшебной палочкой
- AFK

- Используем
Meshia Mesh Simplifierчтобы автоматически обрезать лишние полигоны. На данном этапе придется много значений подбирать руками и смотреть, чтобы оно нормально выглядело. Лучшим вариантом, конечно, будет использование блендера, но это очень долгий путь. - Нажмем на корень аватара правой кнопкой мыши и добавим
Meshia Mesh Simplification-Meshia Cascading Avatar Mesh Simplifier
- В аватар добавится компонент со списком всех оставшихся мешей и количеством полигонов, которые для них нужно оставить.

- С галочкой
Enable NDMF Previewсжатие мешей происходит "в прямом эфире" и сразу видно результат, но это грузит комп, поэтому при необходимости галочку включайте только для проверки настроек - ВНИМАНИЕ! На версии v3.0.0 Meshia Mesh Avatar Simplifier НЕ ЗНАЕТ про удаленные полигоны с мешей и считает общее кол-во полигонов по всем мешам. Поэтому на данном этапе нужно посмотреть сколько полигонов удаляется с аватара после сборки и прибавить разницу в полигонах к 70000 в
Target Triangle Count, в нашем случае это примерно 116 тысяч - 95 тысяч примерно 21 тысяча, т.е пишем 91000.- После сжатия количество реально получившихся полигонов может плавать, поэтому данный параметр может меняться в процессе работы
- На данном этапе проходим по всем мешам, смотрим на них со всех сторон и меняем ползунки/галочки, запускаем Play Mode в юнити с Gesture Manager и двигаем аватаром, пока не получится приемлемый результат. Тут простой инструкции нет, внешний вид будет сильно зависеть от многих вещей.
- После сжатия на чулках остался плохо обрезанный бантик, поэтому он был удален с помощью
MA Mesh CutterиMA Vertex Filter

- Итого для данной модели получились следующие настройки для 70к полигонов, не считая детальных:
