Система распределённой визуализации для авиа-симуляторов

Доброго времени суток.
...
Недавно обратились ко мне с подрядом на разработку системы распределённой визулизации на базе движка Unreal Engine.
Несколько лет назад я руководил разработкой аналогичной подсистемы авиа-симулятора для Антонов АН-148.
...
Цель данного поста — найти специалистов с необходимым наборов технологий, свободным временем и желанием.
...
Что из себя будет представлять модуль?
Посистема должна будет позволять синхронизировать каждый кадр цикла визуализации вплоть до 8 каналов.
Простыми словами: на 8-и отдельных компьютерах запускается экземпляры одного и того же приложения. Каждый экземпляр приложения обычно визуализирует некоторую часть общей сцены 20-30 градусов. Далее каждая часть сгенерированное изображения выводиться на отдельный проектор или монитор.
Соответственно основная функция приложения — избежать рассинхронизации между каналами, чтобы суммарное изображение выглядело цельным.
...
Разработка для Украинского рынка и рынка Казахстана. Планируется к применению в симуляторах для гражданских самолётов и вертолётов.
...
Необходимы навыки
* С++
* Понимание общих принципов систем визуализации
* Опыт разработки сетевых приложений, мультиплееров для компьютерных игр
...
Длительность разработки
2 месяца на бета-версию, ещё через 2 месяца заказчик должен будет получить мастер-версию.
...
Оплата
Сейчас мы находимся на этапе уточнения тех задания, но ниже рынка никто платить и разрабатывать не будет. Здесь все обсуждаемо.
...
Если Вам интересно принять участие в разработке данной подсистемы, пишите в личку.
...
Спасибо.

update Если опыт разработки подсистемы будет положительный, заказчик готов заключить годовой договор на разработку остальных модулей ПО: взаимодействие с центральной системой управления, мат. моделью ЛА, интеграция с Oculus Rift и т.д.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Несколько лет назад я руководил разработкой аналогичной подсистемы авиа-симулятора для Антонов АН-148.

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

Вчера вкратце коснулся этой темы на IT fest от GoIT, там была категория fresher-ов, switcher-ов, так что технических деталей почти не касался, но о проете можно говорить бесконечно, начиная от тех вопросов и до того как в UA делается бизнес )))

По моему вы изобретаете FSX, причем быстро и дешево

Террайн туда можно впихнуть какой угодно, плюс здания и ещё кучу всего. Рабочие сетапы на 6 мониторов я видел. Есть версия, которую развивает Lockheed Martin, она доступна и не сильно дорого. Я под этот сим много чего сделал, лучше и дешевле этого не будет. Лучше и дороже — да. Причём стоимость компьютерного железа в общей стоимости решения будет составлять мизер.

И что тяжелая сильно графика в том симуляторе? Автомобильный surround view camera сшивает 6 или 8 камер на SGX544 + Dual Core ARM A15 1.3GHz. Берём большую поверхность (surface) разбиваем на две для облегчения и равомерной загрузки и рендерим изображение 1280×720 по-очерёдно с 3-4 камер в каждую из поверхностей с постобработкой, lens correction, etc. фигурная обработка текстур по контурам машины, для того чтобы съэмулировать вид сверху и под любым углом, 60FPS легко выходит. Многие прототипы дорогих автомобилей, выпуск которых намечен на 2018 год можно будет водить по приборам, и ездить как в NFS :)

Это, конечно, уже даже не вчерашний, а позавчерашний день, но общее представление даёт:
www.youtube.com/watch?v=xqbpqDZRd70

Я к чему, неужели современная видеокарта не сможет дать 200-300 FPS в симуляторе, чтобы успевать рендерить по 60 fps каждый из участков?

смешивать изображения с камер и рендерить 3D чуть разные задачи.
...
1. Разрешение. Для проекта AN-148 мы использовали три барковских проектора 2560×1600, тоесть выходное изображение 7680×1600 != 1280×720
2. Чтобы вывести финальное изображение, его всё-равно прийдётся разбивать и выводить на отдельные проекторы.
3. Горизональный FOV > 200 градусов, это закабинное пространство авиасимулятора, для вертолётов даже больше. Отрендерить одним проходом не получиться, к тому же чем больше FOV тем больше искажений. Для того же AN-148 было 6 независивых каналов, каждый рендерил ~40 градусов.
4. Эффективность. По левому борту лесополоса, по правому аэропорт. Если загонять всю геометрию сразу, то накладно для «пустых» каналов, в противном случае — дополнительные вызовы загрузки данных на видеокарту.
...
И таких нюансов ещё много, так что на данный момент — распределённый рендер: оптимальное решение для авиа симуляторов.

1. Разрешение. Для проекта AN-148 мы использовали три барковских проектора 2560×1600, тоесть выходное изображение 7680×1600 != 1280×720
Нормально, не бог весть какое большое требование. Не мобильный ведь GPU в него будет рендерить.
2. Чтобы вывести финальное изображение, его всё-равно прийдётся разбивать и выводить на отдельные проекторы.
Не надо разбивать, рендерите кусочками.
3. Горизональный FOV > 200 градусов, это закабинное пространство авиасимулятора, для вертолётов даже больше. Отрендерить одним проходом не получиться, к тому же чем больше FOV тем больше искажений. Для того же AN-148 было 6 независивых каналов, каждый рендерил ~40 градусов.
Так и делайте таким же образом, но на одной машине последовательно.
4. Эффективность. По левому борту лесополоса, по правому аэропорт. Если загонять всю геометрию сразу, то накладно для «пустых» каналов, в противном случае — дополнительные вызовы загрузки данных на видеокарту.
Если будет рендерить одна видеокарта, то это даже добавит эффективности.
И таких нюансов ещё много, так что на данный момент — распределённый рендер: оптимальное решение для авиа симуляторов.

На самом деле это решение далеко от оптимальности, вот образец решения, но вам он не особо подойдёт из-за Unreal.

Берём две Matrox C420, имеем 8 видеовыходов на одной машине, ставим для начала одну безголовую nVidia Tesla. Затем параллельно рендерим 8 картинок через tesla в pbuffer и отображаем их через Matrox, когда готовы все 8. Особенность tesla в том, что она спокойно выдержит параллельный рендеринг тяжелых сцен, а вот на последовательном рендеринге мы не сможем утилизировать всю мощь.

Нормально, не бог весть какое большое требование. Не мобильный ведь GPU в него будет рендерить.
это не компьютерная игра, в симуляторах, по ТЗ горизон 200-300 км, там одного ландшафта хватит чтобы положить все 128/256/512 конвееров, не считая облаков с усиливающимся филрейтов во время пролётов, геометрию аэропортов и городских территорий при подлёте, погодные условия (снег, дождь, молнии) и пр.
Так и делайте таким же образом, но на одной машине последовательно.
Если будет рендерить одна видеокарта, то это даже добавит эффективности.
Загрузить 100 км ландшафта и Борисполь с Киевом. Сделаете такое решение — обанкротите Боинг с Аирбасом и Антонов на сдачу. Но что-то пока все рендерят параллельно.
Повторюсь — тут рендериться не два треугольника. Запас прочности у односерверного решения как раз меньше. Поставил 6 видеокарт на 20% быстрее — ускорил всю систему в разы. Стоимость аналогичной теслы будет отличаться на порядок и ещё не факт что вытянет.
Берём две Matrox C420
nVidia Tesla
Так дорого симулятор никто в UA строить не будет. Помимо графической составляющей, есть куча подсистем с приличной стоимостью. И это надо продать вместе с самолётами\вертолётами, потому как по ИКАО по-другому нельзя.

В точку, это одно из самых больных мест )
вот из ТЗ
0-16 км — не менее 0,1 м/пиксель;
в радиусе 16 км — не хуже 2 м/пиксель
300×300 км — 5 м/пиксель
...
Если по-честному — то нужно покупать. Но обычно выкручиваются — покупают только территорию аэропорта. Vega Prime — например даёт в поставке, но там качество так себе.
Остальное собирают из открытых источников.

Да, это только подстилающая поверхность.
Здания, дороги, растительность — отдельно, это ещё один головняк.

по ТЗ горизон 200-300 км
Если брать перспективную модель, то получается при fov 40 и дальности в 300 км будет 15 метров на пиксель и 55 шагов z buffer на 1 м модели в лучшем случае. Если рендерить полноценные модели на такой дальности, то можно положить что угодно, тут вопросы больше к движку.
Загрузить 100 км ландшафта и Борисполь с Киевом. Сделаете такое решение — обанкротите Боинг с Аирбасом и Антонов на сдачу. Но что-то пока все рендерят параллельно.
Ну я не с головы решение предложил, ну да ладно.
Так дорого симулятор никто в UA строить не будет.
Да нет так уж это и дорого.

LOD-ы никто не отменял же

И мипмапы тоже, но на таких размерах не все так радужно как в макспейне )))

Проект цікавий, та от проблема — покинути роботу, зробити проект і потім знову шукати роботу? Це хіба для фрілансерів варіант.

В принципе да, на формат удалённой работы и расчитываю

А до чого тут дві роботи? Коли одній віддаєш 8-12 годин, то покажіть того, хто зможе робити дві.

Может просто взять помощнее комп?

Тут дело больше в видеокарте и математике визулизации. Обычно, симуляторы визуализируют сцену с горизонтальным FoV ~ 200 градусов, отрендерить это на одном канале не получится, к тому же чем больше FoV тем больше искажений и тем дальше изображение от естественного. Попробуйте поставить в любой игре FoV 120.

Тут дело больше в видеокарте
Да, это и имелось в виду. Взять Quad SLI. Хотя я не знаю Unreal Engine, поддерживает или нет.
FoV 120
Я представлял это как, условно говоря, 4 экрана спереди (2×2) и по одному справа слева. И каждый экран рендериться со своей матрицей проекции. Вроде игровые машины (1 штука) тянут такое, нет?

Т.е. такие эффеты, как bloom, lens flare и ещё что-нибудь могут некрасиво сшиваться.

Можна відрендерити частини на різних комп’ютерах без постефектів, а потім усе зібрати і відправити на постпроц одному. Та, якщо чесно, навіщо блум і тд для симулятора? Це ж не кіно Майкла Бея.

А потом опять разбить и отправить на 8 проекторов

Подписаться на комментарии