_________________________________________________
R1
rule R1 {
{ x 0.9 rz 6 ry 6 s 0.99 sat 0.99 } R1
{ s 2 } sphere
}
Como puedes ver si has seguido el curso hasta ahora, aquí se invoca a la regla rule antes de declararla... sirve igual.La regla R1 es un array con las transformaciones de una esfera sphere que esta escalada un 200% s 2. Eso forma parte de un regla que se invoca a si misma R1 y que se desplaza 0.9 veces su tamaño en el eje X x 0.9 rota en el eje Z 6grados rz 6 otros 6 en el eje Y ry6 y se escala un 99% s 0.99 . El color tambien cambia en este caso de saturación.
Veamos esto de HSV o HSB matiz o tono - hue - saturación - sat - e intensidad - value o brigness - b .
Las variaciones de color pueden ser de matiz o hue, saturación sat, brillo b o de alpha a.
El Alpha controla la transparencia - 1 es opaco y 0 transparente... los intermedios son los decimales.
Puedes ver eso en la imagen generada desde esta código:
_______________________
sphere
10 * { x 1 hue 50 } sphere
10 * { y 1 sat 0.7 } sphere
10 * { x -1 b 0.7 } sphere
10 * { y -1 a 0.7 } sphere
Si añadimos una segunda que incremente en sentido contrario y con una variacion de tono en lugar de saturación... la llamamos R2 y otra que llamaremos R3 que además tenga invertido el valor del giro en el eje Z. _________________________________________________________-
R2
rule R2 {
{ x -0.9 rz 6 ry -6 s 0.99 hue 0.99 } R2
{ s 2 } sphere
}
Vamos a darle mas recursividad invovando reglas dentro de las reglas ( en lugar de sphere ahora ponemos R2 y R1 )
__________________________________________________
R1
rule R1 {
{ x 0.9 rz 6 ry 6 s 0.99 sat 0.99 } R1
{ s 2 } sphere
}
R2
rule R2 {
{ x -0.9 rz 6 ry 6 s 0.99 hue 0.99 } R2
}
R3
rule R3 {
{ x -0.9 rz -6 ry 6 s 0.99 hue 0.99 } R3
{ s 0.2 } R2
Veamos la aleatoriedad. Eso se consigue haciendo varias definiciones de la misma regla.
Las imágenes que siguen son resultado del mismo código. Cada vez que construyes la pieza sale diferente.
R1
rule R1 {
{ x 0.9 rz 6 ry 6 s 0.99 sat 0.99 } R1
{ s 2 } sphere
}
R1
rule R1 {
{ x -0.9 rz 6 ry 6 s 0.99 hue 0.99 } R1
{ s 0.5 } sphere
Hay un detalle que hace la aleatoriedad muy interesante y es que no solo sale una versión diferente cada vez que armamos la pieza desde el código, sino que cuando creamos una copia en serie cada nueva instancia del objeto es diferente. Eso es por que cuando creamos la nueva instancia el programa la contruye basandose en la regla y si es aleatoria aplica la aleatoriedad.
5 * {X 10} R1
rule R1 {
{ x 0.9 rz 6 ry 6 s 0.99 sat 0.99 } R1
{ s 2 } sphere
}
R1
rule R1 {
{ x -0.9 rz 6 ry 6 s 0.99 hue 0.99 } R1
{ s 0.5 } sphere
}
Interesante ¿no?
No hay comentarios:
Publicar un comentario