Script To Delete/Off All Opacity Channel

I have a scene whee some of the materials have opacity map. The problem is the scene is too big for me to do it manually one by one.

Is there a script that can automate this?

Thanks in advance for any kind help

Comments

Comment viewing options

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

Just tried with Standard and no Worky

Hey Barigazy...I'm baaaa-aaack. :)

Can't get this to work with standard mats. Listener reports OK not nothing happens in the scene.

mapped fn clearOpacityMax mats:(getclassinstances Standardmaterial) = if mats.count != 0 do
(
if opacityMap != undefined do
setProperty mats "opacityMap" undefined
)
clearOpacityMaps()

Basically I'm trying to reverse what this script did:

http://www.scriptspot.com/forums/3ds-max/scripts-wanted/diffuse-alpha-ch...

I ideally I would like it to work on scene or selected....is this possible ?

Max 2016 btw.

barigazy's picture

...

Hey buddy. How are you :)
Here we go

fn clearOpacityMap selected: remove: = 
(
	local mats = #()
	if not selected then mats = getclassinstances standard else
	(
		if selecton.count == 0 then #() else  
			for o in selection where o.mat != undefined and iskindOf o.mat Standard do join mats (getclassinstances standard target:o.mat)
	)
	if mats.count > 0 do
	(
		for m in mats where m.opacityMap != undefined do 
		(
			if remove then m.opacityMap = undefined else m.opacityMapEnable = off
		)
	)
)

Now you have two solutions ei. options:
selected:on -- works on selected object materials
selected:off -- works on all materials
remove:on -- removes all opacity maps from slot
remove:off -- disable all opacity maps

clearOpacityMap selected:off remove:off -- disable all opacity maps 

barigazy

barigazy's picture

...

I used here VRay material as example
For standard (default) material use [Standardmaterial] class and ["opacityMap"] property
#1 mapped fn solution

mapped fn clearOpacityMax mats:(getclassinstances VRayMtl) = if mats.count != 0 do
(
	if mats.texmap_opacity != undefined do
		setProperty mats "texmap_opacity" undefined
)
clearOpacityMaps()

#2 simple fn solution

fn clearOpacityMaps =
(
	if (gci = getClassInstances VRayMtl).count != 0 do
	(
		for m in gci where m.texmap_opacity != undefined do
			setProperty m "texmap_opacity" undefined
	)
)
clearOpacityMaps()

barigazy

Comment viewing options

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