Anterior:Entendiendo el concepto de splines  Idice Principal   Siguiente:Polígono

Malla de triángulos

Los objetos malla (mesh) son muy útiles, porque nos permiten crear objetos conteniendo cientos o miles de triángulos. Comparados con una simple unión de triángulos, las mallas almacenan los triángulos de manera más eficiente. Las copias de los objetos malla necesitan muy poca memoria adicional, porque los triángulos se almacenan sólo una vez.

Casi todos los objetos se pueden aproximar usando triángulos, pero necesitaríamos muchos triángulos para crear formas complejas. De modo que crearemos una malla muy simple como ejemplo. Este ejemplo nos mostrará además una característica muy útil de las mallas de triángulos: se puede aplicar una textura diferente a cada triángulo.

Comencemos. Crearemos una simple caja con caras de diferente color. Crea un archivo llamado meshdemo.pov y añade las siguientes líneas:

camera {
        location <20, 20, -50>
        look_at <0, 5, 0>
       }
light_source { <50, 50, -50> color rgb<1, 1, 1> }
#declare Red = texture {
                        pigment { color rgb<0.8, 0.2, 0.2> }
                        finish { ambient 0.2 diffuse 0.5 }
                       }
#declare Green = texture {
                          pigment { color rgb<0.2, 0.8, 0.2> }
                          finish { ambient 0.2 diffuse 0.5 }
                         }
#declare Blue = texture {
                         pigment { color rgb<0.2, 0.2, 0.8> }
                         finish { ambient 0.2 diffuse 0.5 }
                        }
Debemos declarar todas las texturas que queremos incluir en la malla antes de crear ésta. Las texturas no se pueden especificar dentro de la malla debido a que el rendimiento de la memoria decaería.

Ahora añadimos la malla. Tres caras de la caja usarán textura individual, mientras que las otras tres usarán la textura global de la malla.

mesh {
      /* cara superior */
      triangle { 
                <-10, 10, -10>, <10, 10, -10>, <10, 10, 10>
                texture { Red }
               }
      triangle { 
                <-10, 10, -10>, <-10, 10, 10>, <10, 10, 10>
                texture { Red }
               }
      /* cara inferior */
      triangle { 
                <-10, -10, -10>, <10, -10, -10>, <10, -10, 10> 
               }
      triangle {
                <-10, -10, -10>, <-10, -10, 10>, <10, -10, 10> 
               }
      /* cara izquierda */
      triangle {
                <-10, -10, -10>, <-10, -10, 10>, <-10, 10, 10> 
               }
      triangle { 
                <-10, -10, -10>, <-10, 10, -10>, <-10, 10, 10> 
               }
      /* cara derecha */
      triangle { 
                <10, -10, -10>, <10, -10, 10>, <10, 10, 10>
                texture { Green }
               }
      triangle { 
                <10, -10, -10>, <10, 10, -10>, <10, 10, 10>
                texture { Green }
               }
      /* cara anterior */
      triangle { 
                <-10, -10, -10>, <10, -10, -10>, <-10, 10, -10>
                texture { Blue }
               }
      triangle { 
                <-10, 10, -10>, <10, 10, -10>, <10, -10, -10>
                texture { Blue }
               }
      /* cara posterior */
      triangle { 
                <-10, -10, 10>, <10, -10, 10>, <-10, 10, 10> 
               }
      triangle { 
                <-10, 10, 10>, <10, 10, 10>, <10, -10, 10> 
               }
      texture {
               pigment { color rgb<0.9, 0.9, 0.9> }
               finish { ambient 0.2 diffuse 0.7 }
              }
     }
Trazando la escena a 320x240 veremos que la cara superior, la derecha y la frontal tienen diferente textura. De acuerdo que este no es un ejemplo impresionante de lo que podemos hacer con las mallas. Puedes encontrar ejemplos más complejos, usando triángulos suavizados, en el directorio de escenas con los nombres chesmsh.pov y robotmsh.pov.

 


Previo:Entendiendo el concepto de splines  Indice Principal   Siguiente:Polígono

 
Ricardo M. Pereyra
$Date: 1999/04/12 13:52:37 $

 

Contador de Geo (?? Kb)    Valid HTML 4.0! Valid CSS!
  
 
1