Москва

ruru

Вверх

Как работают отражения в играх
583
05.01.2025
Как работают отражения в играх
Как часто вы любуетесь отражением своего персонажа в компьютерной игре? Рассказываем о технологиях работы отражений в играх – от истоков до современности.
05
янв
05.01.2025

Как работают отражения в играх

.

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

История отражений

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

Первые отражения появились еще в 2D-играх 90-х годов, таких как Crach Bandicoot или Doom. В большинстве случаев их приходилось выстраивать вручную, деля копию игровой сцены, отзеркалив ее.



Отражение персонажа на зеркальной поверхности в игре Crach Bandicoot.


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

Планарные отражения

Планарные отражения (Planar Reflections) – самый простой и самый распространенный метод реализации отражений, появившийся еще при зарождении 3D в 1990-х годах. Планарные отражения работают только с плоскими отражающими поверхностями и хорошо подходят для отражений в зеркалах, лужах и т.д.



В игре Hitman 2016 с зеркалами связана интересная механика – люди, стоящие перед зеркалом, могут видеть персонажа, приближающегося к ним сзади.


Принцип работы метода

Сцена, которую видит игрок, отрисовывается с разных ракурсов, а затем зеркально добавляется на поверхность, которая должна быть отражателем, относительно угла камеры игрока. Детально процесс можно описать так:

  1. Сначала определяется плоскость, которая служит отражающей поверхностью. Это может быть зеркало, окно здания, вода и т.п.
  2. Компьютер делает “копию” всего, что находится перед зеркалом. Но эта копия "перевёрнута" как в настоящем зеркале.
  3. Компьютер отрисовывает эту перевёрнутую копию на отражающей поверхности, как будто камера находится за ней.

Грубо говоря, компьютер рисует мир дважды: один раз как обычно, и второй раз – "перевёрнутый", как будто виден в зеркале. Затем он смешивает эти два изображения, чтобы показать отражение на заданной плоскости.



Схема работы планарных отражений


Преимущества

  1. Планарные отражения относительно легко запрограммировать. Это означает, что разработчикам игр проще их использовать, и они используют меньше памяти и ресурсов компьютера для работы.
  2. Разработчики точно знают, как будет выглядеть отражение, поэтому легко предсказать и контролировать результат.

Недостатки и ограничения

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

Почему используется

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

Если вы знакомы с движком Unity, вы можете попробовать сделать планарные отражения для какой-нибудь своей игровой сцены – видеоурок.


А если вы или ваши дети только хотите начать свой путь в разработке видеоигр, то обратите внимание на наш курс по созданию игр в Unity 3D. Выпускники курса получают богатый опыт программирования и создания игр на популярном игровом движке.

Кубические карты

Кубическая карта (Cubemap) — это тип текстуры, представляющий собой набор из шести квадратных изображений, расположенных на гранях куба, окружающего определенную точку в 3D-пространстве. Проще говоря, это текстура, состоящая из “фотографий”, сделанных разработчиками из определенной точки локации в шести направлениях. Такая карта в зависимости от назначения может использоваться игрой не только для создания отражений, но и освещения или теней.

Впервые использоваться разработчиками этот подход стал в середине 2000-х годов в таких движках как CryEngine и Unreal Engine 3.



Пример текстуры кубической карты


Принцип работы метода

Такая текстура служит для компьютера справочником при генерации отражений. Процесс можно описать так:

  1. Когда движок игры рисует пиксель на отражающей поверхности (например, на поверхности автомобиля), он вычисляет вектор отражения. Этот вектор указывает направление, в котором должен “смотреть” воображаемый луч света, чтобы увидеть отражение.
  2. Этот вектор отражения преобразуется в координаты на одной из шести граней кубической карты: вектор определяет, на какую грань куба “смотрит” отраженный луч, и где именно на этой грани находится “точка зрения”.
  3. Используя полученные координаты, движок считывает цвет пикселя из соответствующей грани кубической карты и отрисовывает его на отражающей поверхности.

Преимущества

  1. Высокая производительность: Поскольку отражения предварительно вычислены, использование кубических карт значительно ускоряет процесс рендеринга. Не нужно вычислять отражение в реальном времени для каждого пикселя.
  2. Хорошее качество: Обеспечивают достаточно реалистичные отражения для статических сцен.

Недостатки и ограничения

  1. Кубические карты не учитывают динамические объекты. Если объекты движутся после генерации карты, отражения будут неточными или искаженными.
  2. Разрешение кубической карты ограничено, что может приводить к низкому качеству отражений на больших расстояниях или при высоком уровне детализации.



Зеркало в Mafia 3, реализованное с помощью кубических карт, искажает отражение движущегося персонажа.


Почему используется

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

Трассировка лучей

Трассировка лучей (Ray Tracing) – самая новая и самая сложная технология для реализации отражений (и не только) в видеоиграх. Этот метод рендеринга с высокой точностью имитирует поведение света в реальном мире. Получил свое распространение в 2019 году с выходом видеокарт NVIDIA серии RTX, способных работать с этой технологией.



Отражения на полу в игре Control, реализованные с помощью трассировки лучей.


Принцип работы метода

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

  1. Для каждого пикселя на экране генерируется луч света, направленный от камеры через пиксель в сцену.
  2. Движок проверяет, пересекается ли этот луч с какими-либо объектами в сцене. Если пересечение найдено, определяется точка пересечения и свойства материала объекта (цвет, отражающая способность, прозрачность и т.д.).
  3. В зависимости от свойств материала, происходит изменение в поведении луча. В нашем случае, при попадании на отражающую поверхность, луч отражается – генерируется новый луч, отраженный от поверхности, и процесс продолжается.
  4. Цвета от всех лучей, попадающих в пиксель, комбинируются, чтобы определить окончательный цвет пикселя на поверхности.



Схематический пример работы трассировки лучей. Источник.


Преимущества

  1. Трассировка лучей обеспечивает высочайший уровень реализма в отображении света, теней, отражений и преломлений. Результат намного более точный, чем в других методах.
  2. Создает очень реалистичные отражения и преломления света, учитывая свойства материалов.
  3. Метод точно моделирует физическое поведение света при попадании на различные поверхности, в то время как другие методы просто создают иллюзию этого.

Недостатки и ограничения

  1. Вычисление пути каждого луча требует значительных вычислительных ресурсов. Это может привести к низкой производительности при использовании трассировки лучей.
  2. Технология трассировки лучей доступна только на видеокартах NVIDIA, начиная с 20-й серии, и на видеокартах AMD с серии RX 6000.

Почему используется

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

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

Почитайте нас еще!
06.05.2025
Не только программирование: как помочь ребенку найти себя в мире технологий
Рассказываем, почему не каждому ребенку нужно учиться программировать, и какие еще возможности открывает мир технологий. Опыт преподавателей CODDY.
30.04.2025
Когда твой опыт говорит на другом языке: как мы находим лучших преподавателей для CODDY
Рассказываем, как в CODDY мы нашли подход к поиску талантливых преподавателей среди людей с нестандартным опытом. Реальные истории успешных переходов в EdTech.
29.04.2025
15 умных шуток о программировании, которые поймут даже дети
Собрали забавные шутки и мемы о программировании, которые помогут детям полюбить код. Разбираем сложные концепты через юмор.
24.04.2025
EdTech в CODDY: какие образовательные технологии мы используем
Невозможно обучать детей IT-технологиям без использования этих самых технологий. Рассказываем, какие инновационные методики мы применяем.
Комментарии
Комментариев нет
Оставьте свой комментарий
Ваш комментарий принят и появится после прохождения модерации!
Исчерпан лимит на отправку комментариев
Площадки
Бонусы от друзей !
Подпишитесь на новости и получите бонусы от наших партнеров

Спасибо!
Заявка успешно отправлена!
Возникла ошибка. Сообщите, пожалуйста, администратору.
Вы отправили много заявок. Попробуйте позже
Ваше имя и фамилия *
Обязательно
Имя ребенка*
Обязательно
Возраст ребенка*
лет
Обязательно
E-mail*
Введен не верный e-mail
Ваш город
Обязательно
Запишите ребенка
на бесплатный урок!
Спасибо!
Заявка успешно отправлена!
Возникла ошибка. Сообщите, пожалуйста, администратору.
Вы отправили много заявок. Попробуйте позже
Обязательно
Введен не верный e-mail
+7
Обязательно
Промокод не применен
Промокод применен
Пробное занятие
Спасибо!
Заявка успешно отправлена!
Возникла ошибка. Сообщите, пожалуйста, администратору.
Вы отправили много заявок. Попробуйте позже
Ваше имя и фамилия
Обязательно
Ваш e-mail
Введен не верный e-mail
Ваш телефон
+7
Обязательно
Промокод
Промокод не применен
Промокод применен
Связаться с нами
Спасибо!
Заявка успешно отправлена!
Возникла ошибка. Сообщите, пожалуйста, администратору.
Вы отправили много заявок. Попробуйте позже
Обнаружены недопустимые символы в сообщении. Уберите все лишнее, оставьте только текст.
Ваше имя и фамилия
Обязательно
Ваш город
Обязательно
Ваш e-mail
Введен не верный e-mail
Сообщение
Обязательно
Предварительная запись
Спасибо!
Заявка успешно отправлена!
Возникла ошибка. Сообщите, пожалуйста, администратору.
Вы отправили много заявок. Попробуйте позже
Ваше имя и фамилия
Обязательно
Имя ребенка
Обязательно
Ваш город
Обязательно
Ваш телефон
Обязательно
Ваш e-mail
Введен не верный e-mail
Начало обучения
Июнь 2025
Июль 2025
Август 2025
Заказать звонок
Администратор свяжется с
вами в ближайшее время.
Что-то пошло не так, попробуйте отправить заявку позже.
Вы отправили много заявок. Попробуйте позже
Ваше имя и фамилия
Обязательно
Ваш телефон
+7
Обязательно
Оставить заявку
Администратор свяжется с
вами в ближайшее время.
Что-то пошло не так, попробуйте отправить заявку позже.
Вы отправили много заявок. Попробуйте позже
Ваше имя и фамилия
Обязательно
Ваш телефон
Обязательно
Оплатить курсы
Заявка подана, менеджер свяжется с вами в ближайшее время!
Получите бонус от наших партнеров.
Возникла ошибка. Сообщите, пожалуйста, администратору.
Вы отправили много заявок. Попробуйте позже
Имя и фамилия ребенка
Обязательно
Ваш телефон
Обязательно
Ваш e-mail
Введен не верный e-mail
Сумма для оплаты
Введите целое число
Оставить отзыв
Благодарим вас за отзыв.
Что-то пошло не так, попробуйте отправить заявку позже.
Вы отправили много заявок. Попробуйте позже
Ваше имя и фамилия
Обязательно
Ваш e-mail
Введен не верный e-mail
Ваше фото
Оцените школу
Оцените преподавателя
Отзыв
Обязательно
Спасибо!
Заявка успешно отправлена!
Close
По записи и другим вопросам звоните по номеру телефона +7 (495) 106-60-11 или пишите на email info@coddyschool.com
Close
Close
Выберите языкChoose a languageТілді таңдаңызВиберіть мовуSélectionnez la langueSprache wählen
Choose a language
RU
EN
KZ
UA
FR
DE
OK
Предварительный просмотр
Заберите индивидуальный план развития ребенка
Заберите индивидуальный
план развития ребенка