sl italian mentors-scripting textures
TRANSCRIPT
![Page 1: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/1.jpg)
SL Italian Mentors
Lezioni di Scripting base
Scriptare le Textures
Maggio 2008
![Page 2: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/2.jpg)
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.
![Page 3: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/3.jpg)
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
![Page 4: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/4.jpg)
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
![Page 5: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/5.jpg)
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
![Page 6: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/6.jpg)
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
![Page 7: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/7.jpg)
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.
![Page 8: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/8.jpg)
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.
![Page 9: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/9.jpg)
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.
![Page 10: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/10.jpg)
L'accesso per UUID è possibile solo se la texture è full permissions (copy-modify-transfer).
string llGetTexture(side) ovede quale texture c'è sul lato ALL_SIDES se c'è
un'unica texture su tutte le facce vector llGetTextureOffset(side)
o(x,y) indicano lo spostamento della texture float llGetTextureRot(side)
otorna l'angolo di rotazione vector llGetTextureScale(side)
otorna la “scala” llSetTexture(texture,side) llOffsetTexture(x,y,side)
o imposta l'offset della texture llRotateTexture(angle, side)
![Page 11: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/11.jpg)
o imposta la rotazione llScaleTexture(x,y,side)
o 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:
![Page 12: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/12.jpg)
- 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;
![Page 13: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/13.jpg)
// (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);
}
![Page 14: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/14.jpg)
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)
![Page 15: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/15.jpg)
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.
![Page 16: SL Italian Mentors-Scripting Textures](https://reader036.vdocuments.mx/reader036/viewer/2022082605/5571f1f149795947648bd6ed/html5/thumbnails/16.jpg)
* 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..