Advertisement
salahzar

SLVEC Lezione Base Usare le texture Maggio 2008

Feb 16th, 2020
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.11 KB | None | 0 0
  1.  
  2.  
  3. 0. Cosa sono le Texture
  4.  
  5. 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.
  6.  
  7. 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.
  8.  
  9. 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.
  10.  
  11. Le texture vengono costruite nei seguenti modi:
  12. Esternamente dal proprio PC:
  13. --- scaricando immagini da internet (browser save as .jpg)
  14. --- facendo snapshot sul vostro computer (programmi che scattano foto)
  15. --- dalla vostra macchina fotografica
  16. --- producendole con programmi di gestione di immagini (GIMP o PHOTOSHOP)
  17. Internamente da SL:
  18. --- Facendo snapshot con il menù del client
  19. --- Usando una texture che avete nel vostro inventory datavi da altri
  20.  
  21. 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.
  22.  
  23.  
  24. 1. Dimensioni e tipo delle texture
  25.  
  26. Le texture hanno dimensioni che sono normalmente multipli di 128 pixel.
  27. Un pixel è un punto che può essere Rosso, Verde o Blu
  28. Le dimensioni più diffuse sono:
  29.  
  30. QUADRATE:
  31. - 256 x 256 (bassa risoluzione) occupa circa 200Kbyte
  32. - 512 x 512 (media risoluzione) occupa circa 800 Kbyte
  33. - 1024 x 1024 (alta risoluzione) occupar circa 3.5 Mbyte
  34. RETTANGOLARI:
  35. - 256x512
  36. - 512x1024
  37.  
  38. 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 :(
  39.  
  40. 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.
  41.  
  42. Le tipologie attualmente accettate come texture dall'image upload sono:
  43.  
  44. Image (propriamente dette) quelle di questa lezione
  45. Hair/Head/Upper-LowerBody - servono per le skin e gli abiti
  46. Sculpted Prims.
  47.  
  48.  
  49.  
  50.  
  51. 2. Alpha channel e come mettere le textures su un prim.
  52.  
  53. 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).
  54.  
  55. 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
  56. 0 = trasparente
  57. 0.5 = semi-trasparente
  58. 1 = opaco
  59.  
  60.  
  61. Un prim ha un certo insieme di facce tipicamente da 1 a 8. Si possono mettere texture differenti per ogni faccia del prim.
  62. Un cubo con HOLE e CUT ha tipicamente 8 facce.
  63. Una sfera ha una sola faccia.
  64. Un cubo semplice ha 6 facce.
  65.  
  66. La texture può essere messa su una faccia su un insieme di facce o su TUTTE le facce del prim.
  67.  
  68. 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
  69.  
  70. La rotazione di una texture è un float (es. PI/2 per 90 gradi) che indica la rotazione della texture.
  71.  
  72. La scala di una texture è una coppia (x,y) che specifica quanto viene ristretta (>1) o amplificata (<1) lungo l'asse x o y.
  73.  
  74.  
  75. 3. Istruzioni di scripting che agiscono sulle texture
  76.  
  77. 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.
  78.  
  79. L'accesso per UUID è possibile solo se la texture è full permissions (copy-modify-transfer).
  80.  
  81. string llGetTexture(side) --- vede quale texture c'è sul lato ALL_SIDES se c'è un'unica texture su tutte le facce
  82. vector llGetTextureOffset(side) ---- (x,y) indicano lo spostamento della texture
  83. float llGetTextureRot(side) ---- torna l'angolo di rotazione
  84. vector llGetTextureScale(side) -- torna
  85.  
  86. llSetTexture(texture,side)
  87. llOffsetTexture(x,y,side) --- imposta l'offset della texture
  88. llRotateTexture(angle, side) --- imposta la rotazione
  89. llScaleTexture(x,y,side) -- imposta la scala della texture
  90.  
  91. analoghe operazioni possono essere fatte su un altro prim dello stesso linkset.
  92.  
  93. Non consideriamo in questa lezione le istruzioni che agiscono sulle animazioni di una texture (llSetTextureAnim).
  94.  
  95. 4. Esempio concreto di programma che manipola le texture
  96.  
  97. Il programma indicato permette di "giocare" con un cubo cambiando da script:
  98. - la texture
  99. - l'offset
  100. - la rotazione
  101. - la scale
  102.  
  103. Questo viene ottenuto facendo uno script che ogni volta che viene toccato, cambia i parametri della texture sul cubo.
  104.  
  105. Ecco lo script:
  106.  
  107. integer stato=0;
  108. default
  109. {
  110. state_entry()
  111. {
  112. stato=0;
  113. // default media texture
  114. llSetTexture("8b5fec65-8d8d-9dc5-cda8-8fdf2716e361",ALL_SIDES);
  115. llRotateTexture(0,ALL_SIDES);
  116. llOffsetTexture(0,0,ALL_SIDES);
  117. llScaleTexture(1,1,ALL_SIDES);
  118.  
  119. llSetText("Spiegazione textures",<1,0,0>,1);
  120.  
  121. }
  122.  
  123. touch_start(integer total_number)
  124. {
  125.  
  126.  
  127. stato=stato+1;
  128. if(stato==1)
  129. {
  130. llSetText("Imposto la texture1...",<1,1,1>,1);
  131. llSetTexture("Texture1",ALL_SIDES);
  132. }
  133. if(stato==2)
  134. {
  135. llSetText("Imposto la texture2...",<1,1,1>,1);
  136. llSetTexture("Texture2",ALL_SIDES);
  137. }
  138. if(stato==3)
  139. {
  140. llSetText("Ruoto di 45 gradi la texture...",<1,1,1>,1);
  141. llRotateTexture(PI/4,ALL_SIDES);
  142. }
  143. if(stato==4)
  144. {
  145. llSetText("Rimetto la rotazione a 0 e sposto la x di 1/3",<1,1,1>,1);
  146. llRotateTexture(0,ALL_SIDES);
  147. llOffsetTexture(0.333,0,ALL_SIDES);
  148. }
  149. if(stato==5)
  150. {
  151. llSetText("Metto offset a 0.25, 0.25 e metto scale a 0.5 0.5",<1,1,1>,1);
  152. llOffsetTexture(0.25,0.25,ALL_SIDES);
  153. llScaleTexture(0.5,0.5,ALL_SIDES);
  154. stato=0;
  155. }
  156. if(stato==6)
  157. {
  158. llSetText("Restarting from start",<1,1,1>,1);
  159. llResetScript();
  160. }
  161.  
  162. }
  163. }
  164.  
  165.  
  166. 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.
  167.  
  168. 5. Cosa fare successivamente.
  169.  
  170. * Usando llSetTimerEvent() si possono fare dei complicati giochi di movimento delle texture.
  171. * Usando coppie di texture Finestra aperta (trasparente) Finestra chiusa e comandi linkmessage o llSay si possono fare script che aprono/chiudono finestre.
  172. * In combinazione con il movimento dei prim si possono avere effetti scenografici spettacolari
  173. * 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