ARとは?
最近よく目にするARとはAugmented Realityの略で、
Wikipediaによると、
拡張現実とは現実環境にコンピュータを用いて情報を付加提示する技術、
および情報を付加提示された環境そのものを示す。 
難解な文章でよくわからないですよね。具体的なモノでいうと、
FLARToolKitとは?
さて、
実際にFLARToolKitがやってくれるのは実写画像から3次元空間の位置を計算するところまでで、
FLARToolKitは日本最大のFlash/
ライセンス
ライセンスは移植元のARToolKitがGPLで公開されているため、
また、
FLARToolKitの仕組み
FLARToolKitを使うまえに、
FLARToolKitはどのようにして実写内の空間を認識するのでしょうか。ヒントはマーカーと呼ばれる特徴のある画像です
マーカーでは、
FLARToolKitをさわってみよう
FLARToolKitを使用するうえで、
- Flash CS3以降
 - Webカメラ
 - FLARToolKitスタートキット
 - 印刷したマーカー
 
まず、
次にWebカメラ。Flashから使えるものであれば安いものでも問題ありませんが、
そしてFLARToolKitスタートキット。これは僕のブログの記事
最後にマーカー。スターターキットにflarlogo-marker.
FLARToolKitスタートキットを利用した手順
それでは、
- SimpleCube.
flaを開きます。  - Ctrl+Enter
(MacならCommand+Enter) でパブリッシュプレビューします。  - カメラ画像が表示されるのを確認。表示されてない場合はカメラを選び直す必要があるので、
ステージを右クリックしてコンテキストメニューから 「設定」、 カメラアイコンの描いてあるタブを選んで、 プルダウンから適当なものを選択してください。MacBookなどの内蔵カメラは 「USB Video Class Video」 という名前です。また、 カメラ設定の詳しい説明はAdobeのサイトを参考にしてください。  - カメラからの映像が映ったら、
カメラの前に印刷しておいたマーカーをかざします!  
すると、
上手に認識されないときは部屋の照明を明るくしてみてください。光が反射して黒い部分が光ってしまっていてもダメです。白と黒のコントラストがはっきり出るようにしてみましょう。
FLARToolKitの座標系
このサンプルの中身を説明する前に、
これに対して、
これを忘れてしまうと混乱するので、
SimpleCube.flaの中身 
さて、
package {
 
  import org.papervision3d.lights.PointLight3D;
  import org.papervision3d.materials.WireframeMaterial;
  import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
  import org.papervision3d.materials.utils.MaterialsList;
  import org.papervision3d.objects.primitives.Cube;
  import org.papervision3d.objects.primitives.Plane;
 
  public class SimpleCube extends PV3DARApp {
    
    private var _plane:Plane;
    private var _cube:Cube;
    
    public function SimpleCube() {
      // カメラ補正ファイルとパターン定義ファイルのファイル名を渡して初期化。
      this.init('Data/camera_para.dat', 'Data/flarlogo.pat');
    }
    
    protected override function onInit():void {
      super.onInit(); // 必ず呼ぶアル。
      
      // マーカーと同じサイズをPlaneを作ってみる。
      var wmat:WireframeMaterial = new WireframeMaterial(0xff0000, 1, 2); // ワイヤーフレームで。
      this._plane = new Plane(wmat, 80, 80); // 80mm x 80mm。
      this._plane.rotationX = 180; // 裏向いてるのでこっち向ける。
      this._baseNode.addChild(this._plane); // _baseNodeにaddChildするとマーカーに追従する。
      // ライトの設定。手前、上のほう。
      var light:PointLight3D = new PointLight3D();
      light.x = 0;
      light.y = 1000;
      light.z = -1000;
      
      // Cube を作る。
      var fmat:FlatShadeMaterial = new FlatShadeMaterial(light, 0xff22aa, 0x75104e); // ピンク色。
      this._cube = new Cube(new MaterialsList({all: fmat}), 40, 40, 40); // 40mm x 40mm x 40mm。
      this._cube.z = 20; // 立方体の高さの半分、上方向(Z方向)に移動させるとちょうどマーカーにのっかる形になる。
      this._baseNode.addChild(this._cube);
    }
  }
}
FLARToolKitのコードというよりPapervision3Dのコードになっています
コードの中身を詳しくみていきましょう。
this.init('Data/camera_para.dat', 'Data/flarlogo.pat');
17行目で、
第2引数はマーカーのパターン定義ファイルを指定します。これは使用するマーカーに対応するパターン定義ファイルを指定する必要があります。ここではflar-marker.
protected override function onInit():void {
init呼んだ後、
var wmat:WireframeMaterial = new WireframeMaterial(0xff0000, 1, 2);
this._plane = new Plane(wmat, 80, 80);
24、
最初にマーカーを正しいサイズで印刷しておいてくださいと説明したのは、
this._plane.rotationX = 180;
26行目で、
this._baseNode.addChild(this._plane);
27行目を見てください。通常、
var fmat:FlatShadeMaterial = new FlatShadeMaterial(light, 0xff22aa, 0x75104e);
this._cube = new Cube(new MaterialsList({all: fmat}), 40, 40, 40);
36、
this._cube.z = 20;
Cubeは原点中心に作られるので、
まとめ
このサンプルが理解できれば、
