3.2 Funzionalità dell’editor
3.2.4 Utilizzo della Shapelet di Bézier
Nel capitolo 2.5 si è introdotto il concetto di Shapelet, ovvero uno strumento che utilizza un insieme di funzioni base per rappresentare una forma. Kovesi [13] nel suo studio utilizzava un insieme di funzioni gaussiane per indicare la presenza di dislivello, mentre Wu, Shum e altri [14] [15] utilizzavano un insieme di sfere e semisfere per indicare sia l’inclinazione che la rotazione rispetto alla sorgente di luce della superficie. La Shapelet è, in ogni caso, uno strumento utile alla modifica interattiva della forma tridimensionale, operando su immagini bidimensionali.
Supponendo di tagliare il piano tridimensionale in orizzontale, si ottengono i profili delle altezze e in funzione di b, con * costante, cioè una serie ordinata di * profili del piano tridimensionale, tale che il profilo i-esimo è quello che si riferisce alla riga i-esima dell’immagine.
52 Un’analoga semplificazione si avrebbe tagliando il piano tridimensionale in verticale, ottenendo b profili di altezze f in funzione di *. Considerando che la risultante non differisce, si può analizzare solo il primo caso; questa astrazione rende immediata l’analisi del tipo di discontinuità che può esistere tra piani successivi posti a diverse altezze, seguendo il profilo della riga *g dell’immagine.
Facendo riferimento alla Figura 17, è possibile analizzare la discontinuità della generica riga *g. A partire da un piano che non ha alcuna variazione di altezza (A), per operare delle modifiche alla forma si può immagine di applicare uno scalino verticale nella direzione , specificando una coordinata. Lo scalino può essere più o meno alto (B), e il profilo diventerebbe analogo a una linea spezzata. Una soluzione di questo tipo non tiene conto di alcuna variazione dell’inclinazione del piano: per fortuna il mondo non è fatto solo ed esclusivamente da scalini piani e angoli retti. Un’alternativa potrebbe essere inclinare la linea spezzata secondo un angolo impostabile dall’utente. Questa soluzione tiene conto di una possibile inclinazione dello scalino tra piani a diversa altezza, e potrebbe essere accettabile, sebbene il cambio di inclinazione rimanga strettamente
53 lineare e non venga fornita alcuna differenza di inclinazione rispetto alle variazioni presso i due piani interessati.
Un’altra possibile soluzione potrebbe essere quella di utilizzare un arco di novanta gradi appartenente a una circonferenza di raggio T, il cui centro è posto a U
3 dal punto di variazione dell’altezza (C). Tale
soluzione è molto vicina alla Shapelet di Wu, Shum e altri [14], e fornisce una particolare enfasi al rapporto tra il piano iniziale ad altezza ' e la curvatura che vi si allontana: mentre la discontinuità tra la curva e
il piano ad altezza ? formano una linea continua (il piano è la tangente alla circonferenza cui appartiene l’arco nel suo estremo), viene creato un angolo a novanta gradi tra la tangente alla circonferenza e il piano ad altezza ' nel punto di incidenza, creando quindi una situazione di non continuità. Questa particolarità non è necessariamente una nota negativa, in quanto tale effetto può essere necessario nella creazione del bassorilievo: se dei piani dovessero essere effettivamente lontani dal soggetto, come ad esempio il paesaggio di sfondo di un ritratto, questa astrazione potrebbe risultare utile. È da considerare comunque che se un tale modello di discontinuità tra piani dovesse essere la sola possibilità di interazione offerta dalla Shapelet, questa sarebbe limitante per le scelte dell’utente che sta modellando il bassorilievo.
Kovesi utilizza una serie di gaussiane, diverse per altezza, per creare una forma di inclinazione tra il piano basso ad altezza ' e il piano alto ad altezza ? [13]. L’inclinazione obbligata stavolta fornisce l’assenza di discontinuità tra la curva che rappresenta l’inclinazione e i due piani a differente altezza. Questa astrazione è alternativa rispetto allo scalino
54
Figura 18: Variazione gaussiana dell'altezza del piano.
verticale, ed elimina la proprietà, che potrebbe anche essere desiderata, dell’angolo a novanta gradi tra la curva di separazione tra i piani e i piani
stessi, come mostra la Figura 18.
Da queste analisi si può dedurre che l’utilizzo di una funzione dotata di parametri, che possa fornire un angolo retto tra i piani o, in alternativa, una curva, potrebbe essere un’astrazione interessante. Una curva che può risolvere questo problema è la curva di Bézier.
La curva di Bézier è una curva parametrica largamente utilizzata in Computer Graphics per la rappresentazione di linee curve [23] [24]. Questa curva venne fortemente pubblicizzata dall’ingegnere Pierre Bézier, da cui deriva il nome, negli anni ’60 che la utilizzò per disegnare carrozzerie di automobili, sebbene fu scoperta pochi anni prima da Paul de Casteljiau. Generalizzata, la curva può rappresentare superfici curve attraverso triangoli, le patch di Bézier, appunto. La curva si rappresenta con un polinomio con due parametri e nessuno o più punti di controllo. Nel caso base, dati due punti J'e J?, la curva di Bézier è la retta passante per i due punti dati ed è equivalente all’interpolazione lineare, il cui polinomio è
55 Aumentando il grado del polinomio, dati tre punti avremo
= 1 − 3J
'+ 21 − J?+ 3J3, con ∈ [0,1j,
e in questo caso avremo che J' e J3 sono gli estremi della curva e J? è il punto (di controllo) in cui passano le due rette tangenti alla curva nei due estremi. Allo stesso modo, avendo quattro punti J',J?, J3 e J;, abbiamo che J' e J; sono gli estremi della curva e J? e J3 i due punti di controllo per cui, rispettivamente, la retta tangente alla curva in J' è passante per J? e la retta tangente alla curva in J; è passante per J3, da cui il
polinomio:
= 1 − ;J
' + 31 − 3J?+ 31 − 3J3+ ;J;, ∈ [0,1j.
Chiaramente questo polinomio può essere definito per ogni grado . L’aspetto interessante per le curve di Bézier è che è possibile costruire curve continue componendo più polinomi, se gli estremi opposti coincidono e se i due punti di controllo relativi a questi estremi formano una linea retta tra essi e i punti controllati. Allo stesso modo, si può ottenere una linea curva continua rispetto alle rette tangenti della curva agli estremi (J' e J; se fosse una Bézier con due punti di controllo). Ecco che la curva di Bézier con due punti di controllo può essere considerata una funzione interessante sulla quale operare per ottenere dei risultati analoghi a Kovesi. Se la curva di Bézier fosse parametrizzabile, sarebbe possibile ottenere tutti i risultati esposti sopra, dallo scalino fino all’arco della sfera.
Poniamo i punti di controllo sui piani, rispettivamente J? sul piano ad altezza ' e J3 sul piano ad altezza ? entrambi con la componente
56 ascissa uguale ad bc, e prendiamo gli estremi della curva con la stessa ordinata del loro punto di controllo, ovvero prendiamo i quattro punti:
k J'ℎ, ' J?bc, ' J3bc, ? J;m, ? , con ℎ ≤ bc ≤ m
di cui J? e J3 di controllo, otteniamo degli interessanti risultati:
1. Se ℎ = bc ≠ m, il punto di controllo J? coincide con l’estremo J',
e la curva forma un angolo retto con il piano ad altezza '.
2. Se ℎ ≠ bc = m, il punto di controllo J3 coincide con l’estremo J;, e la curva forma un angolo retto con il piano ad altezza ?.
3. Se ℎ = bc = m, il punto di controllo J? coincide con l’estremo J' e il punto di controllo J3 coincide con l’estremo J;: la curva forma un angolo retto sia col piano ad altezza ' che col piano ad altezza ?: si ottiene pertanto lo scalino classico già visto nella Figura 17 al caso B.
4. Se ℎ ≠ bc ≠ m non si hanno angoli a novanta gradi tra la curva di
Bézier e i piani ad altezza ' e ?. La curva è pertanto continua rispetto a entrambi i piani.
Se si dotasse la Shapelet di uno strumento adatto, una curva di Bézier di questo tipo sarebbe quindi altamente configurabile e ottima per la gestione degli sbalzi tra piani di diversa altezza, come viene mostrato nelle Figure della seguente tabella.
57
Tabella 3: Configurazioni della Shapelet.
In riferimento al caso 1, in cui ℎ = bc ≠ m.
In riferimento al caso 2, in cui ℎ ≠ bc = m.
58
In riferimento al caso 4, in cui ℎ ≠ bc ≠ m.
In riferimento al caso 4, in cui ℎ ≠ bc ≠ m.
Operare con la Shapelet fornita è analogo a utilizzare le Shapelets di Kovesi e Wu, Shum e altri: selezionando delle aree nell’immagine di origine (il ritratto), è possibile associare questa immagine alla Shapelet. La differenza sostanziale è che stavolta la funzione che viene applicata dalla Shapelet è la Bézier impostabile secondo un tool integrato, che applica le modifiche secondo quanto presentato. La Bézier riesce a simulare ogni situazione possibile: l’angolo a novanta gradi sul piano più basso, sul piano più alto o su entrambi, oltreché la curvatura con varie
59 pendenze. Gli esempi mostrati raffigurano sempre il piano più in basso a sinistra e il piano più alto a destra, sebbene è da considerare anche la situazione inversa.