How exactly do I do the changing to BitmapFileMaterials later part
code wise?

When I do:

 = Obj.load("assetts/teapot_1.obj");

*** note no material specified

my object renders with a wireframe and a default color already. I just
need to know now how to apply (the code details) to load a
BitmapFileMaterial to it.

On Apr 27, 2:26 am, routine <[email protected]> wrote:
> Ah,
> I think I get what you want.
> Loading the material in the second step does not work for me.
> I've tried it a while time ago.
> My solution, that probably also works for you, was to give the object a
> simple ColorMaterial when loading and changed this one to
> any BitmapFileMaterials I needed later.
>
> When loading an object without parsing an material property
> in the parameter object causes, that the objects does not apear
> in the scene anyway, even you add a material later. Don't know why,
> but again, the solution worked for me in this case.
>
> Roland
>
> Am 27.04.2009 um 11:18 schrieb Joseph:
>
>
>
>
>
> > Hi Roland,
> > Thanks for the response.
>
> > I see what you are getting at, however, does this work for a
> > BitmapFileMaterial?
>
> > Let me try again to explain what I'm doing.
>
> > I have 1 .obj file (i.e. teapot_1.obj) ...
> > I have several different bipmap files (i.e. teapot_1.jpg,
> > teapot_2.jpg) that I can swap around when I load initially (removed
> > texture & mtl info in .obj file) as such:
>
> > = Obj.load("assetts/teapot_1.obj",{material:texture3});
> > or
> > = Obj.load("assetts/teapot_1.obj",{material:texture2});
> > or
> > = Obj.load("assetts/teapot_1.obj",{material:texture1});
>
> > They all load fine because I coordinated the UV mapping for all to the
> > object.
>
> > Is there a way to break apart the Obj.load such that I load the obj
> > first:
>
> > = Obj.load("assetts/teapot_1.obj")
>
> > and then load textureX (i.e. teapot_1.jpg) with seperate "command"?
>
> > I thought I saw a basic example where it was done in 2 steps but I
> > can't find the example now ...
>
> > On Apr 27, 12:57 am, routine <[email protected]> wrote:
> >> Hi Joseph,
>
> >> you get an errror because Object3D does not have any material  
> >> property.
> >> To swap materials on importedobjects you have to parse through all  
> >> its
> >> faces
> >> and set the material of the faces to the one you like to have.
>
> >> Here is a litte snippet for you:
>
> >> for ( var i : Number = 0; i < object.children.length; i++ ) {
> >>         for ( var j : Number = 0; j <  
> >> object.children[i].faces.length; j++ ) {
> >>                 object.children[i].faces[j].material = new  
> >> ShadingColorMaterial( c );
> >>         }
>
> >> }
>
> >> In this case "object" will be your Object3D instance.
>
> >> Hope this works. If not, try ObjectContainer3D instead of Object3D.
>
> >> Roland
>
> >> Am 27.04.2009 um 09:49 schrieb Joseph:
>
> >>> Hello,
> >>> Been looking at source code for (Basic09_BitmapMaterialExplorer.as).
> >>> Want to swap textures back and forth on an .obj ... not quite  
> >>> working,
> >>> though ...
>
> >>> Flex framework brought into project library ... CS4, away3d  
> >>> 3.3.3 ...
>
> >>> Import relavent away3d classes:
> >>> import away3d.core.utils.Cast;
> >>> import away3d.materials.BitmapMaterial;
>
> >>> I embed a couple of textures:
> >>> [Embed(source="assetts/teapot_1.jpg")]
> >>> public var texture1:Class;
> >>> [Embed(source="assetts/teapot_2.jpg")]
> >>> public var texture2:Class;
>
> >>> Declare material variables:
> >>> private var material1:BitmapMaterial;
> >>> private var material2:BitmapMaterial;
>
> >>> Load in .obj:
> >>> var obj1:Object3DLoader = Obj.load("assetts/teapot_1.obj",
> >>> {material:texture1});
>
> >>> On success grab handle:
> >>> obj1object3d = e.loader.handle;
>
> >>> Create new materials:
> >>> material1 = new BitmapMaterial( Cast.bitmap( new this[texture1]() as
> >>> Bitmap ));
> >>> material2 = new BitmapMaterial( Cast.bitmap( new this[texture2]() as
> >>> Bitmap ));
>
> >>> On button press simply toggle materials with these calls:
> >>> obj1object3d.material = material1;
> >>> or
> >>> obj1object3d.material = material2;
>
> >>> But get error for the toggle material calls ...
> >>> 1119: Access of possibly undefined property material through a
> >>> reference with static type away3d.core.base:Object3D.
>
> >>> Obviously for a primitive sphere.material works but for Object3D I
> >>> have to get it another way ... how would I do that?
>
> >>> BTW, all these things I'm learning I'm compiling into a "Common Noob
> >>> Mistakes" to help others as low level as I ...- Hide quoted text -
>
> >> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

Reply via email to