Realidad Aumentada AS3 – Augmented Reality using FLARManager
El ejemplo puede verse cortado pero es producto del shadowbox. Cualquier duda a: contacto@pcornejo.com
Download Source – En la carpeta material pueden imprimir el marcador.
Code (open/close):
package com.pcornejo { import com.transmote.flar.FLARManager; import com.transmote.flar.marker.FLARMarker; import com.transmote.flar.marker.FLARMarkerEvent; import com.transmote.flar.utils.geom.FLARPVGeomUtils; import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import org.libspark.flartoolkit.support.pv3d.FLARCamera3D; import org.papervision3d.cameras.Camera3D; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.BitmapColorMaterial; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.objects.parsers.DAE; import org.papervision3d.render.LazyRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; /** * Usando FlarManager Realidad Aumentada * @author Patricio Cornejo * http://www.pcornejo.com */ [SWF(width = "640", height = "480", backgroundColor="#000000", frameRate="40")] public class FLARM extends Sprite { private var fm:FLARManager; private var activeMarker:FLARMarker; private var scene3D:Scene3D; private var camera3D:Camera3D; private var viewport3D:Viewport3D; private var render:LazyRenderEngine; private var pointLight3D:PointLight3D; private var dp3D:DisplayObject3D; private var model:DAE; public function FLARM():void { addEventListener(Event.ADDED_TO_STAGE, configUI); } private function configUI(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, configUI); configFLAR(); } private function configFLAR():void { fm = new FLARManager("./xml/config.xml"); fm.thresholdSourceDisplay = false; //Colocar true para ver el depurador de Threshold addChild(Sprite(fm.flarSource)); fm.addEventListener(FLARMarkerEvent.MARKER_ADDED, onMarkerAdded); fm.addEventListener(FLARMarkerEvent.MARKER_REMOVED, onMarkerRemoved); fm.addEventListener(FLARMarkerEvent.MARKER_UPDATED, onMarkerUpdated); fm.addEventListener(Event.INIT, configPv3d); } private function configPv3d (evt:Event) :void { scene3D = new Scene3D(); camera3D = new FLARCamera3D(fm.cameraParams); viewport3D = new Viewport3D(stage.stageWidth, stage.stageHeight); addChild(viewport3D); render = new LazyRenderEngine(scene3D, camera3D, viewport3D); pointLight3D = new PointLight3D(); pointLight3D.x = 1000; pointLight3D.y = 1000; model = new DAE(true, "model", true); model.load("daes/duck.dae"); model.rotationX = 90; model.rotationZ = -90; dp3D = new DisplayObject3D(); dp3D.addChild(model); dp3D.visible = false; scene3D.addChild(dp3D); addEventListener(Event.ENTER_FRAME, onEnterFrame); } private function onMarkerAdded (evt:FLARMarkerEvent) :void { dp3D.visible = true; activeMarker = evt.marker; } private function onMarkerUpdated (evt:FLARMarkerEvent) :void { dp3D.visible = true; activeMarker = evt.marker; } private function onMarkerRemoved (evt:FLARMarkerEvent) :void { dp3D.visible = false; activeMarker = null; } private function onEnterFrame (evt:Event) :void { if (activeMarker) { dp3D.transform = FLARPVGeomUtils.convertFLARMatrixToPVMatrix(activeMarker.transformMatrix); } render.render(); } } }

Hola.. interesante, me bajé el archivo, pero no se ejecutarlo.. me podrías ayudar?
seria un buen tutorial
hola patricio muy bueno tus videos tutoriales, antes de q cerraras tu web me baje todos tus videos xD.. el video de realidad aumentada no carga o no corre te agradeceria una vez mas si pudieras solucionar ese problemita.. nuevamente sos genial.
raul , me podrias àsar algunos videos, me interesan los de trabajo con as3, php y mysql .
no importa si los cobras.