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