For most of the materials loaded in, they get turned into a ColorMaterial, however, when I specified a texture it actually made it through as a texture Material according to the MaterialLibrary from away3D.
I understand the method of looking through the materialLibrary and changing the materials there however, the Collada loader actually gets stuck when loading the models through with a texture applied to them. I went into the Collada load functionality and checked the material and it was correct on file path, material type, etc. But, since it gets stuck it never reaches my OnSuccess function for when the Collada is done parsing the .dae. I'm using the same kind of method except the object is an Away3D extended object. Just to reiterate, the texture's properties from maya are loaded with the Collada loader with the correct file path. They're relative paths according to where the model is located. The Collada parse just gets stuck on the load when trying to load the model with a texture. On Feb 19, 12:22 pm, "Joshua Granick" <[email protected]> wrote: > If you load and parse a Collada which has several textures specified, will it > leave out the materials, or will it load the materials, but as a Wireframe > Color or something instead? > > Whenever I need to swap out a texture at runtime, I run a for each loop over > the materialLibrary property. It's possible that if you load an object and > don't pass a material, the for each loop (or for in loop) might still have an > entry for each referenced material in the model. Then it's just a matter of > linking up the correct file path to that material. > > At that point, since you might know the name of the material you need, there > might be a way to get that URL off of the object, or you might have a library > you can reference which will define the file path for that material name. > That would make it possible to share textures across different objects. On > the other hand, I guess that still is hard-coding URL paths. > > I am using a unique class with Flash embed code for each model I'm using in > my current project, because each one needs to have additional code > information for how it interacts inside the environment I've created. If you > just needed to load a lot of objects, I can see how this would be difficult. > > So if you use the standard Collada.load method, it doesn't load the textures, > you said? Are you sure that it is finding the textures? Are the paths to the > material images correct inside the Collada? Are they relative? > > On Fri, 19 Feb 2010 06:16:05 -0800, Reinorvak <[email protected]> > wrote: > > Yeah, that is what I was doing previously, but this ended up being a > > hard-coded kind of method since each model would have a specific > > texture. I was looking for a more dynamic way of going about this as > > we're going to have tons of individual models and textures. > > > Alright let me explain a bit more on how this is working. Currently I > > have two classes running about being the Item class, which contains > > all the model data. Then there is my own MatLibrary. I use the > > MatLibrary to load texture's at run time and place them on the model. > > However, this requires that I know which texture goes where on the > > model, as there can be multiple texture's per single model. As is > > such, I'd like to further separate the need to externally load > > texture's when loading a model, as want to load it with the Collada > > loader, not using the bitmap parameter. > > > Currently, this is whats happening in code: > > > On the load call: > > public function loadModel(url:String):void > > { > > m_url = url; > > var loader:Object3DLoader = Collada.load("Models/test/chair/ > > box_test.dae"); > > loader.addOnSuccess(onSuccess); > > loader.addOnError(onError); > > } > > > Pretty much just making a basic load call with Collada and setting up > > event handlers. > > > On the load Success: > > > override protected function onSuccess(e:LoaderEvent) > > { > > m_model = (e.loader.handle as ObjectContainer3D); > > m_model.ownCanvas =true; > > m_model.renderer = renderer; > > addChild(m_model); > > > for(var i = 0; i < m_textureNames.length; ++i) > > { > > fcsMaterialLibrary.getInstance().addEventListener( > > "LoadComplete" + > > m_textureNames[i], initMaterial); > > } > > fcsMaterialLibrary.getInstance().CreateMultiMaterial(m_model, > > m_textureNames); > > } > > > Turn the model that has been loaded into an object of the class, and > > then continue on to load the Array of textures. The textures are hard- > > coded for the time being, and I can get them to show up on the model > > with some tricks. But what I'd like to do is remove the need for the > > MaterialLibrary, and just have all texture's loaded on the collada > > load without having the load the texture beforehand. > > > Thanks again in advance. > > > On Feb 18, 4:58 pm, "Joshua Granick" <[email protected]> wrote: > >> FYI, you can parse on your own like this: > > >> Collada.parse (MeshClass, { material: MaterialClass } ); > > >> or > > >> var material:BitmapMaterial = new BitmapMaterial (Cast.bitmap > >> (MaterialClass), { smoothing: true } ); > >> Collada.parse (MeshClass, { material: material } ); > > >> That works great if you're embedding. I don't use the built-in load > >> method, but if you need the Collada and UV to be outside Flash at runtime, > >> you can load them using a URLLoader for the mesh and Loader for the UV, > >> then parse it like this. You wouldn't need to cast the material as a > >> bitmap since that's how it comes from the Loader, and I think you could > >> just pass the text value into the first parameter of the parse method > > >> Hope this helps you get up and running > > >> On Thu, 18 Feb 2010 13:28:38 -0800, Reinorvak <[email protected]> > >> wrote: > >> > Greetings again everyone, > > >> > Recently, I've come across the problem of trying to load a pre- > >> > textured model into away3d using the Collada format. I believe I've > >> > read on something like this before, but couldn't find the post so just > >> > point me in the direction if its already been resolved. > > >> > Here's the thing. When I load the model into away3d, the parse > >> > constantly gets stuck on the notifyProgress function. The parser will > >> > first fire a notifySuccess, but then continues to call the > >> > notifyProgess and continues parsing the collada file, after getting > >> > out of its notifyProgress loop. This process will continue forever, > >> > and I'll never get my models on screen. > > >> > However, should I not set the texture material onto the model, it > >> > loads just fine and goes on its way. So, I'm not sure if this is a > >> > problem with the .dae file, which it seems to be, or with something in > >> > away3d. Either way, I need models to be able to load textures from > >> > Maya using this collada format. Any help will be appreciated and > >> > thanks in advance. > > >> > P.S. I'll keep looking on my own for the solution in the mean time. > > >> > Rein > >
