1 Tutorials LightWave 3D Texturing 101: Building Textures Qua Jan 26, 2011 1:50 am
Admin
Admin
by Gregory Duquesne | |
Introduction Texturing is a powerful and yet easy to use way to add complexity to computer generated images. The image to the left was created using only one subdivided polygon, no drawings, nor photographs, nor images of any kind, and this comes straight from the renderer, no post processing applied. All of the geometry, the distribution of the rocks, the way snow sticks on the rocks, the colors, etc... everything here is procedural, which means that a few controls (on the procedural function) are enough to describe this model, and by adjusting some of these controls entire new worlds can be created. It also means that this model is very compact: the object is 2k and the scene is 9k in size, making it easy to manipulate, load, etc. Texturing is no news for most LightWave® users, they have been using displacement textures, color textures, etc. since the very early days of LightWave®. What's new with LightWave® [6] is that the texturing paradigm has been unified and extended to the entire application including Modeler, this combined with the generalization of subdivision surfaces and volumetric effects in Layout is opening new ways to model that didn't exist beforeTexture Layers Textures are built upon 3 different components:
Since these can be layered inside a texture we call them texture layers. Each layer type performs something very different: <blockquote class="text_body"> Image maps: <blockquote> These are designed to apply an existing image by choosing from different projections. One of the major novelties with L[6] is the UV projection which is described in more details in other tutorials. </blockquote> Procedurals: <blockquote> They are functions which given a 3D coordinate return a value, or a vector ( depending on the evaluation context ). The new thing in L[6] about procedurals is that they are now implemented as plugins, so when a new plugin is added it expands the choice of procedurals. Another novelty is that all the procedurals are available everywhere instead of being restricted to certain areas as was the case before. </blockquote> Gradients: <blockquote> These are new to LightWave®, they allow the parametrisation of the textures. That means that given some local parameters you can change the appearance of the texture, that's the way the snow was created in the landscape image by using the "slope" parameter. More on this important subject later. </blockquote> </blockquote> Combining Layers One of the most interesting benefits of layering is that you can set different blending modes between layers, this sets how one layer affects the other. The blending modes are the following:
The first 5 modes are just different operators on the layer outputs: A + B, A - B, A * B, A B. Note that they are combined with the layer opacity setting, so "additive" for instance is only truly additive for an opacity value of 50%. This is also how it used to work in previous versions of LightWave®. The 2 last modes are the most interesting in terms of functionality: Alpha Blending Mode The Alpha mode allows to set any layer as an alpha channel for the previous layer. The interesting thing about it is that any layer can become an alpha channel, therefore you can use an image map as the color information and use a procedural to set its transparency. Here is an example of a texture that uses this functionality: Say we want to make a texture that puts pink dots only on the top of an object (more specifically in the flat areas). To recreate this example, just go to Modeler, create a box, open the surface editor and add a texture to the color channel. We set the first layer to be procedural (Layer Type) and select "Dots" as the procedural type, then we set the color to pink and adjust the scale. This makes the base color texture: <table align="center" border="0" cellpadding="0" cellspacing="0" width="160"> <tr> <td></td> </tr> </table> Now we had an additional gradient layer that we set to use the slope (Input Parameter), and we had keys so that the gradient goes from white to black. As we can see on the sample sphere this makes the surface white where it is flat (that is on the top of the sphere) and black where the slope increases: <table align="center" border="0" cellpadding="0" cellspacing="0" width="160"> <tr> <td></td> </tr> </table> Now what we want is to have the original pink dots show where the white is. We can do that by simply setting the layer blending mode to "Alpha". This produces the following result: <table align="center" border="0" cellpadding="0" cellspacing="0" width="160"> <tr> <td></td> </tr> </table> What we have done here is say that the pink dots should only affect the flat areas. This looks trivial but it allowed us to create a relationship between 2 layers and furthermore to relate texturing to the geometry of the surface. The later point will be examined in greater details later in the next paragraph, suffice is to say for the moment that it is one of the most powerful features of the new texturing scheme. Why exactly are the pink dots showing on the top of the sphere ? That's because the gradient is white on the top of the sphere, therefore the alpha channel is white which means opaque, so the previous layer (that is the pink dots) will be show on the top. Similarly where the gradient is black, the previous layer will be transparent. You can try different colors for the keys and see how their luminosity affects the final result. Note that from there we can do all kinds of modifications to the alpha channel by inverting the layer, changing the opacity, etc. all this will change the alpha channel and the way it affects our nice little fuzzy pink dots. Texture Displacement Mode Texture Displacement is another interesting blending mode. What it does is similar to the displacements we can apply on objects, the difference is that it only affects the internal texture coordinates. Example: let's say we have a brick layer that we like, but we want to add more detail and randomness to it, unfortunately there is nothing in the brick parameters that let us do that. What if we could perturb one layer by another a bit like we perturb a surface using bump ? Well, that's what the texture displacement is for. Here is the effect that we get by perturbing a "brick" procedural layer by a "turbulence" procedural layer: <table align="center" border="0" cellpadding="0" cellspacing="0" width="160"> <tr> <td></td> </tr> </table> Note that the texture displacement layer must be placed before the layer to displace. Also note that the effect of displacement will propagate to all the layers that follow. A way to understand that is to think of the texture engine as a pipeline: information is being carried over layer after layer and affected by each layer, what this mode is doing is just displacing the texture coordinates the same way as a regular displacement would distort an object's geometry, therefore all the layers that follow will use distorted texture coordinates which in turn will distort that pattern they create. Up Next: Texturing 102: Gradients & External Parameters . |