LAS IDEAS COMPARTIDAS, NO LLEGAN AL OLVIDO

sábado, 13 de marzo de 2010

Scripts Tema 9

LA FUENTE DE LAS TEXTURAS (Algunas funciones de color y textura)

Vamos a hacer una fuente decorativa. Pero una fuente interactiva. De paso repasaremos el manejo de los estados. Esta lección consta de tres partes; en la primera ensayaremos el cambio de color de un prim, en la segunda haremos lo mismo pero con una función de textura, y por último , lo más espectacular... haremos una textura móvil que simulará el chorro de agua de la fuente.

Adelante entonces...

Para empezar vamos ha construir los prims que necesitamos



1-BASE: Un Cilindro con las medidas en “Tamaño” x 4.0 y 4.0 z 0.1

2-CERCO: Otro Cilindro con la casilla “Vacía” en 90.0 y medidas x 4.0 y 4.0 z 1.0

3-AGUA: Un Cilindro más con las medidas x 3.9 y 3.9 z 0.1

4-TUBO: Un Tubo con la casilla “Tamaño del agujero Y” EN 0.10 x 0.5 y 0.5 z 0.5

5-CHORRO: Un Torus,Relieve (o Dona) con las medidas x 2.5 y 3.0 z 3.0

No hace falta que coloreéis los prims 2, 3 y 5, eso lo harán los scripts que vamos a utilizar.

A continuación colocar los prims como se ve en la imagen B.


Los colores en SL vienen determinados por un dato VECTORIAL, acordaros de los tipos de variable del tema 2. Esto quiere decir que están definidos mediante tres números decimales que corresponden a sus componentes de Rojo, Verde y Azul. Esto es el sistema RGB (Red-Green-Blue) que es uno de los que se usan en tratamiento de imágenes por ordenador. En LSL estos irán entre “<>” y separados por comas ,de la siguiente manera:

<1.0,1.0,1.0> correspondería al color blanco (máxima luminosidad)

<0.0,0.0,0.0> seria el negro más profundo, y cualquier valor intermedio disminuiría o aumentaría el componente de manera que se generan el resto de los colores según la siguiente tabla:




Para nuestro ejercicio vamos a escoger valores mas bien azulados (Los que he remarcado en rojo) para que nos simulen el agua estancada de la fuente.

El script que vamos a hacer requiere de dos ESTADOS, Ya vimos en el Tema 3 que eran los Estados. En ocasiones, cuando estemos “inventándonos” un script nos daremos cuenta de que para conseguir que este funcione, lo más cómodo va a ser recurrir a los estados. Necesitamos que el agua varie su tono en el evento “Touch” y que esta vuelva a su color anterior cuando volvamos a tocarla.

Vamos a usar la Función llSetColor(). Esta tiene dos parámetros; el color del que queramos que se ponga el prim que contenga el script y un segundo parámetro que define las caras del prim que deseemos que se pinten.

En nuestro caso haremos que se pinten todas sus caras ALL_SIDES, pero saber que es posible pintar únicamente una o algunas de las caras del prim, cambiando este parámetro.

En la siguiente imagen vemos el script que debe de llevar el prim 3 de nuestro ejercicio:



Empezamos en default poniendo el color <0.0,0.6,0.8> en todas las caras. Cuando un avatar toca el agua llamamos al estado state estadoB. Al comenzar el segundo estado cambiamos el color del agua y si un avatar la vuelve a tocar retornamos al estado state default volviendo el agua del color de antes.

Ahora vamos a hacer lo mismo en el reborde de la fuente pero cambiando la textura...

Primero tenemos que introducir las texturas que vayamos a utilizar en el prim. Para facilitar las cosas usaremos texturas de las que tenemos todos. Cuando se crea un avatar nuevo los de Linden “nos regalan” la carpeta Library llena de “cosas”.

Abrimos la Ventana de Edición con el prim 2 (el cerco) de este ejercicio seleccionado, y elegimos la pestaña Contenido, esa en la que metemos también los scripts. A parte abrimos el Inventario, vamos a la carpeta Library, dentro de esta vamos a Textures y a Buildings.

Ahí dentro cogemos para el cerco de nuestra fuente las texturas llamadas “Concrete” y “SpanishTile” y pinchando en ellas, las arrastramos dentro de la pestaña Contenido de nuestra Ventana de Edición; tal como se puede observar en la siguiente imagen:



Después crearemos el sript que contendrá el cerco de la fuente. Es igual que el que hicimos para el agua, pero con otra función que trabaja con texturas llSetTexture().

Sus parámetros son parecidos. Lo único que cambia es que en vez de especificar un color, le indicamos que textura queremos que se aplique al prim en cuestión.

Para ello en el primer parámetro escribiremos entre comillas la textura elegida ,(las que previamente hemos introducido en la pestaña Contenido), ojo con las mayúsculas y las minúsculas.



Una vez hecho esto cambiara la textura de la fuente ante el evento touch_start de la misma forma que hicimos con el agua.

Vamos con el chorro!!

Seleccionamos el prim 5 (el relieve) y lo bajamos hasta que quede tapando el prim 4 (el tubo), de forma que cuando este prim sea transparente nos dé la sensación de que el agua sale de el tubo.

Primero pondremos una textura de agua en este prim. Yo he escogido la textura “Water-ripple layer 2” que la tenemos todos en la carpeta Library->Textures->Waterfalls. Después crearemos el script. Como todos los de este tema va a tener dos estados; cuando la fuente este apagada, este prim se volverá transparente, y cuando esté encendida veremos la textura de agua en movimiento.

En este caso también podríamos meter la textura de agua y otra transparente y alternarlas tal como hicimos con el cerco. Pero vamos a usar en el state_entry del primer estado otra función que permite volver transparentes los prims aunque estos tengan una textura puesta. llSetAlpha(0.0,ALL_SIDES). Es parecida a las otra dos que hemos visto en este tema; sólo cambia el primer parámetro, que se refiere al nivel de transparencia u opacidad que deseemos que adopte el prim. Desde 0.0 totalmente invisible, hasta 1.0 opacidad completa.

De esta forma cuando un avatar toque el tubo (pues el prim relieve no lo verá, pues está transparente), iniciamos el estado state estadoB volviendo opaca la textura en su state_entry : llSetAlpha(1.0,ALL_SIDES).



En esta imagen se puede ver como quedaría este script. Solo necesitamos una función mas llSetTextureAnim(ANIM_ON SMOOTH LOOP, ALL_SIDES, 1, 1, 0.0, 0.0, 0.5); que va a ser la que mueva la textura de agua.

Y ya está. Una fuente muy decorativa, interactiva y de sólo 5 prims. Y de paso ya sabéis trabajar con texturas y colores. ¡Cuántas cosas se podrían hacer con esto!

No hace falta que modifiquéis ningún parámetro de esta última función para este ejercicio, aunque tal vez tengáis que girar el prim 180 grados si el agua cae hacia arriba.

De todas formas aquí va un resumen de estos parámetros extraído de la Wiki de LSL:

llSetTextureAnim(ANIM_ON SMOOTH LOOP, ALL_SIDES, 1, 1, 0.0, 0.0, 0.5);

Los primeros parámetros (ANIM_ON SMOOTH LOOP) que vemos separados con barras (se escriben estas pulsando Alt Gr + 1 en el teclado), son el modo en el que se verá la textura. Podemos introducir aquí cualquiera de los 7 modos que existen, o todos ellos a la vez si así lo queremos .Estos modos son...

- ANIM_ON . Habilita la animación de la textura.

- LOOP . Repite la animación de la textura en un bucle continuo. Sino la textura se quedaría quieta.

- REVERSE . Invierte el sentido del movimiento de la textura.

- PING_PONG . Hace que la textura oscile de un sentido al otro continuamente.

- SMOOTH . Desliza la textura más suavemente.

- ROTATE . Rota la textura en vez de deslizarla.

- SCALE . Hace zoom en la textura en vez de rotarla o desplazarla.

El siguiente parámetro (ALL_SIDES), nos indica que el efecto del script se produce en todas las caras del prim como ya hemos visto en las otras funciones de este tema.

Los dos siguientes parámetros (1,1,0.0,0.0,0.5) indican cúantas veces va a ser vista la textura de una sola vez en sus ejes x e y (horizontal y verticalmente) .Funciona como las casillas de Repetición por cara de la pestaña Textura del Menú de Edición.

El siguente (1,1,0.0,0.0,0.5) indica desde que parte de la textura comenzara la animación. En este caso desde su borde al ser 0.0. Puede que deseemos que no sea así alguna vez.

Después (1,1,0.0,0.0,0.5) Según la Wiki especifica el número total de fotogramas a animar. Con un valor de 0 anima todos.

Por último (1,1,0.0,0.0,0.5) indica la velocidad a la que se moverá la textura. El 0.0 nos dejaría la textura quieta.

Espero que os haya gustado el tema.

Fuente: Fritxitin Martinek para Creasl

No hay comentarios:

Publicar un comentario