Sample of FLARToolKit
from flartoolkit SimpleCube example
print this marker: http://saqoosha.net/lab/FLARToolKit/flarlogo-marker.pdf
/**
* Copyright DanYuya ( http://wonderfl.net/user/DanYuya )
* GNU General Public License, v3 ( http://www.gnu.org/licenses/quick-guide-gplv3.html )
* Downloaded from: http://wonderfl.net/c/35v4
*/
// forked from mash's FLARToolKit SimpleCube sample
// from flartoolkit SimpleCube example
// print this marker: http://saqoosha.net/lab/FLARToolKit/flarlogo-marker.pdf
package {
// イベント処理用パッケージのインポート
import flash.events.Event;
import flash.events.MouseEvent;
// Papervision 3D の利用
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;
import org.papervision3d.objects.primitives.Sphere;
// PaperVision 3D AR アプリの雛型の利用
import org.libspark.flartoolkit.example.PV3DARApp;
[ SWF( width=640, height=480, backgroundColor=0x808080, frameRate=30 ) ]
public class SimpleCube extends PV3DARApp {
private var _plane:Plane; // 平面
private var _cube:Cube; // 立方体
private var _sphere:Sphere; // 球面
public function SimpleCube() {
Wonderfl.capture_delay( 5 );
// Initalize application with the path of camera calibration file and patter definition file.
// カメラ補正ファイルとパターン定義ファイルのファイル名を渡して初期化。
addEventListener( Event.INIT, _onInit );
init( 'http://assets.wonderfl.net/static/flar/camera_para.dat', 'http://assets.wonderfl.net/static/flar/flarlogo.pat' );
}
private function _onInit(e:Event):void {
// Create Plane with same size of the marker.
// マーカーと同じサイズを Plane を作ってみる。
var wmat:WireframeMaterial = new WireframeMaterial( 0xff0000, 0.8, 2 ); // ワイヤーフレーム
_plane = new Plane( wmat, 80, 80 ); // 80mm x 80mm
_plane.rotationX = 180;
_markerNode.addChild( _plane ); // attach to _markerNode to follow the marker. / _markerNode に addChild するとマーカーに追従する。
// Place the light at upper front.
// ライトの設定。手前、上のほう。
var light:PointLight3D = new PointLight3D();
light.x = 0;
light.y = 1000;
light.z = -1000;
var fmat:FlatShadeMaterial = new FlatShadeMaterial( light, 0xccffff, 0x009999 ); // 光源(light)、光源の色(0xccffff)と環境光の色(0x009999)の設定
// Create Cube.
// Cube を作る。
_cube = new Cube( new MaterialsList( {all: fmat} ), 60, 60, 60 ); // 60mm x 60mm x 60mm
_cube.z = 100 + 30; // Move the cube to upper (minus Z) direction Half height of the Cube. / 立方体の高さの半分、上方向(-Z方向)に移動させるとちょうどマーカーにのっかる形になる。
_markerNode.addChild( _cube );
// Create Sphere.
// Sphere を作る。
_sphere = new Sphere( fmat, 50, 96, 96 );
_sphere.z = 50;
_markerNode.addChild( _sphere );
stage.addEventListener(MouseEvent.CLICK, _onClick);
}
private function _onClick(e:MouseEvent):void {
mirror = !mirror;
}
}
}