Hey there,

I can not figure out where I am going wrong below. I have downloaded
the demo's on both the FLARManager(to see how Away3D is implemented)
and the Away3D site but can not see what I am missing.

What I am trying to do here is place a sphere on top of the marker.
This is the code I have below.

FLARManager Version: latest download from site
Away3D version: 3.4
Targeting FP10 from Flex.

Code:
************************************
package {
        import away3d.*;
        import away3d.containers.ObjectContainer3D;
        import away3d.containers.Scene3D;
        import away3d.containers.View3D;
        import away3d.core.render.*;
        import away3d.materials.WireColorMaterial;
        import away3d.primitives.Plane;
        import away3d.primitives.Sphere;

        import com.transmote.flar.FLARManager;
        import com.transmote.flar.marker.FLARMarker;
        import com.transmote.flar.marker.FLARMarkerEvent;
        import com.transmote.flar.utils.geom.FLARAwayGeomUtils;

        import examples.*;

        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;

        import org.libspark.flartoolkit.support.away3d.FLARCamera3D;

        [SWF(width="640", height="480", frameRate="30",
backgroundColor="#FFFFFF")]

        public class FLARManagerExampleLauncher extends Sprite {

                private var fm:FLARManager;
                private var scene:Scene3D;
                private var view:View3D;
                private var camera:FLARCamera3D;
                private var ball:Sphere;
                private var p:Plane;
                private var activeMarker:FLARMarker;
                private var v:Vid;
                private var con:ObjectContainer3D;
                private var re:BasicRenderer;

                public function FLARManagerExampleLauncher () {
                        initFLAR();
                }

                private function initFLAR():void{
                        fm = new 
FLARManager("../resources/flar/flarConfig.xml");

                        fm.addEventListener(FLARMarkerEvent.MARKER_ADDED, 
onAdded);
                        fm.addEventListener(FLARMarkerEvent.MARKER_REMOVED, 
onRemoved);
                        fm.addEventListener(Event.INIT, init3D);
                        addChild(Sprite(fm.flarSource));
                }

                private function init3D(e:Event):void{
                        // remove init event listener
                        fm.removeEventListener(Event.INIT, init3D);

                        scene = new Scene3D();
                        camera = new FLARCamera3D(fm.cameraParams);
                        camera.z = -30;
                        view = new View3D({scene:scene, camera:camera});
                        addChild(view);

                        con = new ObjectContainer3D();
                        scene.addChild(con);

                        var ballMat:WireColorMaterial = new 
WireColorMaterial(0x666666,
{wirecolor:0xFFFFFF});
                    ball = new Sphere({material:ballMat, radius:18, 
segmentsW:10,
segmentsH:10});
                        con.addChild(ball);

                        //addChild(new FramerateDisplay());
                        this.addEventListener(Event.ENTER_FRAME, loop);
                }

                private function loop(e:Event):void{
                        trace("loop")
                        if(activeMarker != null){
                                con.transform = 
FLARAwayGeomUtils.convertFLARMatrixToAwayMatrix
(activeMarker.transformMatrix);
                        }
                        view.render();
                }

                private function onAdded(e:FLARMarkerEvent):void{
                        activeMarker = e.marker;
                        trace("Marker Added");
                }

                private function onRemoved(e:FLARMarkerEvent):void{
                        activeMarker = null;
                        trace("Marker Removed");
                }
        }
}


Error printed in the console:
************************************
TypeError: Error #1009: Cannot access a property or method of a null
object reference.
        at away3d.core.math::MatrixAway3D/inverse()[U:\Global\away3d\core\math
\MatrixAway3D.as:649]
        at org.libspark.flartoolkit.support.away3d::FLARCamera3D/get
viewMatrix()[U:\Flex Builder\FLARManager\src\org\libspark\flartoolkit
\support\away3d\FLARCamera3D.as:131]
        at away3d.core.traverse::ProjectionTraverser/set view()[U:\Global
\away3d\core\traverse\ProjectionTraverser.as:46]
        at away3d.containers::Scene3D/update()[U:\Global\away3d\containers
\Scene3D.as:211]
        at away3d.containers::Scene3D/onUpdate()[U:\Global\away3d\containers
\Scene3D.as:63]
        at flash.events::EventDispatcher/dispatchEventFunction()
        at flash.events::EventDispatcher/dispatchEvent()
        at away3d.containers::View3D/notifySceneUpdate()[U:\Global\away3d
\containers\View3D.as:228]
        at away3d.containers::View3D/render()[U:\Global\away3d\containers
\View3D.as:907]
        at FLARManagerExampleLauncher/loop()[U:\Flex Builder\FLARManager\src
\FLARManagerExampleLauncher.as:86]


The launching "suspends" and opens up MatrixAway3D.as with the first
line of the inverse() function highlighted.

I am new to Flex Builder, Away3D and the FLARManager and so it is
likely I will be tripping up a lot of the way when I am using this
stuff.
I would really appreciate some tips on to how I could have used what
information I have got here to see where I have gone wrong. This would
also stop me from having to annoy people on this forum in future :)

I know from the debugger that "m" is null which I assume is the
problem (being a null object reference), I have tried to dig around in
the code and the docs but have not got anywhere. I think I am just not
using the render function correctly but I can not see any difference
in the way I have implemented this code and others that work.

Thanks for your time.

Reply via email to