Блог: реалистичный рендер колёс поезда метро

Советы от компании-разработчика симулятора машиниста.

Компания FoxWorks Aerospace, разрабатывающая игру Subtransit, поделилась опытом рендеринга колёс для поезда метрополитена. Заметка была опубликована в пользовательском разделе DTF и отредактирована.

Колёсная пара
Колёсная пара

Мы, FoxWorks Aerospace, создаём тренажёр/симулятор поездов постсоветских метрополитенов. Хотя мы и инженерная компания, в этом проекте применяются подходы из разработки компьютерных игр. Для графики используется движок Unreal Engine 4. При этом собственный физический движок взаимодействия колёс поезда с рельсами совмещается со встроенным в UE4 физическим движком PhysX.

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

При самом высоком уровне детализации колёса поезда используют сложные многослойные материалы и дополнительные многослойные переходы с декалями мешей (mesh decals), хотя текстуры, вероятно, всё же главная часть.

Вид колёсной пары сбоку
Вид колёсной пары сбоку

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

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

3D-модель колёсной пары с отдельными элементами
3D-модель колёсной пары с отдельными элементами

Большая часть колеса отрисовывается единым общим базовым материалом, который используется почти для всех объектов. Грунтовочная краска накладывается на колесо с дополнительными слоями потёртостей и грязи, которые смешиваются на основе кривизны и информации про самозатенение модели. Это смешивание происходит в самом шейдере для того, чтобы обеспечить максимальную плотность пикселей текстуры (которая повторяется).

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

Использование разных материалов для отрисовки колёсной пары
Использование разных материалов для отрисовки колёсной пары

В данный момент для рендера колеса используются три UV-карты (но в будущем одну из этих карт можно исключить):

1. Общая UV-карта для чтения карт кривизны/самозатенения, а также для расположения текстуры декали правильным образом, чтобы создать переход между двумя материалами.

2. UV-карта для чтения карты затенения/цветности, также задающая расположение белого слоя краски поверх обычной грунтовки.

3. Дополнительная UV-карта для поверхности качения колеса. Эта развёртка используется для самой текстуры поверхности качения.

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

Переход между двумя сложными материалами посредством mesh-декали
Переход между двумя сложными материалами посредством mesh-декали

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

Текстуры и карты для поверхности качения
Текстуры и карты для поверхности качения

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

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

Маска ржавчины для декали перехода
Маска ржавчины для декали перехода

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

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

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

Кстати говоря, прототипом этого симулятора было дополнение Metrostroi для Garry’s Mod. В нём детально воссозданы системы для вагонов типа «Е» и «81-717».

Metrostroi
Metrostroi
88
6 комментариев

Очень...эээ... познавательно.

2
Ответить

а почему эээ? Просто познавательно да

Ответить

о, Black Phoenix, привет

1
Ответить

Я ему передам, мы ведем блог вместе :)

Ответить

Метросим все же существует!

Ответить

Наверно дорого в Стиме будет стоить...

Ответить