Немного о VR, лайвхаках и разработке

в 16:59, , рубрики: unity3d, Разработка под AR и VR, метки: , ,

“Тяжела и неказиста жизнь простого программиста”
— Неизвестный автор

Доброго дня Хабр, сегодня я хотел бы поделиться моим опытом разработки химической лаборатории под HTC Vive. Я расскажу вам про небольшие лайфхаки и другие особенности на которые наткнулся. Прошу воспринимать эту небольшую статью не как антологию VR разработки, а скорее как личный опыт, которым я бы хотел поделиться с миром и который будет полезен тем, кто начинает или планирует программировать под Vive.

История появления

Идея создания химической лаборатории появилась в тот момент, когда будущий руководитель нашей группы, Демин Виктор, в первый раз попробовал HTC Vive на выставке. Тогда Виктор решил создать такую химическую лабораторию в виртуальной реальности, которая послужила бы заменой реальным кабинетам с дорогостоящим оборудованием в школах и университетах. Для реализации своей идеи он собрал небольшую RTD команду, в которой оказался и я. RTD — research and or technological development. В нашей работе нам предстояло в сжатые сроки понять, насколько реально обучать чему-либо детей в VR, и насколько этот метод может заменить привычное обучение. Наш опыт показал, что такое применение технологий вполне реально. VR кажется нам перспективной областью разработок, поскольку в виртуальной реальности действительно можно довольно точно передать зрительные и слуховые ощущения, и полученный опыт вполне сравним с реальным.

Насколько нам известно, все, что создавалось до VR — 2D симуляции, без какой-либо образовательной пользы, что позволяет рассматривать VR как новшество.

Выбор оборудования

Когда мы начинали разработку, на рынке было всего несколько шлемов-установок в VR индустрии: Oculus Rift, HTC Vive и Sony PlayStation VR. Наиболее привлекательным нам показался HTC Vive, поскольку с его помощью мы получаем возможность свободно передвигаться по виртуальной комнате. Работа в реальной лаборатории подразумевает много перемещений в пространстве для взаимодействия с колбами, пробирками и другим оборудованием, поэтому для реализации наших целей наш итоговый выбор пал именно на Vive. Недолго думая, мы решили собрать ПК для разработки. Мы договорились сразу собрать мощный компьютер, чтобы в дальнейшем у нас не возникало проблем ни с работой по графике, ни со сложной химической моделью. GTX 1080 и Core-i7 хорошо подходят на роль топовых комплектующих, и они нас полностью удовлетворили. Также впоследствии мы еще добавили старенькую GTX 650 Ti, (которая, честно говоря, валялась без дела), и вывели рендер на втором мониторе на нее.

Игровым движком для нашей лаборатории мы выбрали Unity3D, потому что он позволяет быстро и просто создать рабочий прототип для дальнейших исследований. К тому же к моменту начала работы наша команда уже имела небольшой опыт работы с Unity, что позволило в дальнейшем упростить задачу химикам, которые, на мой взгляд, не готовы были бы разбираться с особенностями Unreal Engine 4. Впоследствии, когда мы занялись отрисовкой воды, сам этот процесс обернулся для нас большими проблемами, относительно легко решаемыми в UE4, но обсуждение проблем рендера воды в современных играх и симуляциях заслуживает отдельного разговора, который, возможно, предстоит нам в следующей статье.

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

Лайфхаки для тех, кто начинает работать с VR

Игра требует настройки roоm-scale (То есть использования пустого пространства, дабы в нем перемещаться), которая является одновременно и ведущим преимуществом HTC Vive перед конкурентами. Первым делом я взялся за эту настройку, что стало моей первой ошибкой: приходилось много раз отрываться от монитора для тестирования очередного обновления, что было очень неудобным и отняло много времени. В связи с этим советую вам настроить VR так, чтобы вы могли в дальнейшем отлаживать программу, не вставая с рабочего места.

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

image

Третья мысль так же проста. Если вы не уверены, что уже знаете, как прикрутить базовые станции(датчики, отслеживающие позиционирование в пространстве) Vive один раз так, чтобы больше никогда их не двигать (чаще всего это остается недостижимым), постарайтесь купить штативы. Подойдут и обычные штативы для фотоаппаратов. Вам скорее всего придется много переставлять базовые станции с room-scale на standing-only (в оппозицию room-scale, просто стоя на месте) и обратно, и штативы позволят вам достичь в этом определенной свободы. Также, если вы собираетесь показывать ваши наработки на выездах, штативы — вещь незаменимая. Найти поверхность, подходящую для Vive, дома или в офисе не так-то просто, а сделать это на случайной площадке на выставке практически нереально. Так что штатив пригодится вам в любом случае.

Если вы можете совершить какое-то действие (как нажатие кнопки на джойстике или введение объекта в игру), не заходя в VR, например, забиндив клавишу на клавиатуре, то стоит это сделать. Одна из главных задачей для работы с Vive — оптимизировать процесс разработки.

Перечисленные лайфхаки в общем показывают, что можно минимизировать работу с самим VR шлемом, потому что на действии, которое вы делаете по 20 раз в час (надевание и снятие, переустановка комнаты из-за случайно сбитых датчиков и т. д.), надо экономить. Да и монотонная деятельность просто начинает утомлять. Старайтесь найти баланс в вашем процессе отладки между постоянным надеванием шлема и совсем редким его использованием. Эта сторона VR разработки опасна тем, что вы сами начинаете уставать и тратите время на однообразные не очень приятные действия.

SteamVR — панацея или убийца

Думаю, если вы уже начинали работать с Vive в Unity, то встречали большое количество “Interaction Systems”. Я начинал с работы с SteamVR API. Он позволяет, накидав пару объектов на сцену, а на объекты — пару скриптов, сделать песочницу, в которой можно кидаться катанами, стрелять из лука и делать, что вздумается, в пределах небольшого набора скриптов. Но как только вы перейдете к чему-то более серьезному, вы столкнетесь с необходимостью либо вчитываться в тонны кода, либо писать свою систему интеракций, чтобы понимать, как она работает. Я советую сделать и то, и другое. Valve в своими удобными и простыми скриптами задает хороший тон организации взаимодействия с пользователем. А разработать систему интеракции самостоятельно я предлагаю для того, чтобы вы понимали, как что устроено, почему тот же SteamVR работает так, а не иначе. Это знание очень полезно для новичков в этом жанре.

Интерфейс или как пользователь должен понять, что вы от него хотите

Разработка интерфейса для взаимодействия внутри VR — большая и интересная задача. О чем мы думаем в первую очередь? Сделать обычные кнопки и слайдеры? Вот, например, молодой исследователь Майк Алгер говорит о том, что нам нужно отказаться от идеи делать обычные кнопки, а разработать новые методы работы с пользователем. И я согласен с тем, что обычные кнопки выглядят далеко не презентабельно, в то время как в нашей лаборатории ими придется много пользоваться. Я начал свою разработку по примерам, которые приводил Майк. То, что у меня получилось, вы можете посмотреть на моем заброшенном канале тут. Это очень объемная тема, по которой я планирую написать отдельную статью, а сейчас ограничусь только небольшими комментариями. Итак, старайтесь сделать интерфейс удобным. И главное, не обманывайтесь тем, что если вам понятно, как работать с вашими кнопками, хоть кто-то еще в мире поймет, как их нажимать (по своему опыту знаю). Конечно, после того, как один раз объясняешь пользователю принципы работы с твоим интерфейсом, у него потом редко возникают вопросы, но если для работы с вашим интерфейсом нужно специальное дополнительное обучение, — это не слишком качественный интерфейс. Пока что интерфейсам много времени я не уделял, а только сделал пару набросков, но я думаю, когда закончу смогу рассказать больше.

Надсмотрщик на галерах или геймдизайнер

Если в вашей, как и в моей, команде есть человек, отвечающий за то, куда движется ваша игра, то запомните одно важное правило: как нажатие Ctrl+S стало у вас рефлексом, так и демонстрация игры должна стать таковым. Буквально каждый, даже самый простой апдейт, может вызвать негативную реакцию у геймдизайнера. Ваша задача как можно более оперативно демонстрировать ему обновления. Будьте готовы к тому, что правок и изменений будет много, потому что мало у кого есть понимание того, что сработает на деле. Вместе вы потратите несколько минут, но зато это сэкономит много времени в будущем, которое вы можете по ошибке потратить на разработку ненужного контента.

Подводя итоги

Разработка по HTC Vive очень интересное занятие. Сейчас IT сообщество кипит новой информацией и достижениями в этой области. С каждым днем будущее в виртуальной реальности все ближе, и сейчас вы имеете шанс приобщиться к первооткрывателям в этой области. И я надеюсь, что эта короткая статья сделала вас хоть на шаг ближе к VR.

Автор: Наташа

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js