 |
Uvpov |
Con la versión 3.1 actual de "POV" no hay ninguna forma (directa) de renderizar un modelo texturizado de "Poser". El problema radica en que "POV" no dispone aún de ninguna sentencia que soporte el uv-mapping poligonal. Las utilidades de traducción como 3ds2pov y otras, generan ficheros .pov a partir de archivos en 3ds y en otros formatos. Estos ficheros "de entrada" pueden guardar información uv-mapping, pero al realizarse la traducción a "POV", las utilidades emplean sentencias del lenguaje escénico de este ray-tracer para construir los ficheros de salida y, al no disponer "POV" de sentencias que soporten el uv-mapping, éste se pierde, con lo que únicamente se puede aprovechar la geometría de los modelos traducidos.
La versión "no oficial" de "POV" creada por Nathan Kopp sí soporta uv-mapping (una versión no oficial es una modificación de los fuentes originales de "POV" creada por algún programador que quiere añadir capacidades nuevas al programa. La versión de Nathan se ha hecho muy popular gracias al soporte de uv-mapping y de otras características nuevas como el "photon mapping", y probablemente su nuevo código será añadido a la próxima versión oficial de "POV"). Esta versión de la que ya hemos hablado anteriormente aquí se llama Uvpov. Su página natal está en www.nathan.kopp.com y dispone de una nueva serie de instrucciones que las utilidades de conversión pueden emplear para implementar el uv-mapping. La principal de estas sentencias es mesh2 y su propósito es idéntico al de la vieja sentencia mesh del "POV" oficial. La diferencia radica en que mesh2 está diseñada de una manera más racional que su antecesora, con lo que en las conversiones obtendremos pov-ficheros de menor longitud y más rápidos de procesar. Cada sentencia mesh2 engloba (dentro de sus paréntesis) toda la información de descripción de un objeto, incluyendo la geometría y los datos uv-mapping. Dentro de cada sentencia mesh2 hay listas de vértices (englobadas dentro de los paréntesis de la sentencia vertex_vectors), listas de normales (dentro de la sentencia normal_vectors), listas de vectores uv (dentro de uv_vectors), listas de texturas (en texture_list), listas de caras (dentro de face_indices) y algunos apartados más. Cada sentencia mesh2 puede representar, pues, a un objeto simple del modelo importado. Afortunadamente no tenemos que aprender cómo escribirla, ya que las sentencias mesh2 sólo son escritas por utilidades de traducción, pero puede convenirnos conocer su estructura general para percibir si la traducción ha fallado e incluso para realizar algunas reparaciones con un editor de textos, si ello vale la pena. |
|
|
Formato de la nueva sentencia Mesh2 de UvPOV
mesh2
{
vertex_vectors
{
number_of_vertices,
<vertex1>, <vertex2>, ...
}
normal_vectors
{
number_of_normals,
<normal1>, <normal2>, ...
}
uv_vectors
{
number_of_uv_vectors,
<uv_vect1>, <uv_vect2>, ...
}
texture_list
{
number_of_textures,
texture { Texture1 },
texture { Texture2 }, ...
}
face_indices
{
number_of_faces,
<index_a, index_b, index_c>, [texture_index],
<index_d, index_e, index_f>, [texture_index],
...
}
normal_indices
{
number_of_faces,
<index_a, index_b, index_c>,
<index_d, index_e, index_f>,
...
}
uv_indices
{
number_of_faces,
<index_a, index_b, index_c>,
<index_d, index_e, index_f>,
...
}
[object modifiers]
} |
|
|
|