SIO2とBlenderの勉強 その1

なんでSIO2とBlenderかっていうと、
iPhoneで3Dやるのによさげだから。


OpenGL ESでやるのとどっちがいいのか、
どう違うのかとか今のところはさっぱり不明。
(やっていくうちに見えて来るはず)


まず簡単な3Dモデリングデータを
こちらのチュートリアルを参考に作ろうとしてみた。
本当に初めての方のために作成したBlenderチュートリアル


→「12. メッシュの編集2」あたりで眠くなってしまった・・・




まあ実際に3Dやるとしたら自分はモデリングデータの作成よりは
3Dエンジンでの描画側をやると思うので、
SIO2の方をやるか、と思ってみつけたページがこちら。
SIO2とシティエンジンでiPhoneの中に街を作るテスト中


なんかここに載ってるシティエンジンってのがすごい。
よくわかんないけどBlender用のデータらしい。
これをiPhone上で動かせるようになるだけでも、
3Dできますアピール効果は高そう。


同ページにこんなやり方が書いてある。

SIO2でブレンダーからiPhoneに持ってくるテスト中

手順は簡単です。
ブレンダーで作ったシーン上のオブジェクトを全て選択して、SIO2ファイルを作成。
あとは、チュートリアル04のプロジェクトを開発環境XCodeコンパイルするだけで、iPhoneアプリ
完成します。


チュートリアル04のプロジェクト」とやらはここからSIO2をダウンロードしたら中に入っていた。
それをビルドするだけでびっくり、3Dでグリグリ動くこんなデモが!


Blenderも3Dのなんたるかも理解せずうまくいったのはここまで。
「ブレンダーで作ったシーン上のオブジェクトを全て選択して、SIO2ファイルを作成」
っていうところがわからない(BlenderのExportメニューにSIO2の文字はなかった)。


で、諦めかけて「.sio2 blender」でググったら意外にも日本語の記事出てきた!
SIO2 - Blender で作ったシーンファイルを表示させる

Blender シーンを独自形式に変換するため、SIO2 SDK 付属のエクスポータ SIO2_SDK_v1/exporter/sio2_exporter.py を使います。
・エクスポート先ディレクトリ SIO2_SDK_v1/foo04/export/ を作る
・シーンを全選択
・sio2_exporter.py を Blender から実行して、エクスポート先ディレクトリを指定してエクスポート


この「sio2_exporter.py を Blender から実行」がわからずさらにググってみたところ、
http://www.electrodream.jp/iphonedev/index.php/2009/11/opengl-es1-1への道のり・・4/
ここに下記のように書いてあった。

「/Applications/blender/blender.app/Contents/MacOS/.blender/scripts/」に直接、sio2のエクスポーター
(sio2_exporter.py)を入れ、メニューの「File」「Export」から直接出すことで、モデルの書き出しが行えました。


自分の環境ではパスがちょっと違った。
/Applications/blender.app/Contents/MacOS/.blender/scripts


で、これでなんとかScene.sio2というファイルの書き出しに成功!


これをtutorial04プロジェクトに追加して、template.mmというファイルを

void templateLoading( void )
{
	unsigned int i = 0;
	
	sio2ResourceCreateDictionary( sio2->_SIO2resource );
	
	sio2ResourceOpen( sio2->_SIO2resource,
//					  "tutorial04.sio2", 1 );
					 "Scene.sio2", 1 );

こう書き直せばOK!


・・・と思ってはりきってビルドして動かしてみたら画面真っ白。


シティエンジンの書き出しがうまくいってないらしい。
やっぱりちゃんとBlenderの操作を学ぶ必要がある。