Mirror di ebook, audiolibri e file musicali tratti da Liber Liber


CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions Manuale di Utilizzo di POV-Ray 3.01 - Versione Italiana

4.4.1        Superfici Bicubiche (Patches)



Le superfici bicubiche o di Bezier, sono utili rappresentazioni di una superficie, dato che permettono una semplice definizione di una superficie mediante l'uso di pochi punti di controllo. I punti di controllo servono a determinare la forma della superficie. Invece di definire i vertici dei triangoli che la formano, diamo le coordinate dei punti di controllo. Una singola patch ha 16 punti di controllo, quattro ad ogni angolo e le altre posizionate in modo da dividere la patch in sezioni più piccole. Per il rendering le superfici di Bezier vengono approssimate usando triangoli. Le superfici di Bezier sono quasi sempre create usando un modellatore esterno a POV-Ray, così per questo tutorial, useremo MORAY (ma può essere usato un qualunque altro modellatore che abbia supporto per le superfici di Bezier e per POV-Ray). Useremo Moray solo per creare la superficie, non per il resto della scena.
Le superfici di Bezier sono utilissime e con un po' di pratica, possono essere create cose piuttosto sorprendenti. Per il nostro tutorial, faremo una specie di tenda indiana, usando una patch costituita di un solo foglio.
Per prima cosa, avviamo Moray e dallo schermo principale, facciamo click su "CREATE" e poi su "Bezier Patch". Diamo al nostro oggetto il nome Teepee. Apparirà la finestra di dialogo "Create Bezier Patch". Dobbiamo assicurarci che il pulsante "Sheet" sia premuto. Facciamo clic su "OK, CREATE". In basso, sullo schermo principale, facciamo clic su "EXTENDED EDIT".
Teniamo il cursore del mouse sulla vista "TOP" e facciamo clic col bottone destro per fare apparire il menù. Facciamo clic su "MAXIMIZE" e zoomiamo un po' [ALT-trascina] in modo da vedere bene la patch. Clic su "MARK ALL" e nel riquadro del tipo di trasformazione, "UFRM SCL". Tenendo premuto il bottone sinistro, trasciniamo il mouse in modo da rendere la patch ampia circa 4 unità. Facciamo clic sul pulsante "TRANSLATE" e spostiamo la patch in modo che il suo centro sia sopra l'origine. Col bottone destro, facciamo clic su "MINIMIZE" ed "UNMARK ALL". Con [SHIFT-trascina] tracciamo un rettangolo attorno al punto di controllo inferiore destro, selezionandolo. Zoomiamo nella vista "FRONT" in modo da vedere meglio la patch. Nella vista "FRONT" trasliamo quel punto 10 unità nella direzione delle Z negative (notiamo che in Moray l'asse Z è rivolto verso l'alto). Poi, "UNMARK ALL". Ripetiamo questa procedura per ognuno degli altri tre punti negli angoli. Assicuriamoci di ricordare di eseguire "UNMARK ALL" ogni volta che ciascun punto è stato traslato. Dovremmo avere una 'forma' che sembra stare in piedi su quattro zampe appuntite. Infine, "UNMARK ALL".
Di nuovo nella vista "TOP", selezioniamo i quattro punti di controllo centrali ([SHIFT]-trascina). Ingrandiamo la vista "TOP" (clic destro e "MAXIMIZE") Facciamo clic su "UFRM SCL" e trasciniamo il mouse per avvicinare insieme i quattro punti. Zoomiamo il più possibile e cerchiamo di renderli il più vicini possibile. Zoomiamo all'indietro ([ALT-trascina]), clic destro e "MINIMIZE".
Nella vista "FRONT", trasliamo ("TRANSLATE" ) i punti selezionati 10 unità lungo l'asse delle Z positive. "UNMARK ALL". La forma che ne risulta è piuttosto interessante, è stata semplice da modellare e non avrebbe potuto essere costruita utilizzando le primitive che abbiamo a disposizione. Ora usiamola nella scena.
Facciamo clic su "DONE" e torniamo nella finestra principale. Notiamo che i parametri U_STEPS e V_STEPS sono impostati su 3, mentre FLATNESS è su 0.01. Lasciamoli perdere per ora. Facciamo clic su "FILE" e poi "SAVE SEL" (salva la parte selezionata). Nominiamo il nostro nuovo file teepee1.mdl.
Premiamo [F3] e apriamo il file teepee1.mdl. Non c'è bisogno di salvare il file originale. Quando è aperto il file, creiamo una texture 'fasulla' (Moray non ci permetterebbe di esportare dati se non vengono specificate texture). Utilizziamo il bianco con il finish predefinito e lo nominiamo TeePeeTex. La applichiamo all'oggetto TeePee, salviamo il file e poi premiamo [CTRL-F9]. Moray creerà due file : teepe1.inc e teepee1.pov.
Usciamo da Moray e copiamo teepe1.inc e teepee1.pov nella nostra directory di lavoro, dove stiamo svolgendo i tutorial. Creiamo un nuovo file chiamandolo bezdemo1.pov e lo editiamo come segue.

#include "colors.inc"
camera {
location <0, .1, -60>
look_at 0
angle 40
}

background { color Gray25 } //per vedere meglio la patch
light_source { <300, 300, -700> White }
plane { y, -12
texture {
pigment {
checker
color Green
color Yellow
}
}
}

Per mezzo di un editor di testo, creiamo e dichiariamo una semplice texture per il nostro oggetto.

#declare TeePeeTex = texture {
pigment {
color rgb <1, 1, 1,>
}
finish {
ambient .2
diffuse .6
}
}

Incolliamo i dati della patch dal file teepee1.pov (eliminando le parole chiave 'in eccesso' come object aggiunte da Moray) :

bicubic_patch {
type 1 flatness 0.0100 u_steps 3 v_steps 3,
<-5.174134, 5.528420, -13.211995>,
<-1.769023, 5.528420, 0.000000>,
<1.636088, 5.528420, 0.000000>,
<5.041199, 5.528420, -13.003932>,
<-5.174134, 1.862827, 0.000000>,
<0.038471, 0.031270, 18.101474>,
<0.036657, 0.031270, 18.101474>,
<5.041199, 1.862827, 0.000000>,
<-5.174134, -1.802766, 0.000000>,
<0.038471, 0.028792, 18.101474>,
<0.036657, 0.028792, 18.101474>,
<5.041199, -1.802766, 0.000000>,
<-5.174134, -5.468359, -13.070366>,
<-1.769023, -5.468359, 0.000000>,
<1.636088, -5.468359, 0.000000>,
<4.974128, -5.468359, -12.801446>
texture {
TeePeeTex
}
rotate -90*x // per orientare la patch al sistema di coordinate di POV-Ray
rotate 25*y // per vedere meglio le quattro 'zampe'
}

Aggiungiamo le rotazioni in modo che la patch sia orientata al sistema di coordinate sinistrorso di POV-Ray (la patch è stata fatta con Moray, in un sistema di coordinate destrorso) e per vedere tutte e quattro le zampe. Renderizzando questa scena a 200x150 vediamo più o meno quello che ci aspettavamo, un 'tepee' bianco su di un piano a scacchi verdi e gialli. Avviciniamoci di più, renderizzandolo a 320x200.

Fig. 10-Primo esempio

Ora vediamo che ci è sfuggito qualcosa. Sembra che ci siano degli angoli netti, quasi delle sfaccettature, soprattutto vicino alla cima. E' certamente un qualche tipo di sfaccettatura, dovuto ai parametri U_STEPS e V_STEPS. Cambiamoli da 3 a 4 e vediamo cosa accade.
Molto meglio, ma il rendering ci ha messo un po' di più. Questo è un compromesso inevitabile. Se vogliamo un dettaglio ancora più fine, dobbiamo usare valori per
U_STEPS e V_STEPS di 5 e impostare flatness a zero. Ma dobbiamo aspettarci di usare molta più memoria ed un tempo di rendering ancora più lungo.
Bene, non possiamo lasciare questa scena senza aggiungere qualche oggetto per interesse. Dichiariamo l'oggetto patch e spargiamone un po' in giro :

#declare TeePee = bicubic_patch {
type 1 flatness 0.0100 u_steps 3 v_steps 3,
<-5.174134, 5.528420, -13.211995>,
<-1.769023, 5.528420, 0.000000>,
<1.636088, 5.528420, 0.000000>,
<5.041199, 5.528420, -13.003932>,
<-5.174134, 1.862827, 0.000000>,
<0.038471, 0.031270, 18.101474>,
<0.036657, 0.031270, 18.101474>,
<5.041199, 1.862827, 0.000000>,
<-5.174134, -1.802766, 0.000000>,
<0.038471, 0.028792, 18.101474>,
<0.036657, 0.028792, 18.101474>,
<5.041199, -1.802766, 0.000000>,
<-5.174134, -5.468359, -13.070366>,
<-1.769023, -5.468359, 0.000000>,
<1.636088, -5.468359, 0.000000>,
<4.974128, -5.468359, -12.801446>
texture {
TeePeeTex
}
rotate -90*x // per orientare correttamente l'oggetto
rotate 25*y // per vedere meglio le quattro 'zampe'
}

object { TeePee }
object { TeePee translate <8, 0, 8> }
object { TeePee translate <-9, 0, 9> }
object { TeePee translate <18, 0, 24> }
object { TeePee translate <-18, 0, 24> }

Fig. 11-Aumentano gli oggetti

Sembra buono. Facciamo qualcosa per quel noioso sfondo grigio. Eliminiamo la dichiarazione del background e sostituiamola con :

plane { y, 500

texture { pigment { SkyBlue }

finish { ambient 1 diffuse 0} }

texture { pigment {

bozo turbulence .5

color_map { White]

White filter 1] } }

finish { ambient 1 diffuse 0 }

scale <1000, 250, 250> rotate <5, 45, 0> } }

Questo aggiunge un piacevole cielo riempito di nuvole.

Fig. 12-Aggiungere un cielo

Ora, sostituiamo il piano a scacchi con dune sabbiose ondulate :

plane {y,-12
texture {
pigment {
color <.85, .5, .15>
}
finish {
ambient .25
diffuse .6
crand .5
}
normal {
ripples .35
turbulence .25
frequency 5
}
scale 10
translate 50*x
}
}

Renderizziamo a 320x240 senza antialiasing.

Fig. 13-Aggiungere della sabbia

Non male ! Aggiungiamo solo un altro elemento. Mettiamo un 'uovo' dorato sotto ogni tepee. Dato che questo è un tutorial sulle patch, facciamo le uova usando le patch.
Torniamo a Moray e creiamo un'altra patch. Diamole il nome Egg1 e selezioniamo "CYLINDRICAL 2 - PATCH" dalla finestra di dialogo "CREATE BEZIER PATCH". Facciamo clic su "EXTENDED EDIT". Ora "MARK ALL" e ruotiamo la patch in modo che il cilindro giaccia su un lato. "UNMARK ALL". Nella vista "FRONT" selezioniamo i quattro punti all'estremità destra. Nella vista "SIDE", facciamo clic col tasto destro del mouse e "MAXIMIZE". Zoomiamo un po' più vicino. Col comando "UFRM SCL" avviciniamo i 4 punti il più possibile. Zoomiamo ancora in avanti e ripetiamo. Zoomiamo indietro, clic destro, "MINIMIZE". Selezioniamo "TRANSLATE" e trasciniamo i punti a sinistra in modo che siano allineati sull'asse Z col vicino gruppo di 4 punti. Questo dovrebbe creare un'estremità chiusa. Ripetiamo questo procedimento per l'altra estremità. "UNMARK ALL". Nella vista "FRONT" la griglia di controllo dovrebbe essere un rettangolo e la patch un ellissoide. Tenendo premuto [SHIFT] tracciamo un rettangolo attorno all'angolo superiore destro della griglia di controllo per selezionare quei punti. Tracciamo un rettangolo attorno all'estremità inferiore destra per selezionare anche quelli. Nella vista "SIDE", si effettua un "UFRM SCL" su quei punti per rendere un po' più larga quell'estremità dell'uovo. Infine, "UNMARK ALL". L'uovo potrebbe avere bisogno di qualche aggiustatura. Si dovrebbe riuscire a "MARK ALL" e "LOCAL SCL" le tre viste per ottenere qualcosa che sembri un uovo. Avendo imparato dal tepee, proseguiamo e cambiamo i valori di U_STEPS e V_STEPS a 4.
Creiamo un'altra texture fasulla, le diamo il nome EggTex e la assegnamo all'uovo. Dal menu file, scegliamo "SAVE SEL" dando il nome egg1.mdl. Carichiamo questo file ed esportiamo [CTRL F9]. Usciamo da Moray e copiamo i file egg1.pov ed egg1.inc nella nostra directory.
Di ritorno al file bezdemo.pov creiamo una bella texture dorata e brillante.

#declare EggTex = texture {
pigment { BrightGold }
finish {
ambient .1
diffuse .4
specular 1
roughness 0.001
reflection .5
metallic
}
}

già che ci siamo, miglioriamo la nostra texture TeePeeTex :

#declare TeePeeTex = texture {
pigment { Silver }
finish {
ambient .1
diffuse .4
specular 1
roughness 0.001
reflection .5
metallic
}
}

Ora incolliamo i nostri dati della patch relativa all'uovo e dichiariamo l'uovo :

#declare Egg = union { // Egg1
bicubic_patch {
type 1 flatness 0.0100 u_steps 4 v_steps 4,
<2.023314, 0.000000, 4.355987>,
<2.023314, -0.000726, 4.355987>,
<2.023312, -0.000726, 4.356867>,
<2.023312, 0.000000, 4.356867>,
<2.032037, 0.000000, 2.734598>,
<2.032037, -1.758562, 2.734598>,
<2.027431, -1.758562, 6.141971>,
<2.027431, 0.000000, 6.141971>,
<-1.045672, 0.000000, 3.281572>,
<-1.045672, -1.758562, 3.281572>,
<-1.050279, -1.758562, 5.414183>,
<-1.050279, 0.000000, 5.414183>,
<-1.044333, 0.000000, 4.341816>,
<-1.044333, -0.002947, 4.341816>,
<-1.044341, -0.002947, 4.345389>,
<-1.044341, 0.000000, 4.345389>
}
bicubic_patch {
type 1 flatness 0.0100 u_steps 4 v_steps 4,
<2.023312, 0.000000, 4.356867>,
<2.023312, 0.000726, 4.356867>,
<2.023314, 0.000726, 4.355987>,
<2.023314, 0.000000, 4.355987>,
<2.027431, 0.000000, 6.141971>,
<2.027431, 1.758562, 6.141971>,
<2.032037, 1.758562, 2.734598>,
<2.032037, 0.000000, 2.734598>,
<-1.050279, 0.000000, 5.414183>,
<-1.050279, 1.758562, 5.414183>,
<-1.045672, 1.758562, 3.281572>,
<-1.045672, 0.000000, 3.281572>,
<-1.044341, 0.000000, 4.345389>,
<-1.044341, 0.002947, 4.345389>,
<-1.044333, 0.002947, 4.341816>,
<-1.044333, 0.000000, 4.341816>
}
texture { EggTex }
translate <0.5, 0, -5> // centra l'uovo sull'origine
translate -9.8*y // mette l'uovo sul suolo
}

Ora mettiamo una copia dell'uovo sotto ogni tepee. Questo dovrebbe richiederci di cambiare solo le coordinate x e z di ogni uovo :

object { Egg }
object { Egg translate <8, 0, 8> }
object { Egg translate <-9, 0, 9> }
object { Egg translate <18, 0, 24> }
object { Egg translate <-18, 0, 24> }

Renderizziamo la scena a 320x240 -a. Tutto va bene e possiamo renderizzarla a 640x480 +a.

Fig. 14- Risultato finale

Possiamo vedere che c'è ancora qualche sfaccettatura vicino alla cima dei tepee e sulle uova. L'unica soluzione è di aumentare da 4 a 5 U_STEPS e V_STEPS e regolare flatness a zero per tutti i nostri oggetti. Facciamo i cambiamenti e renderizziamo a 640x480 +a.





Static Wikipedia 2008 (no images)


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh