View Full Version : Test for multi/sub object
07-01-2011, 11:53 AM
I'm stuck with some script and any help would be much appreciated.
I have a maxscript that loops though the SceneMaterials and searches for a selection of textures, which names are obtained from a text file. When located a texture is placed into its opacity map.
Now the problem I have is when I get to a multi/sub object in the material list I get this error
Unknown property: "diffuseMap" in #Multi/Sub-Object:02 - Default(Standard:Material #46, Standard:Material #38, Standard:Material #39, Standard:Material #40, Standard:Material #41, Standard:Material #42)
So I need a way to test whether the current material is a multi/sub object.
if( SceneMaterials[i] == multi/sub) then
if classof scenematerials[i] == multiMaterial
if isKindOf scenematerials[i] multimaterial then...
To be complete.. :)
07-04-2011, 09:01 AM
A much better way to approach this than searching through the scenematerials for scenematerials[i].diffusemap is to use the getclassinstances function. This means it doesn't matter if your map is in a multi-sub, a multi-sub within a multi-sub, a blend material, a composite etc...
example bit of psuedo code... doesn't work...
For o in getclassinstances Standardmaterial where o.diffusemap != undefined and (matchpattern o.diffusemap.bitmap.file pattern:"*something*") == true then o.opacitymap = bitmaptexture filename:(getfilenamepath o.diffusemap.bitmap.filename + getfilenamefile o.diffusemap.bitmap.filename + "_opacity.bmp")
This will then work for all StandardMaterials regardless of where they are in material heirachy. :)
07-04-2011, 11:23 AM
Thanks dude. That way works much better.
As a quick fix I made another script that would work on the selected material, but now I can combine them both :thumbsup:
The funny thing is I came across that method but didn't think it applied to my situation.
07-04-2011, 11:23 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.