Поддержка игровых процессоров (движков) и базовых средств разработки
Введение
Презентацию к лекции можно скачать здесь.
Современный мир невозможно представить без игровой индустрии. После того как компьютеры стали доступны в каждом доме, дети с самого малого возраста приучаются к мышке и клавиатуре. 30% времени, проведенного за компьютером, современный человек проводит в играх.
Игровой процессор и базовые средства разработки: понятия, возможности, функционал
Игровой процессор включает в себя инструменты, созданные для упрощения и ускорения процесса разработки игр, процессор определяет логику игры.
Базовые средства разработки или фреймворк в информационных системах структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. В отличие от библиотек, которые объединяют набор подпрограмм близкой функциональности, фреймворк содержит в себе большое количество разных по назначению библиотек.
Игровые процессоры и базовые средства разработки и Intel® Perceptual Computing SDK
Intel Perceptual Computing SDK поддерживает следующие игровые процессоры и базовые средства разработки:
- Unity PRO 3.5.1f2 (или более поздний);
- Processing 1.5.1 (или более поздний);
- openFrameworks v0071 (или более поздний).
Процессор openFrameworks поддерживает SDK функции или утилиты в исходном формате, остальные в работе с SDK основываются на библиотеке libpxcupipeline, обеспечивающей приспособление класса UtilPipeline, который предоставляет простой доступ к следующим возможностям:
- Захват цветного изображения
- Определение положения лица, а также определение и отслеживание основных маркеров
- Отслеживание рук и пальцев, распознавание поз и жестов
Работа любого приложения проходит через несколько этапов:
- Инициализация
Приложение использует функцию Init для инициализации конвейера, который объединяет в себе обработку цветных изображений, определение и отслеживание положения лица и основных маркеров, а также отслеживание рук и пальцев, распознавание поз и жестов.
- Обработка данных
На этом этапе поочередно вызываются две функции. Функция AcquireFrame ожидает завершения обработки текущего фрейма и блокирует результаты обработки, а функция ReleaseFrame снимает блок и подготавливает следующий фрейм для обработки.
Между функциями AcquireFrame и ReleaseFrame приложение может вызвать серию запросов функций для получения результатов обработки.
- Завершение работы
Приложение использует функцию Close для закрытия конвейера и освобождения всех ресурсов.
Игровой процессор Unity* (настройка окружения, простейший пример)
Unity (или Unity3D) – кроссплатформенный игровой процессор имеет встроенную интегрированную среду разработки, создан Unity Technologies. Свыше миллиона разработчиков используют Unity при создании видео игр для различных платформ.
Рендеринг в 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.
Перед началом использования среда Unity должна быть подготовлена следующим образом:
- Необходимо в рабочем каталоге создать папки Assets/Plugins
- Необходимо скопировать в созданную папку из папки framework\Unity\hellounity\Assets\Plugins файлы:
- libpxcupipeline.dll
- pxcm-structures.cs
- pxcupipeline.cs
Код представленный ниже определяет простое Unity приложение, которое отображает изображение жеста на элемент mainTexture. Пример вызывает функцию Init в функции Start(), вызывает функцию Close в OnDisable(), обработка данных ведется в функции Update(). Пример использует функцию QueryLabelMapAsImage для получения изображения жеста.
using UnityEngine; using System; using System.Runtime.InteropServices; public class TexturePlayback : MonoBehaviour { private Color[] px; private Texture2D tt; private PXCUPipeline pp; void Start () { pp=new PXCUPipeline(); pp.Init(PXCUPipeline.Mode.GESTURE); int[] size=new int[2]; pp.QueryLabelMapSize(size); tt=new Texture2D(size[0],size[1],TextureFormat.ARGB32,false); renderer.material.mainTexture=tt; } void OnDisable() { pp.Close(); } void Update () { if (!pp.AcquireFrame(false)) return; if (pp.QueryLabelMapAsImage(tt)) tt.Apply(); pp.ReleaseFrame(); } }
Результат работы данного приложения выглядит следующим образом: