Моделирование персонажей для оптимальной производительности
Ниже представлено несколько советов о том, как создавать дизайн моделей персонажей для достижения оптимальной скорости отрисовки.
Используйте Single Skinned Mesh Renderer
Вам следует использовать только одиночный skinned mesh renderer для каждого персонажа. Unity оптимизирует анимацию с помощью отсечения по видимости и обновлений по ограничивающему объёму, и эти оптимизации активны только если вы вместе используете один компонент Animation и один skinned mesh renderer. Время отрисовки модели может увеличиться примерно в два раза в результате использования двух skinned mesh’ей вместо одного меша и при использования нескольких мешей редко можно получить какие-либо преимущества.
Используйте как можно меньше материалов
Вам также следует сохранять как можно меньшее количество материалов на каждом из мешей. Единственная причина, по которой вам может понадобиться более одного материала для персонажа - если вы желаете использовать разные шейдеры для разных частей (например, специальный шейдер для глаз). Однако, два или три материала на персонаж должно быть достаточно почти во всех случаях.
Используйте как можно меньше костей
Иерархия костей в обычной игре для настольных систем обычно содержит где-то от 15 до 60 костей. Чем меньше костей вы используете, том лучше будет производительность. Вы можете достичь очень хорошего качества на настольных платформах и довольно хорошего на мобильных, используя примерно 30 костей. В идеале, держите количество костей ниже 30 для мобильных платформ и не слишком сильно уходите от 30 для настольных.
Количество полигонов
Количество полигонов, которые вам следует использовать, зависит от требуемого уровня качества и целевой платформы. Для мобильных устройств, где-то от 300 до 1500 полигонов на меш обеспечат хорошие результаты, в то время как для настольных платформ идеальный диапазон - примерно от 1500 до 4000. Возможно вам придётся понизить количество полигонов на меш, если в игре будет видно большое количество персонажей в один момент времени. Для примера, в Half-Life 2 использовалось 2500–5000 треугольников на персонаж. В современных AAA играх, работающих на PS3 или Xbox 360, у персонажей обычно 5000–7000 треугольников.
Держите упреждющую и инверсную кинематику отдельно друг от друга
При импорте анимации узлы инверсной кинематики (IK, от Inverse Kinematic) запекаются в упреждающие кинематики (FK, от Forward Kinematics), и в результате, Unity совсем не нужны узлы IK. Однако, если они остаются в модели, то они будут потреблять ресурсы CPU, даже если они не влияют на анимацию. Вы можете удалить неиспользуемые узлы IK в Unity или в инструменте для моделирования, в соответствии с вашими предпочтениями. В идеале, во время моделирования, вам следует держать иерархии IK и FK отдельно друг от друга для упрощения удаления узлов IK при необходимости.