All pastes #1663588 Raw Edit

Video in AR

public text v1 · immutable
#1663588 ·published 2009-11-09 16:44 UTC
rendered paste body
package {
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.media.Camera;
    import flash.media.SoundTransform;
    import flash.media.Video;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    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.FLARTransMatResult;
    import org.libspark.flartoolkit.detector.FLARSingleMarkerDetector;
    import org.libspark.flartoolkit.support.pv3d.FLARBaseNode;
    import org.libspark.flartoolkit.support.pv3d.FLARCamera3D;
    import org.papervision3d.lights.PointLight3D;
    import org.papervision3d.materials.BitmapFileMaterial;
    import org.papervision3d.materials.VideoStreamMaterial;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.render.BasicRenderEngine;
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
	
    [SWF(width="640", height="480", frameRate="30", backgroundColor="#FFFFFF")]
   
    public class IF2 extends Sprite
    {
        [Embed(source="data/marker.pat", mimeType="application/octet-stream")]
        private var marker:Class;
       
        [Embed(source="data/camera_para.dat", mimeType="application/octet-stream")]
        private var cam_params:Class;
       
        //createFLAR variables
        private var ar_params:				FLARParam;
        private var ar_marker:				FLARCode;
        //createCam variables
        private var ar_vid:					Video;
        private var ar_cam:					Camera;
        //createBMP variables
        private var ar_bmp:					BitmapData;
        private var ar_raster:				FLARRgbRaster_BitmapData;
        private var ar_detection:			FLARSingleMarkerDetector;
        //createVideo variables
        private var videoStreamMaterial:	VideoStreamMaterial;
	private var quality:				uint = 8;
	private var netConnection:			NetConnection;
	private var video:					Video;
	private var netStream:				NetStream;
	private var loader:					Loader;
        //createPapervision variables
        private var ar_scene:				Scene3D;
        private var ar_3dcam:				FLARCamera3D;
        private var ar_basenode:			FLARBaseNode;
        private var ar_viewport:			Viewport3D;
        private var ar_renderengine:		BasicRenderEngine;
        private var ar_transmat:			FLARTransMatResult;
        private var _plane:					Plane;
       
        public function IF2()
        {
            createFLAR();
            createCam();
            createBMP();
            createVideo();
            createPapervision();
            addEventListener(Event.ENTER_FRAME, loop);
        }
        
        //This function sets up the FLAR marker file and webcam settings
        public function createFLAR():void
        {
            ar_params = new FLARParam();
            ar_marker = new FLARCode(16, 16);
            ar_params.loadARParam(new cam_params() as ByteArray);
            ar_marker.loadARPatt(new marker());
        }
 
        public function createCam():void
        {
            ar_vid = new Video(640, 480);
            ar_cam = Camera.getCamera(); 
            ar_cam.setMode(640, 480, 30);
            ar_vid.attachCamera(ar_cam);
            addChild(ar_vid);
        }
        
        public function createBMP():void
        {
            ar_bmp = new BitmapData(640, 480);
            ar_bmp.draw(ar_vid);
            ar_raster = new FLARRgbRaster_BitmapData(ar_bmp);
            ar_detection = new FLARSingleMarkerDetector(ar_params, ar_marker, 80);
        }
        public function createVideo():void
        {
        	var customClient:Object = new Object();
		netConnection = new NetConnection();
		netConnection.connect(null);
		netStream = new NetStream(netConnection);
		netStream.client = customClient;			
		netStream.play("data/video.flv");
		netStream.pause();
		video = new Video(320, 240);
		video.smoothing = true;
		video.attachNetStream(netStream);
		videoStreamMaterial = new VideoStreamMaterial(video, netStream, false, true);
		videoStreamMaterial.doubleSided = true;
		var videoVolumeTransform:SoundTransform = new SoundTransform();
		videoVolumeTransform.volume = 2;
		netStream.soundTransform = videoVolumeTransform;			
        }
    
        public function createPapervision():void
        {
            ar_scene = new Scene3D();
            ar_3dcam = new FLARCamera3D(ar_params);
            ar_basenode = new FLARBaseNode();
            ar_renderengine = new BasicRenderEngine();
            ar_transmat = new FLARTransMatResult();
            ar_viewport = new Viewport3D();
           
            var ar_light:PointLight3D = new PointLight3D();
            ar_light.x = 1000;
            ar_light.y = 1000;
            ar_light.z = -1000;
            _plane = new Plane(videoStreamMaterial, 130, 130, 8, 8);
            _plane.z = 20;
	    _plane.rotationZ = 180;
	    _plane.rotationX = 180;
	    ar_basenode.addChild(_plane);
            ar_scene.addChild(ar_basenode);
	    addChild(ar_viewport);he project
        }
       
        private function loop(e:Event):void
        {
            ar_bmp.draw(ar_vid);           
            if(ar_detection.detectMarkerLite(ar_raster, 80) && ar_detection.getConfidence() > 0.5)
                {
                    ar_detection.getTransformMatrix(ar_transmat);
                    ar_basenode.setTransformMatrix(ar_transmat);
                    ar_renderengine.renderScene(ar_scene, ar_3dcam, ar_viewport);
                    ar_viewport.visible = true;
                    netStream.resume();
                }
            else{ar_viewport.visible = false; 
            netStream.pause();}
        }
    }
}