Северный (Арктический) федеральный университет им. М.В. Ломоносова
Опубликован: 23.10.2013 | Доступ: свободный | Студентов: 1765 / 617 | Длительность: 09:26:00
Специальности: Программист
Лекция 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?
Гульзия Калымова
Гульзия Калымова
Александр Радченко
Александр Радченко