Здравствуйте! Авторизуйтесь или зарегистрируйтесь, чтобы использовать полный функционал сайта
Быстрая авторизация через соцсети:

Главная » Блог » Моддинг
04.11.2015 02:57
Тонкости оптимизации моделей для BFME

Вечер добрый.

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

Вообще, существует определенная классификация оптимальных значений для тех или иных параметров модели (количество полигонов, сложность элементов, размер текстуры и т.п.). Она даже прописана в мануале к BFME2 Mod SDK, однако стоит понимать, что сейчас уже далеко не 2006 год, и нужно уметь применять решения под нынешние реалии.
Производительность игры сильнее зависит от процессора, нежели от видеокарты. Связано это с тем, что современным видеокартам очень легко отрисовывать множество полигонов, сложности вызывают шейдеры, освещение и разного рода пост-эффекты. Ну а BFME, понятное дело, ничего такого сложного предложить не может.
Однако, довольно смешно, но как раз модели и могут стать узким местом для процессора (да-да, не видеокарты), сильно лимитирующим производительность игры.

Как это происходит? Сейчас подробно разберем.

Итак, вот во вьюпорте у Вас открыта модель (к слову, готовые модели для BFME есть у нас в файловом архиве, еще вариант - можно скачать 3D-модели для моддинга, дизайна со сторонних ресурсов и подогнать под игровые), и Вам предстоит с ней работать.
Что делает большинство новичков? Правильно, они расчленяют модель, чтобы было с ней удобнее работать. Да и закащивать модели по элементам гораздо проще, чем одну целую - кропотливо тыкать по каждому вертексу не придется.
А поскольку элементы для модели зачастую берутся из разных источников, то и текстур накладывается сразу несколько.

И уже тут допускается большая ошибка.
Во-первых, существует такая штука, как draw calls (вызовы отрисовки), и чем больше элементов в модели, тем больше запросов на отрисовку => тем ниже производительность. Причем снижается производительность не только GPU, но и CPU.
Во-вторых, примерно то же самое происходит и с текстурами - все видеопроцессоры работают с определенным количеством текстур в кэше с хорошей скоростью, остальные же материалы, конечно же, обрабатываются, но с гораздо меньшей скоростью.

Что нужно делать?
Ответ банален и вытекает из самой проблемы: в модели должно быть минимальное количество элементов (в идеале - 1 элемент тела +1 элемент, который в игре, к примеру, скрывается - те же апгрейженные клинки) и на модель должно быть наложено минимальное количество текстур (в идеале - 1 текстура).
Лучше помучаться с закосткой и переразвернуть текстуры на моделях, чем потом смотреть на единицы FPS в игре.

Приведу конкретные примеры из моего мода. Возьмем две модели для сравнения. Левый скриншот - модель из версии 0.31, правый - из версии 1.0 (все изображения здесь и далее доступны в большем разрешении по клику):


Как можно видеть, значение calls (вызовы отрисовки) в двух версиях отличается в несколько раз. С количеством элементов и текстур - аналогично.
Напомню, производительность в TLHotTA 1.0 выросла в 2-3 раза относительно версии 0.31. Комментарии, думаю, излишни - факт зависимости производительности от количества calls налицо. Большое количество вызовов сильно нагружает процессор, которому и так есть что считать.
Стоит отметить, что, как можно видеть, модели орков отличаются: у модели справа больше полигонов, однако в игре производительность выше именно с моделью справа, а не с той, что слева. Это также подтверждает мысль о том, что нынешние видеокарты слабо чувствительны к количеству полигонов в плане нагрузки.

Итак, поехали дальше. Совет второй и на сегодня последний: обязательно используйте карты нормалей для моделей BFME2 (для первой части неактуально - поддержки шейдеров версии 2.0 там нет).
Подробное их применение в 3D Max'е расписано в мануале к BFME2 Mod SDK, поэтому останавливаться на том, как задействовать DirectX9 шейдеры, не буду.

Приведу лучше наглядные примеры непосредственно в игре. Опять же, несколько парных скриншотов, слева - модели с картами нормалей, справа - без:



 

Как можно видеть, карты нормалей дают рельефность и большую глубину освещения.
Если простым языком, то модели выглядят объемнее (хорошо проиллюстрировано на первой паре скринов), а тени, падающие на них, накладываются реалистично (обратите внимание на последнюю пару скриншотов: тень от башни накрывает юнита ровно настолько, насколько должна; без нормалей же разницы в тенях вообще не заметно).

Помимо этих преимуществ, могу сказать, что современным видеокартам проще обрабатывать именно DirectX9-материалы (к коим и относится версия с нормалями), нежели стандартный W3D (DirectX8), который применяется в оригинале ко всем моделям юнитов.
В свое время я проводил соответствующие тесты, в результате получилось, что одинаковые сцены работали быстрее с моделями, на которые наложены DX9-материалы.

На сегодня - все. Надеюсь, доберусь когда-нибудь до раздела туториалов, где уже начну писать более конкретные вещи.
До скорого.




Оценить:
Категория: Моддинг | Просмотров: 1157 | Добавил: SauronGreat | Рейтинг: 5.0/7
Теги: 3d max, BFME, models, W3D
ПОХОЖИЕ МАТЕРИАЛЫ

Всего комментариев: 9
avatar
9 Арвелег • 00:34, 04.12.2015
Спасибо, буду тесты на текстуры в бфме1 проводить, а насчет шейдеров может мод скачаю от команды return of shadow, надеюсь что там улучшилось качество.
avatar
0
8 SauronGreat • 23:19, 22.11.2015
В бфме1 поддержки шейдеров 2.0 нет (т.е. все те материалы, которые относятся к DX9 в максе, первой частью не поддерживаются).
Насчет этих шейдеров в RoS ничего сказать не могу - не смотрел.
avatar
7 Арвелег • 01:15, 22.11.2015
И кстати вроде можно с рейдерами поколдовать в бфме 1? Допустим как сделали разрабы мода return of shadow. Только я вот как не знаю а вот архив shader имеет только какие-то координаты.
avatar
6 Арвелег • 01:11, 22.11.2015
Значит для бфме 1 не надо карты нормалей делать?
avatar
0
5 SauronGreat • 22:49, 08.11.2015
Тени не лучше, модели затеняются лучше)
У каждого юна как минимум одна текстура, а теперь посчитай, сколько юнов у тебя бегает. И каждая текстура кушает память. Причем при увеличении разрешения текстуры детализация все меньше, а размер - все больше.

Разница между 64x64 и 256x256 очевидна, между 256x и 512x - уже не столь очевидна, между 512x и 1024x - почти не видна. При этом вес файлов увеличивается реально в разы, непропорционально улучшению качества.
avatar
4 Nik768 • 21:00, 05.11.2015
И да, статейка очень интересная, жду продолжения. А может игра лагать из-за того что движок слишком стар и плохо справляется с прорисовкой огромного кол-ва юниов?
avatar
3 Nik768 • 20:57, 05.11.2015
Удивительно как сильно нагружается мой I7 4770 (А это 8-ми потоковый проц) в моде Return of Shadow для первой части, частенько лагает. А вот насчет видеокарты - как-то странно там работает график нагрузки, в серьезных сценах показывается что загрузка 0-25%, больше не идет, процессор нагружается максимум на 2 ядра по 100%, игра лагает. Моей видеокарте 5 лет, она даже по тем меркам средняя, что уж говорить сейчас. Хотя первая часть 2004 года и она скорее-всего не может использовать многопоточность, увы(
avatar
2 Арвелег • 23:16, 07.11.2015
Выходит с помощью карт нормалей тени лучше? И кстати Сеня почему практически все моды для всей серии бфме делают текстуры в небольшом разрешении, это из за производительности. И что если текстуры будут в 2048x 2048x ?
avatar
0
1 SauronGreat • 22:24, 05.11.2015
Огромного - да, но это реально много юнов надо. В скирмише такого быть не должно, тем более в первой части.
Скорее всего в RoS модельки просто не оптимизированы +текстуры юзаются очень большого разрешения (об этом я забыл в статье упомянуть, кстати), буржуи любят лепить юнам текстуры 1024x1024, хотя 256x256 - за глаза.
avatar