Проектирование и реализация отслеживания рук в «Myst» PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Дизайн и реализация отслеживания рук в Myst

. Обновленный API отслеживания рук Presence Platform, мы представили отслеживание рук в последнем обновлении Myst на платформе Meta Quest под названием «Руки и многое другое». Мы очень рады наконец позволить людям играть Myst на Quest без физических контроллеров! В этом посте мы обсудим эволюцию и итерацию реализации отслеживания рук в Myst— и, в частности, добавление дополнительной поддержки в Unreal Engine 4.27.2.

Проектирование и реализация отслеживания рук в «Myst» PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Гостевая статья Ханны Гамиэль

Ханна Гамиэль — директор по развитию в Голубой— студия, стоящая за оригиналом 'Мость игры — и помогли разработать новые «Мист» (2020)' который включает в себя поддержку VR. Первоначально имея чисто технический опыт, теперь она помогает руководить производством всех игр и руководит бизнесом и техническими усилиями в Cyan. Она работала над такими проектами, как «Myst» (2020), «The Witness», «Braid, Anniversary Edition», «Obduction», «Firmament» (скоро!) и другими.

Этап проектирования и соображения

Проектирование навигации для отслеживания рук

Изображение, указывающее, куда вы хотели бы пойти. Вы, вероятно, думали указать, не так ли? Вот почему мы решили использовать метод «указания» для движения в Myst.

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

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

При тестировании движения с указыванием мы обнаружили, что отслеживание руки иногда может быть ненадежным с указательным и средним пальцами, когда они закрыты остальной частью вашей руки. Система не уверена, полностью ли эти пальцы направлены или полностью «закрыты» в вашей руке. Мы добавили в код немного фактора «выдумки», чтобы учесть более стабильную инициацию/выполнение движений на этом фронте, о чем мы поговорим чуть позже, когда будем обсуждать изменения, внесенные в готовое отслеживание рук. поддержка в Unreal Engine.

Поворот

Метод «точка» не работает для всех способов навигации. Когда дело доходит до поворота, мы сначала совмещаем указание с вращением запястья. Сравнение запястья игрока и прямого вектора камеры указывало бы направление поворота (и насколько большим должен быть поворот). Сначала мы попробовали это, поскольку казалось интуитивно понятным сохранить тему «указания» для навигации между всеми режимами.

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

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

Итак, как мы решили это? Мы закончили тем, что назначили поворот на жест «большой палец вверх» вместо жеста указательного пальца.

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

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

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

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

Разрешение конфликтов между позами движения и взаимодействия с объектами

Конечно, указание пальцем — слишком широкий жест, чтобы его можно было использовать только для навигации. Люди будут делать тот же указывающий жест, чтобы нажимать кнопки или взаимодействовать с другими вещами в мире просто по привычке или из своих собственных ожиданий. Было бы довольно неприятно подойти к (но не правую до) кнопки, наведите палец, чтобы нажать ее, а затем внезапно (и нежелательно) приблизитесь к ней в игре (или непреднамеренно инициируйте телепорт)!

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

Мы обнаружили, что эта точка наилучшего восприятия находится примерно в 25 см от положения кости кончика указательного пальца в мировом пространстве. Myst наполнен интерактивными объектами разных размеров (от маленьких кнопок до очень больших рычагов), расположенными как на широких открытых пространствах, так и в узких коридорах, поэтому нам потребовалось немало испытаний, чтобы определить это число. Сначала мы пробовали 60 см (около двух футов), но это не позволяло двигаться, когда игрокам все еще нужно было приблизиться к объекту. Точно так же все, что ниже 25 см, вызывало нежелательное движение игрока, когда игроки пытались схватить или коснуться объекта.

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

Тем не менее, 25 см - это то, что работало конкретно для Myst. В других играх может потребоваться изменить это число, если они хотят реализовать что-то подобное с учетом своих собственных критериев.

Проектирование взаимодействия объектов для отслеживания рук

Прямо сейчас все захватываемые взаимодействия в Myst созданы для работы с отслеживанием рук — поворотом клапанов, открытием дверей, нажатием кнопок, переворачиванием книжных страниц и т. д.

Взаимодействия поддерживают то, для чего мы уже настроили Myst с сенсорными контроллерами. Там нажатие кнопки захвата автоматически смешивает представление вашей руки в игровой сетке с «схваченной» позой, либо сжимая руку в кулак (если она пуста), либо захватывая объект. Что касается отслеживания рук, мы добавили код, который будет делать квалифицированное предположение о том, когда вы достаточно согнули пальцы, чтобы «схватить» что-то, и запустить ту же логику, что упоминалась ранее.

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

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

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

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

Взаимодействие с меню/интерфейсом

Для взаимодействия с меню мы в конечном итоге использовали ту же парадигму взаимодействия, которую Meta использует для Quest Platform: сведение двух пальцев между большим и указательным пальцами на любой руке. Это можно использовать как для открытия игрового меню, так и для взаимодействия с элементами в меню. Нет смысла изобретать велосипед здесь, когда игроков уже учат делать это в меню уровня ОС, когда они впервые включают отслеживание рук в Quest!

Сообщение всего этого игроку

Поскольку отслеживание рук не так распространено в Quest, как сенсорные контроллеры, и потому что некоторые люди могут играть Myst в самый первый раз (или даже играя в их первую виртуальную игру!), мы старались быть внимательными к тому, как мы сообщаем всю эту информацию об отслеживании рук игроку. Мы позаботились о том, чтобы включить еще одну версию нашей «диаграммы контроллера», специально предназначенную для описания взаимодействий с отслеживанием рук (если она включена в Myst), и мы показываем игроку специальные уведомления, которые точно говорят ему, как передвигаться руками.

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

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

Продолжить на странице 2: Модификации движка, сделанные в Unreal »

Отметка времени:

Больше от Дорога к VR