Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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$, anche se vi sono dei sistemi che consentono di uploadare immagini accatastandone più di una in una immagine grande in modo da limitare il costo.
- 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.
- La texture può essere messa su una faccia su un insieme di facce o su TUTTE le facce del prim.
- 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
- La rotazione di una texture è un float (es. PI/2 per 90 gradi) che indica la rotazione della texture.
- La scala di una texture è una coppia (x,y) che specifica quanto viene ristretta (>1) o amplificata (<1) lungo l'asse x o y.
- 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
- 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;
- default
- {
- state_entry()
- {
- stato=0;
- // default media texture
- llSetTexture("8b5fec65-8d8d-9dc5-cda8-8fdf2716e361",ALL_SIDES);
- llRotateTexture(0,ALL_SIDES);
- 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)
- {
- llSetText("Imposto la texture1...",<1,1,1>,1);
- llSetTexture("Texture1",ALL_SIDES);
- }
- if(stato==2)
- {
- llSetText("Imposto la texture2...",<1,1,1>,1);
- llSetTexture("Texture2",ALL_SIDES);
- }
- if(stato==3)
- {
- llSetText("Ruoto di 45 gradi la texture...",<1,1,1>,1);
- llRotateTexture(PI/4,ALL_SIDES);
- }
- if(stato==4)
- {
- 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)
- {
- 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)
- {
- 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 isola.
- 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..
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement