Сообщество - CGI Media

CGI Media

3 105 постов 6 552 подписчика

Популярные теги в сообществе:

Как вами манипулируют survival-игры

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


Мы разобрались, как устроены увлекательные «выживалки», и какие тут есть секреты. А помогли нам в этом разработчики отечественных проектов — Breathedge, Frozen Flame и Population Zero. Видеоверсия недавней статьи.

188

Как создают отражения в играх — от Duke Nukem 3D до рейтрейсинга

Замечали, как часто в играх встречаются разбитые зеркала? Или слишком грязные и поцарапанные — настолько, что в них не видно отражения. Разработчики не любят делать зеркала целыми и чистыми — для этого требуется слишком много работы.


Когда авторы всё же решаются добавить в игру отражения, они не ставят перед собой цель воссоздать саму физику зеркальной поверхности. Все силы тратятся на то, чтобы повторить сам эффект. В этом материале мы разберёмся, какие тут есть хитрости.


Автор: Юрий Кулагин

Зеркало в Death Stranding


Комнаты-двойники


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


В 1996-м году зеркала с отражением появились в Duke Nukem 3D. Для каждого зеркала в игре создавалась дополнительная комната, отражённая по горизонтали со всеми деталями и обстановкой. Когда игрок приближался к зеркалу, в эту отражённую комнату добавлялся персонаж, дублирующий движения игрока. А само зеркало, соответственно, работало как окно между двумя комнатами.

Источник


Эффект получился красивым и располагал к творческим экспериментам. Например, во второй части Crash Bandicoot отражения на льду тоже были зеркальными комнатами, только отражёнными уже по вертикали. Причём “двойников” получили не только окружение и главный герой, но и находящиеся на льду предметы. Подобных секций на уровнях было немного — разработчики по возможности избегали лишней нагрузки.

Источник


A разработчики Doom 3 воспользовались желанием игрока полюбоваться на своё отражение. В одном из туалетов в игре зеркало запускает специально заготовленный скример, если на несколько секунд засмотреться на модель персонажа.

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


Во времена Duke Nukem 3D это не было большой проблемой. Интерьеры тогда оформлялись довольно просто: никаких сложных теней, в роли мебели — комбинации кубов и спрайтов. Движку игры всё равно приходилось поднапрячься, но в масштабах целого уровня нагрузка возрастала не сильно. Но со временем подход к зеркалам пришлось поменять.

Источник


Отдельный рендер


В современных играх “зеркальные комнаты” почти полностью вытеснила более “честная”, хотя и столь же ресурсозатратная технология — planar reflections. Это отражения, которые создаются с помощью дополнительного рендера всей сцены. На этапе создания уровня левел-дизайнеры делают только одну комнату, после чего в поверхность, которая станет зеркалом, встраивается виртуальная камера. Она включается, когда попадает в поле зрения игрока, и заново рендерит комнату.


Подход двух технологий схож — движку нужно либо отрендерить две комнаты, либо одну, но с двух разных ракурсов. На производительности это всё равно сказывается не лучшим образом: локации, сделанные по современным стандартам, содержат множество мелких деталей, эффектов, шейдеров и движущихся объектов. Они сами по себе могут легко загрузить игровой движок, тем более — если их нужно отрендерить дважды.

Источник


Рендер с позиции зеркала можно сделать в пониженном разрешении, особенно для небольших зеркал в играх с видом от третьего лица. В них нельзя придвинуть основную (игровую) камеру вплотную к зеркалу, поэтому разницу в чёткости трудно заметить.


Поэтому повсеместно такие отражения использовать нельзя. Как правило, они встречаются либо в относительно компактных и небогатых на детали помещениях, как туалеты в новом Hitman, либо настолько тёмных, что в тенях скрывается большая часть деталей — как сцены с допросами из Tom Clancy’s Splinter Cell: Conviction.

Источник


Зеркальные кубики

В 1999 году Nvidia представила прорывную по тем временам видеокарту GeForce 256. Одной из её главных особенностей была поддержка cube maps — кубических карт отражений. Для создания кубической карты из центра локации захватываются шесть плоских изображений, которые ужимаются и наносится на плоскости невидимого для игрока куба, после чего его грани сглаживаются — получается панорамный шар, затекстуренный изнутри.


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

Источник


На таких поверхностях cube maps выглядят неплохо, несмотря на низкое разрешение. Такие отражения довольно просты в производстве и не сильно нагружают систему, ведь самый трудоёмкий процесс (рендер самого куба) производится ещё на этапе разработки, чтобы сама игра потом просто подгружала затекстуренную панораму.


Ранние варианты технологии с трудом подстраивались под движения игрока. Например, если он отходил на несколько шагов от центра комнаты, то отражения смещались неравномерно. Со временем эта проблема была решена с помощью parallax corrected cube maps, которые сейчас уже почти полностью вытеснили классические “кубики”. Главное отличие параллаксов — умение растягиваться и подстраивать изображение под камеру игрока.

Источник


Cube maps используют заранее запечённые отражения, поэтому движущихся объекты в них не отражаются. На любое масштабное изменение локации — взрыв в комнате, рухнувшая стена здания, смена дня на ночь -нужно заранее заготовить отдельный куб.


Если не дополнять “кубики” другими технологиями отражения, то персонажи в игре будто превращаются в вампиров: весь мир вокруг них отражается, а сами они — нет. Генерирующиеся в реальном времени cube maps существуют, но пока что почти не используется — на создание панорамной текстуры, которая должна постоянно обновляться, уходит слишком много ресурсов.

Источник


Из-за ограничений технологии разработчикам приходится идти на хитрости. Например, в Spider-Man 2018-го года применяются кубы отражений, которые подгружаются слоями. На некоторые здания в игре назначены несколько кубических отражений, запечённых на разной высоте. Пока Человек-Паук карабкается вверх по очередному небоскрёбу, карты отражений плавно меняются от нижних этажей в низком же разрешении до более чётких кадров.


Cube maps активно используются в играх, когда нужно создать “фоновое” отражение на размытой поверхности. На создание в таких ситуациях “честных” отражений для большой локации современные движки не рассчитаны. Проще заранее нарисовать и отрендерить кубы с текстурами, а затем правильно их расставить.

Источник


SSR


В 2011 году Crytek наряду добавила в Crysis 2 шейдер, который получал отражения при помощи трассировки лучей только к видимым на экране объектам, используя информацию с предыдущих стадий рендеринга. Эта технология получила название screen space reflections (или просто SSR), и сейчас используется повсеместно.


SSR — ресурсозатратный процесс, но нагрузка на движок получается ниже, чем от дополнительного рендера.

Для отражения SSR использует только те ресурсы, которые видит сам игрок. Если какой-то объект хотя бы частично остаётся за кадром, то и его отражение в воде или в витрине не будет прорисовываться до конца. Такие ограничения разработчики маскируют, замыливая отражающую поверхность или растягивая края текстуры.


SSR часто применяют в комбинации с другими методами отражения. Например, в том же Spider-Man от Insomniac Games стеклянные фасады небоскрёбов чередуют SSR с кубическими отражениями. Первые используются в важных для сюжета местах и улицах с плотным трафиком — в отличие от cube maps, SSR может убедительно показать отражения пешеходов и автомобилей, хотя и искажает перспективу.

Источник


В боевых сценах Spider-Man SSR накладывается прямо на кубическое отражение. Относительно небольшие (если сравнивать с панорамами виртуального Нью-Йорка) помещения позволяют увеличить нагрузку на систему, поэтому cube map отвечает за статичную часть отображения (стены, потолок, мебель), а SSR — за подвижную (противники и главный герой).


В Hitman три типа отражений совмещаются и в пределах одной локации — особенно в Hitman 2, для которой разработчики обновили графический движок. Зеркала в небольших комнатах используют дополнительный рендер, а многие прозрачные объекты (стеклянные перегородки, окна) — SSR. А в отдельных местах разработчики размещают простые кубические отражения, чтобы хоть как-то снизить нагрузку на систему.

Источник


Как трассировка лучей работает с отражениями


Трассировка лучей меняет весь подход к созданию отражений в видеоиграх. Если прежде все технологии пытались имитировать только эффект зеркал, то рейтрейсинг воспроизводит источники света создаёт более точные отражения. О щадящих нагрузках на систему здесь речь уже не идёт — отражения с трассировкой предназначены для мощных ПК и консолей следующего поколения.


Трассировка лучей — это тоже имитация. Но имитирует она не только эффект отражений, но и то, как они образуются. В этом смысле рейтрейсинг проигрывает родственной технологии — трассировке пути (path tracing). Последняя полностью имитирует движения лучей в сцене, тогда как рейтрейсинг ограничивает их количество.


Обе технологии уже давно используются в рендере сцен для фильмов и мультипликации. Для работы со светом в реальном времени они не подходили из-за огромной нагрузки на систему. Из-за предельно точной симуляции лучей трассировка пути всё ещё не может применяться в играх, но рейтрейсинг, пусть и с некоторыми упрощениями, разработчики всё же смогли адаптировать под использование в реальном времени.

Источник


Трассировка лучей позволяет по-разному формировать отражения для разных типов поверхности. Например, прозрачные отражения (RT transparency reflections). применяют для любых стеклянных поверхностей в игре: зеркальный эффект добавляется на окна, перегородки и даже чайники.


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


RT opaque reflections — это отражения, которые по применению и внешнему виду похожи на SSR. На любых поверхностях, обладающих хотя бы минимальными зеркальными свойствами, появляются контуры отражаемых объектов. Или даже не контуры, а сами объекты, — только слегка смазанные. Opaque reflections хорошо работает с разными типами материалов и по-разному отражается на мутной, но отполированной плитке, и на луже крови.

Источник


Как и SSR, opaque reflections меняются в зависимости от угла обзора игрока и от его местоположения. Но при этом они ещё и показывают объекты, находящиеся за пределами кадра. Результат напоминает planar reflections, но с одним большим отличием: в этом случае используется не текстура — пускай и очень качественная, — а симуляция лучей.


Это важно потому, что текстуры, работающие по технологиям SSR и, тем более, planar reflections, нельзя размещать слишком тесно. Они могут не только излишне нагрузить систему, но и конфликтовать друг с другом. А отражения в рейтрейсинге, наоборот, дополняют друга друга и ни с чем не конфликтуют.

Источник


Отражения, полученные с помощью трассировки лучей, не только красивы, — они ещё и “склеивают” воедино любой уровень. Если в сцене есть десять предметов, и половина из них может создавать отражения, то рейтрейсинг распределяет эти отражения на все пять предметов. Ни SSR, ни cube maps такого не умеют.


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

Источник


----------


Отражения, полученные трассировкой лучей, не сразу заменят уже устоявшиеся в игровой индустрии технологии. Рейтрейсинг неплохо уживается и с SSR, и с кубическими “зеркалами” в одном кадре. Например, в Battlefield V трассировка лучей умеет плавно меняться на screen space reflections на небольшом удалении от игрока. А в World of Tanks рейтрейсинг обрабатывает только танки на ходу, а остальное окружение и взорванные машины обходятся более простыми технологиями.


Главный технический вопрос в этом случае — поиск правильного баланса между честными отражениями и их симуляцией. И Unreal Engine, и Unity умеют работать с рейтрейсингом и полностью открыты для экспериментов, поэтому у разработчиков есть удобные площадки для изучения технологии. Вероятно, рейтрейсинг будет становиться всё более популярным по мере того, как будет дешеветь поддерживающее его “железо”.

Источник

Показать полностью 20 1
5

Кратко про дизайн Tony Hawk's Pro Skater

Activision анонсировала Tony Hawk's Pro Skater 1+2 — ремейк первых двух игр серии.


Алексей Луцай поиграл в Pro Skater 2, чтобы освежить воспоминания, и рассказывает о минималистичных механиках игры, а также о том, чему современным разработчикам стоит у неё поучиться. Видеоверсия недавней статьи для наглядности.

14

Запечка (bake) стилизованного персонажа ч. 3

Итак, этап запечки завершён! Мы разбили модель на группы запечки, создали все необходимые карты и убрали артефакт на нормале.


Если ты читал прошлую статью про запечку, написанную Игорем Дятловым, ты мог заметить, что на самом деле, этот этап гораздо сложнее. Отсюда вытекает логичный вопрос:


Почему так просто?

Почему запечка прошла так легко и без проблем?


Давай разбираться.


Пайплайн — это системная работа.

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


Мы учитывали особенности алгоритмов запечки на всех этапах, начиная со скульпта.


Вот некоторые из моментов, которые всегда нужно учитывать.


1. Правильная поза у персонажа

У персонажа руки раздвинуты немного в сторону.

Поэтому геометрия не слипается.

Правильная поза для стилизованного персонажа


Если, например, бицепс, будет пересекается с телом — в таком месте могут появиться артефакты. Вот пример, как не надо делать:

Пример неправильной позы у стилизованного персонажа


2. Правильная и простая группировка объектов

Все объекты в каждой группе запечки находятся на расстоянии друг от друга, поэтому их Cage не пересекается.


Это делается легко и просто, зато позволяет избежать большей части артефактов во время запечки.

Вот пример того, как делать не надо. Здесь Cage (зона поиска зелёного цвета) у двух разных объектов пересекается:

Пример с ошибкой, которую часто допускают новички


3. Чистый ретоп

Мы использовали функцию с «магнитиком», и поэтому, когда мы создавали лоуполи модель, все вертексы полностью прилегали к хайполи.


Именно поэтому хайполи и лоуполи почти идеально совпадают, а артефакты не появляются.


Вот пример плохого совпадения лоуполи и хайполи:

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


4. На этапе UV

Была создана ровная, без сильных потяжек, развёртка, с равномерным текселем на всех шеллах.

Все шеллы оптимально упакованы в квадрат без лишних пустот.

5. Продуманная модель

Ещё на этапе хайполи (скульпта) мы добавили фаски, которые позволяют избежать острых углов на модели.


Такие места, как правило, плохо запекаются и требуют дополнительных манипуляций с лоуполи моделью.

6. Прижатая геометрия

На модели, где это возможно, прижаты элементы одежды. За счёт этого мы избегаем ненужных пустот, с которыми сложно работать на этапе ретопологии.


Более того, такие места часто создают ненужные артефакты во время запекания.

Показать полностью 10
16

Запечка (bake) стилизованного персонажа ч. 2

Карта Ambient Occlusion (AO)

Это карта затенения. Она показывает самые глубокие тени в объекте. В основном это тени в углублениях и на пересечениях.

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

Даже когда объект ярко освещён, на нём всё равно есть тени. Именно их передаёт эта карта.

Curvature

Содержит информацию о глубинах и высотах.

Чёрный цвет показывает самые глубокие и плоские места, светлый цвет — острые и максимально выпуклые.

На самом деле, есть ещё две отдельных карты: Convexity и Concavity. Карта Convexity передаёт только информацию о высотах, а карта Concavity — только о глубинах. Если эти две карты объединить, то получится карта Curvature.


Но я люблю запекать сразу 3 карты: Curvature, Concavity и Convexity. Так проще работать во время текстурирования. В то же время, многие трёхмерщики запекают только карту Curvature, и этого зачастую вполне достаточно.


Convexity (необязательная карта)

Это карта выпуклостей. Помогает класть затертости и царапины на границах форм. Эту карту можно вытащить из АО и Curvature, но иногда удобнее запечь ее отдельно.

Concavity (необязательная карта)

Содержит информацию только об углублениях. Помогает накладывать грязь и пыль в тонкие места. Эту карту тоже можно сгенерить с помощью АО, но её тоже бывает полезно запечь отдельно.

Vertex Color (Color ID)

Эта карта сохраняет маски по материалам, что позволяет быстро, в один клик, выбрать один конкретный материал при текстурировании.


У нашего персонажа есть рога, броня, ткань, болты и кожа. Всё это разные материалы, которые очень легко выбирать с помощью Color ID.

С картами разобрались.


--------


Этап запечки почти закончен.

Добавляем карту нормалей к лоуполи и сразу видим результат:

Лоуполи + Normal Map


Финальный этап — проверить карты на ошибки.


Проверять на артефакты нужно прежде всего Normal Map. А небольшие артефакты на других картах можно легко исправить во время текстурирования.


--------


Проверяем запечку на артефакты

О нет, у нас артефакт на нормале! На модели появились небольшие странные полоски.

Артефакты появляются по целому ряду причин.


Это нормально, просто артефакт нужно убрать. Для этого попробуем самые частые методы исправления артефактов:


1. Геометрия лоуполи и хайполи не совпадает

Нужно исправить геометрию — немного подвинем вертексы, чтобы они лучше совпадали:

Затем грузим этот изменённый кусок обратно в Мармосет, запекаем заново, меняем Cage.


Стало лучше, но, к сожалению, до конца не помогло. Значит, идём дальше.


2. Геометрия на лоуполи пересекается

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


Проверяем. В нашем случае этот кусок лежит далеко от других элементов.

Поэтому идём дальше.


3. Замазываем артефакт в фотошопе

Это самый кардинальный метод, который часто помогает. Нужно открыть запечённый Normal Map и замазать артефакт вручную.


Проблема в том, что на карте нужный кусок не так-то просто найти. Поэтому запечём одну дополнительную карту: Wireframe.


Эта карта поможет легко найти расположение любого элемента на UV.

А благодаря этому мы легко найдём его же на Normal Map и сможем замазать артефакт.

Так выглядит эта карта:

Запечённая карта WireFrame


Ищем нужное нам место на UV.


Искать, конечно, нужно внутри первого квадрата UV. Просто выделяем нужный объект на модели, и его расположение на UV подсветится.

А затем открываем карту с нормалом, увеличиваем и сразу видим наш артефакт:

Просто замазываем его:

Отлично! Теперь никто не узнает, что на нормале был артефакт:

4. Альтернативный метод исправления артефактов

На сложных элементах не всегда получается аккуратно замазать артефакты.

В таких случаях лучше всего перезапечь эту деталь отдельно, а затем обработать эту часть карты в фотошопе.

Показать полностью 17
110

Знакомтесь, Blender

Думаю многие слышали про Blender, для тех кто не знает - весьма продвинутая программа для 3D графики с открытым исходным кодом, бесплатная от слова совсем. К сожалению, продвинутость, ориентированность на профессионалов имеет обратную сторону, Blender довольно сложен в освоении, особенно поначалу. Поставил себе несколько месяцев назад, но до сих пор помню, как меня бомбило, что, например,выделение всех объектов не Ctrl-A, а просто A. Весь интерфейс не стандартный (для Windows), важная вещь может прятаться за маленькой иконкой или быть доступна только по горячей клавише, всякую мелочь приходится гуглить. Я конечно, понимаю, что для тех, кто постоянно работает с 3D, там, наверное, все удобно и логично, но...

Понятно, что быстро изучить Blender не получится. Тем не менее хочется отдать должное этой программе, в свое время мне здорово помогла. И, кажется, нашел простой способ сделать рендер интерьера ванной. Можно сразу получить приемлемый результат и дальше его улучшать, погружаясь в детали - мой любимый способ изучать новое. Пришлось немного заморочиться, сделал экспорт 3D сцены со всеми объектами, текстурами, светом, камерой. Достаточно импортировать готовую сцену, поменять всего пару настроек (к сожалению без этого никак) и можно рендерить.

Ниже подробная инструкция, что нужно настроить после импорта, всего 3 опции.

Показать полностью 8
Отличная работа, все прочитано!