|
Las texturas con patrón son texturas complejas elaboradas a partir de múltiples texturas. Una textura plana tiene sólo una declaración de pigmento, normal y acabado. Incluso un pigmento con un mapa de pigmentos es sólo un pigmento sencillo y por eso es considerada una textura plana, al igual que los mapas de normales en las declaraciones de normal.
Las texturas de patrón pueden utilizar cualquier declaración de texture_map
para determinar la mezcla o el patrón de texturas o bloque de
texturas, como checker
, con una lista de texturas, o
un mapa de bits similar a un mapa de imagen determinado, llamado mapa
de material, con una declaración de material_map
.
La sintaxis es:
TEXTURA_CON_PATRÓN: texture { [PATTERNED_TEXTURE_ID] [TRANSFORMATIONS...] } | texture { PATTERN_TYPE [TEXTURE_PATTERN_MODIFIERS...] } | texture { tiles TEXTURE tile2 TEXTURE [TRANSFORMATIONS...] } | texture { material_map { BITMAP_TYPE "bitmap.ext" [BITMAP_MODS...] TEXTURE... [TRANSFORMATIONS...] } } TEXTURE_PATTERN_MODIFIER: PATTERN_MODIFIER | TEXTURE_LIST | texture_map { TEXTURE_MAP_BODY }
Hay algunas restricciones a la hora de utilizar texturas con patrón. Una textura con patrón no puede ser utilizada como textura por defecto (ver sección "La directiva #default"). Una textura con patrón no puede ser utilizada como capa en una textura de múltiples capas, aunque sí se puede usar una textura con capas en alguna de las texturas incluidas en una declaración de textura con patrón.
Además de especificar una mezcla de colores con un mapa de color o
un mapa de pigmento, se pueden crear mezclas de texturas utilizando texture_map
.
La sintaxis para un mapa de textura es idéntica a la del mapa de
pigmento, excepto que se especifica una textura por cada entrada del
mapa.
La sintaxis para texture_map
es como sigue:
TEXTURE_MAP: texture_map { TEXTURE_MAP_BODY } TEXTURE_MAP_BODY: TEXTURE_MAP_IDENTIFIER | TEXTURE_MAP_ENTRY... ENTRADA_DEL_MAPA_DE_TEXTURAS: [ Value TEXTURE_BODY ]
Donde Value
es un valor en coma flotante entre 0.0 y
1.0, ambos inclusive, y cada CUERPO_DE_TEXTURA es cualquier cosa
que pueda situarse dentro de una declaración texture (...)
.
La palabra clave texture
y sus {}
llaves no
necesitan ser especificadas.
Aviso: los []
corchetes
son parte de la ENTRADA_DEL_MAPA_DE_TEXTURAS. No son símbolos de
notación indicando partes opcionales. Los corchetes envuelven cada
entrada en el mapa de texturas.
Pueden haber entre 2 y 256 entradas por mapa.
Por ejemplo:
texture { gradient x // éste es el tipo de patrón texture_map { [0.3 pigment{Red} finish{phong 1}] [0.3 T_Wood11] // esto es un identificador de textura [0.6 T_Wood11] [0.9 pigment{DMFWood4} finish{Shiny}] } }
Cuando la función gradient x
devuelve valores entre 0.0
y 0.3 se utiliza la textura roja brillante. De 0.3 a 0.6 se utiliza el
identificador de textura T_Wood11
. De 0.6 a 0.9 se
usará una mezcla de T_Wood11
y un DMFWood4
brillante. De 0.9 en adelante, sólo se utiliza la última textura.
Los mapas de textura pueden estar anidados hasta cualquier nivel de complejidad que se desee. Las texturas en un mapa de texturas pueden tener mapas de colores, o mapas de texturas, o cualquier tipo de textura que se desee.
El área mezclada de un mapa de texturas funciona calculando
completamente las texturas que intervienen en su totalidad, y
luego interpolando sus colores aparentes. Esto significa que la
reflexión, refracción y cálculos de iluminación se realizan dos
veces por cada punto, cuando, normalmente, la forma de calcular un
mapa de pigmento y un mapa de normal en una textura sencilla sería
computar el pigmento, la normal, la reflexión, refracción e
iluminación sólo una vez por cada punto.
Las texturas completas pueden también utilizarse en los bloques
de patrón, como checker
, hexagon
y brick
.
Por ejemplo...
texture { checker texture { T_Wood12 scale .8 } texture { pigment { White_Marble } finish { Shiny } scale .5 } } }
Aviso: en el caso de los bloques de
patrón, la palabra clave texture
ha de envolver toda
la información sobre la textura. Nótese también que esta sintaxis
prohíbe el uso de texturas superpuestas, aunque, sin embargo, se
pueden declarar texturas para una capa y referenciar después al
identificador.
Con el tipo de textura average
también se utilizan
mapas de texturas. Consultar "Average"
para más detalles.
Se pueden declarar y utilizar identificadores de mapas de texturas, pero el único modo de declarar un bloque de mapa de textura con patrón es declarando un identificador de textura para la textura completa.
Las versiones anteriores de POV-Ray tenían una textura con patrón
llamada textura baldosas (tiles). Se utilizaban las palabras
clave tiles
y tile2
para crear un patrón
ajedrezado de texturas.
TEXTURA_BALDOSAS: texture { tiles TEXTURA tile2 TEXTURA [TRANSFORMACIONES...] }
Aunque aún se soporta este diseño por razones de compatibilidad,
se debe utilizar el patrón de textura checker
descrito
en la sección "Mapas de Texturas" en lugar de las baldosas
La textura con patrón material_map
extiende el concepto
de mapas de imágenes a texturas completas en lugar de a colores
sólidos. Un mapa de material nos permite "envolver" con un mapa de
bits bidimensional nuestros objetos tridimensionales.
En lugar de colocar el color sólido de la imagen en el objeto
como un mapa de imagen, se especifica una textura completa basada en
el índice o color de la imagen en ese punto. Se debe especificar
una lista de texturas
a utilizar como una paleta de
texturas en lugar de una paleta de colores normal.
Cuando se utiliza con una imagen mapeada como GIF, y algunás imágenes PNG y TGA, el índice del píxel se usa como un índice dentro de la lista de texturas que indicamos. Para imágenes sin mapear, como algunas imágenes PNG o TGA, el valor del bit 8 del componente rojo en un rango 0-255 se utiliza como índice.
Si el índice del píxel es mayor que el número de texturas listadas, entonces se toma el índice como módulo N, donde N es la longitud de las texturas listadas.
Note: La declaración material_map
no tiene nada que ver con la declaración material
. Un
mapa de material no es un modo de crear un material con patrón.
Consultar la sección "Material"
para la explicación de este tema sin relación, aunque de nombre
parecido.
La sintaxis para un material_map
es:
MATERIAL_MAP: texture { material_map { TIPO_DE_BITMAP "bitmap.ext" [MODIFICADOR_DE_BITMAP...] TEXTURA... [TRANSFORMACIONES...] } } TIPO_DE_BITMAP: gif | tga | iff | ppm | pgm | png | jpeg | tiff | sys MODIFICADOR_DE_BITMAP: map_type Tipo | once | interpolate Tipo
Después de la palabra clave requerida TIPO_DE_BITMAP tiene que ir una expresión de cadena conteniendo el nombre de archivo del mapa de material del tipo especificado. A continuación pueden ir algunos modificadores que se describen más adelante.
Aviso: las primeras versiones de POV-Ray permitían algunos modificadores antes de TIPO_DE_BITMAP, pero esa sintaxis ha sido reemplazada en favor de la aquí descrita.
Aviso: el formato sys
es
un formato específico de sistema, como BMP para Windows o Pict
para Macintosh.
Los nombres de archivos especificados en la declaración de material
map
se buscarán primero en la carpeta o directorio actual y, si
no se encuentran, en las carpetas especificadas por cualquier
opción +L
o Directorio_de_Libreria
activo.
Esto debería facilitar el mantener todos los archivos con mapas de
materiales en una subcarpeta aparte e indicar mediante un Directorio_de_Libreria
donde se encuentran nuestros mapas de material. Ver "Directorios de Librerías"
para más detalles.
El material es mapeado, por defecto, en el plano x-y. El material es proyectado sobre el objeto como si utilizásemos un proyector en la dirección Z. El material ocupa exactamente un área cuadrada desde las coordenadas XY (0,0) a (1,1), sin importar el tamaño original del archivo en píxeles. Si se quiere modificar esto, se ha de trasladar, rotar y/o escalar la textura para mapear la superficie del objeto como se desee.
El nombre de archivo puede ir seguido opcionalmente por uno o más MODIFICADORES_DE_BITMAP.
No hay modificadores que sean específicos para material_map
.
Se utilizan los modificadores genéricos de bitmap map_type
, once
e interpolate
descritos en "Modificadores de Bitmap".
Aunque es legal el uso de interpolate
en mapas de
material, el índice de color se interpola antes de elegir la
textura. No interpola el color final como podría esperarse que lo
hiciera. En general, la interpolación de mapas de material no
conlleva ningún resultado útil, pero esto puede ser corregido en
futuras versiones.
Lo siguiente es incluir una o más declaraciones de texture
.
Cada textura en la lista corresponde a un índice en el archivo de mapa
de bits. Por ejemplo:
texture { material_map { png "povmap.png" texture { // utilizado con el índice 0 pigment {color red 0.3 green 0.1 blue 1} normal {ripples 0.85 frequency 10 } finish {specular 0.75} scale 5 } texture { // utilizado con el índice 1 pigment {White} finish { ambient 0 diffuse 0 reflection 0.9 specular 0.75 } } // utilizado con el índice 2 texture {pigment{NeonPink} finish{Luminous}} texture { //utilizado con el índice 3 pigment { gradient y color_map { [0.00 rgb < 1 , 0 , 0>] [0.33 rgb < 0 , 0 , 1>] [0.66 rgb < 0 , 1 , 0>] [1.00 rgb < 1 , 0 , 0>] } } finish{specular 0.75} scale 8 } } scale 30 translate <-15, -15, 0> }
Después de una declaración de material_map
, pero
aún dentro de la declaración de textura, se puede agregar cualquier
modificador de textura permitido.
Aviso: no se pueden agregar más pigmentos, normales o declaraciones de acabado a la textura fuera del mapa de materiales.
Lo siguiente es ilegal y generará un mensaje de error:
texture { material_map { gif "matmap.gif" texture {T1} texture {T2} texture {T3} } finish {phong 1.0} }
El acabado debe ser añadido individualmente a cada textura. Las anteriores versiones de POV-Ray permitían estas especificaciones, pero han sido depuradas. Las restricciones anteriores en la sintaxis han sido necesarias para corregir ciertos errores en el código. Esto significa que algunas escenas de POV-Ray 1.0 que utilizan mapas de materiales pueden requerir modificaciones menores que no pueden ser corregidas automáticamente con el modo de compatibilidad de versiones.
Si un valor de índice en particular no se utiliza en una imagen, entonces puede ser necesario suministrar algunas texturas de relleno. Se puede utilizar un programa de retoque u otra utilidad para examinar la paleta del archivo para determinar como ordenar la lista de texturas.
Las texturas en un textura de materiales mapeados pueden estar superpuestas pero las texturas de materiales mapeados no funcionan como parte de una textura superpuesta. Para utilizar una textura superpuesta en un mapa de material se debe declarar previamente como un identificador de textura e invocarlo en el interior de la lista de texturas.
|