The Triplanar Theory
So, what is this triplanar mapping, and what’s it for? The general idea is that we map a texture three times with planar maps (thus the tri-planar bit) along the X, Y, and Z axes, and then blend between these three samples based on the angle of the face, using the one that fits best with the least stretching. In theory we’ll never have a stretched texture or hard seams, and we don’t even have to UV map our mesh!
VrayTriplanarTex
Vray recently added a triplanar texture to version 3.3. Here’s the interface…
It’s simpler than the one built into 3dsmax 2017, but is available for older versions of max, and is far better than the soulburn scripts methods.
Here’s a few notes on what the parameters do…
Texture is the bitmap you want to use in your box map. You can specify using the same bitmap for all 3 directions (most common), or apply a different bitmap to each direction.
Scale is the size of your blended box map. A value of 0.01 means your bitmap will be applied 100 units square inside your scene. So if you have a 100 unit box, it will receive your bitmap a single time. The one downside for this blended box map being a texture map only is there’s no visual in the scene of how big it is, you have to render to see how large the pattern is.
Blend is how blurry the edges are, 0.1 - 0.5 is good for most use
Frame Offset: This controls the middle point of the blended box map. So if you want to move your entire pattern to the side a bit, you can do that here.
Texture Rotation, this allows you to rotate the texture on each axis. I have found that if you leave this to 0,0,0, you sometimes see repeating textures. My preferred defaults are 0, 35 and 70, this produces more random looking results.
Space: Local space means the box map is transformed based on the transform of the object. That means, the center of the map will be applied to the center of each object. This can lead to some odd looking results if you have a lot of objects…
In these cases, I’d recommend either attaching more of your objects together into a single object, or use “Node space” instead. To use do this, group your objects by linking them to a point helper (which is generally a good idea to do anyways), then choose the point helper as your node, and now the pattern will flow over your objects properly as though they were a single unit, even though the objects are actually separate.
And note, if you choose node but leave the reference node slot blank, it’ll default to world space
Random: these are ways to have the pattern randomly transformed on every objects its assigned to.