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

Reply via email to