頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


BlenderのモデルをOpenGL ES使ってiOSで表示する

Blenderで作った立体をiOSで動かすのにはどうるすのかな、って思っていくつかチュートリアルをやってみたりしたのよ。その流れというか概要をざっくりとメモしておくわ。将来の自分用かな。

How To Export Blender Models to OpenGL ES: Part 1/3 | Ray Wenderlich
↑三部作の一つ目のチュートリアル。Blenderで作った立方体にテクスチャー画像を割り当てた場合の解説。
Blenderで出力したobjファイルをそのままXcodeで読み込んで、、、なんてことはしないみたい。
一度blender2openglesってコードでobjファイルを処理してiOSで使えるファイル(〜.hと〜.c)を作成してる。それをXcodeのプロジェクトで使ってる。
アプリではGLKit(GLKBaseEffect)を使って自作のシェーダーは使わず。


How To Export Blender Models to OpenGL ES: Part 2/3 | Ray Wenderlich
↑二つ目のチュートリアルだと一つ目のと違ってBlenderで立体表面にテクスチャー画像を貼付けず、マテリアルを設定している。
そのためBlenderでの出力時のファイルが二つ(objとmtl)になって、それに対応してblender2openglesも中身が変わってる。
マテリアルを設定するってことは反射光と拡散光を設定できるわけで、アプリ内でも双方を設定してる(Part1と同じくGLKitのGLKBaseEffectを使ってる)。


How To Export Blender Models to OpenGL ES: Part 3/3 | Ray Wenderlich
↑三つ目ではアプリで使う.hと.cはPart2と同じ(マテリアルが設定されてる)なんだけど、アプリでそれを利用するためGLKBaseEffectなどは使わずに自分でシェーダーを記述している。例のバーテックスシェーダーとフラグメントシェーダーの両方を書くあれね。
ここで取り上げられている色を決定するアルゴリズムのベースがPhongモデルでシェーダーのことをPhongシェーダーって言うんだそうな。これだとより自然な描画ができるらしい。


ところで実際に自分がBlenderで作った簡単な形状のモノをiOSで表示させてみようと思ったんだけどね。

Blenderでモデリング

↑こういうの。表面にはマテリアルを設定。
objとmtlのファイルを出力して、それをiOSで使える形(.cと.h)に変換するところでうまくいかない。コードで言うとPart2のblender2openglesってやつ(この変換するコードはPart2と3は同じ)。これがなぜか実行時に途中で止まっちゃう。
なんでだろうなあ?とobjファイルの中を見てみると

法線情報がないobjファイル

↑法線情報がない。
おかしいな、ちゃんと出力時に’Include Normals’にチェック入れてるんだけどな、と思ったんだけどBlender内でUV展開(って言うのかな?)をしていないのが原因だった。

Blenderのオブジェクトデータ(って言うのか?あの逆三角形のアイコンのところね)のところでUV Mapsってところがあるので+ボタンをおしてUVMapというのを作る必要があるみたい。

UV Maps

↑これは作成した後の図。

正常なobjファイル

↑こうしておけばさっきは抜けていた法線情報が追加される。

iOSでレンダリング

↑めでたくiPhoneで描画(Phongシェーダー)。

<< Blenderでなぜかレンダリングしてくれなくなった  TopPage  曲線萌えとはこのことか >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/867-708efb16




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad