ScriptSpot

Script

Vray ToolBox

By SimonBourgeois · 2024-09-13

Version
1.1.2
Version requirement
Tested on 3dsmax 2025 and Vray 7
Other software required
Vray
Date updated
2026-02-13
Votes
6
Download
Download
Description

It is a Vray version of my script "Corona Automator" It has a lot of features for materials, bitmaps ,cameras, lights and proxies.

Its main goal is to automate property tweaking, and save time on repetitive tasks.

for now the material part is focused on Vray Materials , it won't work on other kind of materials like fastSSS or other materials.

You have different options to access the desired materials or bitmaps, either from selected objects or from the slate material editor selection nodes, you can also target a specific Material ID or apply to all Material IDs.

update 1.0.1: Some Camera properties where missing, and remove round edges wasn't working on single VrayEdgeText, though it was working when used in conjunction of a VraycompText that use an additional bump texture.

update 1.0.2: A preset system has been added, you can create a preset file that will set new default values for all settings.

update 1.0.3: Some Settings were not well stored in the saved preset, if you have already create some preset files with 1.0.2 version you should recreate them because some UI elements needed to have their name changed to make it work properly, if you experience problems just delete the preset files before launching the script. I also fixed the Self-illumination spinner where it wasn't possible to go above a value of 1.

update 1.0.4: BugFix, crashed when selection filter was set to SME (Slate Material Editor), and Color Correction was set to Maps. Also the random values buttons in Color Correction settings were applying a single random value to multiple nodes instead of random values for each nodes when multiple color correct nodes where found in a single slot, for example multiple color correct in a multitexture node. Another update has been made to the function that converts standard or physical camera to Vray camera, now it is also transfering animation (position ,rotation, roll_angle, field of view).

update 1.0.5: A few bug fixed...

update 1.0.6: Last saved preset is now loaded as default,Updated "Multiple Cameras To Single animated camera" and "Animated camera to multiple cameras" now keeps every property of each cameras, it used to keep only position, orientation and field of view, I Also fixed a few bugs here and there...

update 1.0.7: A few improvements here and there...

update 1.0.8: Updated colorcorrection functions, you can now target any material slot, a few bug fix, and a few improvements here and there...

update 1.0.9: In preset tab there is now a Dock option, you need to save a preset so that next time you open it, it will be docked or not, the default is docked. It will also save the dialog position, so when you save your preset first undock the script and put it where you want it to be next time you launch it.(update requested by locb)

update 1.1.0 : BugFix, there was a bug in latest version when trying to modify any material properties.

update 1.1.1: The new undocked version didn't work well for the camera tab where the end of the first rollout wasn't reachable by scrolling down, an other bug was that if you saved a preset with the dock checkbox disable but with the current Ui docked it wasn't working when loading this preset.

update 1.1.2: ColorCorrection Dropdown menu (introduced in version 1.0.8) wasn't updated properly when unchecking any checkbox.

Tags: Material, VRay, bitmap, light, camera, Proxy

Comments (17)

tahir1983 · 2025-10-19

THANKS VERY MUCH FOR THE TOOL! SO IT LL BE GREEAT TO HAVE SOMETHING LIKE FOR FSTORM ENGINE! THANKS IN ADVANCE!

locb · 2025-10-19

best!

locb · 2025-10-17

Maybe you can make option "open undocked", and save window position?
So we can open it on second monitor, bacause script has wide interface, and on my 14" he is too big )

Hi

SimonBourgeois · 2025-10-17

I've updated the script.
In preset tab there is now a Dock option, you need to save a preset so that next time you open it, it will be docked or not, the default is docked. It will also save the dialog position, so when you save your preset first undock the script and put it where you want it to be next time you launch it.

trick · 2024-12-11

Same for me. But if it saves me days of work I am surely not going to nitpick some unnecessary long loops or occasional crashes ;) I have expensive subscriptions on scripts/plugins that are way (read: tears in eyes kind of) worse!

If it works...it works :)

SimonBourgeois · 2024-12-11

Although it's better if it's fast and stable...;)
I keep rewriting my scripts as soon as I learn stuff that would make them faster and more reliable. The problem I am facing with Vraytoolbox and CoronaAutomator is that they have become rather large scripts. It takes a while to test every function before a new release, and changes made to one function can impact another that I didn't test before release, so bugs appear where previous versions were working well...
As I consider myself a beginner, I keep all my scripts free. Thanks for pointing out that even though it is free, it works better than some paid ones :)

trick · 2024-12-10

You are the best!

Thx !

SimonBourgeois · 2024-12-10

Glad i could help.
Although it's nice to be called "the best", I must point out that there are much better MaxScript programmers out there. I'm still a noob, and a rather messy one. My scripts would certainly make some professional programmers laugh.:)

Great tool !! ... just one tiny miss

trick · 2024-12-07

I love this tool and I am using it all the time.

One thing is hard: when there is a VRayNormalMap in the bump channel that has both a Normal Map and Bump Map it is impossible to mass-change values of these texture maps (for instance the blur-value) seperately. Or am I missing something? Would be more great if this would be made possible. Under Bitmap Selection there should be a choice for Normal Map: this way the Bump map whether alone in the Bump Channel or as option in the VRayNormalMap, could be adjusted seperately from the normal map.

Thx for the feedback :)

SimonBourgeois · 2024-12-08

You are right, if you target bump slot, in Bitmap selection rollout, it will affect any maps that are in the bump slot of selected objects materials, if you need to change independently normal bump or additional bump map, you 'll have to use "SME-Selection" and choose "Maps" that way you can load multiple materials in slate material editor and select only maps nodes that needs to be modified (use ctrl to select multiple nodes), it will then target only those selected nodes. This is true for most case scenario where selection filters doesn't fit your needs, there is still a few case where it doesn't work well, even with SME selection, for example, maps that are used as mask in a vrayblend aren't tweakable by my script, i need to work on it...maybe in next update.

trick · 2024-12-08

I tried your method but there is a limit on the number of materials you can load. I am editing material libraries that have 500-1500 materials,each at least with 6 8K bitmaps in different channels. Loading these in SME simply crashes Max (or it takes at least more than a working day to load), even with 256G RAM. I think the fastest way for that is to write a script myself. Thanks for listening.

SimonBourgeois · 2024-12-09

You can use this small script:


(
	local matArr = loadTempMaterialLibrary "C:\...\...\\test.mat"--replace with your matlib path, keep the double \\ before filename
	local NrmArr =#()
	for m in matArr do join NrmArr (getclassinstances VRayNormalMap target:m) --loop through every materials and collect every VRayNormalMap even if they are embeded in some complex materials like VrayBend, multisub, wrapper, override,etc...
	makeuniqueArray NrmArr --remove nodes that might have been collected multiple times, not always working, you can use a custom function to do a better filtering if you need to speed things up
	for m in NrmArr do --loop through every collected VRayNormalMap
	(
		if m.normal_map != undefined do m.normal_map.coords.blur = 0.1--here you can change blur value for normal maps
		if m.bump_map != undefined do m.bump_map.coords.blur = 0.5 --here you can change blur value for bump maps
	)
	saveTempMaterialLibrary matArr "C:\...\...\\test_output.mat" --this will output a new Matlib with modified materials
)

trick · 2024-12-09

Thanks:) That will ehlp my rusty programming brain.

One more little thing missing in your tool is the filtering method (Pyramidal, Summed Area, None). With high res textures I mostly set filtering to none, because the other methods require a lot of memory.

You're welcome :)

SimonBourgeois · 2024-12-09

I forgot to add the filtering type because it wasn't the same settings for vraybitmaps and 3dsmax bitmaps, i left it on the side and forgot i had to deal with this...
I will add those settings in next update.
If you need you can use almost the same code as earlier, this time to set filtering to none:


(
	local matArr = loadTempMaterialLibrary "C:\...\...\\test.mat"--replace with your matlib path, keep the double \\ before filename
	local btmArr =#()
	for m in matArr do join btmArr (getclassinstances Bitmaptexture target:m) --loop through every materials and collect every bitmaptextures 
	makeuniqueArray btmArr --remove nodes that might have been collected multiple times, not always working, you can use a custom function to do a better filtering if you need to speed things up
	for m in btmArr do --loop through every collected bitmaptextures
	(
		m.filtering = 2
	)
	saveTempMaterialLibrary matArr "C:\...\...\\test_output.mat" --this will output a new Matlib with modified materials
)

Nice work . . . !

sketchupmaster · 2024-10-05

all in one tool

thank you so much it is working good and help to modify material value and more . . .

You're welcome

SimonBourgeois · 2024-10-05

Thx for the feedback, glad you like it :)