パーポーフルート公式ブログ
【開発】【iOS】SIO2 - Blender で作ったシーンファイルを表示させる(2)

2009/08/21
テーマ: 開発 / iOS / 2009 / すべて


前回は、Tutorial04 を元にして、ヤシの木と立方体のシーンが iPhone シミュレータで描画できることを確認しました。

今回は、Tutorial06_2 を元にして、自分で作ったシーンに対して物理演算が適用できることを iPhone シミュレータで確認します。

Tutorial06 は物理シミュレーションのデモです。 シーンファイル(Tutorial06.blend)には、起伏のある広場(?)、球体、円錐、Blender のマスコットのお猿さん(Suzanne)などが含まれます。各物体は物理シミュレーションの対象となるように Actor 属性が設定がされています。iPhone シミュレータで Tutorial06 を実行すると、広場に物体がばらばらと落ちてきます。さらに、カメラを物体にぶつけることで物体を動かすことができます。

プロジェクトの作成

SIO2_SDK_v1/tutorial06_2 を SIO2_SDK_v1/foo06_2 としてコピーし、ここを今回の作業場所とします。

ソースの(軽微な)変更

前回同様、読み込むシーンファイルの名前とインストールされるプログラムの名前を変更します。

Blender でシーンを作成

以下の物体を配置しました。括弧内はプリミティブの種類と設定した属性です。

  • 地面(Plane, Static, Actor)
  • ビルを模した直方体(Cube, Static, Actor)
  • トイレットペーパー(Cylinder, RigidBody, Actor, Bounds=Cylinder)
  • 何の変哲もないボール(Sphere, RigidBody, Actor, Bounds=Sphere)
  • カメラ(Lens=80deg)

Actor, RigidBody, Bounds の設定は、Logic panel(F4) から行います。 この状態で Blender から Start Game(P) すると、Actor 設定をした物体が自由落下して床に衝突する様子を見ることができます。

逐一 iPhone シミュレータで確認することなく、かなりの作業が Blender 上で完結するのは SIO2 の良いところだと思います。

Blender の練習のために、地面とビルには "FOO BAR" テクスチャ、トイペにはトイペテクスチャを貼りました。(見栄えを少し良くするためでもあります)

ちなみに、Actor 設定したオブジェクトを SIO2 エクスポータでエクスポートすると、"flags(1)" という行がオブジェクトを表すテキストファイルに追加されるようです。

Object transform scale に注意!

Blender でオブジェクトの大きさを変えるときは Object transform の scale を調整することが多いかと思いますが、そうして scale を変えたオブジェクトは SIO2 では衝突判定されないようです。(正確には scale が 1.0 じゃないとだめみたいです。理由までは追えていないです...)

Object mode で Object scale を変更するのではなく、Edit mode で Mesh 自体の大きさを変更すれば OK です。

動作確認

前回同様 .sio2 形式にエクスポートした後、Command + Enter でビルドして実行すると、カメラとトイペ(と何の変哲もない球)が床に落ちて以下の画面になりました。

画面ドラッグでカメラを移動させると、トイレットペーパーを蹴散らすことができます。あなたの家のトイレで実際にやるともう少し面白いかもしれません。

床の Object scale を 1.0 でない値にすると、カメラとトイペが床を突き抜けてしまいました。とりあえずは、こういうもんだと思って Object scale を使わないようにすれば良さそうです。

次回は、未定ですが、Bullet Vehicle を SIO2 で使う方法が分かればいいなあといったところです。


2009/08/21
テーマ: 開発 / iOS / 2009 / すべて