6.7  Texturas

La instrucción texture (textura) es un modificador de objeto que describe la apariencia de la superficie del objeto, es decir, el material del que está hecho. Las texturas son combinaciones de pigmentos, normales y acabados. El pigmento (pigment) es el color o patrón de colores propio del material. El (o la) normal (normal) es un método de simular diversos patrones de bultos, muescas, ondas o arrugas mediante la alteración del vector normal de la superficie. El acabado (finish) describe las propiedades reflexivas del material.

Nota: en versiones previas del POV-Ray, la textura contenía también información sobre el interior del objeto. Esta información ha sido desplazada a un modificador de objeto distinto llamado interior (interior). Véase "Interior" para más detalles.

Hay tres clases básicas de texturas: planas, de patrón y a capas. Una textura plana consiste en un único pigmento, una normal opcional y un único acabado. Una textura de patrón combina dos o más texturas usando un bloque de patrón o una función de mezcla. Las texturas de patrón pueden hacerse bastante complejas anidando patrones dentro de patrones. Sin embargo, en los niveles más internos están formadas por texturas planas. Una textura a capas consiste en dos o más texturas semitransparentes dispuestas una sobre otra.

Nota: Aunque la llamemos plana, puede consistir en una textura muy compleja con pigmentos, normales y acabados de patrón. El término plana sólo significa que tiene un único pigmento, un único acabado y una única definición de normal.

La sintaxis de texture es como sigue:

TEXTURA:
    TEXTURA_PLANA | TEXTURA_DE_PATRON | TEXTURA_A_CAPAS
TEXTURA_PLANA:
    texture
    {
        [IDENTIFICADORES_DE_TEXTURA]
        [IDENTIFICADORES_PNF...]
        [ITEMS_PNF...]
    }
IDENTIFICADORES_PNF:
    IDENTIFICADOR_DE_PIGMENTO |  IDENTIFICADOR_DE_NORMAL |  IDENTIFICADOR_DE_ACABADO
ITEMS_PNF:
    PIGMENTO | NORMAL | ACABADO | TRANSFORMACION
TEXTURA_A_CAPAS:
    TEXTURA_SIN_PATRON...
TEXTURA_DE_PATRON:
    texture
    {
        [ID_TEXTURA_DE_PATRON]
        [TRANSFORMACIONES...]
    } |
    texture
    {
        PATTERN_TYPE
        [TEXTURE_PATTERN_MODIFIERS...]
    } |
    texture
    {
        tiles TEXTURA tile2 TEXTURA
        [TRANSFORMACIONES...]
    } |
    texture
    {
        material_map
        {
            TIPO_DE_BITMAP "bitmap.ext"
            [MOD_MATERIAL...] TEXTURA... [TRANSFORMACIONES...]
        }
    }
MODIFICADOR_DE_PATRON_DE TEXTURAS:
    MODIFICADOR_DE_PATRON | LISTA_DE_TEXTURAS |
    texture_map { CUERPO_DE_MAPA_DE_TEXTURAS }

En la TEXTURA_PLANA, todos los elementos son opcionales, pero si están presentes, IDENTIFICADOR_DE_TEXTURA ha de ser el primero. Si no se sitúa un identificador de una textura previa, POV_Ray crea una copia de la textura por defecto. Véase la sección “La directiva #default” para más detalles.

Después se situarán los elementos opcionales pigmento, normal y/o acabado, que substituirán totalmente cualquier definición de estos elementos previa presente en la textura indicada o en la textura por defecto. Normalmente esto se usa para mantener compatibilidad hacia atrás, permitiendo cosas como : texture { MiPigmento }, donde MiPigmento es un identificador de pigmento.

Por último, tenemos la opción de situar elementos pigment, normal o finish que modifiquen los que se especifican en el identificador. Si no se especifica un identificador de textura, los elementos pigment, normal y finish modifican los valores por defecto que sean válidos en ese momento. Esta sería una textura plana típica:

  texture {
    pigment { MiPigmento }
    normal { MiNormal }
    finish { MiAcabado }
    scale AsiDeGrande
    rotate Tanto
    translate AsiDeLejos
}

Las TRANSFORMACIONES pueden ser interpuestas entre los elementos de pigmento, normal o acabado, pero habitualmente se especifican al final. Si son interpuestas, se aplican sólo a las partes de la textura ya especificada. Por ejemplo:

  texture {
    pigment { MiPigmento }
    scale AsiDeGrande      //sólo afecta al pigmento
    normal { MiNormal }
    rotate Tanto    //afecta al pigmento y al elemento normal
    finish { MiAcabado }
    translate AsiDeLejos   // el acabado no es transformable de ninguna forma.
                    // por tanto sólo afecta al pigmento y al elemento normal
}

Los identificadores de texturas pueden declararse para hacer los archivos de escena más legibles y para parametrizar escenas de forma que, cambiando una sencilla declaración, puedan cambiarse muchos valores. Un identificador se declara como sigue.

DECLARACION_DE_TEXTURA:
    #declare IDENTIFICADOR = TEXTURA |
    #local IDENTIFICADOR = TEXTURA

Donde IDENTIFICADOR es el nombre del identificador, de hasta 40 caracteres de largo, y TEXTURA es una construcción texture válida. Véase el apartado "#declare vs. #local" para información sobre el ámbito de los identificadores.

Las próximas secciones describen todas las opciones disponibles en "Pigment", "Normal", y "Finish" que configuran la parte principal de las texturas planas. También hay secciones independientes para "Texturas de Patrón" y "Texturas a Capas" que están compuestas de texturas planas.

Nota: las texturas con teselado ( tiles ) y mapa de materiales ( material_map ) con patrón están obsoletas y sólo se mantienen por compatibilidad con versiones anteriores.

En 'Texturas' ...
6.7.1   Pigmento
6.7.2   Normal
6.7.3   Acabado
6.7.4   Halo
6.7.5   Texturas con Patrón
6.7.6   Texturas a Capas
6.7.7   Proyección UV
6.7.8   Interpolación de Texturas sobre Triángulos
6.7.9   Textura Interior
6.7.10   Textura de Recorte
6.7.11   Patrones
6.7.12   Modificadores de Patrón