Thanks for the offer Ian. But if its not the Flash IDE I would just
give up. I'm really used to working with Away3D in the Flash. I'm
still tinkering away with the code, still no luck. Everything is
running. There is something I must be missing. I can run it in Flex,
but I want to add Flash components to it.

Latest Code:

package
{
    import away3d.animators.data.*;
    import away3d.cameras.*;
    import away3d.containers.*;
    import away3d.core.base.*;
    import away3d.core.clip.*;
    import away3d.core.render.*;
    import away3d.core.utils.*;
    import away3d.events.*;
    import away3d.lights.*;
    import away3d.loaders.*;
    import away3d.materials.*;

    import flash.display.*;
    import flash.events.*;
    import flash.filters.*;
    import flash.media.*;

    import org.libspark.flartoolkit.away3d.*;
    import org.libspark.flartoolkit.core.*;
    import org.libspark.flartoolkit.core.param.*;
    import org.libspark.flartoolkit.core.raster.rgb.*;
    import org.libspark.flartoolkit.core.transmat.*;
    import org.libspark.flartoolkit.detector.*;

    public class FLARdemo2 extends Sprite
    {
        //camera configuration
        [Embed(source="../assets/camera_para.dat",
mimeType='application/octet-stream')]
        private var CameraDataClass:Class;

        //marker configuration
        [Embed(source="../assets/FLAR-marker.pat",
mimeType='application/octet-stream')]
        private var PatternDataClass: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;

        //scene objects
        private var scene:Scene3D;
        private var camera:FLARCamera3D;
        private var view:View3D;

        //config properties
        private var screenWidth:Number = 400;
        private var screenHeight:Number = 300;
        private var threshold:Number = 80;
        private var markerWidth:Number = 80;

        //FLARToolkit object
        private var fBaseNode:FLARBaseNode;
        private var fParam:FLARParam;
        private var fCode:FLARCode;
        private var fWebcam:Camera;
        private var fVideo:Video;
        private var fCapture:Bitmap;
        private var fDetector:FLARSingleMarkerDetector;
        private var fResult:FLARTransMatResult;
        private var fRaster:FLARRgbRaster_BitmapData;

        //marterial objects
        private var material:BitmapMaterial;

        //scene objects
        private var model:Mesh;

        //enterframe variables
        private var blurFilter:BlurFilter = new BlurFilter(0, 0,
BitmapFilterQuality.LOW);
        public var update:Boolean = false;

        /**
         * Constructor
         */
        public function FLARdemo2()
        {
            init();
        }

        /**
         * Global initialise function
         */
        private function init():void
        {
            initFLARToolkit();
                        setupCamera();
            initEngine();
            initMaterials();
            initObjects();
                        initListeners();
        }

                 //Initialize the Camera
                private function setupCamera():void
                {
                        fWebcam = Camera.getCamera();
                        fWebcam.setMode(screenWidth, screenHeight, 30);
                        fVideo.attachCamera(fWebcam);
                }


        private function initEngine():void
        {
            scene = new Scene3D();

            view = new View3D({scene:scene, camera:camera});
            view.x = screenWidth - 5;
            view.y = screenHeight;
            //view.addSourceURL("srcview/index.html");
            addChild(view);
        }

        /**
         * Initialise the FLARToolkit
         */
        private function initFLARToolkit():void
        {
            //setup camera parameters
            fParam = new FLARParam();
            fParam.loadARParam(new CameraDataClass());
            fParam.changeScreenSize(screenWidth, screenHeight);
            camera = new FLARCamera3D();
            camera.setParam(fParam);

            //setup marker code
            fCode = new FLARCode(16, 16);
            fCode.loadARPatt(new PatternDataClass());

            //setup marker detector
            fDetector = new FLARSingleMarkerDetector(fParam, fCode,
markerWidth);
            fDetector.setContinueMode(false);
            fResult = new FLARTransMatResult();

            //setup webcam
            fVideo = new Video(screenWidth, screenHeight);

            //setup output capture
            fCapture = new Bitmap(new BitmapData(screenWidth,
screenHeight, false, 0), PixelSnapping.AUTO, true);
            fCapture.x = 0;
            fCapture.y = 0;
            fCapture.scaleX = 2.0;
            fCapture.scaleY = 2.0;
            addChild(fCapture);

            //setup output bitmapData
            fRaster = new FLARRgbRaster_BitmapData
(fCapture.bitmapData);
        }

        /**
         * Initialise the materials
         */
        private function initMaterials():void
        {
            material = new BitmapMaterial(Cast.bitmap(Texture));
        }

        /**
         * Initialise the scene objects
         */
        private function initObjects():void
        {
            //setup baseNode
            fBaseNode = new FLARBaseNode();
            scene.addChild(fBaseNode);

            //setup model
            model = Md2.parse(Model, {material:material}) as Mesh;
            model.scale(0.02);
            model.y += 45;
            model.play(new AnimationSequence("stand", true, true,
10));
            fBaseNode.addChild(model);
        }

        /**
         * Initialise the listeners
         */
        public function initListeners():void
        {
            addEventListener( Event.ENTER_FRAME, onEnterFrame );
        }

        /**
         * Navigation and render loop
         */
        private function onEnterFrame(event:Event):void
        {
            fCapture.bitmapData.draw(fVideo);

            if (update) {
                try {
                    //check for marker
                    if (fDetector.detectMarkerLite(fRaster, threshold)
&& fDetector.getConfidence() > 0.5) {
                        view.visible = true;
                        fDetector.getTransformMatrix(fResult);
                        fBaseNode.setTransformMatrix(fResult);
                    } else {
                        view.visible = false;
                    }
                } catch (e:Error) {
                    trace("Error: " + e.message);
                }

                view.render();

            } else {
                fCapture.bitmapData.applyFilter(fCapture.bitmapData,
fCapture.bitmapData.rect, fCapture.bitmapData.rect.topLeft,
blurFilter);
            }
        }
    }
}

Reply via email to