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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
   | package {
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.media.Camera;
    import flash.media.Video;
    import flash.utils.ByteArray;
    import org.libspark.flartoolkit.core.FLARCode;
    import org.libspark.flartoolkit.core.param.FLARParam;
    import org.libspark.flartoolkit.core.raster.rgb.FLARRgbRaster_BitmapData;
    import org.libspark.flartoolkit.core.transmat.FLARTransMat;
    import org.libspark.flartoolkit.core.transmat.FLARTransMatResult;
    import org.libspark.flartoolkit.detector.FLARSingleMarkerDetector;
    import org.libspark.flartoolkit.pv3d.FLARBaseNode;
    import org.libspark.flartoolkit.pv3d.FLARCamera3D;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.render.LazyRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.objects.parsers.Collada;
    import org.papervision3d.objects.parsers.DAE;
 
	[SWF(width="640", height="480", frameRate="30", backgroundColor="#FFFFFF")]
 
public class FLARdemo2 extends Sprite 
{
	[Embed(source="camera_para.dat", mimeType="application/octet-stream")]
	public var CameraParameters:Class;
 
	[Embed(source="pat1.pat", mimeType="application/octet-stream")]
	public var MarkerPattern:Class;
 
	public var cameraParameters:FLARParam;
	public var markerPattern:FLARCode;
	public var raster:FLARRgbRaster_BitmapData;
	public var detector:FLARSingleMarkerDetector;
 
	public var cam:Camera;
	public var vid:Video;
	public var capture:BitmapData;
 
	public var cam3D:FLARCamera3D;
	public var scene3D:Scene3D;
	public var viewPort:Viewport3D;
	public var FLARdemo2Container:FLARBaseNode;
	public var renderer:LazyRenderEngine;
 
	public var trans:FLARTransMatResult;
	public var prevSet:Boolean = false;
	public var prevZ:Number = 0;
 
	public var _collada:Collada;
	public var _dae1: DAE;
 
	public function FLARdemo2():void 
	{
		cameraParameters = new FLARParam();
		cameraParameters.loadARParam(new CameraParameters() as ByteArray);
 
		markerPattern = new FLARCode(16, 16);
		markerPattern.loadARPatt(new MarkerPattern());
 
		cam = Camera.getCamera();
		cam.setMode(640, 480, 30);
 
		vid = new Video();
		vid.width = 640;
		vid.height = 480;
		vid.attachCamera(cam);
		addChild(vid);
 
		capture = new BitmapData(vid.width, vid.height, false, 0x0);
		capture.draw(vid);
 
		raster = new FLARRgbRaster_BitmapData(capture);
		detector = new FLARSingleMarkerDetector(cameraParameters, markerPattern, 80);
 
		cam3D = new FLARCamera3D(cameraParameters);
 
		scene3D = new Scene3D();
 
		FLARdemo2Container = new FLARBaseNode();
		scene3D.addChild(FLARdemo2Container);
 
		viewPort = new Viewport3D(vid.width, vid.height);
		viewPort.scaleX = viewPort.scaleY = 2;
		addChild(viewPort);
 
		renderer = new LazyRenderEngine(scene3D, cam3D, viewPort);
 
		_dae1 = new DAE();
		_dae1.load("model/monobjet.dae");
		_dae1.scale = 2;
		_dae1.rotationX = 90;
		_dae1.rotationZ -= 90;
		FLARdemo2Container.addChild(_dae1);
 
		trans = new FLARTransMatResult();
 
		this.addEventListener(Event.ENTER_FRAME, FLARdemo2Enter);
	}
	public function FLARdemo2Enter(e:Event):void 
	{
		capture.draw(vid);
 
		if (detector.detectMarkerLite(raster, 80) && detector.getConfidence() > 0.5)
		{
			detector.getTransformMatrix(trans);
 
			FLARdemo2Container.setTransformMatrix(trans);
			FLARdemo2Container.visible = true;
			renderer.render();
		}
		else
		{
			FLARdemo2Container.visible = false;
			renderer.render();
		}
	}
}
 
} | 
Partager