Sei sulla pagina 1di 15

ALI - Lezioni di scripting di base

Animare una texture


A cura di Salahzar Stenvaag
Luglio 2008

Sapete tutti cos'è una texture. Avrete forse visto


delle texture animate in secondlife: sono texture
che scorrono, ruotano o fanno una semplice scena
(come ad esempio i fuochi).
Non confondete le texture animate con i filmati
quicktime o gif animate prese da siti.

pg. 1
Tutto questo viene ottenuto con una funzione di
scripting che si chiama llSetTextureAnim, che ha
un sacco di parametri, ma la studieremo in modo
facile :)

Questa è la "firma":

llSetTextureAnim( integer mode, integer face,


integer sizex, integer sizey, float start, float
length, float rate );

pg. 2
Ed ecco il significato dei vari parametri:

* mode: è il più potente e complicato, lo vediamo


+ avanti.
* face: è la faccia su cui si applica l'effetto
* sizex, sizey dimensioni della "griglia" per
l'animazione tipo fuochi (non usata per scale e
rotazione)
* start posizione iniziale da cui partire (o angolo
radianti per la rotazione)
* length numero di frame da visualizzare (o angolo
radianti per la rotazione)
pg. 3
* rate numero di frame al secondo (diverso da
zero).

i MODI:

Sono dei numeri che sono "sommati" fra di loro


con l'operando "|" ANIM_ON | LOOP per ottenere
più effetti in contemporanea

ANIM_ON Attiva l'animazione (obbligatorio!!!)


LOOP L'animazione riparte quando è finita
(normale)
pg. 4
REVERSE Anima seguendo l'ordine inverso (al
contrario)
PING_PONG Anima in avanti e poi indietro
SMOOTH "muove" lungo l'asse delle x invece di
seguire i frame (usato anche per SCALE e ROTATE)
ROTATE ruota la texture (incompatibile con
scale)
SCALE ingrandisce la texture (incompatibile con
rotate).

Le modalità più diffuse sono le seguenti:

pg. 5
* Muove in una direzione (acqua che scorre,
immagine che trasla) ANIM_ON | LOOP | SMOOTH
* Ping/Pong movimento a sobbalzo
* Animazione a frames (tipo fiamma) bisogna
fornire una griglia con tutte le immagini
intermedie
* Rotazione
* Scalatura (Ingrandimento/riduzione).

Esempio 1/2: muovere l'acqua


default {
pg. 6
state_entry() {
// llSetTextureAnim() is a function
that animates a texture on a face.
llSetTextureAnim(ANIM_ON | SMOOTH |
LOOP, ALL_SIDES,1,1,1.0, 1,0.25);
// animate the
script to scroll across all the faces.
}
}

L'esempio 1 mostra un velo d'acqua che scende su


una fontana (se usate una texture trasparente)

pg. 7
l'esempio 2 mostra acqua non trasparente (fiumi)
etc.
Se aumentate l'ultimo parametro aumenta la
velocità.

Esempio 3: ruotare una texture

llSetTextureAnim(ANIM_ON | SMOOTH | ROTATE |


LOOP, ALL_SIDES,1,1,0, 2*PI,.25);

Esempio 4: scala una texture

pg. 8
llSetTextureAnim(ANIM_ON | SMOOTH | SCALE |
LOOP, ALL_SIDES,1,1,0, 2*PI,.25);

Fa una sorta di effetto allontanamento o


avvicinamento se fatta al contrario

Esempio 5: fuoco. Si usano due prim messi


incrociati e linkati con la stessa texture ed
animazione:

llSetTextureAnim(ANIM_ON | LOOP,
ALL_SIDES,4,4,0, 15,20);
pg. 9
L'esempio 5 va spiegato un attimo meglio. Se
guardate la texture è composta da una griglia di
16 immagini disposte
su 4 righe e 4 colonne. Ecco perchè mettiamo 4,4.
E diciamo 0,15 per dire che andiamo dal frame 0
al frame 15 percorrendoli tutti. Se riuscite a
trovare serie di animazioni sul web è ok, le potete
fare da voi se siete abbastanza bravi.

Oppure potete usare "Irfanview" per aprire un gif


animato e per estrarre i frame (Options->Extract

pg. 10
all frames), che poi andarnno ricomposti in una
griglia opportuna.

E questo è tutto per le texture animate.

==============================
==============
A seconda del tempo residuo volevo fare una
anticipazione di come usare GIMP per fare l'effetto
trasparenza, che normalmente viene fatto con
photoshop, ma si può fare agevolmente con GIMP.
pg. 11
0. Scaricate GIMP e lanciatelo vi apparirà la
finestra dei tools.
1. Aprite una immagine qualunque (possibilmente
contrastata)

TRASPARENZA COMPLETA:
2. Aggiungete un layer trasparente: Layer-
>Transparency->Add Alpha Channel

pg. 12
3. Selezionate il "fuzzy selector" (il quarto sulla
prima fila dopo il "lazo")
4. ATTENZIONE funziona solo se la foto è ben
contrastata: selezionate cliccando al centro di ogni
area che volete rendere trasparente. Premete
shift-click per aggiungere aree. Le vedrete
selezionate
5. Edit->Clear per cancellare queste aree le
vedrete diventare trasparenti.
6. Salvate con Save as... specificando xxxx.tga

SEMITRASPARENZA:

pg. 13
2. Layer->Mask->Add Layer Mask (selezionate
Grayscale copy of layer)
3. Apply Layer Mask
4. Salvate in modalità TGA.

Nota l'effetto trasparenza completa normalmente


è più efficace per rappresentare strutture, vetri
etc, ma l'effetto semitrasparenza può essere usato

pg. 14
per complicate e leggere trasparenze come veli
per vestiti ed altro.

pg. 15

Potrebbero piacerti anche