Notifications
Clear all

[Closed] blend material mix control

hello again scripting world.

im attempting to control a blend material with a small script.

but it cannot be a global change it can only operate on objects with a certin name, which i think i understand. its the mixing that is not working. i have spent most of the morning looking into the max script reference to try to get this done and made a little test at the end to see if the script is indeed compeleting but i never have an altered mix ammount. please help

for n in shapes do
 	(
 		if matchPattern n.name pattern:"neon" do
 		(
 			if hasProperty n "blend" do
 			(
 				  n.mixAmount = 100
 			)
 
 		)
 		messageBox "finish"
 		format "_t= %
" _t
 	)
 	
4 Replies
for n in shapes do
(
    -- use wildcards to match any object containing the word "neon"
    if matchPattern n.name pattern:"*neon*" then
    (
        -- check if the object as a blend material applied to it
        if classOf n.material == blend then
        (
            -- set the mix amount of the blend material
            n.material.mixAmount = 100
        )
    )
)

This code doesn’t check whether the material has been applied to other objects other than the ones having “neon” in its name, so you’ll either have to make sure these objects have unique materials, or implement an extra check in the script.

Hope this helps,
Martijn

yep, that works. fantastic!

what are the * signs for in the name? is that a required part of matchpattern?

1 Reply
(@magicm)
Joined: 11 months ago

Posts: 0

It’s just like how the old dir command in dos works. * stands for “any number of characters” and ? stands for “any single character”.

So “neon” translates to a string which starts with any number of characters, contains the word “neon”, and ends with any number of characters. So, using just “neon” as the pattern in the matchPattern function would only return nodes named “neon”, and not those named “neon01”, “neon02”, etc.

Hope this clears it up,
Martijn

Those are wildcards without them it will only match the string “neon”. With “neon” it would match “neon” or “red_neon”, but not “neon_red”. With “neon” it would match “neon” or “neon_red”, but not “red_neon”. With “neon” it will match any string containing the string “neon”.

-Eric