Hi! Try to change the multiply function in away3d.core.traverse.ProjectionTraverser to 4x4:
// modified for FLAR, I need 4x4 _viewTransform.multiply4x4(_cameraViewMatrix, node.sceneTransform); //_viewTransform.multiply(_cameraViewMatrix, node.sceneTransform); Let me know Guilherme Camargo Cardoso On Tue, Aug 25, 2009 at 14:27, desgraci <[email protected]> wrote: > > 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); > } > > } > } > } >
