
I built a clay override that works by material, not by object — unlike Corona's native one
Hey all, sharing a little tool I've been using in production and finally cleaned up for release.
The problem: Corona's native Material Override is great for clay renders, but it's all-or-nothing — it replaces every material in the scene. That's annoying when you need glass, lights, portals, or anything with displacement/opacity to stay visible so your lighting preview actually makes sense.
What it does: OverrideByMaterial lets you define exclusions instead — by material type (lights, portals, slicers, refractive materials), by name pattern (wildcards like *glass*), or by manually picking materials straight from the Slate/compact Material Editor. It recursively walks Multi/Sub-Object, Blend, Shell, and Corona Layered trees, and it also supports XRef Scene content. If a material has bump/displacement/opacity, it'll copy those maps onto the clay version so you don't lose the scene's silhouette.
It's got a "safe mode" baked in too — it calls holdMaxFile() before applying anything, and there's a dedicated Restore button since Ctrl+Z won't undo the swap. There's also an Automatic mode that hooks into pre/post-render so it just feels like flipping one checkbox.
MIT licensed, single .ms file, no dependencies. Works from 3ds Max 2019+ and Corona 9+ (I've tested on 2023 / Corona 14).
Repo here: https://github.com/rovillanueva/OverrideByMaterial
Would love feedback — especially if anyone wants V-Ray support or has edge cases where the exclusion logic breaks. Open to PRs too.