В лабораторной работе №2 (идентификация лица) сказано: - в FaceTracking.cs: удалим или закомментируем функцию SimplePipeline, класс MyUtilMPipeline и изменим функцию AdvancedPipeline... Класса MyUtilMPipeline нет в проекте вообще; Функции AdvancedPipeline так же нет. Материалов к лабораторной №2 в начале работы (по ссылке открывается та же страница) тоже нет.Это ошибки или используется другая версия примера? |
Возможности использования Intel Perceptual Computing SDK в игровых приложениях
Презентацию к данной лекции можно скачать здесь.
6.1. Введение
С середины XX века, когда начали появляться первые компьютерные игры, все в большей степени способом проведения досуга становится прохождение различных испытаний в некоторой реальности, воссозданной в той или иной компьютерной игре. И современный мир уже невозможно представить без игровой индустрии. С точки зрения интересующей нас темы, сфера разработки игровых приложений предоставляет большие возможности.
Идеи естественно-интуитивного взаимодействия предполагают возможность вывести диалог с компьютером на уровень, приближенный к общению с другим человеком. Для взаимодействия можно использовать устную речь на естественном языке, мимику и жесты. Приложения, реализующие эти идеи, позволяют пользователям прочувствовать эффект присутствия и погружения. Именно такие эффекты востребованы в игровых приложениях.
Первое, что приходит на ум, реализация жестового или голосового управления действующими персонажами в игре. Например, управление автомобилем с помощью воображаемого руля или естественное выполнение "магических" жестов или произнесение заклинаний в соответствующих играх. Использование модуля отслеживания 2D/3D объектов может "оживить" картины или любимые книжки и позволить взаимодействовать с их героями и объектами. С помощью технологии дополненной реальности и модуля отслеживания движений пальцев и рук можно добиться высокого взаимопроникновения реального и виртуального миров.
В данной лекции рассмотрим примеры использования идей естественно-интуитивного взаимодействия в игровых приложениях, рассмотрим возможности добавления идей, реализованных в Intel Perceptual Computing SDK, в игровые приложения, разрабатываемые с использованием игровых процессоров Unity и Havok Vision или таких наборов инструментов, как openFramework и Processing.
6.2. Примеры и возможности использования идей естественно-интуитивного взаимодействия в игровых приложениях
Игровые приложения часто предполагают глубокую вовлеченность игрока в процесс, с другой стороны идеи естественно-интуитивного взаимодействия позволяют пользователям прочувствовать эффект присутствия и погружения. В связи с этим с первыми выпусками Intel Perceptual Computing SDK сразу стали появляться простые игры, использующие возможности распознавания жестов, лиц и речи.
Одно из первых игровых приложений, разработанных с использованием возможностей Intel Perceptual Computing SDK, Kung Pow Kevin реализует жестовое управление пользовательским интерфейсом и позволяет создавать и загружать профиль пользователя, используя идентификацию лица. Однако наиболее интересным в игровых приложениях является использование мимики, жестов и речи для управления игровым процессом. В Kung Pow Kevin игровой процесс повторяет известную игру "Ладушки", в данной игре без распознавания жеста: раскрытая ладонь - не обойтись.
В этой игре использованы элементы пальчиковой гимнастики, которая является прекрасным средством для развития мелкой моторики при этом стимулируется область мозга, отвечающая за речь. В данном направлении можно найти множество идей для разработки игр, использующих возможности Intel Perceptual Computing SDK. У детей вызывает неподдельный восторг ситуация, когда персонаж на экране повторяет жесты или выполняет некоторые действия в ответ на определенные жесты, при этом обычно все действия сопровождаются рассказом некоторой истории, примеры жестовых игр рис. 6.1.
Другая идея основана на любви детей изображать машину, управляемую воображаемым рулем и с соответствующим звуковым сопровождением. Реализация подобной идеи средствами Intel Perceptual Computing SDK может выглядеть как на рис. 6.2.
В настоящее время существует ряд приложений, позволяющих управлять движущимися объектами с помощью жестов.
Управление автомобилем: https://www.youtube.com/watch?v=4ODA2uWe7yQ.
Управление самолетом: https://www.youtube.com/watch?v=KPE332rX5Yc.
Еще одна возможность приложения идей естественно-интуитивного взаимодействия в компьютерных играх заключается в создании игровых миров по мотивам произведений о магах и волшебниках. Очень эффектно и захватывающе выглядит возможность выполнять магические жесты и произносить заклинания, так чтобы в игровом мире происходили соответствующие реакции. Примером может служить приложение: https://www.youtube.com/watch?v=V9ut24ua-zs.
Часто встречаются игры, в которых реализуется уход и взаимодействие с виртуальным домашним животным, когда-то все начиналось с тамагочи. Пример приложения, реализующего уход за виртуальным животным с использованием идей естественно-интуитивного взаимодействия: https://www.youtube.com/watch?v=71WHObUzRaQ.
Использование модуля отслеживания 2D/3D объектов может "оживить" картины или любимые книжки и позволить взаимодействовать с их героями и объектами. С помощью технологии дополненной реальности и модуля отслеживания движений пальцев и рук можно добиться высокого взаимопроникновения реального и виртуального миров. Пример приложения: https://www.youtube.com/watch?v=VWHmd5ZbVy4.
Идеи естественно-интуитивного взаимодействия можно успешно применять при создании игр-головоломок. Например, было бы естественным использовать жесты для сборки картинки из отдельных частей в пазлах или для управления падающими фигурками в тетрисе. Существует интересный пример приложения, реализующего жестовое управление марионеткой: https://www.youtube.com/watch?v=LCWPv67uhxE.
Если развивать эти идеи дальше, можно предположить, что использование идей естественно-интуитивного взаимодействия является будущим индустрии компьютерных игр. Ссылка на видео: https://www.youtube.com/watch?v=1edFLuMvyOs.
6.3. Игровые движки и фреймворки, основные возможности
В разработке игр обычно используются специальные вспомогательные средства, облегчающие процесс разработки. К таким средствам относятся базовые средства разработки (фреймворки) и игровые процессоры (движки).
Фреймворк является некоторым каркасом для разработки приложений, при этом он должен облегчать разработку и объединение разных компонентов большого программного проекта. В отличие от библиотек, которые объединяют набор подпрограмм близкой функциональности, фреймворк содержит в себе большое количество разных по назначению библиотек. Примерами фреймворков для разработки игр могут служить openFrameworks и Processing.
-
Processing объединяет в себе язык программирования с открытым исходным кодом и интегрированную среду разработки, полученный фреймворк преследует цель обучения программированию в графической среде и служит основой для электронного альбома рисунков. Основная цель среды Processing состоит в том, чтобы служить инструментом, позволяющим людям далеким от программирования начать программировать и незамедлительно видеть результаты своей работы. Язык, используемый в Processing, построен на основе языка программирования Java, но использует упрощенный синтаксис и графическую модель программирования.
-
OpenFrameworks - набор инструментальных средств с открытым кодом, разработанный для "творческого кодирования", написан на С++ и может работать под Windows, MacOS X, Linux, iOS и Android.
OpenFrameworks концентрируется на "творчестве" и использует изображения, в этом он похож на фреймворк Processing, оба эти проекта предоставляют простой интерфейс к мощным библиотекам. Главное отличие openFramework от Processing состоит в используемом языке, первый написан на С++ тогда как второй на Java. Многие пользователи отмечают сходство этих двух библиотек.
Игровой процессор включает в себя инструменты, созданные для упрощения и ускорения процесса разработки игр, в отличие от фреймворка, который просто предоставляет набор полезных и удобных библиотек, процессор (движок) определяет логику игры. Примером может служить Unity и Havok Vision.
-
Unity (или Unity3D) - кроссплатформенный игровой процессор, который имеет встроенную интегрированную среду разработки, создан Unity Technologies. Свыше миллиона разработчиков используют Unity при создании видео игр для различных платформ.
Графический процессор использует Direct3D (Windows, XBOX 360), OpenGL (Mac, Windows, Linux), OpenGL ES (Android, iOS) и собственные API (Wii). При этом поддерживаются следующие возможности:- рельефные преобразования;
- зеркальные отражения;
- преобразования смещения;
- алгоритм SSAO, работающий в режиме реального времени и имитирующий рассеянное непрямое освещение и соответствующее затенение в трёхмерном виртуальном пространстве;
- динамические тени, используются растровые изображения теней.
Unity поддерживает форматы файлов и 3D модели, созданные в 3Ds Max, Maya, Softimage, Blender, modo, ZBrush, Cinema 4D, Chetah 3D, Adobe Photoshop, Adobe Fireworks и Allegorithmic Substance. Созданные с помощью любого из перечисленных приложений 3D объекты могут быть добавлены в игровой проект и управляться из графического пользовательского интерфейса Unity.
- Havok Vision - кроссплатформенный игровой процессор (движок), который предоставляет мощную и гибкую мульти-платформенную технологию, идеально подходящую для разработки игр любого вида и способную обсчитывать и изображать очень сложные сцены, обеспечивая плавную смену кадров. Технология содержит возможности, позволяющие разработчикам игровых приложений преодолеть технические барьеры и создавать действительно привлекательные игры. Подробности: http://www.havok.com/products/vision-engine.
6.4. Возможности интеграции Intel Perceptual Computing SDK с игровыми движками
Для упрощения разработки игр с возможностями естественно-интуитивного взаимодействия Intel® Perceptual Computing SDK поддерживает следующие игровые движки и фреймворки:
- Unity PRO 3.5.1f2 (или более поздний);
- Havok* Vision* SDK version 2012.2.1 (или более поздний);
- openFrameworks v0071 (или более поздний);
- Processing 1.5.1 (или более поздний).
При разработке игровых приложений с помощью Havok* Vision* SDK или openFrameworks можно использовать все функции и утилиты C/С++ библиотек Perceptual Computing SDK в исходном формате, достаточно соответствующим образом настроить проект. Напомним в чем состоит настройка проекта на использование возможностей Intel Perceptual Computing SDK.
Для приложений, использующих при компиляции опцию статической загрузки, Runtime Library (библиотеку времени выполнения) Multi-Threaded Debug (/MTd) или Multi-threaded(/MT) необходимо выполнить следующее:
импортировать страницу свойств props/VS2010-12.Integration.MT.props, которую можно найти в директории $(PCSDK_DIR)/props (напомним, переменная окружения PCSDK_DIR определяет каталог, в который была выполнена установка SDK) или задать следующие настройки проекта:
Include Path |
$(PCSDK_DIR)/include; $(PCSDK_DIR)/sample/common/include; $(PCSDK_DIR)/sample/common/res |
Additional library files (Debug) |
$(PCSDK_DIR)/lib/$(PlatformName)/libpxc_d.lib $(PCSDK_DIR)/sample/common/lib/$(PlatformName)/$(PlatformToolset)/libpxcutils_d.lib |
Additional library files (Debug) |
$(PCSDK_DIR)/lib/$(PlatformName)/libpxc.lib $(PCSDK_DIR)/sample/common/lib/$(PlatformName)/$(PlatformToolset)/libpxcutils.lib |
Для приложений, использующих при компиляции опцию динамической загрузки, Runtime Library Multi-Threaded Debug DLL (/MTd) или Multi-threaded DLL (/MT) необходимо выполнить следующее:
импортировать страницу свойств props/VS2010-12.Integration.MD.props, которую можно найти в директории $(PCSDK_DIR)/props или задать следующие настройки проекта:
Include Path |
$(PCSDK_DIR)/include; $(PCSDK_DIR)/sample/common/include; $(PCSDK_DIR)/sample/common/res |
Additional library files |
src/libpxc/libpxc.cpp |
Additional utility files |
util_capture.cpp, util_capture_file.cpp, util_captureimpl.cpp, util_pipeline_face.cpp, util_pipeline_gesture.cpp, util_pipeline_raw.cpp, util_pipeline_voice.cpp |
Настройка игровых приложений, разрабатываемых с помощью openFramework или Havok Vision SDK, подробно рассмотрена в документации.
В случае использования Unity или Processing доступ к основным возможностям класса UtilPipeline осуществляется с помощью библиотеки libpxcupipeline.
Для настройки игрового приложения, разрабатываемого с помощью Unity, на использование возможностей Intel Perceptual Computing SDK необходимо выполнить следующие действия:
- создать директорию Plugins в папке Assets проекта Unity;
- из папки $(PCSDK_DIR)/framework/Unity/hellounity/Assets/Plugins скопировать в созданную директорию Plugins следующие файлы:
Необходимо иметь ввиду, что libpxcupipeline.dll скомпилирован, как 32-битная библиотека, если разрабатываемое Unity приложение является 64-битным, необходимо перекомпилировать файл libpxcupipeline.dll, как 64-битный и его скопировать в директорию Plugins разрабатываемого приложения. Исходные файлы библиотеки располагаются: (PCSDK_DIR)/framework/common/pxcupipeline.
Для настройки игрового приложения, разрабатываемого с помощью Processing, на использование возможностей Intel Perceptual Computing SDK необходимо выполнить следующие действия:
- убедиться, что в папке, на которую указывает Sketchbook location, есть директория libraries, а в ней есть библиотека PXCUPipeline, если библиотеки там нет, скопировать ее из каталога:
$(PCSDK_DIR)\framework\Processing\libraries;
- для реализации возможности взаимодействия с Intel Perceptual Computing SDK необходимо подключить библиотеку PXCUPipeline:
import intel.pcsdk.*;
Общие процедуры программирования схожи для поддерживаемых фреймворков и движков, поскольку их поддержка основана на одной и той же базовой библиотеке.
Инициализация | Используется функция Init(), в которой выполняется инициализация конвейера, основанного на классе UtilPipeline. Этот конвейер объединяет в себе обработку цветных изображений, определение и отслеживание положения лица и основных маркеров, отслеживание рук и пальцев, распознавание жестов, распознавание речи и голосовых команд. |
Обработка данных | Процесс обработки данных для каждого фрейма начинается с вызова функции AcquireFrame(), которая блокирует фрейм до получения результатов обработки данных. Заканчивает процесс обработки данных вызов функции ReleaseFrame(), которая снимает блок с фрейма и подготавливает обработку следующего фрейма. Между вызовами этих двух функций приложение может выполнить серию вызовов функций, которые возвращают результаты распознавания и обработки цветных изображений, мимики, жестов и речи. |
Завершение работы | Приложение использует функцию Close() для закрытия конвейера и освобождения всех ресурсов. |
В заключение лекции отметим, что идеи естественно-интуитивного взаимодействия и возможности Intel Perceptual Computing SDK находят самое широкое применение в развитии игровых приложений. Для создания действительно стоящих компьютерных игр важно понимать основные общие идеи и принципы разработки игр, необходимо владеть основами компьютерной графики и искусственного интеллекта. Многие технически сложные вопросы помогают решить игровые движки и фреймворки, но чтобы эффективно с ними работать, необходимо потратить время на их освоение.