jueves, 22 de agosto de 2013

Blender Cycles: Vector Transform for Texturing (New Feature in Blender 2.69)

Hi. Today I'm going to deal with a new node: Vector Transform. It allows to change coordinates between different spaces, World, Object or Camera. If you want further details about coordinate spaces you can check Blender 3D: Noob to Pro. This node offers new posibilities for materials and textures.

Every texture in cycles has a Vector input to set the coordinate space for texturing and there is a Texture Coordinate node available which offers several possibilites. By default Generated coordinates are used.

Before this node appears in Blender 2.69, we have some problems with textures in Cycles. If we have several objects in our scene with different sizes and they are sharing the same material, with any kind of texture or pattern in it, it is very difficult to set the appropiate scale factor to get the same size of the pattern/texture in all of them.

Look this example using Generated coordinates, which uses the Global / World space:

All these objects have scales applied (1.0) and share the same material:

As you can see, our checker pattern is deformed depending on the shape, and with the same shape it is changed depending on the size. If you are texturing something like a terrain or a sofa, which include several objects with different shapes, this could be annoying.

The first option is using the Object coordinates. As you imagine it uses the Local / Object space:

Ok, thats all. The problem is solved. Or maybe not. This still has two problems:

1. All these objects has their scale applied (1.0), but for any reason sometimes you don't want to apply the scale. If you scale one object you get this:

The new object has been scaled and not applied. So the pattern is deformed.

2. If we have some objects with the same material, the pattern will be repeated, getting an unreal effect. Imagine eroded stones, rusty metals or old walls with the bumping and holes in the same position. I have done an example with noise texture:

All our blocks will have the pattern in the same position. We prefer all of them to share only one noise pattern without scaling problems.

To solve these problems you can try other outputs in your Texture Coordinate node, but the checker will be deformed, need to UV unwraping  or seem unreal. Here the Vector Transform node comes to solve this:

Now we have used the object to world transformation and all the objects share the same scale factor. This kind of transformation converts the object coordinates into world coordinates. The first problem is solved. But it could be better. If we make our material a bit irregular we will see that the pattern is repeated:

This is due to each object has its own center of axis, which is used to make the transformation. So the second problem is not solved. But we can use the camera to world transformation, which converts Camera coordinates into World coordinates:

Camera coordinates from the Texture Coordinate node produces distorted patterns in your objects, but with this kind of transformation you can get a common space for texturing all you objects. This allows to you to get non-repeated textures in several objects with only one material and without scaling problems.

Don't forget that you have other possibilities, like using UV texturing, joining all objects or modifying the texture space inside their mesh data.


No hay comentarios:

Este sitio emplea cookies de Google para prestar sus servicios, para personalizar anuncios y para analizar el tráfico. Google recibe información sobre tu uso de este sitio web. Si utilizas este sitio web, se sobreentiende que aceptas el uso de cookies. Más información Entendido