mesh.geometry.submeshes returns you what you need, indeed you can then compair. yes adding a subgeometry will create the submesh for you.
> However, I need to be able to get to the SubMesh to apply the material later, Yes thats why I told you to look at Mirror. Same rule here, more "handy" calls will be added as we go. such as a addMaterialToSubgeometry(mesh, indexsubgeom, materialBase) like would be handy for sure. for now, we have loads of other stuffs to fix, and add first. Fabrice On Mar 22, 2011, at 10:27 PM, Dave wrote: > Thank you for your reply. I've taken a look at tools.Mirror. > > From what I can tell, it looks like it's a bad move for me to create a > SubMesh explicitly. It's better (with the current API) to simply > create the Mesh, add the SubGeometry to Mesh.geometry, and let > Mesh.onSubGeometryAdded() create the SubMesh for me. > > However, I need to be able to get to the SubMesh to apply the material > later, and specifically know which material should go on which > SubMesh. The only way that I can think of doing this is very brittle > - store a reference SubGeometry node I created, and then retrieve the > list of SubMesh from the Mesh, and compare SubMesh.subGeometry to my > stored references, and if they match, then apply the material. > > I will try this now. > > -Dave > > > On Mar 22, 2:04 pm, Fabrice3D <[email protected]> wrote: >> look at tools.Mirror class. >> Its supporting multiple materials. >> >> Note I need to add a method MesshHelper.reOrganize(); (or something like >> that) to optimize this class and of course others. >> >> the issue: >> a mesh is defined as following >> subgeom[0] has first material and holds 50k verts >> subgeom[1] has second material and holds 5k verts >> >> during mirroring or if you add faces/vectors. For the ease lets use Mirror >> case where data doubles >> you get now 2 extra subgeometries in case of materials because of the >> maxvert split and because each buffer must have a unique material. >> while it should become 3. >> >> 1 holding 10k with second material >> 1 holding 65k with first material >> 1 holding 35k with first material >> >> tho Adobe increased the amount of resources that can be uploaded, its >> prefferable to have something good... >> >> This is on my todo, and will unlikely give you issues in your application. >> Just wanted explain the little nuance that is coming soon >> into MeshHelper... the method will do this for you. >> >> Fabrice >> >> On Mar 22, 2011, at 9:02 PM, Dave wrote: >> >> >> >> >> >> >> >>> I've constructed a SubMesh like so: >> >>> var subMesh:SubMesh = new SubMesh(subGeometry, parentMesh); >> >>> If I assign a material to the SubMesh, I get the following exception/ >>> stackdump: >> >>> Main Thread (Suspended: TypeError: Error #1009: Cannot access a >>> property or method of a null object reference.) >>> away3d.core.base::SubGeometry/get animation >>> away3d.core.base::SubMesh/get animation >>> away3d.materials::MaterialBase/addOwner >>> away3d.core.base::SubMesh/set material >>> <snip> >> >>> public function get animation() : AnimationBase >>> { >>> return _parentGeometry._animation; >>> } >> >>> _parentGeometry is null. This is only set in >>> Geometry.addSubGeometry(). >> >>> When I add a SubGeometry to a SubMesh, am I also supposed to add the >>> same SubGeometry to Mesh.geometry also? >> >>> I suspect I'm running into a slightly underdeveloped part of the API, >>> and I'm trying to figure out how best to steer around this error. >> >>> I need to have one object, with multiple materials. I'm happy to >>> achieve this however I can with the current API. >> >>> -Dave
