Ciudades y ciudadanos
Las poses

Algunas de las posturas guardadas en la librería de poses de "Poser" son, en realidad, animaciones. Para las pruebas hemos empleado la pose Walk (caminar) de la familia WalkDesigner. Una vez dentro del módulo de animación de "Poser" podemos desplazar el puntero de frames para ver cualquiera de los 30 frames básicos de esta animación. El modelo adopta la pose del frame seleccionado por lo que podemos exportarla así. Y además, antes de realizar la exportación podemos realizar cambios adicionales; alterar levemente la pose, cambiar la expresión facial, poner colores distintos en la ropa, etc.

Hecho esto, el siguiente paso será preparar el modelo para "POV". Como hemos decidido limitarnos a utilizar en Uvpov poses fijas sin modificarlas, podemos prescindir del método descrito en el artículo "Como..." y emplear este otro algo más sencillo:

1) Después de exportar la pose como 3ds usaremos 3ds2pov para generar los archivos "traducidos" al formato de "POV". Se generarán cuatro archivos que se guardarán en un subdirectorio (creado por 3ds2pov) con el nombre del fichero 3ds.

2) Supongamos que el nombre del archivo 3ds es h_traje1 (que en nuestros experimentos corresponde al frame uno de la animación "andar" del hombre de negocios). En este caso uno de los ficheros obtenidos tras la conversión es h_traje1.pov. Este archivo guarda las declaraciones de la cámara, las fuentes de luz (traducidas) e incluye los otros tres archivos, donde se declaran las texturas (h_traje1_m.inc), la geometría del modelo (h_traje1_o.inc) y los datos de animación si los hay (h_traje1_a.inc). 3ds2pov convierte a "POV" la declaración de la cámara utilizada en "Poser" pero, por alguna razón, la conversión no acaba de realizarse bien. Para corregirla es necesario situarse al principio del archivo h_traje1_o.inc y cambiar el valor de la declaración del vector de "Default_sky" por <0,1,0>. Asignar también el mismo vector a la sentencia "up" de la declaración de la cámara. Si no efectuáis estos cambios, la imagen se generará invertida.

Con esto obtendremos un render del modelo con el mismo color que éste tiene desde "Poser". Y, además, si así lo deseamos podremos emplear la textura del modelo con un poco de trabajo adicional. Para lograrlo cambiaremos las texturas traducidas por 3ds2pov (y que sólo guardan la información del color) en texturas "layered". Las texturas "layered" o texturas por capas son un tipo de textura de "POV" en cuya declaración puede haber varias texturas normales. Ver el ejemplo de la Figura 2.

La declaración de la textura de los pantalones emplea realmente dos texturas. La primera corresponde a la capa más "interna" de la textura compuesta y la segunda a la capa más externa. En el ejemplo esta última es una de las texturas traducidas por 3ds2pov y es simplemente un pigmento con una translucencia de 0.20 (sentencia color rgbt). De este modo, el 20% del color de la superficie de la textura Mpants corresponde a la textura más interna, que hemos añadido nosotros, y que es precisamente el fichero de textura del hombre de negocios.

3) Repasaremos el fichero h_traje1_m.inc y añadiremos líneas parecidas a la textura más interna del ejemplo para todas las declaraciones de textura del archivo. Luego cambiaremos el grado de translucidez de las sentencias rgbt (en las declaraciones de pigmentos) por .20. (Un valor mayor hará que se aprecie menos el color de la ropa).

4) El último paso será disminuir el acabado excesivamente plástico de las texturas generadas por la conversión. Para ello repasaremos todas las sentencias finish del archivo h_traje1_m.inc y cambiaremos los valores de las sentencias phong y specular. Cuanto más reducidos sean estos valores, menor será el brillo plástico que obtendremos. (Nosotros hemos utilizado 0.05 para ambas sentencias).

 
  Figura 2:

La textura layered de los pantalones del modelo

...
...
pigment
{
color rgbt <0.666667, 0.564706, 0.501961, 0.200000>
}
#declare f1_pants =
finish
{
ambient 0.035000
diffuse 0.700000
phong_size 16.081357
roughness 0.007568
phong 0.050000
specular 0.050000
}
#declare Mpants = // pants
texture{ pigment{ image_map { png "d:\render\render86\taller86\Biz Man Texture.png" }}}
texture
{
pigment { p1_pants }
finish { f1_pants }
}
...
...

 
 
Anterior Siguiente