FlashDevelopでFLARToolKitを使う 2

chakemiです。部屋の掃除が終わらなくて困ってます。。。 今日は、前回使えるようにしたFLARToolKitで3Dオブジェクトを表示してみたいと思います。

開発環境

  • WindowsXP SP3
  • FlashDevelop3
  • FLARToolKit version 2.5.5
  • Papervision3D 2.1 rev920

前回、さくーしゃさんのページからサンプルソースを拝借しましたが、FLARToolKitのソースには、exampleディレクトリにサンプルコードがちゃんと同梱されておりました。。。

さくーしゃさんのソースにもありますが、サンプルの中にはPV3DARAppクラス、ARAppBaseクラスという便利なものがあって FLARToolKitの初期化などを行なってくれています。

今回もコレを利用して簡単に実行してみたいと思います。

3Dエンジンはpapervision3dを使用します。

papervision3dは、Colladaというデータ形式の3Dオブジェクトを読み込む事が出来るので、まずは素材を調達します。 今回はこちらのサイトからデータを拝借しました。PROJECT-6B

さっそくですが、Colladaファイルを読み込んで表示するにはDAEクラスを使用します。 DAEクラスのloadメソッドにColladaファイルを指定するだけでモデルデータを読み込んでくれます。

後は、_markerNodeにaddChildするだけで簡単に表示できます。

ソース全体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package
{
     import examples.PV3DARApp;
     import flash.display.Sprite;
     import flash.events.Event;
     import org.papervision3d.objects.parsers.DAE;



     [SWF(width=640, height=480, backgroundColor=0x808080, frameRate=30)]
     public class Test3Dobj extends PV3DARApp
     {
          private var _daeModel:DAE;

          public function Test3Dobj()
          {
               addEventListener(Event.INIT, _onInit);
               this.init('Data/camera_para.dat', 'Data/flarlogo.pat');
          }

          private function _onInit(e:Event):void
          {
               this._daeModel = new DAE();
               this._daeModel.load('z34_a.dae');
               this._daeModel.scale = 10;
               this._daeModel.rotationX = 90;
               this._daeModel.rotationZ = 90;
               this._markerNode.addChild(this._daeModel);

          }

     }

}

表示サイズが小さかったので、scaleプロパティに大きく表示されるよう調整しました。 また、Papervision3Dの座標系と、FLARToolKitのマーカー上での座標系が違う為 正しく表示されるように調整します。

出来ました。

Comments