UV by element is a scripted modifier plugin. It will offset, rotate, and/or scale the UV coordinates of each element by a pseudo-random amount.
How It Works:
Each transformation type can be turned on and off. The different transforms have a minimum and maximum for each available axis. The random offsets are selected from this range. Each transform also has an increment option, which locks the random values into steps. The Scale transform has an option to scale uniformly. There is a control for choosing the mapping channel, and a control for specifying the random seed.
This modifier can make using a seamless texture with a Floor Generator object easy, and does not require collapsing the modifier stack. Simply place a UVW Map modifier with the correct mapping scale over the Floor Generator modifier. Then place a UV By Element modifier over that. Enable translation from -1.0 to 1.0 with an increment of 0.0 and then add a rotation with a range of 0.0 to 360.0 and an increment of 180.0.
Unwrap the pieces of your pattern so that the texture is at the correct scale and alignment. Then duplicate those pieces to create your pattern. Add a UV By Element modifier. Enable translation from -1.0 to 1.0 with an increment of 0.0, then add a rotation with a range of -360.0 to 360.0 and an increment of 0.0, and top it off with a slight scale of 0.9 to 1.2 with an increment of 0.0.
Scale your tile’s UV shells to be one quarter of the space. Then place Add a UV By Element modifier. Enable translation from 0.0 to 1.0 with an increment of 0.5, then add a rotation with a range of -360.0 to 360.0 and an increment of 90.0.
Place the script into either your plugins folder or your startup folder. Like compiled plugins, this script must be installed on every computer on your farm in order to work. Since this is a scripted plugin, it will not be as fast as a compiled one. Very large meshes will be painfully slow.
%localappdata%\Autodesk\3dsMax\<VERSION> - 64bit\ENU\scripts\startup or C:\Program Files\Autodesk\3ds Max <VERSION>\Plugins
This plugin should work with Max 2016 and above, though I have only tested it with 2018 and 2020.
- Fixed an error caused when a map channel is empty.