El tutorial de Blobs de Rune

Información

Imagen que muestra cómo se visualizarán los blobs en este tutorial La primitiva blob en POV-Ray es una forma muy flexible, que puede usarse por ejemplo para crear formas de aspecto orgánico. Al principio puede ser un poco difícil entender cómo funcionan los blobs, porque la forma del blob está afectada por múltiples variables. Las variables más importantes son el umbral (threshold) del blob, la fuerza (strength) de cada componente, y el radio (radius) de cada componente. En este documento intentaré hacer que sea fácil entender cómo trabajan estas variables, así como aportar algunas pistas, que pueden facilitar el trabajo con blobs.

Imagina un blob como...

A la izquierda: Visualización de componente de un blob; A la derecha: El componente real de un blob Imagina un componente de un blob como una montaña parcialmente sumergida. En mis imágenes puedes ver lo que está debajo de la superficie del agua, pero vamos a suponer que no puedes. Así que tenemos una montaña con un determinado radio, pero sólo parte de la montaña es visible. Ésa es la parte que está por encima el nivel de agua.

Un componente de un blob funciona de una manera similar. Tiene un radio determinado, pero parece más pequeño que su radio, porque sólo podemos ver la parte del componente que tiene una fuerza (strength) mayor que el valor del umbral (threshold).


El radio

blob {
   threshold Threshold
   sphere { <Center>, Radius, Strength }
   cylinder { <End1>, <End2>, Radius, Strength }
}
El radio visible siempre es más pequeño que el radio real En la imagen a la derecha puedes ver tres componentes de un blob. El primer componente tiene un radio de 1, el segundo tiene un radio de 2, y el tercero tiene un radio de 3. Los tres componentes unidos tienen una fuerza (strength) de 2.

No entraremos aquí en los detalles, pero toma nota de que el radio visible nunca es tan grande como el radio real que especifiques.


La fuerza (strength)

blob {
   threshold Threshold
   sphere { <Center>, Radius, Strength }
   cylinder { <End1>, <End2>, Radius, Strength }
}
Cuanto más alta es la fuerza, más podemos ver En la imagen de la derecha puedes ver tres componentes de un blob. Los tres componentes juntos tienen un radio de 2. Los tres componentes tienen valores de fuerza diferentes. En el gráfico del blob esto se muestra como montañas que tienen alturas diferentes.

Como podemos ver en la imagen, cuanto mayor sea la fuerza, más visible es el componente. Si la fuerza es muy alta, el radio visible es casi tan grande como el radio real. Eso es porque la mayor parte de la montaña está sobre el nivel del agua. Si la fuerza es pequeña, el radio visible es mucho más pequeño que el radio real. Eso es porque la mayor parte de la montaña está por debajo del nivel del agua.


El umbral (threshold)

blob {
   threshold Threshold
   sphere { <Center>, Radius, Strength }
   cylinder { <End1>, <End2>, Radius, Strength }
}
Cuanto más alto es el umbral, podemos ver menos Cuando tenemos algunas montañas parcialmente bajo el agua, sólo podemos ver parte de las montañas. Si bajamos el nivel del agua, podemos ver más de las montañas. Si subimos el nivel del agua, podemos ver menos de las montañas. Y si el nivel del agua es más alto que la altura de una montaña, entonces la montaña no es visible en absoluto.

Lo mismo pasa con los componentes del blob. Si bajamos el valor del umbral (threshold), podemos ver más de los componentes del blob. Si aumentamos el valor del umbral, podemos ver menos de los componentes del blob. Y si el valor del umbral es mayor que la fuerza de un componente del blob, entonces el componente del blob se hace invisible.


La fuerza es relativa al umbral

El umbral y fuerza son relativas El valor de fuerza y el valor del umbral siempre trabajan de forma relativa una a otra. Multiplicar la fuerza por 2 da el mismo resultado que dividir el umbral entre 2. Y si multiplicas la fuerza y el umbral en la misma cantidad, entonces el resultado permanece idéntico.

Es importante notar sin embargo, que la fuerza sólo afecta a un componente, mientras el umbral afecta a todos los componentes en un blob. Cuando trabajas con un blob con muchos componentes, es una buena idea establecer el valor del umbral una vez y para los componentes individuales.

En la imagen: Desde la imagen de arriba a la imagen de abajo se ha multiplicado la fuerza de todos los componentes por 2, pero el umbral también se ha multiplicado por 2, por lo que el resultado permanece idéntico.


Controlando el radio visible y su interacción (blobbiness)

Diferentes combinaciones de radio y fuerza pueden dar el mismo radio visible, pero diferentes grados de interacción (blobbiness) El valor de radio controla el radio real del componente del blob, pero como ya se dijo antes, el radio visible nunca es tan grande como el radio real, porque sólo es visible parte del blob. El radio visible de un componente de un blob es un resultado conjunto del radio y la fuerza.

Las combinaciones diferentes de radio y fuerza pueden dar el mismo radio visible, pero con grados diferentes de "interacción" (blobbiness) (mira la imagen). Para poder controlar el radio visible y la interacción (blobbiness) con precisión, necesitas saber algunas fórmulas y otras cosas, que son un poco complicadas. Para hacerlo más fácil, he hecho una macro:

#macro easyblob (_threshold,_visibleradius,_blobbiness)
   #local _strength = (1+1/_blobbiness)*_threshold;
   #local _actualradius =
   _visibleradius/sqrt(1-sqrt(_threshold/_strength));
   _actualradius, _strength
#end

Para un componente de blob esférico, úsalo como así:

sphere {
   <Center>,
   easyblob (Threshold, Visible_radius, Blobbiness)
}

Para un componente de blob cilíndrico, usalo así:

cylinder {
   <End1>, <End2>,
   easyblob (Threshold, Visible_radius, Blobbiness)
}

El valor del Umbral debe ser igual que el valor del umbral del blob. El Visible_radius es cuan grande quieres que sea el radio visible. El Blobbiness es cuánto del componente del blob debe mezclarse junto con los otros componentes del blob. Los tres valores deben ser positivos.

La macro del easyblob no es la solución para todo, pero es una buena herramienta para trabajar con blobs.


Interacción de los componentes

La interacción de los componente es una simple suma ¿Cómo se mezclan los componentes exactamente? Bien, es bastante simple. Para un punto dado, simplemente se suman las fuerzas de los diferentes componentes.

En la imagen de la derecha tenemos tres componentes de un blob con una fuerza de 1.5. ¿Qué pasa cuando los movemos para que todos estén localizados en el mismo lugar? ¡Las fuerzas se suman!


Las fuerzas negativas

Las fuerzas negativas Como se ha dicho anteriormente, las fuerzas simplemente se suman. Por ello si queremos substraer algo de un componente del blob, podemos usar otro componente del blob que tenga una fuerza negativa. La fuerza del componente negativo se resta de los componentes positivos.

La imagen a la derecha muestra tres ejemplos de componentes esféricos con componentes cilíndricos que se restan de ellos. En todos los ejemplos el umbral es 0.5, y la fuerza de la esfera es 1.5. La diferencia entre el umbral de 0.5 y la fuerza de 1.5 es 1.0. Eso significa que se requiere una fuerza negativa de más de 1.0 para cortar un agujero a través de la esfera.

En el primer ejemplo la fuerza negativa del cilindro es 0.5. Eso no es bastante para cortar un agujero a través de la esfera. En el próximo ejemplo la fuerza negativa es 1.0. Eso está en el límite entre que exista o no un agujero. En el último ejemplo la fuerza negativa del cilindro es 1.5. Eso claramente es suficiente para cortar un agujero a través de la esfera.


Uniendo cilindros

Uniendo cilindros suavemente Los componentes cilíndricos son muy útiles para algunos propósitos, pero a veces resulta difícil unirlos suavemente. Supongamos que queremos crear la letra "T" con un blob. Los cilindros sólo tienen una fuerza de 1.

Sin embargo, en al área dónde los cilindros se solapan, las fuerzas se suman, por lo que obtenemos una fuerza de 2. Eso origina una región bulbosa y agrandada dónde se unen los cilindros. Si queremos librarnos de ello, podemos simplemente poner una esfera con una fuerza de -1 en el lugar dónde se unen los cilindros. Esa es con mucho la manera más fácil de unir los componentes cilíndricos fácilmente, y funciona perfectamente. Puedes verlo en la imagen inferior.


Eso es todo por ahora...

Mano hecha de blobs Bien, éso eran los fundamentos de los blobs... Ahora sólo hay una cosa que hacer - juega con los blobs! :)

Los comentarios sobre este tutorial son muy apreciados. Simplemente manda un e-mail a su autor


Esta página es parte del RSJ Website © 2000 Rune S. Johansen
Traducción al castellano por Txemi Jendrix inspiriens