Опубликован: 23.10.2013 | Уровень: для всех | Доступ: платный | ВУЗ: Северный (Арктический) федеральный университет им. М.В. Ломоносова
Лекция 7:

Поддержка игровых процессоров (движков) и базовых средств разработки

Аннотация: Взаимодействие с openFrameworks. OpenFrameworks: понятия, возможности, функционал. Взаимодействие Intel Perceptual Computing SDK c openFrameworks.

Введение

Презентацию к лекции можно скачать здесь.

Современный мир невозможно представить без игровой индустрии. После того как компьютеры стали доступны в каждом доме, дети с самого малого возраста приучаются к мышке и клавиатуре. 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 должна быть подготовлена следующим образом:

  1. Необходимо в рабочем каталоге создать папки Assets/Plugins
  2. Необходимо скопировать в созданную папку из папки 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();
   }
}

Результат работы данного приложения выглядит следующим образом:

Вид окна простого Unity приложения

увеличить изображение
Рис. 12.1. Вид окна простого Unity приложения
Гульзия Калымова
Гульзия Калымова
Александр Радченко
Александр Радченко
Юрий Симонов
Юрий Симонов
Россия, Москва, Московский Государственный Университет им. М.В. Ломоносова, 2011
Вадим Сизоненко
Вадим Сизоненко
Россия, Братский р-н