package {
import flash.display.Sprite;
import flash.utils.ByteArray;
import flash.media.Video;
import flash.media.Camera;
import flash.display.BitmapData;
import flash.events.Event;
import org.libspark.flartoolkit.core.param.FLARParam;
import org.libspark.flartoolkit.core.FLARCode;
import org.libspark.flartoolkit.core.raster.rgb.FLARRgbRaster_BitmapData;
import org.libspark.flartoolkit.detector.FLARSingleMarkerDetector;
import org.libspark.flartoolkit.support.pv3d.FLARCamera3D;
import org.libspark.flartoolkit.support.pv3d.FLARBaseNode;
import org.papervision3d.view.Viewport3D;
import org.libspark.flartoolkit.core.transmat.FLARTransMatResult;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.objects.primitives.Plane;
[SWF(width="640", height="480", frameRate="30", backgroundColor="#FFFFFF")]
public class PlaneTest extends Sprite {
[Embed(source="Data/camera_para.dat", mimeType="application/octet-stream")]
private var camera_para:Class;
[Embed(source="Data/2mmgoogle.pat", mimeType="application/octet-stream")]
private var marker_pattern1:Class;
private var flar_param:FLARParam;
private var flar_code1:FLARCode;
private var video:Video;
private var camera:Camera;
private var bitmapdata:BitmapData;
private var raster:FLARRgbRaster_BitmapData;
private var detector1:FLARSingleMarkerDetector;
private var scene:Scene3D;
private var flar_camera:FLARCamera3D;
private var container1:FLARBaseNode;
private var viewport:Viewport3D;
private var bre:BasicRenderEngine;
private var transmatresult:FLARTransMatResult;
private var plane:Plane;
public function PlaneTest() {
setupFLAR();
setupCam();
setupBitmapData();
setupPV3D();
addEventListener(Event.ENTER_FRAME, loop);
}
private function setupFLAR():void {
trace("in setuFLAR");
flar_param = new FLARParam();
flar_param.loadARParam(new camera_para() as ByteArray);
flar_code1 = new FLARCode(16, 16);
flar_code1.loadARPatt(new marker_pattern1());
}
private function setupCam():void {
trace("in setupCam");
video = new Video(640, 480);
camera=Camera.getCamera();
camera.setMode(640, 480, 30);
video.attachCamera(camera);
addChild(video);
}
private function setupBitmapData():void {
trace("in setupBitmapData");
bitmapdata = new BitmapData(640, 480);
bitmapdata.draw(video);
raster = new FLARRgbRaster_BitmapData(bitmapdata);
detector1 = new FLARSingleMarkerDetector(flar_param, flar_code1, 80);
}
private function setupPV3D():void {
trace("in setupPV3D");
scene = new Scene3D();
flar_camera = new FLARCamera3D(flar_param);
container1 = new FLARBaseNode();
viewport = new Viewport3D(640, 480);
bre = new BasicRenderEngine();
transmatresult = new FLARTransMatResult();
plane = new Plane(null, 50, 50, 6, 6);
container1.addChild(plane);
scene.addChild(container1);
addChild(viewport);
}
private function loop(e:Event):void {
trace("in loop");
bitmapdata.draw(video);
try {
if(detector1.detectMarkerLite(raster, 80) && detector1.getConfidence()>0.5) {
trace("detector1");
plane.visible=true;
detector1.getTransformMatrix(transmatresult);
container1.setTransformMatrix(transmatresult);
bre.renderScene(scene, flar_camera, viewport);
}
}
catch(e:Error) {}
}
}
}