Multi/Sub-object material creator

I would like a script that assigns a new material ID to each polygon, according to the texture assigned to it, and then create a multi-subobject material. This would be useful for when I want to create materials that have different textures for the same model. I realize that I should probably assign mat ids while i am making the model, but sometimes I forget. Thanks. I currently use Max 7.

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
mobeen's picture

Try this script it will

Try this script it will replace the existing materials on an editable poly object with a single multisub material.

--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--
--:: This script replaces existing materials on an editable poly ::--
--:: and replaces it with a single multisub material. Helps when ::--
--:: you are short of material editor slots ;-) ::--
--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--
--:: Author :: Muhammad Mobeen Movania ::::::::::::::::::::::::::::--
--:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::--
try(destroydialog r_Test)
catch()
rollout r_Test "MultiSub-Material"
(
button btn "Create Multi-Sub Material"

on btn pressed do
(
--Ensure at least something is selected
if ( $ != undefined ) then
(
--See if we have a valid object
if(classof $ == Editable_Poly) then
(
--Create a new multisub material
multiMat = Multimaterial numsubs:($.numFaces)

--Loop through all faces of the mesh
for i=1 to $.numFaces do
(
-- Get the material index of the current mesh face
index = ($.GetFaceMaterial i)

--Add to our multisub material
multiMat.materialList[i] = meditmaterials[index]

--Create a new material to replace it in material editor slot
meditmaterials[index] = standard()

--Give it a new name
assignNewName meditmaterials[index]
)

--Place our new material in the material editor slot
meditMaterials[sceneMaterials.count] = multiMat

--Assign to the current mesh the new multisub material
$.material = multiMat
)
else
messagebox "Required an editable poly object having materials assigned"

)
else
messagebox "Nothing selected"
)
)
CreateDialog r_Test 200 60

Hope this helps
Mobeen

Proud to be a PAKISTANI.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.