22/04/2021

Разработка виртуальных трёнажеров на UE4

Разработка виртуальных трёнажеров на UE4

Даниил Лихоманов полностью самостоятельно создал два виртуальных тренажера и делится опытом со всех сторон: как моделлер, как программист, как PM. Он расскажет о создании тренажеров, предназначенных для повышения квалификации и переподготовки персонала:

  • О тонкостях разработки обучающего контента;
  • Об инструментах, позволяющих экономить время;
  • О подводных камнях, которые встретятся на пути.

Где используются VR тренажёры?

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

Основные задачи при разработке

Условно их можно разделить на три большие категории:

  • Общие проектные задачи;
  • Технические моменты;
  • Программные задачи.

Общие проектные задачи

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

Погрузившись в разработку тренажёров, вы узнаете, как чинить самолёты, как ремонтировать краны, да много чего. Ничего из этого вам никогда по жизни не пригодится, но кругозор расширит. Скучно на работе? Вперёд — тут точно не заскучаете.

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

Вам обязательно нужен эксперт в команду. Без него вы просто НЕ получите качественного продукта.

Только он знает тонкости работы, он буквально будет говорить вам, где вы сделали правильно, а где — нет.

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

Знайте и объясняйте тонкости VR своим заказчикам.

Технические моменты

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

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

Что же нужно учитывать при разработке, помимого особенностей самой VR-гарнитуры и контроллеров? Железо. Дело в том, что в обычном случае видеокарте нужно отрисовать только один кадр и просто-напросто вывести его на экран. В виртуальной реальности всё сложнее. У человека — два глаза, а значит необходимо отрисовать две картинки, и они будут отличаться друг от друга. Казалось бы, просто берёте топовое железо, и всё работает.

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

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

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

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

Будучи "на берегу", позаботьтесь, чтобы получить максимум исходных данных. Чертежи, фото, видео, лучше вообще съездить на то место, которое вы собираетесь воспроизводить. Качественно снять на телефон с разных ракурсов все процессы.

Следующий технический момент — пиксели и сглаживания.

Чтобы бы вы не делали, человек в любом случае будет видеть пиксели на краях. К решению этой проблемы надо подходить достаточно творчески, руководствуясь конкретными потребностями заказчика. В Unreal Engine существует три вида сглаживания для борьбы с пикселизацией: TAA, FXAA, MSAA.

TAA (temporal anti-aliasing) — немножко замыливает изображение. Временами бывает не очень приятно работать с ним. Кажется, что стекло запотело. Тут всё зависит от освещенности, от контрастности и т.п.

FXAA (fast approXimate anti-aliasing) — дает очень четкую лесенку. Не рекомендую его использовать.

MSAA (multisample anti-aliasing) — наверное, самый оптимальный вариант, который балансирует между четкостью и сглаживанием. Именно он используется при выборе форвард рендеринга.

На форвард рендеринге производительность несколько выше, поскольку "отрезаются" некоторые визуальные фишки движка, идущие из коробки.

Сглаживание — это косметический, но важный момент, который стоит обговаривать с заказчиком заранее.

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

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

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

  

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

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

Поэтому на каждую специфику придётся придумывать новые типы взаимодействия.

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

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

Теперь поговорим про обработчики конфликтных событий. Рассмотрим на простом примере. Скажем, в реальном мире у нас есть стена, и рука через эту стену точно никак не пройдет. Но в виртуальном пространстве вы спокойно можете проходить сквозь стены, делать, что угодно. Плюс у нас там очень много осей свободы, то есть руки и голова могут перемещаться отдельно от тела, убежать куда-то. Это всё нарушает восприятие и обычно конечные пользователи такого не хотят, им нужно чтобы было максимально реалистично, чтобы человек мог сосредоточиться на обучении и не отвлекался понапрасну.

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

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

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

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

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

Если вы собираетесь делать виртуальный тренажёр, не стоит зацикливаться на создании собственной системы взаимодействий. Я рекомендую брать готовые модули, паки и плагины. Их можно найти на Marketplace, на GitHub, на Unreal форумах и т.д.

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

Виртуальные тренажёры и игры — чем они отличаются?

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

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

Научите пользователя работать с программой, VR-контроллерами.

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

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

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

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

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

Подводные камни

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

Из-за особенностей работы сценариев проработайте систему быстрого перехода к определенному этапу сценария.

Обязательно делайте скриншоты и записывайте видео с багами.

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

Итоги

  • Виртуальные тренажёры — это очень интересное направление разработки;
  • Занимаясь этим направлением, вы прокачиваетесь в сторонних процессах производства/науки;
  • Всегда можно начать с небольших проектов;
  • Их проще разрабатывать, чем многие игры;
  • Понятна финансовая сторона;
  • Можно развивать направление разработки внутри самого производства;
  • Для большинства задач хватит только Blueprint’ов;
  • Обязательно собирайте команду для разработки.

Используйте свой опыт по максимуму

На текущий момент основная проблема с тренажёрами в том, чтобы как можно точнее и быстрее создать достоверный обучающий процесс. Один из самых удачных вариантов для многих компаний — обучать собственных сотрудников работе в движке. Если сравнивать сложность подготовки уже опытного специалиста работе в Unreal Engine 4 и вариант передать знания целой отрасли UE4-разработчику, то первый обычно выигрывает.

Поэтому, используйте свой опыт по максимуму! Если вы — специалист в своей сфере, которую можно перенести в VR, то это отличный способ выложить все свои знания в интерактивной программе.

Недавние статьи

От автомобильного дизайна — к гейм-дизайну

06/05/2021
Артем Попков рисует настоящие "Мерседесы". Его вторая работа — создание инновационных гоночных игр.

С рождения Бобби пай-мальчиком был

29/04/2021
Обсудили с руководителем студии Massa Games их экшен с элементами RPG про пиратов —"Память Моря. Легенды".

Полный пинцет

21/04/2021
Мы связались с разработчиками шутера 41 HOURS, обсудили коммуникацию в команде, лор игры и особенности геймплея.