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

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

Базовые средства разработки (фреймворк) Processing* (настройка окружения, простейший пример)

Processing объединяет в себе язык программирования с открытым исходным кодом и интегрированную среду разработки, полученные средства разработки преследуют цель обучения программированию в графической среде и служит основой для электронного альбома для рисунков. Основная цель среды Processing состоит в том, чтобы служить инструментом, позволяющим людям далеким от программирования начать программировать и незамедлительно видеть результаты своей работы. Язык построен на основе языка программирования Java, но использует упрощенный синтаксис и графическую модель программирования.

Для использования Processing framework скопируйте директорию framework\Processing\libraries вместе со всеми поддиректориями в рабочую папку.

Представленный ниже код демонстрирует простое Processing приложение, которое отображает захваченное изображение на канву. Пример вызывает функцию Init в функции setup(), обработка данных ведется в функции draw(). Пример использует функцию QueryLabelMapAsImage для получения изображения и рисования на холсте. Функция Close в этом примере не используется.

import intel.pcsdk.*;
private PImage display;
private PXCUPipeline pp;
void setup() {
   pp=new PXCUPipeline(this);
   pp.Init(PXCUPipeline.GESTURE);
   int[] size=new int[2];
   pp.QueryLabelMapSize(size);
   display=createImage(size[0],size[1],RGB);
}
void draw() { 
   if (!pp.AcquireFrame(false)) return;
   if (pp.QueryLabelMapAsImage(display)) image(display,0,0);
   pp.ReleaseFrame();
}

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

Скриншот простого Processing* приложения

Рис. 12.2. Скриншот простого Processing* приложения

openFramework* (настройка окружения, простейший пример)

openFramework – набор инструментальных средств с открытым кодом, разработанный для "творческого кодирования", написан на С++ и может работать под Windows, MacOS X, Linux, iOS и Android.

OpenFramework концентрируется на "творчестве" и использует изображения, в этом он похож на фреймворк Processing, оба эти проекта предоставляют простой интерфейс к мощным библиотекам. Главное отличие openFramework от Processing состоит в используемом языке, первый написан на С++ тогда как второй на Java. Многие пользователи отмечают сходство этих двух библиотек.

При создании openFrameworks приложения необходимо импортировать список свойств props/VS2010-12.Integration.MD.props.

или выполнить следующие установки:

Include Path $(PCSDK_DIR)/include; $(PCSDK_DIR)/sample/common/include; $(PCSDK_DIR)/sample/common/res
Additional library file 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

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

#include "ofAppGlutWindow.h"
#include "ofMain.h"
#include "util_pipeline.h"
 
class testApp:public ofBaseApp {
public:
   void setup();
   void draw();
protected:
   ofEasyCam                camera;
   ofTexture      texture;
   UtilPipeline   pp;
};
 
void testApp::setup() {
   ofSetVerticalSync(true);
   ofDisableNormalizedTexCoords();
   glEnable(GL_DEPTH_TEST);
   camera.setDistance(640);
 
   pp.EnableGesture();
   pp.Init();
   pxcU32 ww, hh;
   pp.QueryImageSize(PXCImage::IMAGE_TYPE_DEPTH,ww,hh);
 
   texture.allocate(ww,hh,GL_LUMINANCE);
   ofDisableDataPath();
}
 
void testApp::draw() {
   if (pp.AcquireFrame(false)) {
       PXCImage *im;
       if (pp.QueryGesture()-> QueryBlobImage(PXCGesture::Blob::LABEL_SCENE,0,&im)>= PXC_STATUS_NO_ERROR) {
           PXCImage::ImageData data;
           if (im-> AcquireAccess(PXCImage::ACCESS_READ,&data)>=PXC_STATUS_NO_ERROR) {
               texture.loadData(data.planes[0],texture.getWidth(),texture.getHeight(),GL_LUMINANCE);
               im->ReleaseAccess(&data);
           }
       }
       pp.ReleaseFrame();
   }
   ofBackground(0,0,128);
   ofSetColor(255);
   camera.begin();                
   ofRotateX(ofRadToDeg(.5));
   ofRotateY(ofRadToDeg(-.5));
   texture.draw(0,0);
   camera.end();
}
int main() {
   ofAppGlutWindow window; // create a window
   ofSetupOpenGL(&window, 1024, 768, OF_WINDOW);
   ofRunApp(new testApp()); // start the app
}

Результат работы приложения можно посмотреть на рис. 12.3

Скриншот простого openFrameworks приложения

Рис. 12.3. Скриншот простого openFrameworks приложения

Контрольные вопросы:

  1. Чем различаются понятия: игровой процессор (движок) и базовые средства разработки (фреймворк)?
  2. В чем основные особенности и возможности игрового процессора Unity?
  3. В чем особенности создания Unity приложений с использованием Intel Perceptual Computing SDK?
  4. В чем основные особенности и возможности базовых средств разработки Processing framework?
  5. В чем особенности создания Processing приложений с использованием Intel Perceptual Computing SDK?
  6. В чем основные особенности и возможности базовых средств разработки openFramework?
  7. В чем особенности создания openFramework приложений с использованием Intel Perceptual Computing SDK?
Гульзия Калымова
Гульзия Калымова
Александр Радченко
Александр Радченко
Юрий Симонов
Юрий Симонов
Россия, Москва, Московский Государственный Университет им. М.В. Ломоносова, 2011
Вадим Сизоненко
Вадим Сизоненко
Россия, Братский р-н