Make
a donation:
IBAN: IT36M0708677020000000008016 - BIC/SWIFT:
ICRAITRRU60 - VALERIO DI STEFANO or Privacy PolicyCookie PolicyTerms and Conditions Manuale di Utilizzo di POV-Ray 3.01 - Versione Italiana
4.4.5 Mesh
Triangolari.
Gli oggetti mesh (reticolati) sono
molto utili perché ci permettono di creare oggetti contenenti centinaia
o migliaia di triangoli. Paragonati ad una semplice unione di triangoli,
gli oggetti 'mesh' memorizzano i triangoli più efficientemente.
Copie di oggetti mesh richiedono solo una piccola quantità di memoria
aggiuntiva perché i triangoli vengono messi in memoria una volta
sola.
Quasi ogni oggetto può essere approssimato usando facce triangolari,
ma potremmo avere bisogno di un grande numero di triangoli per creare oggetti
complessi. Quindi, faremo solo un esempio molto semplice. Questo esempio,
però mostrerà una funzione utile degli oggetti 'mesh' :
si può assegnare una texture diversa ad ogni singola faccia triangolare.
Creeremo un semplice cubo con le facce diversamente colorate. Creiamo un
file vuoto chiamato meshdemo.pov ed aggiungiamo le linee seguenti :
light_source { <50, 50, -50> color rgb<1, 1, 1> }
#declare Red = texture {
pigment { color rgb<0.8, 0.2, 0.2> }
finish { ambient 0.2 diffuse 0.5 }
}
#declare Green = texture {
pigment { color rgb<0.2, 0.8, 0.2> }
finish { ambient 0.2 diffuse 0.5 }
}
#declare Blue = texture {
pigment { color rgb<0.2, 0.2, 0.8> }
finish { ambient 0.2 diffuse 0.5 }
}
Dobbiamo dichiarare tutte le texture
che vogliamo usare prima della frase mesh.
Le texture non possono essere descritte dentro all'oggetto mesh per la
scarsa prestazione in termini di memoria che ne risulterebbe. Ora aggiungiamo
l'oggetto. Tre lati del cubo useranno texture diverse, mentre gli altri
tre useranno la texture 'globale' dell'oggetto.
mesh {
/* faccia superiore */
triangle { <-10, 10, -10>, <10, 10, -10>, <10, 10, 10>
texture { Red }
}
triangle { <-10, 10, -10>, <-10, 10, 10>, <10, 10, 10>
texture { Red }
}
/* faccia inferiore */
triangle { <-10, -10, -10>, <10, -10, -10>, <10, -10, 10>
}
triangle { <-10, -10, -10>, <-10, -10, 10>, <10, -10, 10>
}
/* faccia sinistra */
triangle { <-10, -10, -10>, <-10, -10, 10>, <-10, 10, 10>
}
triangle { <-10, -10, -10>, <-10, 10, -10>, <-10, 10, 10>
}
/* faccia destra */
triangle { <10, -10, -10>, <10, -10, 10>, <10, 10, 10>
texture { Green }
}
triangle { <10, -10, -10>, <10, 10, -10>, <10, 10, 10>
texture { Green }
}
/* faccia anteriore */
triangle { <-10, -10, -10>, <10, -10, -10>, <-10, 10, -10>
texture { Blue }
}
triangle { <-10, 10, -10>, <10, 10, -10>, <10, -10, -10>
texture { Blue }
}
/* faccia posteriore*/
triangle { <-10, -10, 10>, <10, -10, 10>, <-10, 10, 10>
}
triangle { <-10, 10, 10>, <10, 10, 10>, <10, -10, 10>
}
texture {
pigment { color rgb<0.9, 0.9, 0.9> }
finish { ambient 0.2 diffuse 0.7 }
}
}
Fig. 28-Cubo formato da una meshe triangolare
Renderizzando la scena a 320x240 vedremo
che le facce superiore, laterale e anteriore del cubo hanno colori diversi.
Per quanto questo non sia un esempio molto impressionante, mostra cosa
possiamo fare con gli oggetti 'mesh'. Esempi più complessi, che
usano anche triangoli smussati (smooth triangles) si possono trovare nella
directory scene nei file chesmsh.pov e robotmsh.pov.