2012年4月28日土曜日

openGLメモ

OpenGLプログラミングメモ
http://www21.atwiki.jp/opengl/
細かいところまで載っていそうなブログ

ミクミクダンス+webGL をやってる人のブログ
http://d.hatena.ne.jp/edvakf/20111020/1319083256


collada形式についてやってる人のブログ(移転した)
http://pr0jectze10.blogspot.jp/2011/11/collada.html
移転先
http://nullorempry.jimdo.com/


2012年4月17日火曜日

OFでKinectSDK1.0を使用する方法_01

今回はopenCV2.3.1を用いて表示させている

【インクルード関連】
// 追加のインクルードディレクトリ
C:\Program Files\Microsoft SDKs\Kinect\v1.0\inc
C:\opencv\include

// 追加のライブラリディレクトリ
C:\Program Files\Microsoft SDKs\Kinect\v1.0\lib\x86
C:\opencv\lib

// 追加の依存ファイル
Kinect10.lib
opencv_core231.lib
opencv_imgproc231.lib
opencv_highgui231.lib
opencv_objdetect231.lib


【testApp.h】

#pragma once
// Windows Header Files
#include <ole2.h>// ←COM 開発の基本となるヘッダー

// Kinect Header
#include <NuiApi.h> // ←Kinectの機能を使う際に読み込むヘッダー

// OpenCV Header Files
#include <opencv2\opencv.hpp>
// openFrameworks Header Files
#include "ofMain.h"

#define CAMERA_WIDTH 640
#define CAMERA_HEIGHT 480

class testApp : public ofBaseApp{

public:
void setup();
void update();
void draw();

void keyPressed  (int key);
void keyReleased(int key);
void mouseMoved(int x, int y );
void mouseDragged(int x, int y, int button);
void mousePressed(int x, int y, int button);
void mouseReleased(int x, int y, int button);
void windowResized(int w, int h);
void dragEvent(ofDragInfo dragInfo);
void gotMessage(ofMessage msg);
void exit();

INuiSensor *kinect;
};

【testApp.cpp】
bool capFlag = false;
HANDLE cameraEvent;
HANDLE cameraHandle;
std::string windowName;
IplImage *img_camera = 0;


//--------------------------------------------------------------
void testApp::setup()
{
int nCount = 0;
HRESULT hr = S_OK;
hr = NuiGetSensorCount(&nCount);
hr = NuiCreateSensorByIndex(0, &kinect);
//kinectの初期化
hr = kinect->NuiInitialize(NUI_INITIALIZE_FLAG_USES_COLOR);
hr = S_OK;
if(hr!=S_OK){
std::cout << "failed NuiInitialize\n";
while(1){};
exit();
}
cameraEvent = CreateEventW(0, TRUE, FALSE, 0); // ←CreateEvent()のままだと通らないので、直接CreateEventW()を呼び出す必要がある(名前空間の関係か)
hr = kinect->NuiImageStreamOpen(NUI_IMAGE_TYPE_COLOR, NUI_IMAGE_RESOLUTION_640x480,
0, 2, cameraEvent, &cameraHandle);
if(hr!=S_OK){
std::cout << "failed NuiImageStreamOpe\n";
exit();
}

//OpenCVの初期設定
img_camera = cvCreateImage(cvSize(CAMERA_WIDTH, CAMERA_HEIGHT), IPL_DEPTH_8U, 4);
cvNamedWindow("Camera View", CV_WINDOW_AUTOSIZE);


long angle = 0;
kinect->NuiCameraElevationSetAngle(angle);
}

//--------------------------------------------------------------
void testApp::update(){

}

//--------------------------------------------------------------
void testApp::draw(){
HRESULT hr = S_OK;
capFlag = true;
while(capFlag == true){
WaitForSingleObject(cameraEvent, INFINITE);

NUI_IMAGE_FRAME pImageFrame;
hr = kinect->NuiImageStreamGetNextFrame(cameraHandle, 0, &pImageFrame);
if(hr!=S_OK){
std::cout << "failed NuiImageStreamGetNextFrame\n";
exit();
}
INuiFrameTexture *pTexture = pImageFrame.pFrameTexture;
NUI_LOCKED_RECT LockedRect;
pTexture->LockRect(0, &LockedRect, NULL, 0);
BYTE* pBuffer = (BYTE*)LockedRect.pBits;
memcpy(img_camera->imageData, pBuffer, img_camera->imageSize);
cvShowImage("Camera View", img_camera);

kinect->NuiImageStreamReleaseFrame(cameraHandle, &pImageFrame);
int key = cvWaitKey( 10 );
        if ( key == 'q' ) {
            capFlag = false;
}
}
exit();
}
//--------------------------------------------------------------
void testApp::exit()
{
capFlag = false;
kinect->NuiShutdown();
CloseHandle(cameraEvent);

cvReleaseImage(&img_camera);
cvDestroyAllWindows();
}

2012年4月14日土曜日

Corelocationあれこれ


iPhoneアプリで位置情報と地図を使う
ための基礎知識


http://www.atmarkit.co.jp/fsmart/articles/geoios01/01.html

OFxiPhoneでデジタルコンパス
http://openframeworks.jp/forum/topic.php?id=26



2012年4月12日木曜日

ofxSimpleGuiToo導入

ofxAddons
http://ofxaddons.com/
上記のサイトから
ofxSimpleGuiToo
ofxMSAInteractiveObject
の2つのアドオンを入手。

追加のインクルードディレクトリの操作。


するとエラーが出る
fatal error C1083: include ファイルを開けません。'cairo-features.h': No such file or directory

'cairo-features.h'をインクルードしてあげる。
パスは
of_preRelease_v007_vs2010\libs\cairo\include\cairo


2012年4月11日水曜日

http://wisdomsoft.cloudapp.net/203.html 魚拓

C++ アプリケーションから Kinect を制御するプログラムを開発するために、この場では Visual Studio を使ったビルドのための設定方法を紹介します。
注意:この文書は古いバージョンです。 この文書は Kinect for Windows SDK Beta 2 を解説しています。Kinect for Windos SDK 1.0 の記事はこちらです。

ヘッダとライブラリの設定

Kinect for Windows SDK には C++ で開発するネイティブの Windows アプリケーションのためのヘッダファイルとインポートライブラリである LIB ファイルを含んでいます。これらのファイルをプロジェクトに設定し、適切にリンクさせることで Kinect デバイスの機能にアクセスできます。
Kinect for Windows SDK がインストールされているフォルダは環境変数 %KINECTSDK_DIR% に設定されています。自分の環境では、なぜか \ 記号が重複している部分があり正しいパスになっていなかったため、手動で環境変数を修正しました。パスがわからない場合、インストール先(標準で C:\Program Files\Microsoft SDKs\Kinect\v1.0 Beta2)直接開けばパスを確認できます。
この Kinect for Windows SDK がインストールされたフォルダ内に、各種ヘッダファイルが配置されている inc フォルダと LIB ファイルが配置されている lib フォルダがあります。これらのフォルダのパスを Visual Studio に設定する必要があるので、覚えておいてください。
まず、この場では最も単純なコンソールアプリケーションを例に設定します。Visual Studio のファイルメニューから「新規作成」→「プロジェクト」を選択し、「新しいプロジェクト」ダイアログボックスを表示してください。左側の「インストールされたテンプレート」リストから「Visual C++」項目を選択し、中央に表示されているリストの「Win32 コンソールアプリケーション」を選択します。プロジェクトの種類が違っても、後述する設定手順は同じです。
図1 Win32 コンソールアプリケーションの新規作成
Win32 コンソールアプリケーションの新規作成
「名前」テキストボックスに任意のプロジェクト名を入力して「OK」ボタンを押してください。
続いて「Win32 アプリケーション ウィザード」ウィンドウが表示されるので、左側の「アプリケーションの設定」ラベルをクリックし、表示された設定項目のうち「追加のオプション」内の「空のプロジェクト」チェックボックスをチェックしてください。物事を単純にするために、ファイルが何もない状態の空のプロジェクトとして作成します。
図2 アプリケーションの設定
Win32 コンソールアプリケーションの新規作成
「完了」ボタンを押してプロジェクトの準備は終了です。
続いて、プロジェクトに Kinect for Windows SDK のヘッダファイルとインポートライブラリの参照設定が必要です。作成されたプロジェクトのプロパティを開いてください。左側のツリーから「構成プロパティ」→「VC++ ディレクトリ」項目を選択します。
図3 ディレクトリの追加
Win32 コンソールアプリケーションの新規作成
ビルド時にコンパイラやリンカが検索するディレクトリを設定できるので「インクルード ディレクトリ」コンボボックスの「<編集...>」項目を選択し、「インクルード ディレクトリの設定」ダイアログボックスで Kinect for Windows SDK のヘッダファイルが配置されているパスを追加します。
図4 インクルード ディレクトリの設定
Win32 コンソールアプリケーションの新規作成
同様に「ライブラリ ディレクトリ」にインポートライブラリのパスを設定します。
図5 ライブラリ ディレクトリの設定
Win32 コンソールアプリケーションの新規作成
Kinect for Windows SDK の lib フォルダ内には x86 フォルダと amd64 フォルダがあり、32 ビットでコンパイルする場合は x86 フォルダ内の LIB ファイルを、64 ビットでコンパイルする場合は amd64 フォルダ内の LIB ファイルをリンカに設定します。Visual C++ は既定で x86 コンピュータ用の(32 bit ネイティブ)コンパイラが用いられるため、Kinect for Windows SDK も x86 用の MSRKinectNUI.lib ファイルを使いましょう。
以上の設定が終われば、次に MSRKinectNUI.lib インポートライブラリを隣家に設定します。再びプロジェクトのプロパティに戻って「構成プロパティ」→「リンカー」→「入力」を選択してください。表示された設定項目の「追加の依存ファイル」コンボボックスを開いて「<編集...>」項目を選択してください。
図6 インポートライブラリの設定
Win32 コンソールアプリケーションの新規作成
「追加の依存ファイル」ダイアログボックスが表示されるので、テキストボックス内に MSRKinectNUI.lib と入力します。
図7 追加の依存ファイル
Win32 コンソールアプリケーションの新規作成
以上で Kinect for Windows SDK を C++ アプリケーションで利用するための設定は終了です。あとは、実際にコードを書いてビルドするだけです。

http://wisdomsoft.cloudapp.net/231.html 魚拓

ヘッダとライブラリの設定

Kinect for Windows SDK には C++ で開発するネイティブの Windows アプリケーションのためのヘッダファイルとインポートライブラリである LIB ファイルを含んでいます。これらのファイルをプロジェクトに設定し、適切にリンクさせることで Kinect デバイスの機能にアクセスできます。
Kinect for Windows SDK がインストールされているフォルダは環境変数 %KINECTSDK10_DIR% に設定されています。パスがわからない場合、インストール先(標準で C:\Program Files\Microsoft SDKs\Kinect\v1.0)を直接開けばパスを確認できます。
この Kinect for Windows SDK がインストールされたフォルダ内に、各種ヘッダファイルが配置されている inc フォルダと LIB ファイルが配置されている lib フォルダがあります。これらのフォルダのパスを Visual Studio に設定する必要があるので、覚えておいてください。
まず、この場では最も単純なコンソールアプリケーションを例に設定します。Visual Studio のファイルメニューから「新規作成」→「プロジェクト」を選択し、「新しいプロジェクト」ダイアログボックスを表示してください。左側の「インストールされたテンプレート」リストから「Visual C++」項目を選択し、中央に表示されているリストの「Win32 コンソールアプリケーション」を選択します。プロジェクトの種類が違っても、後述する設定手順は同じです。
図1 Win32 コンソールアプリケーションの新規作成
Win32 コンソールアプリケーションの新規作成
「名前」テキストボックスに任意のプロジェクト名を入力して「OK」ボタンを押してください。
続いて「Win32 アプリケーション ウィザード」ウィンドウが表示されるので、左側の「アプリケーションの設定」ラベルをクリックし、表示された設定項目のうち「追加のオプション」内の「空のプロジェクト」チェックボックスをチェックしてください。物事を単純にするために、ファイルが何もない状態の空のプロジェクトとして作成します。
図2 アプリケーションの設定
Win32 コンソールアプリケーションの新規作成
「完了」ボタンを押してプロジェクトの準備は終了です。
続いて、プロジェクトに Kinect for Windows SDK のヘッダファイルとインポートライブラリの参照設定が必要です。作成されたプロジェクトのプロパティを開いてください。左側のツリーから「構成プロパティ」→「VC++ ディレクトリ」項目を選択します。
図3 ディレクトリの追加
Win32 コンソールアプリケーションの新規作成
ビルド時にコンパイラやリンカが検索するディレクトリを設定できるので「インクルード ディレクトリ」コンボボックスの「<編集...>」項目を選択し、「インクルード ディレクトリの設定」ダイアログボックスで Kinect for Windows SDK のヘッダファイルが配置されているパスを追加します。
図4 インクルード ディレクトリの設定
Win32 コンソールアプリケーションの新規作成
同様に「ライブラリ ディレクトリ」にインポートライブラリのパスを設定します。
図5 ライブラリ ディレクトリの設定
Win32 コンソールアプリケーションの新規作成
Kinect for Windows SDK の lib フォルダ内には x86 フォルダと amd64 フォルダがあり、32 ビットでコンパイルする場合は x86 フォルダ内の LIB ファイルを、64 ビットでコンパイルする場合は amd64 フォルダ内の LIB ファイルをリンカに設定します。Visual C++ は既定で x86 コンピュータ用の(32 bit ネイティブ)コンパイラが用いられるため、Kinect for Windows SDK も x86 用の MSRKinectNUI.lib ファイルを使いましょう。
以上の設定が終われば、次に MSRKinectNUI.lib インポートライブラリを隣家に設定します。再びプロジェクトのプロパティに戻って「構成プロパティ」→「リンカー」→「入力」を選択してください。表示された設定項目の「追加の依存ファイル」コンボボックスを開いて「<編集...>」項目を選択してください。
図6 インポートライブラリの設定
Win32 コンソールアプリケーションの新規作成
「追加の依存ファイル」ダイアログボックスが表示されるので、テキストボックス内に Kinect10.lib と入力します。
図7 追加の依存ファイル
Win32 コンソールアプリケーションの新規作成
以上で Kinect for Windows SDK を C++ アプリケーションで利用するための設定は終了です。あとは、実際にコードを書いてビルドするだけです。

Kinect sdk もろもろ情報

【SDK_2012】

定さんが作ったkinectをOFで使うアドオン
https://github.com/sadmb/ofxKinectNui
インストール後、addonの中に入れて、名前を"ofxKinectNui"に直す。





Kinect for Windows SDK Beta AudioCaptureRaw チュートリアル (C++)


http://www.facultyresourcecenter.com/curriculum/TH/pfv.aspx?ID=8924&c1=th-th&c2=TH
Audioを使う場合のための情報。

C++ アプリケーションから Kinect を制御するプログラムを開発するために、この場では Visual Studio を使ったビルドのための設定方法を紹介します。
http://wisdomsoft.cloudapp.net/231.html
ネイティブでsdk1.0を使う場合は、これがいいかも。ちょっと試してみようと思う。





【SDK_2011】


KINECT for Windows SDKをVC++ Nativeで使う(基礎)


http://blogs.msdn.com/b/hirosho/archive/2011/06/27/kinectsdkwithvcppnativebasic.aspx
なんか使えそうな情報かもしれない。

と思ったが、旧バージョンのSDKやないか!!!

2012年4月10日火曜日

oscpack 導入

oscpackの導入のメモ書き

oscpackのダウンロード
http://www.rossbencina.com/code/oscpack
Latest stable release, version 1.0.2をダウンロードする


魚拓
http://d.hatena.ne.jp/dairi_san/searchdiary?word=%2A%5B%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%5D

久しぶりにOSCをつかってみたら少し手間取ったのでメモ書きを残しておく。
0.osc関連ファイルはすべてプロジェクト内にコピーする。
1.ip/win32フォルダにあるcppをすべてipにコピーする
プロパティを開き以下の操作を行う
2.構成プロパティ->C/C++プリプロセッサに「__WIN32__」を追加する。
3.構成プロパティ->リンカ->入力の追加の依存ファイルに「ws2_32.lib」と「winmm.lib」を追加する。
おわり

ここで、__WIN32__ではなく”OSC_HOST_LITTLE_ENDIAN”とする。


/**** skeltalviewerへの適応 ****/
1.インクルードパスの設定
これは

と一連のファイルをソリューションに追加して、追加のインクルードディレクトリを設定する


※.cppファイルの中に"ip/........"というふうにインクルードする記述があるのでそれを注意する。


2.プリコンパイル済みヘッダーを使用しない
構成プロパティ→C/C++→プリコンパイル済みヘッダー
の"プリコンパイル済みヘッダー"のタグを"プリコンパイル済みヘッダーを使用しない"にする。
※この設定をしないとエラーが出てしまう。(未解決)


ここまでで一応通る。


3.ソースコード

/*------------------------------------------------
OSCセットアップ
------------------------------------------------*/
/**** ここから ****/
// インクルードファイル
#include "OscOutboundPacketStream.h"
#include "UdpSocket.h"
#include "IpEndpointName.h"

// アドレスとポートの設定
#define ADDRESS "localhost"
#define PORT 8000

#define IP_MTU_SIZE 1536

// ソケットを用意する
UdpTransmitSocket socket( IpEndpointName( ADDRESS, PORT) );
// 送信するパケットを用意(たぶん)
char buffer[IP_MTU_SIZE];
osc::OutboundPacketStream p( buffer, IP_MTU_SIZE);

/**** ここまで ****/


/*------------------------------------------------
OSCの送信関数
------------------------------------------------*/
void OscSender()
{
int temp = 123454321;
p.Clear();
p << osc::BeginMessage( "/test" )
<< (int)temp   //←ここに送信する値を入れる
<<osc::EndMessage;
socket.Send( p.Data(), p.Size() );
}

2012年4月2日月曜日

iOS SDKに関する記事

iOS Developper University Programで実機でアプリを動作させるまで
http://www.media.t-kougei.ac.jp/kuhadoku/doku.php?id=blog:ios_university_program%E3%81%AE%E6%B5%81%E3%82%8C


iOS Developper Programには大きく分けて3つのライセンスがある。個人、企業、教育機関。
https://developer.apple.com/jp/programs/start/ios/