3.6.1  Objeto Burbuja

Las burbujas se pueden describir como esferas y cilindros cubiertas de una pasta que se contrae hasta agruparlo todo de una forma suave (ver la sección "Burbuja").

Es ideal para moldear átomos y moléculas, también son potentes herramientas para crear muchas formas fluidas u orgánicas.

Una forma ligeramente más precisa de describir una burbuja es decir que se trata de un objeto compuesto de dos o más componentes. Cada una de esas componentes es en realidad un campo de fuerza invisible en cuyo centro tiene una fuerza característica y que decae lentamente a cero a un determinado radio. Donde esos campos se superponen, las fuerzas de ambos se suman (también pueden existir componentes de fuerza negativa, que se restarían del total). De hecho, podemos tener una burbuja con una sola componente, aunque la belleza de estos objetos reside precisamente en la interacción de sus componentes.

Tomemos un ejemplo sencillo de burbuja para empezar. Ahora, de hecho, hay varios tipos de componentes, pero ya los veremos más adelante. Para nuestro primer ejemplo, hablaremos sólo de las esféricas. Escribimos un ejemplo de código POV-Ray con una cámara básica, luz, y una burbuja sencilla de dos componentes :

  #include "colors.inc"
  background{White}
  camera {
    angle 15
    location <0,2,-10>
    look_at <0,0,0>
  }
  light_source { <10, 20, -10> color White }
  blob {
    threshold .65
    sphere { <.5,0,0>, .8, 1 pigment {Blue} }
    sphere { <-.5,0,0>,.8, 1 pigment {Pink} }
    finish { phong 1 }
  }
Una burbuja sencilla de dos componentes.
Una burbuja sencilla de dos componentes.

El umbral (threshold) es, sencillamente, el valor de fuerza donde la burbuja se hace visible. Los puntos de la burbuja en los que la fuerza coincide con el valor de umbral forman la superficie de la forma burbuja. Aquellos en los que la fuerza es menor quedarán fuera y los que tengan mayor fuerza, dentro.

Observa que las componentes esféricas parecen declaraciones de esferas.Aparece la palabra esfera, el vector que sitúa el centro y el valor que representa el radio. Pero ¿qué significa el otro valor numérico? Es la fuerza individual de la componente. En una componente esférica, es la fuerza en el centro de la esfera. Decae en progresión lineal hasta valer exactamente cero en la superficie de la esfera.

Antes de trazar la imagen de prueba, observemos que le hemos dado a cada componente un pigmento distinto. POV-Ray permite que las componentes de las burbujas tengan texturas distintas. Hemos usado esa característica aquí para aclarar qué parte de la burbuja es cada cual. También podemos dar una textura global a toda la burbuja, como la instrucción de acabado del final, que se aplica a todas las componentes. Al trazar la escena obtenemos un par de esferas besándose, el tipo básico de burbuja.

La imagen que vemos muestra las esferas a cada lado, unidas suavemente por una especie de puente en el centro. Este puente representa la zona donde los campos de ambas esferas se superponen, por lo que los puntos permanecen por encima del valor umbral más lejos del centro de las esferas que el resto. Si esto no está totalmente claro, podemos añadir los dos objetos siguientes y volver a trazar la escena. Observa que se deben introducir como esferas separadas de la burbuja, no como componentes de ésta.

  sphere { <.5,0,0>, .8
    pigment { Yellow transmit .75 }
  }
  sphere { <-.5,0,0>, .8
    pigment { Green transmit .75 }
  }
Las componentes esféricas al descubierto.
Las componentes esféricas al descubierto.

Ahora los secretos de las esferas besuconas están al desnudo. Las esferas semitransparentes muestran dónde están las verdaderas componentes de la burbuja. Si no hemos trabajado nunca con burbujas, puede que nos sorprenda que las esferas que hemos añadido sean tan grandes en relación con las esferas que muestra la burbuja. Por supuesto, esto se debe a que la fuerza asignada al centro de nuestras esferas es de uno, y gradualmente decae conforme nos alejamos de este centro, hasta valer cero en su superficie. Tan pronto como esta fuerza baja del valor umbral (en este caso 0.65), el resto de la esfera queda fuera de la burbuja, por lo que no es visible.

¿Ves la parte donde las dos esferas se superponen? Observa que coincide exactamente al puente entre las dos esferas. Ésta es la región en la que ambas componentes están contribuyendo a aumentar la fuerza total de cada punto en la burbuja. Ésa es la región donde es posible que este puente aparezca: esta región tiene suficiente fuerza para permanecer por encima del valor umbral, debido a la combinación de la fuerza de las dos componentes esféricas que se solapan aquí.

3.6.1.1  Tipos de Componentes y Otras Características Nuevas

La forma mostrada anteriormente es interesante, pero limitada. POV-Ray tiene un puñado de trucos que extienden mucho la utilidad de las burbujas. Por ejemplo, como hemos visto, podemos asignar texturas individuales a cada componente de la burbuja, y también podemos aplicar transformaciones individualmente (trasladar, girar, escalar) para agrandar, girar o aplastar las partes de la burbuja de la forma que estimemos conveniente. Y lo que es quizás más interesante, el código de estos objetos ha sido ampliado para incluir componentes cilíndricas.

Antes de pasar a los cilindros, conviene que mencionemos que aún sirve la sintaxis de las burbujas que empleaban las versiones previas de POV-Ray. En ellas, todas las componentes eran esferas, de forma que no era necesario mencionar el tipo de componente. Las expresiones tenían la forma: component Fuerza, Radio, <Centro>

Esto tiene el mismo efecto que una componente esférica, como ya hemos dicho. Sólo es útil para mantener la compatibilidad. Si guardamos archivos de POV-Ray con burbujas de versiones anteriores, necesitamos que sea así para que sean reconocidas. Observa que la sintaxis antigua no pone llaves alrededor de la fuerza, el radio y el centro, y, por supuesto, no podemos modificarlas ni darles textura independientemente. De forma que, si modificamos un viejo trabajo para usar con nuestra nueva versión, conviene valorar los beneficios de convertir las viejas componentes a la nueva sintaxis, de todas formas.

Hablemos ahora de las componentes cilíndricas. Los que querían crear una superficie cilíndrica en una burbuja hasta ahora, debían alinear una serie de componentes esféricos, lo que causaba bastante trabajo, tanto al escribirlo como al calcular las posiciones de las esferas. Esto terminó. Ahora disponemos de las componentes cilíndricas.

Vamos a substituir la burbuja de nuestro último ejemplo por la siguiente y volver a trazarla. Podemos borrar también las esferas transparentes, de paso.

  blob {
    threshold .65
    cylinder { <-.75,-.75,0>, <.75,.75,0>, .5, 1 }
    pigment { Blue }
    finish { phong 1 }
  }

Sólo hemos situado una componente, de forma que podemos ver la forma básica que tiene la componente cilíndrica. No es, realmente, un cilindro, más bien se trata de una salchicha, un cilindro al que le han unido dos semiesferas en las bases. Podemos pensr en ella como en una ristra de componentes esféricas unidas en línea recta.

Y en cuanto a la declaración de la componente, como era de prever, es muy similar a la declaración del cilindro, con vectores especificando los centros de ambas bases y un número que indica el radio del cilindro. El último número, por supuesto, indica la fuerza de la componente. Como en el caso de las componentes cilíndricas, el valor de la fuerza determinará la naturaleza y el grado de la interacción de esta componente sobre sus vecinos. De hecho, pongamos a continuación algunos vecinos con los que interactuar ¿no?

3.6.1.2  Construcciones Complejas con Burbujas e Intensidad Negativa

Comencemos un archivo nuevo de POV-Ray, y tecleemos este ejemplo algo más complejo:

#include "colors.inc"
background{White}
camera {
  angle 20
  location<0,2,-10>
  look_at<0,0,0>
}
light_source { <10, 20, -10> color White }
blob {
  threshold .65
  sphere{<-.23,-.32,0>,.43, 1 scale <1.95,1.05,.8>}   //palma
  sphere{<+.12,-.41,0>,.43, 1 scale <1.95,1.075,.8>}  //palma
  sphere{<-.23,-.63,0>, .45, .75 scale <1.78, 1.3,1>} //mano media
  sphere{<+.19,-.63,0>, .45, .75 scale <1.78, 1.3,1>} //mano media
  sphere{<-.22,-.73,0>, .45, .85 scale <1.4, 1.25,1>} //final mano
  sphere{<+.19,-.73,0>, .45, .85 scale <1.4, 1.25,1>} //final mano
  cylinder{<-.65,-.28,0>, <-.65,.28,-.05>, .26, 1}    //meñique inferior
  cylinder{<-.65,.28,-.05>, <-.65, .68,-.2>, .26, 1}  //meñique superior
  cylinder{<-.3,-.28,0>, <-.3,.44,-.05>, .26, 1}      //anular inferior
  cylinder{<-.3,.44,-.05>, <-.3, .9,-.2>, .26, 1}     //anular superior
  cylinder{<.05,-.28,0>, <.05, .49,-.05>, .26, 1}     //central inferior
  cylinder{<.05,.49,-.05>, <.05, .95,-.2>, .26, 1}    //central superior
  cylinder{<.4,-.4,0>, <.4, .512, -.05>, .26, 1}      //índice inferior
  cylinder{<.4,.512,-.05>, <.4, .85, -.2>, .26, 1}    //índice superior
  cylinder{<.41, -.95,0>, <.85, -.68, -.05>, .25, 1}  //pulgar inferior
  cylinder{<.85,-.68,-.05>, <1.2, -.4, -.2>, .25, 1}  //pulgar superior
  pigment{ Flesh }
}
Una mano hecha con burbujas.
Una mano hecha con burbujas.

Como podemos adivinar por los comentarios, estamos diseñando una mano. Tras renderizar la imagen, podemos ver un pequeño problema con la imagen. La palma podría parecer más realista si usáramos varias docenas de componentes más pequeñas, en lugar de la media docena empleada, y cada dedo debería tener tres segmentos en lugar de dos, pero se trata de una demostración simplificada, y podemos pasar por alto esos puntos. Pero hay algo que debemos evitar: ¡los dedos aparecen unidos por una horrible membrana!

Una revisión de lo que sabemos de las burbujas nos revela rápidamente qué sucede. Esta membrana está formada por lugares donde las componentes se solapan, por lo que la intensidad de las componentes se suma y la superficie se extiende hasta contenerlos. Lo que necesitamos es añadir unas componentes situadas en esas zonas que contrarresten esa intensidad con una fuerza negativa. Añadimos tales componentes a nuestro objeto.

sphere{<-.65,.28,-.05>, .26, -1} //anula el bulto del nudillo del meñique
sphere{<-.65,-.28,0>, .26, -1}   //anula el bulto de la palma junto al meñique
sphere{<-.3,.44,-.05>, .26, -1}  //anula el bulto del nudillo del anular
sphere{<-.3,-.28,0>, .26, -1}    //anula el bulto de la palma junto al anular
sphere{<.05,.49,-.05>, .26, -1}  //anula el bulto del nudillo del medio
sphere{<.05,-.28,0>, .26, -1}    //anula el bulto de la palma junto al medio
sphere{<.4,.512,-.05>, .26, -1}  //anula el bulto del nudillo del índice
sphere{<.4,-.4,0>, .26, -1}      //anula el bulto de la palma junto al índice
sphere{<.85,-.68,-.05>, .25, -1} //anula el bulto del nudillo del pulgar
sphere{<.41,-.7,0>, .25, -.89}   //anula el bulto de la palma junto al pulgar
La mano sin la membrana.
La mano sin la membrana.

¡Mucho mejor! La intensidad negativa de la componente esférica actúa aproximadamente en el punto medio entre los dedos, de forma que la horrible membrana ya no aparece, haciendo nuestra mano mucho más creíble. Aunque la podemos hacer aún más realista añadiendo algunas docenas de componentes adicionales, lo que hemos conseguido ya es bastante aceptable. por ahora, ya tenemos un ejemplo de la utilización de las burbujas para crear superficies orgánicas complejas.