読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

iisu SDK を使ったアプリケーションの開発環境構築手順

SoftKinetic

さて、iisu SDK を使ったアプリケーションの開発環境を作ってみましょう。結構大変ですw

今回の環境は以下の通りです。

ライブラリのビルド

iisu SDKのコアライブラリの一つである「easiiSDK.lib」というライブラリがあります。このライブラリはインストール時にコピーされるのですが、どうもVisual Studio 2008でコンパイルされているためか、そのままリンクさせるとリンクエラーが発生しました。調べてみるとサンプルが格納されているフォルダ(通常は「C:\Users\<ユーザー名>\Documents\iisuSDK\samples\iisu\easii\EasiiSDK」)にプロジェクト一式入っていました。まずはこのプロジェクトをVisual Studio 2012でビルドして利用できるようにします。

1. 先ほどのフォルダに「EasiiSDK.vcproj」があるので、それを開きます。

2. Debugのビルド後のコピーで、生成されたライブラリ名が違うのでに変更します

3. 変更後のコマンドは「xcopy "$(OutDir)$(ProjectName)-d.lib" "$(IISU_SDK_DIR)\lib" /y」 です

4. メニューの「ビルド|バッチビルド」からDebugおよびReleaseをビルドします

5. ビルドが正常に終了したら「C:\Softkinetic\iisu\lib」に生成されたライブラリ(easiiSDK.lib)がコピーされています。

アプリケーションの作成

1. Visual Studio を起動し、C++のコンソールアプリケーション プロジェクトを作成します。

2. 各種設定を追加します

  • 追加のインクルード ディレクトリ:$(IISU_SDK_DIR)\include\iisu;
  • 追加のライブラリ ディレクトリ:$(IISU_SDK_DIR)\lib;
  • 追加の依存ファイル:

    • Debug:iisuSDK.lib;easiiSDK-d.lib;
    • Release:iisuSDK.lib;easiiSDK.lib;

3. コードを書きます。今回は「iisu Cpp developer guide.pdf」に載っている、最初のコードを入力しています。

// ConsoleApplication13.cpp : コンソール アプリケーションのエントリ ポイントを定義します。

//

#include "stdafx.h"

#include <iostream>

#include <EasiiSDK\Iisu.h>

using namespace SK::Easii;

int _tmain(int argc, _TCHAR* argv[])

{

try {

Iisu& iisu = Iisu::instance();

iisu.init();

iisu.start();

int frame = 0;

while ( frame < 100 ) {

if ( iisu.update() ) {

iisu.acquire();

frame = iisu.getScene().getSource().getFrame();

User& user = iisu.getScene().getUser( 0 );

if ( user.isActive() ) {

auto position = user.getMassCenter();

std::cout << "User active at " << position << std::endl;

}

iisu.release();

}

}

iisu.stop();

iisu.shutdown();

}

catch ( std::exception& ex ) {

std::cout << ex.what() << std::endl;

}

return 0;

}

4. とりあえずビルドします。

5. おそらくこのような感じのエラーがでると思います

6. friend 宣言している関数の呼び出し規約が「SK_SDK_DECL(実際は__stdcall)」なのに、こちらには設定されていないので、「::」の前に「SK_SDK_DECL」を入れます。これを同様のエラーすべてに適用するとビルドができるようになります。

このコードはユーザーの検出なので、おそらくコンソール画面が表示されるだけですが、ビルドおよび実行までは確認できました。