DownloadDeveloping_Racing_Thrills.pdf
Введение
Опираясь на возможности управления жестами, доступные в Intel® RealSense™ SDK,компания PlayBuff Studiosразработала последнюю версию игры Death Drive: Racing Thrill * для устройств, поддерживающих технологию Intel® RealSense™. Разработчики PlayBuff обратили внимание, что в совсем в немногих гоночных играх у игрока была возможность одновременно управлять автомобилем и стрелять; в большинстве таких игр использовались традиционные средства управления. Разработчики решили создать игру с более современной и интуитивной атмосферой за счет использования управления жестами и голосом в сочетании с возможностью стрельбы во время езды.
Тарун Кумар (Tarun Kumar), директор компании PlayBuff, и его команда были уверены в том, что управлять с помощью жестов будет удобно и весело и такой подход улучшит общие ощущения от игры. Работая с Intel RealSense SDK для Microsoft Windows *, разработчики PlayBuff встроили управление жестами и голосом в основу игрового процесса. Получилась игра с уникальным интуитивным сочетанием езды и стрельбы.
В процессе разработки удалось изучить различные подходы и процессы анализа, необходимые для успешной реализации управления жестами и голосом в игре, в отличие от игр с традиционным управлением. Разработчики изучили различные варианты управления жестами и голосом, получили немало информации об оптимизации производительности с помощью Intel RealSense SDK и разработали концепцию влияния технологии на развитие компьютеров в будущем.
Решения и проблемы
Данные Intel® RealSense™ SDK
Программисты PlayBuff обнаружили, что Intel RealSense SDK предоставляет разработчикам огромный объем информации, которую можно использовать множеством разных способов. Немало времени на раннем этапе разработки было потрачено на изучение различных вариантов интерфейса и на определение того, какие данные были необходимыми и важными для достижения целей разработки. Команда решила использовать три возможности SDK в игре Death Drive: Racing Thrill: распознавание жестов, отслеживание рук и распознавание голоса в режиме командного управления.
Отслеживание руки и жестов
Интерфейс игры вообще не использует касаний, только возможности отслеживания рук и жестов в Intel RealSense SDK. На устройстве, поддерживающем Intel RealSense, можно пройти всю игру от начала до конца, используя только управление жестами. Отслеживание рук используется для определение положения определенных частей руки и идентификации различия между сжатым кулаком и открытой ладонью. С помощью жестов распознаются различные движения рук, включая боковые движения и быстрое встряхивание.
В следующем фрагменте кода показана реализация отслеживания жестов в игре.
// Get a hand instance here (or inside the AcquireFrame/ReleaseFrame loop) for querying features // pp is PXCMSensemanager instance PXCMHandModule hand=pp.QueryHand(); if (hand!=null) { // Get Hand Tracking Processed Data PXCMHandDatahand_data = hand.CreateOutput(); hand_data.Update(); PXCMHandData.IHandmainHand; // retrieve the hand data pxcmStatus sts=hand_data.QueryHandData(PXCMHandData.AccessOrderType.ACCESS_ORDER_NEAR_TO_FAR,0,out mainHand); if (sts>=pxcmStatus.PXCM_STATUS_NO_ERROR) { if(startTimer<4) startTimer += Time.realtimeSinceStartup-startRTime; Openness = mainHand.QueryOpenness(); handDetected = true; // openness is zero when hand detected in starting, so use startTimer for some delay if(Openness < 20 &&startTimer>3) fist = true; else fist = false; PXCMHandData.JointDatajointdata; // get world coordinates of detected hand.. pxcmStatus xy1 = mainHand.QueryTrackedJoint(PXCMHandData.JointType.JOINT_CENTER,out jointdata); PXCMPoint3DF32 xy2 = jointdata.positionWorld; PointOfCamera = new Vector3(-xy2.x,xy2.y,xy2.z); // Normalise vector and make screen centre point to origin of world coordinates PointOfCamera = new Vector3(Mathf.Clamp(PointOfCamera.x/0.20f,-1,1),Mathf.Clamp(-PointOfCamera.y/0.12f,-1,1),0); PointOfCamera = new Vector3(PointOfCamera.x/2 +0.5f,PointOfCamera.y/2 +0.5f,0); } // clean up hand_data.Dispose(); }else startTimer = 0; // Swipe code using hand tracking // _velocities is vector3 Queue for storing coordinates of hand tracking timer += Time.realtimeSinceStartup-startRTime; original = new Vector3(-xy2.x,xy2.y,xy2.z); if(!FirstTime&& timer>2) { StartingPoint =original ; FirstTime = true; swipeVector = Vector2.zero; _velocities.Clear(); } else if(timer>3) { if(_velocities.Count>2)// check for three frames, we need at least three frames to get directions { _velocities.Dequeue(); _velocities.Enqueue(original - StartingPoint); StartingPoint =original ; Vector3 total = Vector3.zero; varenuma = _velocities.GetEnumerator(); while(enuma.MoveNext()) { total += enuma.Current; } //check direction vector coordinates for different gestures. //MOVEMENT_THRESHOLD is minimum value for swipe detection. If(total.x> MOVEMENT_THRESHOLD)// for swipe right { FirstTime = false; timer =0; } else if(total.x< -MOVEMENT_THRESHOLD)// swipe left { FirstTime = false; timer =0; } else if(total.y> MOVEMENT_THRESHOLD)// swipe down {FirstTime = false; timer =0;} else if(total.y< -MOVEMENT_THRESHOLD)// swipe up {FirstTime = false; timer =0; }else if(total.z> MOVEMENT_THRESHOLD)// move hand away from camera {FirstTime = false; timer =0 ;} else if(total.z< -MOVEMENT_THRESHOLD)// move hand towards camera { FirstTime = false;timer =0; } } else { _velocities.Enqueue (original - StartingPoint); StartingPoint = original; } }
Повороты с помощью жестов
Важной частью процесса разработки стала реализация управления поворотом автомобиля с помощью жестов. Для управления поворотом рулевого колеса автомобиля игра распознает жесты сжатия кулака левой и правой руки для поворота в соответствующую сторону (см. рис. 1). Если после этого разжать кулак, рулевое колесо автоматически вернется в нейтральное положение. Чтобы затормозить или ехать задним ходом, игрок должен сжать кулаки на обеих руках.
Рисунок 1. Жесты, используемые для поворота автомобиля в игре.
В PlayBuff последовательно применили несколько различных подходов, прежде чем удалось добиться успешной реализации управления поворотом с помощью жестов. Сначала использовали моделирование настоящего рулевого колеса, которое было изображено на экране. Игрок управлял им двумя руками. Но на практике в этом случае возникло две проблемы. Во-первых, требовалось, чтобы обе руки всегда были перед экраном. При этом имитировалось относительно «реалистичное» положение рук на рулевом колесе, но руки мешали игроку, загораживая экран — это серьезный недостаток, который разработчики не учли на этапе проектирования.
Вторая проблема заключалась в том, что для правильного управления автомобилем рулевое колесо должно было автоматически возвращаться в нейтральное положение. Сначала возвращением руля в нейтральное положение занимался пользователь, но при тестировании было выяснено, что такой подход не интуитивен, он приводил к неверному управлению поворотами и раздражал игроков.
Для автоматического возврата руля в нейтральное положение потребовалось пересмотреть жесты, используемые для поворота. После длительных экспериментов пришли к следующему решению: для поворота нужно сжать кулак правой или левой руки, а после разжимания кулака руль автоматически возвращается в среднее положение.
Отслеживание жестов используется не только для поворотов, но и для других действий в игре. На автомобиль можно установить различное вооружение, для открытия огня из которого применяется жест рукопожатия. В режиме обычной игры не требуется переключать передачи, но разработчики PlayBuff также предусмотрели дрэг-режим, в котором игроки переключают передачи с помощью жестов сжатия кулака или проведения наружуотмахивания.
Что удалось узнать о жестах
В PlayBuff обнаружили, что управление при помощи жестов дает совершенно другие ощущения игрокам. Поскольку управление жестами — относительно новая технология и ее реализация может значительно различаться в разных приложениях и играх, для управления автомобилем в игре потребовалось обучение.
В игре предусмотрен интерактивный учебный режим, помогающий игрокам привыкнуть к различным жестам, необходимым для игры. Чтобы не перегружать игрока избыточной информацией, инструкции выводятся на экран только при необходимости, в соответствующих игровых ситуациях (см. рис. 2).
Рисунок 2. Управление с помощью жестов поясняется игроку в ходе игрового процесса.
Также выяснилось, что после привыкания к управлению игроки в целом остаются довольны игрой и своими ощущениями от нее. На рис. 3 показаны учебные инструкции в игре.
Рисунок 3. График учебных инструкций в игре
При реализации управления жестами еще одна задача состояла в калибровке камеры таким образом, чтобы игра правильно и точно реагировала на жесты. Оказалось, что однократной калибровки перед началом игрового сеанса было не всегда достаточно, поскольку пользователи довольно часто передвигали руки, убирая их из конической области перед камерой, где возможно обнаружение движений рук. Для решения этой проблемы применили непрерывное обнаружение положения рук. Если игра не может обнаружить необходимые вводные жесты, она приостанавливается и предлагает игроку вернуть руки в исходное положение, после чего заново проводит калибровку.
В ходе тестирования выяснилось, что при управлении жестами игроки часто излишне сильно поворачивали автомобиль при прохождении поворотов, из-за чего управление становилось менее удобным. Для решения этой проблемы применили помощь при рулевом управлении: игра адаптирует скорость вращения рулевого колеса в соответствии с нужным углом поворота, который вычисляется как угол между продольной осью автомобиля и направлением трассы.
Адаптация срабатывает, если игрок вращает руль не в том направлении или «перекручивает» руль, из-за чего возникает избыточный поворот. Оптимальные углы адаптации руля были получены на основе результатов тестирования. Чтобы у игроков не возникало ощущения, что автомобиль всегда сам поворачивает в нужную сторону, сделали так, что адаптация руля срабатывает только в ответ на действия пользователя.
Тестирование показало, что время прохождения уровней с управлением жестами в целом сравнимо со временем при использовании традиционного интерфейса. Следовательно, даже у игроков, привыкших к традиционным средствам управления, управление жестами не вызовет существенных неудобств.
Распознавание голоса
В начале проекта Кумар сомневался в возможностях Intel RealSense SDK в отношении распознавания речи, но вскоре убедился, что в командном режиме все работает очень хорошо. Подсчитав время, необходимое игроку для выполнения каждой команды в меню, он обнаружил, что применение голосовых команд SDK было не только приемлемым, но и более удобным: голосовые команды занимали менее 2 секунд, тогда как выполнение этих же команд с помощью жестов занимало 3—4 секунды. Это продемонстрировало эффективность голосового управления: на каждой команде можно было сэкономить 2—3 секунды, и управлять с помощью голоса было быстрее, чем переходить в меню и запускать игру.
Распознавание голоса используется главным образом в меню игры. Например, игрок может выбрать задание, просто произнеся вслух «задание 3» или «задание 4». С помощью голоса также можно выбрать модель автомобиля и изменить его цвет (см. рис. 4.), произнеся вслух цвет, например, «желтый» или «черный». Если игроку нужно выбрать определенный уровень или задачу на определенном этапе игры, можно использовать соответствующие голосовые команды, например «первая задача» или «вторая задача». Голосовые команды также применимы в игровом процессе для ведения огня из их оружия в качестве альтернативы жесту рукопожатия.
Рисунок 4. Игроки используют голосовые команды для различных вариантов настройки своих автомобилей
Производительность
Наибольшие сложности при разработке были связаны с применяемой в гоночной игре физической моделью, образовывавшей высокую нагрузку на ЦП. Для моделирования физики автомобиля требуется немало ресурсов ЦП, поэтому при разработки много времени было потрачено для сопряжения физики автомобиля с управлением жестами и для оптимизации использования ЦП. Качество графики очень важно в любой игре, и сначала в Death Drive: Racing Thrill было значительно больше графических деталей, в том числе присутствовали эффекты погоды и тумана, реализованные с помощью частиц. В игре сохранилось вычисление теней в реальном времени, но после реализации бета-версии Intel RealSense SDK для интеграции управления жестами с физикой автомобиля оказалось, что производительности ЦП недостаточно: кадровая скорость снижалась ниже необходимой, равной 30 кадрам в секунду. Такой результат был получен на целевой платформе, соответствующей минимальным требованиям к системе: процессор Intel® Core™ i5-4250 частотой 1,3 ГГц, 4 ГБ ОЗУ и видеоадаптер Intel® HD Graphics 5000.
После появления Intel RealSense SDK версии Gold производительность заметно возросла, что позволяет получать положение обеих рук в одном и том же кадре, сохраняя при этом нужную кадровую скорость. Благодаря этому улучшению повысилась скорость реакции игры и улучшилось общее удобство пользователей.
Выбор режима ввода
Разработчики PlayBuff считают, что у игроков должна быть возможность выбрать режим ввода в игре. Пользователю не требуется непременно использовать мышь и клавиатуру или сенсорное управление для прохождения игры, но у пользователя есть такая возможность. Например, для стрельбы пользователь может использовать не только жест рукопожатия и голосовые команды, но и клавишу F на клавиатуре.
Тестирование
Тестирование велось на всех этапах процесса разработки с самого начала проекта. В начале работы для упрощения внутреннего тестирования разработчики PlayBuff и команда контроля качества Intel обсудили создание тестовых сценариев специально для Intel RealSense SDK. Дальнейшее тестирование в PlayBuff с привлечением пользователей помогло существенно улучшить пользовательский интерфейс, а в процессе разработки команда сотрудничала с тестовой группой, состоящей из игроков с различными навыками в области гоночных игр и игр со стрельбой.
Меню игры использует отслеживание рук для выбора различных параметров, для которых используются разные способы получения координат. В начале разработки использовали параметр MassCentreImage для получения координат руки на экране, но после тестирования различных вариантов выяснилось, что параметр JointCenter дает более точные и стабильные результаты.
Среди других важных фактов, полученных в ходе тестирования, была проблема частого избыточного поворота (в результате была реализована система адаптации руля), а также тот факт, что работать с меню с помощью голосовых команд оказалось намного быстрее. Тестирование также помогло при отладке встроенного в игру учебного режима. Обучение запускается в зависимости от потребностей пользователей; инструкции отображаются тогда, когда в игре требуются соответствующие действия. Разработчики провели всеобъемлющее тестирование для вычисления среднего времени отклика для задач, чтобы правильно скоординировать время работы различных инструкций.
Заключение
Кумар считает, что для создания и реализации приложения с технологией Intel RealSense, в отличие от традиционного ввода, требуется другой ход мышления. Для выбора правильного подхода на стадии замысла проекта важно внимательно ознакомиться с подробными правилами разработки, предоставляемые корпорацией Intel в составе Intel RealSense SDK.
Разработчикам следует учитывать особенности и преимущества Intel RealSense SDK, рассматривать потенциальные сценарии использования, где интерфейс с управлением жестами может оказаться наиболее удобным. Приложение может быть игровым, развлекательно-образовательным или даже связанным со здравоохранением — в любом случае настоящее преимущество Intel RealSense SDK состоит в создании новых возможностей для пользователей, а не в простой замене традиционных методов ввода на жесты в существующих приложениях. При правильном подходе к технологии, свободном мышлении и грамотном проектировании успех, по мнению Кумара, просто гарантирован.
Для Кумара и его команды в PlayBuff наибольшим преимуществом этого проекта стала сама возможность изучить новую технологию. Сначала разработчики располагали лишь теоретическими знаниями о неконтактных интерфейсах, но теперь они намного лучше понимают все преимущества и затруднения, связанные с технологией Intel RealSense. Благодаря опыту они могут подходить к проектированию будущих игр с точки зрения управления жестами, голосового управления и итогового удобства для пользователей.
Возможные области применения технологии Intel® RealSense™
При работе с Intel RealSense SDK возникло четкое понимание значительного потенциала этой технологии. Существует немало сценариев использования, в которых технология Intel RealSense может предоставить пользователям новые удобные возможности. Например, в здравоохранении интерфейсы с управлением жестами дадут возможность врачам и пациентам взаимодействовать с меньшей вероятностью распространения инфекции при обходах и при обновлении информации о ходе лечения в больницах.
Технология Intel RealSense также обладает значительным потенциалом для учебных приложений. Кумар считает, что в Индии, его родной стране, технологию Intel RealSense можно применить, в частности, для работы над правильным произношением при изучении английского языка. Приложение, использующее возможности распознавания голоса и анализирующее точность произношения пользователя, поможет улучшить владение английским языком.
В области казуальных игр, например в приложении для домашних упражнений, технологию Intel RealSense можно использовать для обратной связи о правильности выполнения упражнений пользователям в отношении всей амплитуды движений, темпа и скорости движений.
По мнению Кумара, основным фактором для воплощения в реальность всех таких приложений, является повышение дальности действия камеры Intel® RealSense™ 3D с текущего расстояния в 1,3 м до такого расстояния, чтобы в кадр камеры попадало все тело человека. При этом камера должна сохранять точность при отдалении объекта съемки от камеры. При таких усовершенствованиях можно будет разрабатывать и другие игровые приложения, такие как теннис и гольф, где камера будет безошибочно измерять силу, направление и точность размаха и удара. Кроме того, успех в области казуальных игр зависит от формирования пользовательской базы с помощью технологий, доступных в широко используемых ноутбуках и мобильных устройствах.
Еще одна область, в которой технология Intel RealSense представляется перспективной — распознавание лиц. Эта технология пока еще не освоена, но у нее огромный потенциал. При этом распознавание жестов, голоса и лица вряд ли полностью вытеснит традиционные интерфейсы, но дополнит их и сделает более удобными в определенных сценариях использования. В целом технология Intel RealSense обладает широким потенциальном для использования в различных областях, она дает новые преимущества пользователем и открывает новые возможности для разработчиков.
О разработчике
Компания PlayBuff Studios, находящаяся в индийском городе Чандигарх, была основана в 2010 году с целью разработки игр мирового уровня. Компания начала с разработки двухмерных игр, предназначенных для магазина Nokia Store, и в первом же году своей работы вошла в тройку лучших компаний Индии. На настоящий момент игры компании PlayBuff были загружены из магазина Nokia Store свыше 65 миллионов раз. По количеству загрузок компания входит в число лучших 25 разработчиков.
Параллельно компания начала работу над играми в трех жанрах, которым в ближайшие 2–3 года планируется уделить больше внимания: гонки, многопользовательские шутеры с видом от третьего лица и мобильные социальные игры. Шутер этой компании под названием Battle It Out * был недавно выпущен и опубликован в магазине Apple App Store, а многопользовательская социальная игра Bands of Woods * находится на этапе активной разработки.
На данный момент компания PlayBuff выпустила два наименования на основе Racing Thrill. Игра Death Drive: Racing Thrill была впервые выпущена в апреле 2014 года в виде приложения для устройств с iOS *, а затем ее выбрали специалисты Майкрософт для переноса на платформы Windows * 8 и Windows Phone *.
Затем игра Death Drive: Racing Thrill была переделана для поддержки интуитивного управления жестами и стала одной из победительниц на первом этапе конкурса Intel®Perceptual Computing Challenge 2013. После этой победы Кумар и его разработчики потратили 5 месяцев на работу с Intel RealSense SDK, чтобы добавить полное управление жестами и голосом в преддверии общедоступного выпуска версии с поддержкой Intel RealSense SDK.
Предложенная компанией PlayBuff концепция решения для электронных медицинских карт с управлением жестами была отобрана как одна из лучших десяти идей на творческом этапе глобального конкурса Intel® RealSense™ App Challenge 2014,на который были поданы сотни заявок со всего мира. Компания PlayBuff перешла на этап разработки этого конкурса и теперь работает над прототипом решения электронных медицинских карт с управлением голосом и жестами. Такая система позволит врачам получать доступ к медицинским картам пациентов, ни к чему не прикасаясь, и тем самым снизить риск распространения инфекции контактным путем.
Игра Death Drive: Racing Thrill скоро будет выпущена для устройств под управлением Windows 8 со встроенной камерой Intel RealSense 3D. Пакет Intel RealSense SDK можно загрузитьздесь.
Для получения дополнительных сведений о компании PlayBuff Studios и ее играх, в том числе Death Drive: Racing Thrill, посетите сайт этой компании.
Полезные ресурсы
Документация
Разработчики получили значительную пользу от изучения документации к Intel RealSense SDK и смогли быстро интегрировать SDK без существенных затруднений. Кумар настоятельно рекомендует всем разработчикам выделить время и внимательно ознакомиться с правилами проектирования на этапе формирования концепции разрабатываемого приложения, поскольку это существенно улучшит весь процесс разработки и поможет правильно применить функциональность Intel RealSense SDK.
Документацию к Intel RealSense SDK можно загрузитьздесь.
Поддержка Intel
Кумар положительно отзывается от поддержки, полученной им лично и всей командой PlayBuff от Intel в процессе интеграции Intel RealSense SDK, особо указывая на прозрачность работы и быстроту реагирования службы поддержки. На обращения в службу поддержки и по вопросам, связанным с оборудованием, и по техническим вопросам, таким как трудности с хранением откалиброванных данных и отражения, ответ всегда давался в течение одного-двух дней.
Технология Intel RealSense
Intel Developer Zone для RealSense
Intel® RealSense™ Developer Kit
Учебные материалы по технологии Intel RealSense
Intel, эмблема Intel и Intel Core являются товарными знаками корпорации Intel в США и в других странах.
* Прочие наименования и товарные знаки могут быть собственностью третьих лиц.
© Корпорация Intel, 2015 г. Все права защищены.