package {
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.core.render.BasicRenderer;
import away3d.primitives.Cube;
import away3d.primitives.Sphere;
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.FLARTransMatResult;
import org.libspark.flartoolkit.detector.FLARSingleMarkerDetector;
import org.libspark.flartoolkit.support.away3d_2.FLARBaseNode;
import org.libspark.flartoolkit.support.away3d_2.FLARCamera3D;
[SWF(width="640", height="480", frameRate="30",
background="#AAAAFF")]
public class FLARDemo1 extends Sprite
{
[Embed(source="./123.pat",mimeType="application/octet-stream")]
private var pattern:Class;
[Embed(source="./camera_para.dat",mimeType="application/octet-
stream")]
private var params:Class;
private var fparams:FLARParam;
private var mpattern:FLARCode;
private var vid:Video;
private var cam:Camera;
private var bmd:BitmapData;
private var raster:FLARRgbRaster_BitmapData;//este es el parser
de
bitmap a FLAR
private var detector:FLARSingleMarkerDetector;//detecta 1
marker se
puede cambiar a multiples
private var scene:Scene3D;
private var camera:FLARCamera3D;
private var container:FLARBaseNode;
private var vp:View3D;
private var bre:BasicRenderer;
private var trans:FLARTransMatResult;//este posiciona los
objetos
private var bola:Sphere;
public function FLARDemo1()
{
setupFLAR();
setupCamera();
setupBitmap();
setupPV3D();
addEventListener(Event.ENTER_FRAME,loop);
}
private function setupFLAR():void
{
fparams=new FLARParam();
fparams.loadARParam(new params() as ByteArray);
mpattern=new FLARCode(16,16);
mpattern.loadARPatt(new pattern());
}
private function setupCamera():void
{
vid=new Video(640,480);
cam=Camera.getCamera();
cam.setMode(640,480,30);
vid.attachCamera(cam);
addChild(vid);
}
private function setupBitmap():void
{
bmd=new BitmapData(640,480);//lee por cuadro la imagen
de la camra
bmd.draw(vid);//la guarda en un bitmap
raster=new FLARRgbRaster_BitmapData(bmd);
detector=new
FLARSingleMarkerDetector(fparams,mpattern,80);
}
private function setupPV3D():void
{
scene=new Scene3D();
camera=new FLARCamera3D(fparams);
vp=new View3D({camera:camera,scene:scene});
addChild(vp);
container=new FLARBaseNode();
var cube1:Cube=new Cube();
var cube2:Cube=new Cube();
cube2.z=50;
// var cube3:Cube=new Cube();
var cube3:Sphere=new Sphere();
cube3.z=100;
cube1.width=cube1.height=cube1.depth=30;
cube2.width=cube2.height=cube2.depth=30;
cube3.radius=30;
bola=new Sphere();
bola.radius=100;
bola.ownCanvas=true;
bola.pushfront=true;
container.addChild(cube1);
container.addChild(cube2);
container.addChild(cube3);
container.addChild(bola);
scene.addChild(container);
bre=new BasicRenderer();
trans=new FLARTransMatResult();
}
private function loop(e:Event):void
{
bmd.draw(vid);
try
{
if
(detector.detectMarkerLite(raster,80)&&detector.getConfidence()
>0.5)
{
detector.getTransformMatrix(trans);
container.setTransformMatrix(trans);
vp.visible = true;
bre.render(vp);
}
else{
vp.visible=false;
}
}
catch(e:Error)
{
trace("Error: " + e.message);
}
vp.render();
}
}
}
it shows the camera, but it is suposed to render but it doesnt show
anything, what im doing wrong or what do i have to change? i already
set the confidence >0.1, so i guess it has to be with a bad rendering,
but i changed every line to make combinations and nothing.