Когда речь заходит о симуляторах, любой человек в первую очередь думает об играх в этом жанре. Они делятся на аркадные: NFS, War Thunder, Snowrunner, где игроку просто весело, и хардкорные, которые стремятся воспроизвести механику управления для полного погружения. 

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

Профессиональные симуляторы делятся на три категории:

  • процедурные;

  • комплексные;

  • тактические.

Процедурные симуляторы

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

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

Комплексные симуляторы

Комплексные симуляторы представляют собой симбиоз виртуального и физического миров: они полностью повторяют органы управления всей системы, имитируя кабину или рубку управления, обладают подвижностью и дают максимально допустимую перегрузку в 2–3g для полной достоверности происходящего. Обучающийся получает навыки не только управления, но и всех азов, начиная с захода в кабину.

Тактические симуляторы

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

Например, крупнейшая катастрофа в истории авиации произошла из‑за несогласованности действий диспетчеров, что стало причиной гибели более чем 500 человек. Именно поэтому обучение персонала в контролируемых условиях так важно — на кону всегда стоят сотни жизней.

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

Как же устроены авиасимуляторы?

Архитектура симулятора

Стандартный симулятор представляет собой локальную сеть, состоящую из нескольких компьютеров, каждый из которых выполняет какую‑то одну функцию:

  1. графический движок для имитации закабинной обстановки;

  2. физический движок для моделирования движения и физических взаимодействий с окружающей средой;

  3. интерфейс инструктора для управления и настройки симулятора;

  1. модули для подключения внешних устройств: джойстиков, рулей управления, подвижных платформ и т.д;

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

Как это выглядит в UNIGINE

Компоненты симулятора обращаются к плагину IG, разработкой которого мы занимаемся в UNIGINE. IG — Image Generator — сервер, отвечающий за визуализацию закабинной обстановки. Простым языком, он «рисует» все то, что происходит в симуляторе, получая от других серверов команды и наборы сущностей, их состояний и позиций.

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

Пример типичной команды хостов: «Boeing-737 летит по полосе 32 с такими‑то координатами, у него убраны шасси, закрылки выпущены на 15 градусов, возгорание второго двигателя.» Восприняв эту информацию, IG должен создать корректную визуализацию.

Если убраны шасси и высота над полосой состаляет 0 м, значит, самолет уже едет на брюхе и за ним тянется пыль. О наличии пыли хосты не предупреждают: предполагается, что Image Generator автоматически должен «понимать», что нужно ее отрисовывать в заданных условиях.

Еще одной сложной системой в IG является генератор погодных условий. Он принимает сообщение от хоста в таком виде:

Возникает ряд вопросов: 

— как температура влияет на картинку?

— как влияет влажность?

— если температура отрицательная, должен ли идти снег?

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

Эволюция графики авиасимуляторов

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

А вот графика закабинной обстановки меняется кардинально каждые 5–10 лет.

В 1967 году графика выглядела примерно вот так:

В 1980-е:

В 1990-е:

В 2000-е:

В 2010-е:

Большинство симуляторов используют картинку качества 2010-х годов, как достаточную. Да, пару лет назад вышел Microsoft Flight Simulator 2020, но на него не стремятся переходить, поскольку это игра, ее SDK еще в разработке и недоступен для подключения к комплексному тренажеру.

Изображение из Microsoft Flight Simulator 2020
Изображение из Microsoft Flight Simulator 2020

Плагин IG в UNIGINE позволяет выдавать картинку ничуть не хуже. Полюбуемся скринами:

Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE
Изображение сгенерировано в UNIGINE

Для тактических и комплексных симуляторов очень важна хорошая графика — она позволяет глубже погрузиться в процесс обучения. Чем реалистичнее графика «за окном», тем больше психологическое воздействие на человека, и обучающемуся легче представить, что он действительно сидит за штурвалом самолета и управляет огромной махиной, а за спиной у него 300 человек, жизнь которых зависит от принятых им решений. Этот эффект носит название «иммерсивность» — он позволяет по‑настоящему ощутить себя в небе. Для достижения иммерсивности используют различные системы. Как правило, это проекторы, которые проецируют изображения на различные плоскости с целью задействовать периферийное зрение.

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

В середине сферы стоит кабина самолета или вертолета — частично или полностью воспроизведенная, либо взятая, как есть. То же самое касается поездов и судов:

Движок это все умеет – выводить картинку, корректо ее искажать, правильно настраивать - чтобы это казалось продолжением реальности, не было видно швов и стыков, и было настроено на точку зрения пилота. 

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

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

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

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

Кроме того, когда проекторы светят на сферу, они это делают с перекрытием: есть участки, на которые светит 2–4 проектора.

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

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

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

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

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

Не только для людей: обучение нейросетей

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

Конечно, существуют различия между графикой, предназначенной для человеческого глаза и той, что подается в датчики беспилотника. Изображения «для компьютера» выглядят иначе — видов «зрения» у беспилотников гораздо больше: LiDARы, радары, камеры с широким спектром (не HDR, а заходящие в ультрафиолетовые и инфракрасные диапазоны), поэтому рендер происходит не только в RGB, а в гораздо более широком спектре.

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

На изображении: работа лидара, рендер буфера и передача его беспилотному автомобилю.
На изображении: работа лидара, рендер буфера и передача его беспилотному автомобилю.

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

Частные случаи

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

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

Это обусловлено тем, что камера снимает с определенной частотой, и при съемке она фиксирует лопасть в каждом кадре, в то время как человеческий глаз это не воспринимает — для него вращающиеся лопасти выглядят как равномерный прозрачный диск:

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

Еще один пример: пыль от винта, которая пилотами всегда ощущается меньше, чем есть на самом деле. Для того, чтобы вывести ее в поле зрения, иногда приходится «выдвигать» ее чуть вперед:

И вот здесь начинаются «фокусы» — ее не просто нужно отобразить, но еще и «пролезть» по производительности (60 fps никто не отменял), и при этом выдать максимально реалистичную картинку.

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

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

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

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

В рамках этой статьи и лекции ведущего программиста отдела высокоуровневой логики UNIGINE Александра Горбатова мы чуть приоткрыли завесу загадочного мира разработки визуальной части симуляторов. Надеемся, вам было интересно.

Посмотреть другие лекции с Open Air 2022 вы можете на нашем канале, а за новым материалом приезжайте на UNIGINE Open Air 2023. Он состоится этим летом, следите за новостями!

Комментарии (2)


  1. maisvendoo
    19.04.2023 16:35

    А какие тренажеры ж/д подвижного состава сделаны на вашем движке? У себя вузе сам занимаюсь этой тематикой, вот и интересно


  1. MasterMentor
    19.04.2023 16:35

    Самые удачные статьи у вас были по линейной алгебре. Остальное как-то так себе...