i rewrote the code so it looks almost identicall to the one that rob
used, i used the same files in fact, but still not working, anyone got
an idea of why this is not working?
package {
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.core.base.Mesh;
import away3d.core.render.BasicRenderer;
import away3d.core.utils.Cast;
import away3d.materials.BitmapMaterial;
import away3d.primitives.Sphere;
import away3d.loaders.Md2;
import away3d.animators.data.AnimationSequence;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
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 FLARDemox extends Sprite
{
[Embed(source="../assets/FLAR-marker.pat",mimeType="application/
octet-stream")]
private var pattern:Class;
[Embed(source="../assets/camera_para.dat",mimeType="application/
octet-stream")]
private var params:Class;
//ogre MD2 animation
[Embed(source="../assets/ogre.md2", mimeType='application/octet-
stream')]
private var Model:Class;
//ogre texture
[Embed(source="../assets/ogre.jpg")]
private var Texture:Class;
//marterial objects
private var material:BitmapMaterial;
//scene objects
private var model:Mesh;
//enterframe variables
private var blurFilter:BlurFilter= new BlurFilter(10, 10,1);
//, BitmapFilterQuality.LOW);
public var update:Boolean = true;
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 FLARDemox()
{
setupFLAR();
setupCamera();
setupBitmap();
setupAWAY3D();
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 setupAWAY3D():void
{
scene=new Scene3D();
camera=new FLARCamera3D(fparams);
vp=new View3D({camera:camera,scene:scene});
addChild(vp);
container=new FLARBaseNode();
material = new BitmapMaterial(Cast.bitmap(Texture));
model = Md2.parse(Model, {material:material}) as Mesh;
model.scale(0.02);
model.y += 45;
model.play(new AnimationSequence("stand", true, true,
10));
container.addChild(model);
scene.addChild(container);
bre=new BasicRenderer();
trans=new FLARTransMatResult();
}
private function loop(e:Event):void
{
bmd.draw(vid);
if (update){
try
{
if
(detector.detectMarkerLite(raster,80)&&detector.getConfidence()
>0.1)
{
vp.visible = true;
detector.getTransformMatrix(trans);
container.setTransformMatrix(trans);
}else{
vp.visible=false;
}
}catch(e:Error){
trace("Error: " + e.message);
}
vp.render();
} else {
bmd.applyFilter(bmd, bmd.rect,bmd.rect.topLeft,
blurFilter);
}
}
}
}