Triplanar Projection Mapping can be an effective texture mapping solution for cases where the model doesn’t have naturally flowing continuous UV coordinates, or there is a need to have the texture projected independently of UV channels, with minimally visible stretching and other mapping artifacts. Classic use cases for Triplanar Projection Mapping are terrains and organic materials. provided that the image being used is a seamless texture, no seams will be visible because this projection type isn’t affected by UV coordinates. Triplanar Projection Mapping can also be used in world space to create a continuous texture between separate meshes, allowing the meshes to be indestructibly transformed and edited.
How does Triplanar Projection Mapping work? Triplanar Projection Mapping is a linear blend between 3 orthogonal 2D planar texture projections, typically each aligned to a natural world or object axis. The more the surface faces an axis, the higher the weight of this axis projection in the final blend.
UE4 local (object) space Triplanar Projection Mapping material setup: * It’s usually more efficient to create this setup as a Material Function
Local shading coordinates are multiplied by by a “density” parameter to allow convenient scaling of the projected.
The scaled coordinates vector is separated to its components who are combined to 3 pairs of planar coordinates XY, XZ and YZ, and fed as the sample coordinates to the 3 Texture Sample nodes.
The Vertex Normal input vector is transformed to local space, converted to absolute value (absolute orientation in the positive axes octant) and separated to its X, Y and Z components so they can serve as blend weights in the mix.
Each of the 3 planar axis projections is multiplied by the blend factors, and the resulting values are added to the raw mix.
A value of 1.0 is divided by the Normal vector component values to obtain the factor needed to normalize the blend result to a value of 1.0.
The raw blend value is multiplied by the normalizing factor so the blend resulting color will be normalized. * The blend weights should add to a value of 1.0, but a unit vector’s values add up to more than 1 in diagonal directions. for this reason, without this final step, the color of the texture in point on the surface that are diagonal to the projection axes will appear brighter than in points on the surface that face a projection axis.
An example of Triplanar Projection Mapping in world space:
A bunch of Blender monkeys (Suzanne) continuously textured using world space Triplanar Projection Mapping:
Adding a texture to an area light can make it produce softer and more detailed highlights and an overall more organic lighting effect.
Since an Area light in Blender isn’t rendered as an actual mesh object with UV coordinates, it’s texture coordinates are parametric (see below).
Adding a texture to an Area Light:
In the Area Light properties click the Use Nodes button (see image A) to initiate its node graph and allow texturing it.
In the Shader Editor view (with the light selected), drop your texture to the light’s node graph and connect it to the light’s Emission node’s Color input. (see image B)
Create a new Input > Geometry node, and connect it’s Parametric output to the Image Texture’s Vector input. (see image B)
A. Without a texture the Area light produces a hard flat highlight:
B. With the vignette texture, the Area light now has a more subtle organic effect:
* The Emission node’s Strength was increased in this case to compensate for the lower light output with the texture. Related posts:
Using the GradientRamp procedural texture map in Mapped mode can very useful for creating procedural material effects.
The Idea is that the lightness value from a different map will determine what part of the GradientRamp is sampled.
In this example the GradientRamp uses values produced by a procedural Falloff map set to Perpendicular-Parallel mode, as its coordinates source, to create richly colored metal that changes its Hue depending on View/Incident angle:
In this example the GradientRamp uses values produced by a procedural Noise map as its coordinates source to create an irregular color effect:
The examples here were rendered using V-Ray Next for 3ds max, but this technique could also be used with other rendering engines.
This post isn’t about “tiled UVs” (“UDIM”), it’s about multiple UV sets (layouts).
Polygon mesh models can have multiple UV sets. this becomes useful when the UV layout that is optimal for a certain texture isn’t efficient for different texture (in the same material).
For example, we might have a model of furniture, or clothing, in which the UV layout that is best for the fabric weave pattern, isn’t the best for dirt and wear & tear, or stickers.
In such cases we can define different UV sets for the model, each suitable for a different texture.
In this example, having a separate UV Set for the logo texture allows placing it without affecting the checker texture that is displayed an all the surfaces:
To create multiple UV sets:
In the UV editor view, from the UV Sets menu, select UV Set Editor to open the UV Set Editor:
In the UV Set Editor, press the New button to create a new UV Set and double click it in the list to rename it:
Close the UV Sets Editor.
The UV Editor view now displays the new UV Set that is empty, and UV creation and editing operations will now affect the new UV Set.
To switch to edit a different UV Set, select it from the list at the bottom of the UV Sets menu:
To link a texture to a specific UV Set:
Make sure the texture is connected to the material set for the model.
Select the model.
Open Windows > Relationship Editors > UV Linking > Texture-Centric:
Select the wanted texture from the material texture list on the left and select the wanted UV Set from the models UV Sets list on the right:
CG-Lion Wood Presets Pack 1.0 is an advanced 3D procedural wood shader I developed for Blender and the Cycles render engine that produces consistent wood pattern on all sides of the model without requiring UV coordinates.
The shader has many tweak-able parameters for easy customization of the wood pattern, and also has built-in varnish coat and paint layers. CG-Lion Wood Presets Pack 1.0 ships with a ready-to-use material preset library.
An example of a basic traditional (not scanned) cloth material setup in Arnold 5 for Maya using an aiStandardSurface shader.
The shading network uses a classic angle dependent color blend to simulate the color of the cloth being washed out at grazing angle of view.
Explanation of the node graph:
A black and white fabric weave texture that will serve as input for multiple shading channels.
* This is actually not the best example of such a pattern, and could be replaced with a much better texture.
A remapValue node is used to set contrast to the fabric pattern (reduce contrast in this case) prior to it being multiplied with the fabric colors.
* Note that only one of the textures RGB channels is connected to the remapValue node since it’s a float (mono) processor and not RGB.
* Note that depending on the fabric texture, you may have to design different curves to achieve the right effect.
Two colors are defined with colorConstant nodes:
A deep color as the main fabric color, and a washed out color for grazing angle view (“side color”).
An aiFacingRatio node is used as an input for incident angle info.
* Note that in this case I checked the node’s invert option to make it behave more like other systems I’m used to (if you don’t use invert, the angle blend curve in 5 will be different..)
A remapValue node used to set the angle blend curve or in other words, how much does the color appears washed out per change of view angle of the cloth surface.
* The longer it take the curve to become steep from left to right, the more the main color will be dominant before the washed out color will appear.
A colorCorrect node is used in this example just as a way to convert the remapped float value back to RGB for being multiplied with the cloth colors.
* We could also connect it directly to the individual float components of the RGB colors but this way the node graph is cleaner.
A multiplyDivide node is used to multiply the processed fabric texture with the 2 fabric colors “baking” the pattern into the color.
A blendColors node is used to blend the 2 processed fabric colors together according to the processed facingRatio angle input.
The result is the final cloth color that is connected to the aiStandardSurface shader.
An aiBump2d node is used to convert the fabric pattern to normal data that will be connected to the aiStandardSurface shader to produce bumps.
An aiStandartSurface shader serving as the main shading node for this material.
* Note that under Geometry the Thin Walled option is checked so that the Subsurface layer of the shader will act as a Paper Shader rather than SSS.
* The main cloth color is connected to the SubSurface Color input.
Set a project folder and save your scene.
* If your painting into an existing texture you can skip this step.
Make sure your model has UV coordinates.
Make sure your model has a basic Lambert material.
* If you’re using a different material/shader on your model,
Temporarily switch to Lambert just for the texture painting operation,
And connect the original shader with the painted texture map to the surface shader input of the shading group after you’re done painting.
In the Rendering tab toolbar, Double-Click the 3D Paint tool button to activate 3D Paint and also open its tool settings window.
Make sure the object is selected.
In the 3D Paint Settings window, go to the File Textures part,
Choose a material attribute to paint to.
* this would usually be Color because we are using Lambert temporarily anyway.
Click Assign/Edit Textures to open the Assign/Edit Textures dialog,
Choose a resolution and a file format for the new texture,
And than click Assign/Edit Textures button at the bottom of the Assign/Edit Textures dialog to create the new texture and close the dialog.
* If you already connected an existing texture file to the Lambert shader’s Color input you can skip this step.
Check Update on stroke and Save texture on stroke.
Set the viewport to Textured display mode.
Set paint brush settings.
Click the 3D Paint tool button to activate it and paint on the model surface.
Connect the different texture options as inputs to a VRayMultiSubTexNode and connect it to the wanted material input.
In the VRayMultiSubTexNode attributes, set Get ID From to Random by Render ID.
* Press add new item in the VRayMultiSubTexNode attributes to add one or more inputs to the list.