3D для каждого: Оптимизация модели. Часть 1, объяснительная

в 8:15, , рубрики: 3d graphics, 3D для каждого, игры, модели, моделирование, разработка игр
3D для каждого: Оптимизация модели. Часть 1, объяснительная - 1

Доброго времени суток, читатели и читательницы!


В прошлых статьях (например, раз и двас) я не раз касалась темы оптимизации моделей. Однако какими именно методами оптимизируют модели и зачем?

В современном мире оптимизация преследует нас повсюду. Оптимизация производства, оптимизация времени, оптимизация логистики… И 3D-художников оптимизация тоже преследует чуть ли не с основания 3D как искусства.

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

В посте могут встречаться упоминания программ, игр, фильмов и студий. Не сочтите это за рекламу — всего лишь иллюстративный материал для понимания контекста.Текст написан на основе личного опыта автора. Также этот пост рассчитан на тех, кто еще только начинает свой путь в 3D или хочет освежить давно забытые воспоминания. Профессионалы, скорее всего, итак знают большую часть того, что я приведу в данном тексте. Но, быть может, какие-то интересные штучки и они найдут для себя.
Микрословарик для новичков

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

Рендеринг (render, rendering) процесс визуализации 3D-моделей. В зависимости от нужд и настроек, рендеринг может включать только саму модель, модель с текстурой, шейдеры, а также один статичный кадр или серию кадров в формате видео или гиф-анимации.

Меш (mesh) «кожа» или «ткань» модели, состоящая из вершин (axis, point), соединяющих их ребер (ribs, edges) и заполняющих пространство между ребрами граней — полигонов (polygons).

Скелет или риг, а также кости (bones, rig, skeleton, armature) «каркас» модели, служащий для удобства позирования и анимации модели.

UV-карта (UV-map) координаты наложения текстур на меш модели в формате двумерной проекции-мозаики. Напоминает выкройку. Определяет, как и в каком масштабе текстура накладывается на модель. Создание данной карты называется разверткой.

Текстуры (map, texture)файлы изображений, определяющих цвет (diffuse/color), имитацию рельефа (normal), блика (specular), объема (displacement), прозрачности (alpha) и так далее.

Физика (physic)имитация физических взаимодействий (столкновения, ветра, жидкости).

Хайполи (high-poly model, high res) подробная высокополигональная модель, которая имеет более 500 тысяч полигонов. В некоторых случаях хайполи признаются и менее полигональные модели либо, наоборот, сдвигают границу высокого полигонажа вверх. Но, как правило, счет идет с миллиона полигонов и более. Хайполи нужны для создания вручную нарисованных текстур и запечения объемов в normal map.

Лоуполи (low poly)модель с небольшим количеством полигонов (обычно до нескольких тысяч) и невысокой детализацией. Лоуполи часто используют для игр, особенно для мобильных и инди.

Что оптимизировать?


Первый и самый очевидный с точки зрения обывателя — «вес» модели. Чем более детализирована модель, чем больше в ней полигонов и чем больше разрешение текстур, тем больше места она занимает в памяти.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 2
Черновик головы зверя, «вес» 102 КБ. Без текстур, без костей, только меш

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 3
Та же голова, но с подразбиением рогов и головы х4 (тоже без текстур), «вес» — 380 КБ

Конечно, сам «голый» меш 3D-модели весит сравнительно немного в большинстве форматов. Даже модель с несколькими тысячами полигонов без UV-карты и текстур вряд ли будет тяжелее половины гигабайта.

Основной вес в пакете «модель+текстура» дает именно текстура. Чем она больше по длине-ширине, чем большую цветовую гамму и битность она имеет, тем больше вес пакета. Это влияет не только на вес всей игры в целом, но и на загруженность видеопамяти и оперативной памяти при рендеринге сцены в играх и фильмах. Поэтому многие современные игры имеют адаптивные настройки разрешения текстур (Lords of the Fallen) либо целые дубликаты наборов текстур с более низким разрешением.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 4
Текстура накидки Моргота, ужасного знамения. Слева — текстура более высокого разрешения (12 МБ), справа — дополнительная уменьшенная текстура (из папки с пометкой _L). Визуально вне игры разница незаметна

Увеличить вес модели может и скелет, и назначенная ему физика. Кроме того, большую роль играет формат модели. При прочих равных (отсутствие текстур, костей, физики и анимации) obj будет весить меньше, чем fbx (с оговоркой выбора кодировки и версии формата), но больше, чем какой-нибудь специальный игровой формат.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 5
Накидка Моргота для ГГ из игры Elden Ring. Чуть меньше 31 тысячи полигонов весит в оригинальном формате FLVER 1,41 МБ и около 33 МБ в формате OBJ. Оба без текстур

Зная все эти нюансы, мы можем грамотно оптимизировать свои ресурсы и ресурсы игрока, если делаем модель для игры.

Зачем оптимизировать?


Очистить место на диске. Даже если вы просто работаете с моделями для себя, вы замечаете, как быстро испаряется место на диске. Особенно, если вы имеете хорошую привычку любого художника — делать резервные копии. Конечно же, меня поймут пользователи ZBrush, когда за один день усердной работы резервные копии (QuickSaves) могут забить до 10 ГБ. Отключить их не вариант, поставить период автосохранения на полчаса — подвергнуть себя риску, ведь профи за полчаса способен из болванки сделать шедевр, ретопологизировать, накинуть UV-карту и покрасить базовыми цветами большую часть модели.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 6
Всего лишь промежуточные файлы работы над моделью. Без костей, без физики, без одежды. Только тело и голова с раскраской и примитивным нормал-мапом. Волосы без текстур, с простой заливкой цвета. Пре-рендеры вверху весят около 200 КБ. Почти все 6 ГБ — «заслуга» зибрашевских файлов промежуточных версий. И это еще далеко не конечная версия

Готовые модели с сетами текстур тоже занимают место. Более простые модели могут занимать до 10 МБ, более сложные (например, сцены) — до гигабайта. А теперь представьте, что у вас этих готовых моделей десяток.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 7
Клетка, полностью готовый и читаемый большинством движков (в FBX-формате) с самыми необходимыми ему текстурами (цвет, рельеф, блеск), весит 9 МБ. Его другие форматы для тестового импорта (от OBJ до MESH), еще 20 МБ. Вся его папка целиком — 30 МБ. Это только одна из моих собственных моделей. Ими у меня забито два жестких диска по 1 ТБ. И приходится регулярно чистить

Но, конечно, первыми от недостаточной оптимизации страдают геймеры. К сожалению, все чаще даже крупные студии не заморачиваются такой вещью, как оптимизация. Из-за погони за наилучшей картинкой все чаще делают текстуры не просто с большим, а с огромным разрешением в 4к и больше. Разработчиков не останавливает даже то, что по статистике Steam, как самого большого агрегатора игр, запустить игры в соответствующем разрешении смогут менее 30% целевой аудитории. Проверить это нетрудно: достаточно зайти на официальный сайт Steam Survey, где отображена статистика оборудования пользователей Стима.

Для большинства геймеров, не владеющих полутора-двухметровыми мониторами с повышенной герцовкой и видеокартами 4060 Ti 16+ ГБ, разницы между 2к и 8к текстурами в большинстве случаев не будет. Консольщики в этом плане мне возразят, конечно, ведь на телевизорах эта разница весьма существенна. Но ответственные разработчики обычно выпускают для консолей отдельную версию игры.

Как, например, Playwing со своей игрой Century: Age of Ashes. ПК-версия данной игры весит чуть меньше 16 ГБ. XBox-версия — почти 50 ГБ (45 плюс ежемесячные обновления скинов). Набор локаций для сражений, драконов, всадников и скинов для них идентичны, вся разница заключается в размере текстур: мапы для ПК-версии имеют разрешение 1024р, консольной — 4096р.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 8
Версия Century: Age of Ashes для ПК (в Steam в графе системные требования указано 10 ГБ, но с даты выхода добавили много новых драконов и пару локаций, поэтому игра разбухла в полтора раза)…

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 9
…и вес XBox версии

Но Century: Age of Ashes — сессионная мультиплеерная арена с единственной функцией: летать на драконах и пыхать огнем с примесями разных способностей и перерывами на гонки на драконах. Все, что там есть, — десяток небольших локаций, доспехи на всадников и разновидности драконов.

Что там с более развернутыми проектами, наподобие РПГ и экшн-игр? Ну, смотрите сами:

  • Hellpoint — 6 ГБ
  • Lords of the Fallen — 32 ГБ
  • Lies of P — 39 ГБ
  • Elden Ring — 46 ГБ (без DLC)
  • Pathfinder: Wrath of the Righteous — 50 ГБ
  • Counter-Strike 2 (базовый) — 85 ГБ
  • Black Myth: Wukong — 130 ГБ
  • Baldur’s Gate 3 — 150 ГБ
  • Грядущая GTA — более 150 ГБ

Как можно заметить, все более новые игры весят все больше и больше. Конечно, список не совсем справедливый, ведь Pathfinder и BG3 — сюжетные ролевые игры с видом «Око Бога» большую часть геймплея, Хелпоинт, Лорды и Элден — экшн с элементами РПГ, Ложь и Вуконг — коридорные экшн-соулслайки с еще меньшими элементами РПГ, КС — сессионный арена-мультиплеер с элементами сюжета, а ГТА — это ГТА (что эффективно тоже РПГ в открытом мире).

А я вам скажу, что список никогда не будет справедливым. Ведь помимо разницы в геймплейных «жанрах» и времени выхода, каждая из этих игр имеет свои системы упаковки файлов и свои внутренние форматы моделей. Так, без упаковки весь Elden Ring будет весить значительно больше, чем Baldur’s Gate 3. Почему так?

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

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 10
Честно говоря, его 8 тысяч полигонов в каждом втором меме и шортсе при попытке загуглить балдурские врата, меня немножко уже бесят. А в прическе их примерно столько же

В Elden Ring же, напротив, главному герою и ключевым персонажам уделено мало внимания (даже лица большинства из них не анимированы), однако в игре потрясающей красоты локации — давняя традиция подразделения, работавшего над легендарными Dark Souls. В обеих играх также большое разнообразие врагов, однако в ER вы их видите очень близко, порой даже слишком близко, буквально в подбрюшье, в отличие от BG3, где вы чаще всего в роли шахматиста или сокола над полем битвы.

Да и трехступенчатая упаковка файлов студии From Software дает о себе знать: архивы игры упакованы в большие BDT-пакеты, внутри них DCX-пакеты поменьше, внутри тех — BND-пакеты с моделями, текстурами и анимациями, а на последнем уровне еще и TPF-пакет с текстурами. Такая разбивка может показаться излишней, однако изолировав модели разных врагов друг от друга и разделив файлы поведения, текстурные варианты и анимации, разработчики решили вторую проблему оптимизации.

Освободить оперативную память


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

Узнали? Согласны? Тогда бегом в отпуск! На самом деле с вашим мозгом просто произошло то же, что регулярно происходит с работающим компьютером: у вас закончилась оперативная память.

Все запущенные на железе и камне процессы (неважно, у вас ПК, консоль, мобильник или серверная машина) выгружаются с основной, статической, памяти и загружаются в динамическую рабочую память — оперативную и видеопамять. И если какой-нибудь браузер занимает относительно мало места в оперативке, то рендеринг сцены и тем более игра могут занять до 100% возможного объема. И даже вылететь, потому что не помещаются в ней (привет, Старфилд до первого патча и попытки подружиться со Stable Diffusion).

С играми ситуация даже хуже: в оперативную память выгружается основной код игры, рабочие подсистемы игрового движка, скрипты для работы и ссылки на ассеты. В видеопамять тем временем по ссылкам загружаются визуальные части — UI (интерфейс), спрайты, модели, эффекты, сцены, и происходит рендеринг в режиме реального времени. Вспоминаем, что большая часть современных игр еще и упакованы в архивы, и добавляем к этому объем памяти, необходимый для распаковки. А теперь включаем RTX и Light Path tracing и получаем ̶с̶м̶э̶р̶т̶ загрузку видеопамяти вычислением миллиона лучей и отражений в кадре и за кадром.

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

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 11
Что здесь видит игрок? ГГ, босс, сцена для боссфайта. Что здесь видит геймдизайнер? Сплайн со спрайтом ГГ, Модульный сплайн с фрагментарным спрайтом босса, спрайт пола с коллизией для передвижения, спрайты среднего плана, спрайт постамента на фоне, спрайт с анимацией ризоматической сферы, спрайт дальнего плана, паралаксы. Все это «копеечного» веса, но тем не менее не безвесное

Как уже было сказано, модели с большим количеством полигонов и большие комплексные спрайты занимают место на диске. При рендеринге (во время создания сцены или во время игры) все ваши средние 10 МБ модели с мешем, текстурами и костями перемещаются (копируются) в оперативную и видеопамять.

А теперь смотрите: сцена из окна магазина Century: Age of Ashes. В динамическую память загружается интерфейс (текст, окна для текста, градиент, активные кнопки); фон с градиентом (картинка); модель дракона с текстурами (цвет, нормаль, ROM), мешем сбруи, костями и небольшой закольцованной idle-анимацией; шейдер отображения/чтения текстур на модели дракона и сбруи. А еще — невидимый нам источник света для отрисовки теней, блеска и рельефа чешуи.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 12
Легкая сцена: одна модель с текстурами, UI, свет, простой фон, эффект пыли (Century: Age of Ashes)

Усложняем задачу: небольшая локация мультиплеерной сессии. Тут у нас загружаются: интерфейс, 8 моделей драконов по 6 текстур и по 2-4 шейдера каждый, 8 моделей всадников по 5-8 материалов (голова, тело, ноги, плащ, оружие, волосы, лицо и т. д.), модели зданий, модели скал, скайбокс (модель неба), основной источник света (солнце), спрайтовые эффекты (дым, огонь, магические источники, потоки ветра), дополнительные источники света (от тех же спрайтов и свечение в пастях драконов), спрайтовые модели снарядов и спецспособностей, физика крыльев и хвостов для драконов, физика одежды всадников, физика столкновения на случай, если вы влетаете во вражеского дракона или в скалу.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 13 Все здания и скалы, кстати, модульные — в статичной памяти они хранятся в виде небольших кусков камней, скал, арочек, отдельных моделей крыш, секторов башен и т. д

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 14
Небольшая боевая локация в сессионной игре уже содержит несколько тысяч моделей, даже если скалы и замки кажутся цельными. Прибавьте к этому свет, физику, анимацию и постобработку в виде размытия в движении… (Century: Age of Ashes)

Уже много? Оооо, это еще мало, хорошие мои! Как вам сцена из Elden Ring? Проверьте себя: попробуйте оценить, сколько моделей и эффектов на этом кадре.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 15
Игры с открытым миром подразумевают единовременный рендеринг сотен тысяч объектов (Elden Ring: Shadow of the Erdtree

Начнем с того, что каждое дерево — это как минимум одна модель. Трава и мох — тоже модели. Пол и земля под ногами ГГ — кусочки моделей с разной текстурой. Вода, падающая с другой стороны моста, — тоже комплекс мешей.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 16
Зеленым отмечены модели деревьев, желтым — травы, голубым — воды.

Руины на среднем плане — комплекс отдельных объектов (арки, стены, коробки, барельефы). Руины на дальнем плане — еще один комплекс моделей (лестницы, арки, башни, барельефы, статуи). Камни на мосту, постаменты с огненными чашами — модели.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 17
Я отметила тут только наиболее крупные куски, из которых состоит локация. Черным отмечены камни, сизо-сиреневым -—руины Рауха, белым — руины Священной Башни

Минибосс вдали — комплексная модель с кучей эффектов свечения и пламени. Сожженные призраки на мосту — модели бедолаг с накинутым на них эффектом пепельной ауры. Туман под мостом — тоже эффект. И даже небо — это скайбокс со сменной текстурой и дополнительными сплайнами облаков.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 18
Минибосс не только выглядит грозно, но и добивает своей атакой до вашей стороны моста. Обратите внимание на стрелочки: они отмечают модели с эффектами

А теперь ГГ. В соулсах от мастеров From Software существует система модульного перекрытия моделей: каждый надетый на главного героя элемент облачения скрывает находящийся под ним участок кожи, волос и другого элемента облачения, исключая его из рендеринга.

Но даже так у нас есть…

  • Часть меша головы — нижняя часть лица и часть шеи
  • Капюшон Огненного рыцаря Мессмера — капюшон, полумаска
  • Доспех Чистой Гнили — 10 пластин наплечников, два меша кирасы, кольчуга под ней, куски ткани, аксессуары, воротник кирасы, рукава, налокотники, мицелий кордицепса (да, он так и называется в файлах, живите с тем, что Красная гниль — паразитический зомби-гриб)
  • Наручи Чистой Гнили — еще 20 мешей на каждой руке
  • Поножи Чистой Гнили — 6 кусков декоративной юбки, пояса, кольчуга, 8 пластин на ногах, пластины сапог, ремни
  • Щит с рукояткой и ремнем
  • Посох-катализатор с рукояткой и космической сферой

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 19
Здесь отмечены не все меши, входящие в состав модели ГГ. Но даже отмеченные дают представление о количестве элементов. А ведь каждый из них имеет минимум три текстурных канала: цвет, блеск/металличность, нормаль

Сложим это все вместе и получим колоссальную нагрузку на динамическую память. И это при том, что Elden Ring — относительно оптимизированная игра!

История голозадого воина

Беготня голышом немного упрощает работу устройству, на котором запущена игра. Конечно, обнаженное до панталон тело тоже состоит из кусочков мешей (глаза, ресницы, несколько «пластин» лица, два куска шеи, затылок, кисти, предплечья, плечи, торс, живот, таз, бедра, голени, стопы, исподнее нательное белье, веревка вместо пояса для оружия), однако за счет единой текстуры и отсутствия сложных настроек блеска нагружает оно значительно меньше. Волосы тоже состоят и бесчисленных плоскатиков-сплайнов для прядей с физикой, что, кстати, могло стать причиной вылета на ранних билдах DS3 и ER.

Забавно, что в соулсах внутри игры есть система веса снаряжения, и нагруженность героя тяжелой броней с плащиками, мехом и цепочками сильно влияет на мобильность.

Так вот. Однажды я почти отчаялась, сражаясь с боссом Маликет (кто знает, тот знает). На второй стадии этот босс меняет свою модель и обзаводится шикарными волосами, стильными доспехами, а также волшебным оружием. Он становится чертовски быстрым и своими атаками буквально заполняет сцену боя всевозможными эффектами, из-за чего моя тогдашняя видеокарта начинала подтормаживать, заставляя игру сильно лагать. А ведь, кроме самого старого волчары, на сцене еще есть барельеф с огоньками, разрушаемые колонны, дым, пыль, саму сцену окружает ураган с кружащими в нем драконами-вивернами и обломками летающего острова… Эпично!

Ессесно, пошла я туда в своем любимом сете Гнили со своей любимой гибридной техникой (магия и меч, и никак иначе!). Попытка за попыткой проваливались, а менять что-то в идеально работающем в других ситуациях билде не хотелось. В какой-то момент я психанула и повела своего персонажа на бой голышом. Вернее, в одних панталонах и шапке-полумесяце (для баффа под заклинания и устранения проблем с физикой волос).

И что бы вы думали? Победа в тот же заход! Вот, насколько может «зарешать» лишняя миллисекунда рендера в бою! Ну и скорость уклонения без доспеха тоже повысилась. Правда, любая атака могла стать последней. Но риск того стоил.

Теперь жалею, что не снимала. Хотя, качество записи было бы шакальным, и на скорость рендера и игру это бы тоже повлияло — все же программы записи абсолютно так же записываются в динамическую память.

Добавить удобства в работе


С оптимизированной моделью проще работать. Рендеринг даже рабочей области без текстур в окне редактирования любой 3D-программы также загружает динамическую (оперативную и видеокарточную) память. Если модель имеет тысячу полигонов, она считается легкой (хотя смотря какое устройство у того, кто с ней работает). Если у модели 8 млн полигонов (обычное дело для ZBrush), то каждое действие над моделью будет отнимать значительное количество ресурсов.

А теперь представьте, что вам надо сделать для этой модели на 8 млн полигонов UV-развертку. А потом сделать ей скелет для анимации. Те, кто уже начал постигать данные направления 3D-графики, скорее всего, уже начали мысленно плакать. Блендер-юзеры особенно: автоматическая развертка в Blender неадекватно работает на хай-поли моделях.

Про риггинг я вообще молчу: для Блендера норма делать фантомное влияние от кости на другом конце скелета и не запоминать перекраски влияния в ручном режиме, да и настройка автоматического влияния даже через энвилопы (капсулы влияния) заставит вас поседеть. Для человкеообразных моделей и автомобилей есть всякие ригифи тул и прочие плагины, но если ваша модель имеет нестандартный вид или вам требуется скелет для игрового движка… Что ж, мои соболезнования.

В любом случае риговать и разворачивать в проекцию удобнее лоуполи модель. Более того, ее будет еще и легче анимировать. Профессионалы студий Disney и Pixar не дадут соврать: большая часть моделей проходит запись и тестирование анимаций и физики на низкополигональных версиях. На них же расставляются управляющие маркеры. Но рендеринг финального куска мультика происходит с высокополигональной моделью.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 20
Низкополигональная версия поросенка из м/ф Моана 2. Как вы можете заметить, на краях модели виднеются углы полигонов, а текстура сверхнизкого разрешения. Крестики и цветные пятна — маркеры управления позой модели. Кстати, посмотрите их сайт, там много интересного. Особенно уделите внимание разделу «анимация толпы» (crowd animation) в контексте того, что вы прочитали выше: ссылка

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 21
Запомните: накинуть подразбиений на модель в конце работы гораздо проще, чем пытаться анимировать и развертывать хайполи! Есть частные случаи, но они исключение, а не правило

То же касается и текстур: многие 3D-движки (конечно, же, Blender, 3Ds Max, Maya 3D и прочие) поддерживают режим ограниченного рендеринга. Данный режим позволяет отключить часть текстур (например, нормали и спекуляры, оставив только цвет), отключить шейдерные настройки отображения и эффекты (мех, огонь, вода, снег), искусственно занизить разрешение назначенных текстур на период работы и т. д. Такой «экономичный» режим позволяет разгрузить память и ускоряет работу с отдельными моделями в составе сцены.

3D для каждого: Оптимизация модели. Часть 1, объяснительная - 22
Разные режимы отображения в Blender. Слева направо: Solid (только объекты без текстур и с самыми примитивными материалами, свет игнорируется), Material (отображаются упрощенные текстуры со слабо заметными нормалями, без прозрачности, источник света игнорируется), Rendered (отображаются все текстуры и нормали, учитывается источник и пути лучей света, тени, прозрачность, рассеяние и т. д.)

Сага Огня и Льда

Самые затратные для рендеринга что для рядового 3D-шника, что для игр, модели — это модели с эффектами льда и пламени. Пламя подразумевает много источников света, текстуры с эмиссией (свечением), анимированные спрайты языков огня и искр и много, очень много отражений этого огня. Лед требует полупрозрачных текстур и материалов с рассеиванием света, а также белый снег.

Напомню, что чисто белый цвет #FFFFFF далеко не все движки переваривают одинаково хорошо. Некоторые из них при рендере выдают черные пятна. Да, этим грешит порой даже Блендер на некоторых видеокартах. И та, и другая стихия для своего изображения требует не только мастерства художника, но и значительных вычислительных ресурсов. Вот почему снежные и магмовые локации в играх — настоящее испытание не только воли игрока, но и прочности его железа.

И да, это отсылка не на Игру Престолов, а на серию игрушек драконов и мультик по ним. Ставь +, если тоже их помнишь.

Промежуточный итог


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

Всего хорошего и не болейте!


НЛО прилетело и оставило здесь промокод для читателей нашего блога:
15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS

Автор: phanerostroi_evidence

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js