Hey All, Thanks a million to everyone who replied, I'll look over the provided code/advice and give it a shot. Thanks again for taking time out of your day to help.
-Mike On Apr 22, 3:18 am, Quentin <[email protected]> wrote: > Hi, > > I don't like the way to use ResourceManager. > > Here is my method: > > var parser:OBJParser = new OBJParser("../path/myobj.obj"); > parser.addEventListener(LoaderEvent.PARSE_COMPLETE, > handleParserComplete); > parser.addEventListener(LoaderEvent.LOAD_ERROR, handleParserError); > parser.parseTextAsync(shipOBJ); > > private function handleParserError(e:LoaderEvent):void > { > trace("OBJParser error: "); > trace("OBJParser error: \n" + e.message); > > } > > private function handleParserComplete(e:LoaderEvent) : void > { > var obj:ObjectContainer3D = ObjectContainer3D(e.resource); > > this.addChild(obj); > > for (var i:int = 0; i < obj.numChildren; i++) > { > var mesh:Mesh = Mesh(obj.getChildAt(i)); > // Here you can interact with the meshes inside of your OBJ > // to set materials or other stuff... > } > > } > > On Apr 22, 10:11 am, Fabrice3D <[email protected]> wrote: > > > We've added examples for this. For embeds and loadings. > > RM also has events, why not use them by default? This would probably spare > > you headhackes in the long run... > > > Also, another tip: avoid addChild anything before its there. Even if its in > > there for the convenience or better said, implemented because it can be > > handy in some cases, > > it is a safer practice to addChild an object when you know it's there for > > sure. After all, what is the point of addChilding an empty container if it > > turns out the server can not find the url for instance? > > In this particular class, it is not a big deal of course, as you can locate > > your potential resource loading problem very fast, but if you were dealing > > a more complex scenery, it might cost you headackes again, simply because > > your code assumes it's there. > > > Fabrice > > > On Apr 22, 2011, at 9:01 AM, Choons wrote: > > > > also realized you need to load up your mesh so > > > > private var _mesh:Mesh; > > > > public function away3d():void > > > { > > > createOBJ(); // make a function to create your object > > > > } > > > > private function createOBJ():void > > > { > > > > ResourceManager.instance.addEventListener(ResourceEvent.RESOURCE_RETRIEVED, > > > onResourceRetrieved); > > > container = > > > ObjectContainer3D(ResourceManager.instance.parseData(new OBJ(), > > > "cube", true)); > > > view.scene.addChild(container); > > > } > > > > private function onResourceRetrieved(event : ResourceEvent) : void > > > { > > > var mesh : Mesh; > > > for (var i : int = 0; i < _container.numChildren; ++i) > > > { > > > mesh = Mesh(_container.getChildAt(i)); > > > mesh.geometry.scale(0.1); > > > _mesh = mesh; > > > } > > > > } > > > > On Apr 21, 11:11 pm, EngineerMike <[email protected]> wrote: > > >> Hey All, > > > >> I'm really excited about the new Away3d 4.0 library, however I've been > > >> running into a lot of trouble loading even the simplest objects. > > >> Embedding objects leads to a missing .mtl file even when I trace > > >> baseUri + mtlurl in OBJParser and it's correct. So I've gone with > > >> loading external assets (which I prefer anyways). I've searched far > > >> and wide on this group to try to find an answer but I'm stuck so here > > >> I am. Here's all the relevant files and the stack with traces at > > >> specific points, any help is greatly appreciated. > > > >> --------------------------------------------------------------------------- > > >> ------------- > > >> .as File > > > >> package > > >> { > > >> import away3d.containers.ObjectContainer3D; > > >> import away3d.containers.View3D; > > >> import away3d.entities.Mesh; > > >> import away3d.events.LoaderEvent; > > >> import away3d.events.ResourceEvent; > > >> import away3d.lights.PointLight; > > >> import away3d.loading.ResourceManager; > > >> import away3d.materials.BitmapMaterial; > > > >> import flash.display.Sprite; > > >> import flash.events.Event; > > >> import flash.net.URLRequest; > > >> import flash.utils.ByteArray; > > > >> public class away3d extends Sprite > > >> { > > > >> [Embed(source="/assets/texture.jpg")] > > >> private var Mat:Class; > > > >> [Embed(source="/assets/cube.obj", > > >> mimeType="application/octet- > > >> stream")] > > >> private var OBJ:Class; > > > >> private var view:View3D = new View3D(); > > >> private var light:PointLight = new PointLight(); > > >> private var container:ObjectContainer3D; > > > >> public function away3d():void > > >> { > > >> super(); > > > >> ResourceManager.instance.addEventListener(ResourceEvent.RESOURCE_RETRIEVED, > > >> onRetrieve); > > > >> container = > > >> ObjectContainer3D(ResourceManager.instance.getResource('/assets/ > > >> cube.obj')); > > >> container.scale(100); > > > >> view.scene.addChild(light); > > >> view.scene.addChild(container); > > >> stage.align = "top"; > > > >> addEventListener(Event.ENTER_FRAME, onFrame); > > > >> } > > > >> private function onRetrieve(e:ResourceEvent):void > > >> { > > >> trace('success'); > > >> /* > > >> var mesh:Mesh; > > >> var mat:BitmapMaterial = new BitmapMaterial(new > > >> Mat().bitmapData); > > > >> mesh = Mesh(e.target.handle); > > >> mesh.material = mat; > > >> */ > > >> } > > > >> private function onFrame(e:Event):void > > >> { > > > >> view.render(); > > > >> } > > >> } > > > >> } > > > >> ------------------------------------------------------- > > >> stack > > > >> RangeError: Error #1125: The index 0 is out of range 0. > > >> at > > >> away3d.loading.parsers::OBJParser/translate()[C:\Users\Mike\Desktop > > >> \away3d\src\away3d\loading\parsers\OBJParser.as:217] > > >> at > > >> away3d.loading.parsers::OBJParser/proceedParsing()[C:\Users\Mike > > >> \Desktop\away3d\src\away3d\loading\parsers\OBJParser.as:166] > > >> at away3d.loading.parsers::ParserBase/onInterval()[C:\Users\Mike > > >> \Desktop\away3d\src\away3d\loading\parsers\ParserBase.as:243] > > >> at > > >> away3d.loading.parsers::ParserBase/startParsing()[C:\Users\Mike > > >> \Desktop\away3d\src\away3d\loading\parsers\ParserBase.as:258] > > >> at > > >> away3d.loading.parsers::ParserBase/parseTextAsync()[C:\Users\Mike > > >> \Desktop\away3d\src\away3d\loading\parsers\ParserBase.as:161] > > >> at > > >> away3d.loading::AssetLoader/parse()[C:\Users\Mike\Desktop\away3d > > >> \src\away3d\loading\AssetLoader.as:267] > > >> at > > >> away3d.loading::AssetLoader/handleUrlLoaderError()[C:\Users\Mike > > >> \Desktop\away3d\src\away3d\loading\AssetLoader.as:235] > > >> at flash.events::EventDispatcher/dispatchEventFunction() > > >> at flash.events::EventDispatcher/dispatchEvent() > > >> at flash.net::URLLoader/onComplete() > > >> At OBJParser:loadMtl:139 - Vector _objects created here. > > >> At OBJParser:loadMtl:166 - Method Translate called, no values have > > >> been pushed to _objects. > > >> At OBJParser:loadMtl:216 - Vector groups initialized with > > >> _objects[_objectIndex]. Out of Bounds Error here. > > > >> ----------------------------------------------- > > >> .obj file > > > >> mtllib cube.mtl > > >> v -8.9734 0.0000 20.1663 > > >> v -8.9734 0.0000 -19.4264 > > >> v 20.8450 0.0000 -19.4264 > > >> v 20.8450 0.0000 20.1663 > > >> v -8.9734 28.0913 20.1663 > > >> v 20.8450 28.0913 20.1663 > > >> v 20.8450 28.0913 -19.4264 > > >> v -8.9734 28.0913 -19.4264 > > >> vn 0.0000 -1.0000 -0.0000 > > >> vn 0.0000 1.0000 -0.0000 > > >> vn 0.0000 0.0000 1.0000 > > >> vn 1.0000 0.0000 -0.0000 > > >> vn 0.0000 0.0000 -1.0000 > > >> vn -1.0000 0.0000 -0.0000 > > >> vt 1.0000 0.0000 0.0000 > > >> vt 1.0000 1.0000 0.0000 > > >> vt 0.0000 1.0000 0.0000 > > >> vt 0.0000 0.0000 0.0000 > > >> g Cube > > >> usemtl Material__26 > > >> s 2 > > >> f 1/1/1 2/2/1 3/3/1 4/4/1 > > >> s 4 > > >> f 5/4/2 6/1/2 7/2/2 8/3/2 > > >> s 8 > > >> f 1/4/3 4/1/3 6/2/3 5/3/3 > > >> s 16 > > >> f 4/4/4 3/1/4 7/2/4 6/3/4 > > >> s 32 > > >> f 3/4/5 2/1/5 8/2/5 7/3/5 > > >> s 64 > > >> f 2/4/6 1/1/6 5/2/6 8/3/6 > > > >> ----------------------------------------------------------- > > >> .mtl file > > > >> newmtl Material__26 > > >> Ns 10.0000 > > >> Ni 1.5000 > > >> d 1.0000 > > >> Tr 0.0000 > > >> Tf 1.0000 1.0000 1.0000 > > >> illum 2 > > >> Ka 0.5880 0.5880 0.5880 > > >> Kd 0.5880 0.5880 0.5880 > > >> Ks 0.0000 0.0000 0.0000 > > >> Ke 0.0000 0.0000 0.0000 > > >> map_Ka texture.jpg > > >> map_Kd texture.jpg > > > >> ------------------------------------------------------------- > > > >> I'm stuck because it's referencing an index in _objects however > > >> between when the instance of the object is created and when an index > > >> is referenced in it nothing in between pushes any values to it so I'm > > >> confused how this could possibly work in any instance. > > > >> Any help is greatly appreciated. > > > >> Thanks, > > > >> Mike
