Finestra di Rendering

La finestra di rendering mostra il risultato finale dell'elaborazione stampando sullo schermo il framebuffer. Oltre alla superficie è possibile visualizzare i punti e il poligono di controllo, e l'interpolazione dei punti di controllo in 2D.

Interazione con il mouse

Sorgente Luminosa

La sorgente luminosa è una luce fissa posizionata in (0, 0, 0) il cui colore è bianco. Questa infatti emette luce bianca che rimbalzando sulla superficie ne rivela forme e colori.

Options Toolbox

Questo pannello permette di controllare le impostazioni del motore di raytracing e di scegliere le informazioni visualizzare nella finestra di rendering.

Reset Control Points

Questo pulsante reimposta tutti i punti di controllo in modo da formare una superficie di forma quadrata. In questo modo tutti i punti giaciono sullo stesso piano.

Randomize Control Points

Anche questo pulsante agisce sui punti di controllo perturbando la loro posizione rispetto all'asse Z. I valori sono calcolati in modo casulae entro in range prefissato. Questa funzionalità permette di modificare la superficie in modo molto semplice per testare differenti forme in modo rapido.

Reset View

Quando la rotazione della supeperficie viene modificata questo pulsante permette di tornare al valore originale.

Switch to Wireframe/Raytrace

Modifica le impostazioni contemporaneamente per passare dalla modalità wireframe, in cui viene visualizzato solo il poligono e i punti di controllo assieme ai punti di interpolazione 2D, alla modalità raytrace in cui viene visualizzato solamente la superficie.

Control Polygon

Quando selezionato mostra il poligono di controllo.

Control Points

Quando selezionato mostra i punti di controllo associati alla superficie.

Phong Shading

Questo flag imposta la modalità di shading, cioè come viene interpretata la sorgente luminosa sulla superficie. Quando è attivo il colore di ogni punto viene influenzato dalla sorgente luminosa che in base all'angolo con la normale della superficie nel dato punto si presenta come colorato, adombrato, o riflettente. Nella seguente immagine si può notare la differenza di rendering con e senza Phong Shading, una volta con la texture disattivata e un'altra volta con la texture attivata.
Inoltre modificando i valori di Specular Power e Specular Intensiti si va ad influire sulle caratteristiche fisiche della superficie, e quindi il comportamento della luce a contatto con essa, determinando la topologia e l'intensità luminosa della luce riflessa.

Wireframe View

La visualizzazione wireframe è ottenuta interpolando i punti di controllo proietati sul framebuffer, quindi ha un basso costo computazionale. Utilizzando De Casteljau sui punti di controllo nello spazio 2D del framebuffer è possibile ottenere una rappresentazione temporanea della superficie. Questo è molto utile quando si ruota o si modificano i punti di controllo della patch, poiché permette di avere un anteprima di quello che sarà il risultato finale dopo il rendering. C'è da precisare che questa è solo un'approssimazione della forma della superficie, come si può notare, eseguendo il programma, vi è un leggero discostamento tra la forma della superficie e i punti di approssimazione. A differenza delle superfici di Bézier, le superfici NURBS eliminano questo problema, e ciò permette di spostare il problema del loro rendering dallo spazio 3D a quello bidimensionale.

Raytrace

Attivando questo flag si attiva il raytracing della superficie. Essendo un processo molto costoso, a livello computazionale, esso viene eseguito in modo incrementale. Ciò significa che i pixel del framebuffer vengono valutati ad intervalli, permettendo di osservare un rendering graduale dell'immagine.

Texture

Una texture è solitamente un immagine che viene applicata ad una superficie planare per arricchirla di dettagli. Ogni punto della superficie possiede una coppia di coordinate (u, v) che vengono poi mappate nell'immagine di sorgente. In questo caso la sorgente non è un immagine raster ma una scacchiera generata dinamicamente, abbiamo quindi una texture procedurale. L'utilizzo di questa texture permette di avere un idea di come i punti sulla superficie siano distribuiti, dando all'utente anche una miglior percezione della tridimensionalità della superficie.

Super-Sampling

Il super-sampling è una tecnica molto usata nella computer grafica, ed in particolar modo nel raytracing. Si tratta di generare più di un raggio per ciascun pixel in modo da migliorare la qualità dell'immagine finale sopratutto in prossimità dei bordi degli oggetti. è solitamente usata per eliminare il cosidetto effetto di aliasing. Nell'animazione seguente è mostrata la differenza tra un rendering con e senza super-sampling.

Surface Normals

Questa rappresentazione permette di visualizzare in codifica rgb la direzione dei vettori normale per ogni punto della superficie.

Wireframe Subdivision

Controlla la granularità con cui vengono valutati i punti sulla superficie 2D. Questo strumento rappresenta una buona approssimazione della superficie, ad un contenuto uso delle risorse.

Interactivity

Questo slider permette di impostare il numero di passaggi necessari per renderizzare un singolo frame, questo incrementa la velocità risposta dell'applicazione agli input dell'utente, ma dall'altra parte della medaglia rallenta il processo di rendering.

Iterations

L'intersezione tra raggio e superficie di Bézier è un problema particolarmente complesso per essere risolto in modo esatto. Dato che non è possibile risolvere analiticamente l'equazione di intersezione tra un raggio e una superficie cubica di Bézier, l'approccio iterativo è stato scelto come alternativa. Il metodo di Newton è molto semplice e performante, però ha il problema che non è in grado di trovare più radici, dato che i punti di intersezione possono essere potenzialmente fino a tre. Un altro metodo, quello usato in questo progetto, consiste in una ricerca binaria della superficie proiettata sul piano di cui il raggio è la normale. A seconda del numero di iterazioni è possibile ottenere un diverso grado di dettagli, e l'animazione sottostante mostra differenti valori di iterazione.

Focal View

Modificando la divergenza dei raggi dalla direzione dell'asse Z è possibile modificare la prospettiva della visione, cambiando così la percezione della profondità.