rendered paste bodypackage {
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();}
}
}
}