I used the methods that Darcey used in his example and replaced his model with my own and came up with errors about a null object. I have had these errors come up before in this same context and assumed my max3ds loader scripts were not right, it turned out in the end that both the methods I used were viable and obviously darcey's scripts work fine for him. In the end, this all came down the the simple fact that the path to the model needed the preceding "/". I was using a root folder model and needed to specific to Away3D the exact relative path. This has come up for me in PHP issues before and I jumped right on it, but didn't catch this one early enough. Thanks to all who helped.
On Apr 10, 11:02 pm, Morantis <[email protected]> wrote: > I need to know what the exact format and syntax for importing a basic > 3d model into Flash through Away3D is. I have done a lot of searching > and seen various methods that for me seem to produce varying errors or > no visible object. This is just a test to make sure I understand the > concept before actually getting deeply into the programming, so for > that reason I have not used a material for the model. I assume that > Away3D will still produce a visible result, just as a cube or sphere > can be seen without assigning a specific material. Let me say first > that i fully understand the class imports and that is not an issue. I > have used AS on and off, so I understand that for the most part, plus > have other programming experience, so that is not the major issue. I > am using Flash CS5 I believe and AS3 and Flash 10 formats. I have an > intial stage and use an external class for all the Away3D AS > scripting. I am playing with it and basically putting together a > template to build furture Away3D/Flash from. I am going to post the > entire external package here, and I know it has some issues, it copied > and pasted some portions from the Earth/Stars tutorial to save time > and I have used 2 movie clips for zooming in and out on a basic cube. > I used 3DMax to make a very basic torus and exported it to the root > folder for the app and named it tube.3ds, I also produced a smaller > version of the same called tube2.3ds. You will see a lot of commented > out lines as I have tried many methods to import the model. I even > tried as a Wavefront OBJ. I really find this as the last stumbling > block to going somewhere with this software so please help. Here's my > current AS... > > package > { > > import flash.display.Sprite; > import away3d.containers.*; > import away3d.core.base.*; > import away3d.primitives.*; > import away3d.materials.*; > import away3d.core.utils.Cast; > import away3d.cameras.*; > import flash.filters.BitmapFilter; > import flash.filters.BitmapFilterQuality; > import flash.filters.BitmapFilterType; > import flash.filters.GlowFilter; > import flash.events.MouseEvent; > import flash.events.Event; > import away3d.core.render.Renderer; > import flash.events.KeyboardEvent; > import flash.events.*; > import away3d.loaders.Max3DS; > import away3d.loaders.Obj; > > //import fl.motion.MotionEvent; > > public class hhh extends Sprite > { > > public function hhh() > { > > var move:Boolean = false; > var lastPanAngle:Number; > var lastTiltAngle:Number; > var lastMouseX:Number; > var lastMouseY:Number; > var skies:Sphere; > var scene:Scene3D = new Scene3D(); > // Create and set up the camera > var camera:HoverCamera3D = new > HoverCamera3D({zoom:2,focus: > 200,distance:400}); > camera.panAngle = -180; > camera.tiltAngle = 15; > camera.hover(true); > camera.yfactor = 1; > var view:View3D = new > View3D({scene:scene,camera:camera}); > addChild(view); > view.x = 250; > view.y = 200; > var desk:Cube = new Cube({material:"blue#white"}); > desk.height = 15; > desk.width = 150; > desk.depth = 25; > desk.x = 100; > view.scene.addChild(desk); > > //var tube=new Max3DS(); > var tube:Max3DS=new Max3DS.load("tube.3ds"); > //var tube2:Obj=new Obj("tube2.obj"); > //view.scene.addChild(tube); > tube.scale(100); > view.render(); > > function MouseDown(event:MouseEvent):void > { > lastPanAngle = camera.panAngle; > lastTiltAngle = camera.tiltAngle; > lastMouseX = stage.mouseX; > lastMouseY = stage.mouseY; > move = true; > } > function MouseUp(event:MouseEvent):void > { > move = false; > } > function MouseOverHandlerplus(event:MouseEvent):void > { > // Start your custom code > // This example code displays the words > "Moused over" in the > Output panel. > camera.zoom = camera.zoom + 1; > > // End your custom code > } > function MouseOverHandlerminus(event:MouseEvent):void > { > // Start your custom code > // This example code displays the words > "Moused over" in the > Output panel. > camera.zoom = camera.zoom - 1; > > // End your custom code > } > > function zoomreset(event:KeyboardEvent):void > { > camera.zoom = 1; > > } > > function onEnterFrame(e:Event):void > {// rerender viewport > var cameraSpeed:Number = 0.3;// Approximately > same speed as mouse > movement. > if (move) > { > camera.panAngle = > cameraSpeed*(stage.mouseX - lastMouseX) + > lastPanAngle; > camera.tiltAngle = > cameraSpeed*(stage.mouseY - lastMouseY) + > lastTiltAngle; > } > camera.hover(); > view.render(); > } > addEventListener(Event.ENTER_FRAME, onEnterFrame); > stage.addEventListener(MouseEvent.MOUSE_DOWN, > MouseDown); > stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp); > plus.addEventListener(MouseEvent.CLICK, > MouseOverHandlerplus); > zoomout2.addEventListener(MouseEvent.CLICK, > MouseOverHandlerminus); > stage.addEventListener(MouseEvent.DOUBLE_CLICK, > zoomreset); > stage.addEventListener(KeyboardEvent.KEY_UP, > zoomreset); > > } > } > > } > > I can't seem to add a second agument to the new MAX3D without getting > an error, so I stopped even trying that. If I just go with blah:new > Max3D(); then I can't find a way to attach this to a model file. > var tube:Max3DS=new Max3DS.load("tube.3ds"); > gives me a method cannot be used as a constructor error. At this > point I cannot remember all the ways I have tried to do this.
