Sei sulla pagina 1di 15

SL Italian Mentors

Lezioni di Scripting base


Scriptare le Textures
Maggio 2008

0. Cosa sono le Texture


Le texture sono delle immagini o fotografie, che
vengono usate pesantemente in SL per dare vitalità e
realtà alle costruzioni, agli oggetti e agli avatar.
Le trovate nel vostro inventory nella cartella Textures e
hanno come simbolo una griglia di colori oppure la
cornice. Non c'è differenza fra le due tipologie, la
Linden ha voluto distinguere le foto direttamente
uploadate dalla funzione "snapshot" e le altre
immagini utenti.
Non confondete la "Texture" che contiene una
immagine complessa con il colore o tinta che potete
aggiungere ad una texture "Color". Su un prim potete
aggiungere SIA una texture che un colore.
Le texture vengono costruite nei seguenti modi:
Esternamente dal proprio PC:
• scaricando immagini da internet (browser save as
.jpg)
• facendo snapshot sul vostro computer (programmi
che scattano foto)
• dalla vostra macchina fotografica
• producendole con programmi di gestione di
immagini (GIMP o PHOTOSHOP)
Internamente da SL:
• Facendo snapshot con il menù del client
• Usando una texture che avete nel vostro inventory
datavi da altri

Tutte le volte che uploadate una immagine vi costa


10L$,
1. Dimensioni e tipo delle texture

Le texture hanno dimensioni che sono normalmente


multipli di 128 pixel.
Un pixel è un punto che può essere Rosso, Verde o Blu
Le dimensioni più diffuse sono:

QUADRATE:
• 256 x 256 (bassa risoluzione) occupa circa
200Kbyte
• 512 x 512 (media risoluzione) occupa circa 800
Kbyte
• 1024 x 1024 (alta risoluzione) occupar circa 3.5
Mbyte
RETTANGOLARI: - 256x512 - 512x1024

Come vedete una texture 1024x1024 è decisamente


"grande". Una scena con 300 texture di questo tipo
comporta lo scarico di quasi 1 GigaByte!!! Ecco perchè
secondlife a volta sembra lento :(
Le texture vengono anche usate per contenere i dati
dei "sculpted prims", ma questo non è oggetto di
questo corso. Se aprite una texture usata per uno
sculpted vedrete una immagine con una sequenza
casuale di punti rossi verdi blu.
Le tipologie attualmente accettate come texture
dall'image upload sono:
Image (propriamente dette) quelle di questa lezione
Hair/Head/Upper-LowerBody - servono per le skin e gli
abiti & Sculpted Prims.
2. Alpha channel e come mettere le textures su un
prim.

Vi sono un tipo particolare di texture trasparenti o


semi trasparenti. Queste texture si dice che sono
"alpha channel". La trasparenza consente di creare
effetti molto potenti (finestre, abiti trasparenti, porte,
effetto vetro).
Sebbene non sia parte di questo corso la trasparenza
(si manda ad apposito corso) è importante conoscere il
significato della dicitura "alpha". Nello scripting l'alpha
è un numero che va da 0 a 1
0 = trasparente
0.5 = semi-trasparente
1 = opaco
Un prim ha un certo insieme di facce tipicamente da 1
a 8. Si possono mettere texture differenti per ogni
faccia del prim.
Un cubo con HOLE e CUT ha tipicamente 8 facce.
Una sfera ha una sola faccia.
Un cubo semplice ha 6 facce.
ALL_SIDES
La texture può essere messa su una faccia su un
insieme di facce o su TUTTE le facce del prim.
OFFSET
L'offset di una texture è una coppia (x,y) che indica di
quanto la texture viene spostata lungo l'asse x o l'asse
y. 0= non spostata, 0.5 = spostata a metà
.75=spostata di 3/4
ROTAZIONE
La rotazione di una texture è un float (es. PI/2 per 90
gradi) che indica la rotazione della texture.
LA SCALA
La scala di una texture è una coppia (x,y) che specifica
quanto viene ristretta (>1) o amplificata (<1) lungo
l'asse x o y. Es. (0.5,0.5) vuol dire amplifica mostrando
¼ della texture. (2,2) vuol dire mostrare una griglia di
2 x 2 = 4 textures uguali sul prim.
3. Istruzioni di scripting che agiscono sulle texture
L'accesso alle texture da uno script in un prim o in un
linkset consente di gestire le texture usando il nome
della texture nell'inventory dell'oggetto oppure usando
un numero UUID.
L'accesso per UUID è possibile solo se la texture è full
permissions (copy-modify-transfer).
• string llGetTexture(side)
○vede quale texture c'è sul lato ALL_SIDES se c'è
un'unica texture su tutte le facce
• vector llGetTextureOffset(side)
○(x,y) indicano lo spostamento della texture
• float llGetTextureRot(side)
○torna l'angolo di rotazione
• vector llGetTextureScale(side)
○ torna la “scala”

• llSetTexture(texture,side)
• llOffsetTexture(x,y,side)
○imposta l'offset della texture
• llRotateTexture(angle, side)
○imposta la rotazione
• llScaleTexture(x,y,side)
○imposta la scala della texture
analoghe operazioni possono essere fatte su un altro
prim dello stesso linkset.
Non consideriamo in questa lezione le istruzioni che
agiscono sulle animazioni di una texture
(llSetTextureAnim).
4. Esempio concreto di programma che manipola le
texture

Il programma indicato permette di "giocare" con un


cubo cambiando da script:
– la texture
– l'offset
– la rotazione
– la scale

Questo viene ottenuto facendo uno script che ogni


volta che viene toccato, cambia i parametri della
texture sul cubo.
Ecco lo script:
integer stato=0; // (1) per passare di stato in stato
default {
state_entry() {
stato=0;
// (2) uso la UUID di una texture neutra
llSetTexture("8b5fec65-8d8d-9dc5-cda8-8fdf2716e361",ALL_SIDES);
llRotateTexture(0,ALL_SIDES); // (3) resetto i parametri
llOffsetTexture(0,0,ALL_SIDES);
llScaleTexture(1,1,ALL_SIDES);
llSetText("Spiegazione textures",<1,0,0>,1);
}
touch_start(integer total_number) {
stato=stato+1;
if(stato==1){ // (4)
llSetText("Imposto la texture1...",<1,1,1>,1);
llSetTexture("Texture1",ALL_SIDES);
}
if(stato==2) { //(5)
llSetText("Imposto la texture2...",<1,1,1>,1);
llSetTexture("Texture2",ALL_SIDES);
}
if(stato==3){ //(6)
llSetText("Ruoto di 45 gradi la texture...",<1,1,1>,1);
llRotateTexture(PI/4,ALL_SIDES);
}
if(stato==4) { //(7)
llSetText("Rimetto la rotazione a 0 e sposto la x di
1/3",<1,1,1>,1);
llRotateTexture(0,ALL_SIDES);
llOffsetTexture(0.333,0,ALL_SIDES);
}
if(stato==5) { //(8)
llSetText("Metto offset a 0.25, 0.25 e metto scale a 0.5
0.5",<1,1,1>,1);
llOffsetTexture(0.25,0.25,ALL_SIDES);
llScaleTexture(0.5,0.5,ALL_SIDES);
stato=0;
}
if(stato==6) { //(9)
llSetText("Restarting from start",<1,1,1>,1);
llResetScript();
}
}
}

Commento: come vedete si possono fare un po' di


giochi con le texture, e uno dei principali è quello di
riuscire a visualizzare un frammento di texture (base
per avere tante immagini e uploadarne una sola).
5. Cosa fare successivamente.
* Usando llSetTimerEvent() si possono fare dei
complicati giochi di movimento delle texture.
* Usando coppie di texture Finestra aperta
(trasparente) Finestra chiusa e comandi linkmessage o
llSay si possono fare script che aprono/chiudono
finestre.
* In combinazione con il movimento dei prim si
possono avere effetti scenografici spettacolari
* analogo con le funzioni che impostano il colore, la
trasparenza, le caratteristiche del prim ecc..

Potrebbero piacerti anche