Deformazioni locali nei modelli solidi di oggetti rilevati

Copyright Camillo Trevisan, luglio 1997.        trevisan@iuav.it


Nel campo del Computer Graphics, il CAD (o progettazione assistita da calcolatore) ha ormai raggiunto uno stadio di relativa maturità. Necessariamente relativa visto il forte sviluppo tuttora in corso sia dell'hardware che del software, ma del resto con linee di sviluppo chiare, due decenni di esperienza alle spalle, un mercato valutabile in migliaia di miliardi, un nutrito numero di specialisti, sufficiente a garantire trasmissibilità alle informazioni e solidità alla ricerca.
Nato agli inizi degli anni sessanta come tecnigrafo elettronico bidimensionale, il CAD si è evoluto alle tre e addirittura alle quattro dimensioni (il tempo!), fornendo l'animazione in tempo reale di scene anche complesse. Da qualche anno è poi in commercio una workstation grafica che consente di osservare i componenti grafici in stereoscopia risolvendo parzialmente il problema di rappresentare oggetti tridimensionali sul piano dello schermo video.
Parallelamente nel campo hardware i costi si sono ridotti con un ritmo di un dimezzamento ogni due o tre anni: infatti oggi per progettare una automobile è, al limite, possibile utilizzare una attrezzatura che costa poco più dell'automobile stessa.



LA MODELLAZIONE TRIDIMENSIONALE

Nel campo metodologico si sono affermati quattro sistemi di modellazione tridimensionale:
- Boundary surfaces o modellazione per superfici e contorni.
- Constructive Solid Geometry (CSG) o modellazione solida.
- Sweeping, "spazzolamento" traslazionale, rotazionale o generalizzato.
- Octree o modellazione per cubi elementari.

- BOUNDARY SURFACES. Il trattamento di solidi avviene non come insieme di punti (wire-frame) ma di superfici e contorni (boundary). Elimina i problemi del wire-frame ma risulta particolarmente difficoltoso per l'utente definire solidi complessi, perciò, di norma, questa rappresentazione viene ottenuta automaticamente, da programma, da altre a più alto livello, soprattutto per visualizzare gli oggetti vettorialmente (su plotter).

- CONSTRUCTIVE SOLID GEOMETRY. Uno degli ultimi sviluppi della modellazione tridimensionale è rappresentato dalla geometria solida. Questa parte dall'assunto che oggetti, anche molto complessi, possono essere visti come unione, intersezione, complemento e differenza di solidi elementari (primitive) come il cubo, la sfera, il cilindro o il cono. Di un oggetto non vengono memorizzate le coordinate ma la sequenza di operazioni (dette booleane) che portano alla sua definizione.

- SWEEPING. Molti solidi possono essere definiti da superfici in movimento, sia traslazionale che rotazionale. Ad esempio un cilindro è rappresentabile da un cerchio che si sposta lungo un asse perpendicolare al diametro o un cono da un triangolo rettangolo che ruota di 360 gradi attorno ad un cateto.
Lo sweeping (letteralmente spazzolamento) permette di definire solidi mediante varie associazioni di figure piane e spostamenti: i programmi più raffinati consentono non solo di variare liberamente la traiettoria ma anche, contemporaneamente, la forma della figura di sweeping: un solido sarà così memorizzato come una sagoma bidimensionale di partenza e una serie di equazioni che in ogni istante restituiscono la posizione tridimensionale del baricentro della figura (o di un altro punto) e le variazioni (bidimensionali) dei punti che costituiscono la figura stessa.
Una colonna scanalata potrà in questo modo essere vista come una sezione orizzontale di base, una traiettoria rettilinea verticale e una variazione di scala continua, funzione dell'altezza.

- OCTREE. Viene utilizzato per la definizione di volumi irregolari e privi di forti simmetrie quali, in architettura, statue, capitelli, fregi.
Se supponiamo di immergere il solido da modellare in un cubo che lo contenga completamente e di suddividere il volume in un numero considerevole di celle, anch'esse cubiche, più piccole (dette voxel); ogni cella potrà essere interna, esterna o intersecare il bordo del solido.
La sola conoscenza dello stato di tutti i voxel definirà il solido tanto più fedelmente quanto più piccolo sarà il voxel stesso, così come una fotografia risulta tanto più dettagliata e nitida quanto più fine è la grana.
Un difetto di quest'ultimo schema modellativo è la grande quantità di memoria necessaria e il fatto che una volta scelta la risoluzione questa non possa essere più cambiata pena il ripartire da zero nella modellazione.

Lo sweeping e la CSG possiedono, rispetto agli altri metodi, caratteristiche particolarmente interessanti: semplicità di interfaccia con l'utente, rapidità di costruzione e cambiamento, versatilità, icasticità rappresentativa, scarsa occupazione di memoria.



IL RILIEVO

Nello specifico campo del rilievo di architetture, soprattutto se storiche, si riscontrano, però, oggettive difficoltà nell'introdurre queste metodiche: alcuni impedimenti sono probabilmente da ricercare nel fatto che, provenendo le nuove idee (ed i relativi packages applicativi) in gran parte dall'estero (e dagli USA in particolare), è però in Europa, e in Italia soprattutto, dove si sente la necessità di rilevare, documentare e archiviare il grande patrimonio storico-artistico disponibile.
Inoltre sussiste una fondamentale dicotomia tra la progettazione e il rilievo assistiti da computer: mentre la prima procede nel campo della geometria euclidea, astratta, dove il disegno è una rappresentazione dell'idea di un oggetto architettonico; il rilievo possiede un referente esistente del quale deve, o dovrebbe, dare il maggior numero e qualità di indicazioni.
La progettazione rappresenta un iter a più entrate ma ad unica uscita (il progetto), il rilievo, al contrario, deve permettere il percorso inverso e rispondere alle domande più disparate poste dallo storico, dall'architetto, dallo strutturista, dal restauratore.
Esistono, infine, anche difficoltà più prosaiche e pratiche che si oppongono ad un uso completo del computer nel rilievo: in un edificio, soprattutto se di epoca non recente, ogni metopa, ogni lesena, ogni finestra pur se identica tipologicamente e nel progetto alle sue vicine, è nella realtà metricamente diversa, traslata, deformata per dissesti statici, imprecisioni costruttive, degrado.
Pur con tutte queste limitazioni un edificio è comunque composto per gran parte di solidi regolari o pseudo-regolari.
Il rilievo di un edificio può dunque essere visto come un processo simile alla sua progettazione (vale a dire la unione di una serie finita di componenti modulari elementari ricavati da un abaco), con due essenziali differenze:
- I componenti costitutivi l'architettura reale non sono assimilabili a solidi perfetti, né in tutto e per tutto uguali tra loro.
- La loro posizione nello spazio non è uniformemente distribuita o inquadrabile in una maglia regolare di progetto.

Vengono, in questo campo, in aiuto la topografia e soprattutto la fotogrammetria architettonica rilevando esattamente la forma e la corretta dislocazione degli elementi reali.
I metodi attualmente utilizzati procedono però per saturazione: più è complesso l'elemento da restituire, più punti saranno necessari per una sua definizione esaustiva. Se si pensa a quanti punti si debbono utilizzare per una restituzione a tutto tondo di un solo capitello corinzio, si conosce anche la risposta al perché siano così pochi, ad oggi, i veri modelli solidi di tali edifici.
Da una parte l'acquisizione per via fotogrammetrica di decine di migliaia di punti, dall'altra la loro rielaborazione in contorni e superfici innalzano i costi ben al di sopra del sopportabile.
Del resto anche contando in una ulteriore drastica riduzione dei costi hardware resta pur sempre lo scoglio della digitalizzazione di masse ingenti di punti tridimensionali e la successiva aggregazione in superfici, controllata interattivamente e perciò lenta.
Inoltre resta la tara metodologica che impone la compresenza continua di tutti i punti del modello tridimensionale appiattendo la gerarchizzazione degli elementi e certo non aiutando la loro manipolazione. E va anche tenuto conto che un edificio è composto di elementi solidi più che di superfici che non permettono, ad esempio, un agevole calcolo del volume, del peso o l'interfacciamento con programmi di analisi strutturale per mezzo di elementi finiti.
Infine una tale impostazione non sfrutta che in minima parte (la sola visualizzazione) l'enorme patrimonio di software sviluppato per la progettazione, richiedendo, al contrario, la messa a punto di interi packages ad hoc.



LE DEFORMAZIONI LOCALI

Il metodo proposto, tuttora in fase di studio di fattibilità, propone la suddivisione dei punti di un modello tridimensionale in tre insiemi, quantitativamente di molto inferiori a quanto richiesto tradizionalmente. Riuniti , essi raggiungono una massa critica sufficiente a sviluppare una grande quantità di punti visualizzabili e manipolabili da programmi CAD.
Attraverso un esempio vediamo nel dettaglio lo svolgersi delle fasi. Mediante la modellazione solida risulta agevole costruire una colonna completa anche complessa a partire da poche misure essenziali; inoltre la quantità di punti (che chiameremo genitori) è estremamente ridotta per ulteriori colonne che richiederanno solo i parametri di collocazione: le traslazioni, le rotazioni e le scalature.
Se viene richiesta la visualizzazione dell'intero colonnato, si genera automaticamente un gran numero di punti figli, così come un cerchio può essere individuato come un centro ed un raggio ma rappresentato con dieci, mille o un milione di punti ottenuti dalla sua equazione.
È però evidente che queste colonne ideali saranno vicine ma assolutamente non coincidenti con quelle reali. Le variazioni di queste ultime rispetto alle prime potranno essere puntuali (sbrecciature, fessurazioni, rotture), estese (schiacciamento, torsione) o posizionali (disassamenti, rotazioni).
Sarà perciò necessario deformare ogni singola colonna ideale, sino a minimizzare le differenze con la rispettiva colonna reale. Per ottenere tale risultato si può procedere con le seguenti modalità:

A)
Di ogni colonna reale vengono rilevati due insiemi mirati di punti:
- un primo insieme, che definiremo di punti attrattori.
- un secondo, di punti di controllo.
Ognuno di questi punti avrà un suo omologo appartenente alla colonna ideale.

B) Unendo punti attrattori omologhi a partire da quelli sulla colonna ideale verso quelli sulla colonna reale, si otterranno tanti vettori forza quante sono le coppie di punti attrattori. Tali vettori saranno dotati di modulo, versori lungo gli assi e direzione e potranno esercitare la loro forza, funzione della distanza: funzione scelta dall'utente o, come vedremo più avanti, da programma, dotata della caratteristica di tendere all'infinito quando la distanza tende a zero ed a zero se la distanza tende all'infinito. Se ad esempio la funzione è 1/distanza, un punto posto ad una unità dall'attrattore sarà sottoposto ad una forza unitaria, se distante 0.1 unità la forza sarà dieci volte maggiore. Se la distanza è zero (se il punto coincide dunque con un attrattore) la forza sarà infinita e quindi il punto coinciderà con l'estremo finale del vettore forza. Ciò significa che tutti i punti attrattori appartenenti alla colonna ideale coincideranno, dopo la deformazione, con i loro omologhi della colonna reale.
Ogni punto figlio della colonna ideale sarà dunque sottoposto ad un campo di forze che tenderà a spostarlo dalla posizione iniziale. Tanto più un punto figlio si troverà vicino ad un attrattore tanto più sarà influenzato dal destino di questo, dal modulo della forza applicata e dalla sua direzione.

C) Da quanto visto sappiamo che i punti attrattori ideali coincidono, dopo la deformazione, con i loro omologhi reali. Di tutti gli altri punti, i figli, non possiamo controllare la corretta dislocazione a meno di non aver distribuito tra questi un congruo numero di punti di controllo. Un programma modulerà le funzione forza fino a minimizzare, eseguita la deformazione, la differenza ancora esistente tra ogni punto di controllo ideale ed il suo omologo reale. Se il set di punti di controllo è sufficiente in numero e ben distribuito, sarà possibile stabilire statisticamente quando la colonna ideale deformata avrà raggiunto la approssimazione voluta, a meno di uno scarto quadratico medio dato dalla somma degli scarti calcolati tra i punti di controllo reali ed i loro omologhi ideali dopo la deformazione.
È da tenere presente che anche i punti di controllo saranno dotati di un peso che permetterà di distribuire l'errore con le modalità volute dall'utente.



LA SCELTA DELLA FUNZIONE FORZA

Per prima cosa si sono ricercate le funzioni più idonee e controllabili. Le figure che seguono mostrano le assonometrie di cubi deformati con le modalità esposte, utilizzando le seguenti funzioni:

- l'inverso della radice quadrata della distanza;
- l'inverso della distanza;
- l'inverso della distanza al quadrato;
- l'inverso della distanza al cubo;
- l'inverso della distanza alla quarta
- l'inverso dell'esponenziale della radice quadrata della distanza;
- l'inverso dell'esponenziale della distanza;
- l'inverso del logaritmo neperiano della radice quadrata della distanza.

Si nota che la funzione più duttile e stabile risulta essere l'inverso dell'esponenziale della distanza. Inoltre, da un'ulteriore analisi si è notato che elevando la distanza ad un esponente compreso tra zero ed uno si è in grado di modulare ancor più gli effetti della forza sui punti figli.
Aggiungendo infine un peso moltiplicatore, maggiore di zero, e suddividendo gli effetti in X, Y, Z si giunge ad un completo controllo delle deformazioni.

La forma finale della funzione di deformazione sarà dunque:

DEFORMAZIONE(X,Y,Z)=PESO(X,Y,Z)*1/EXP(DISTANZA(X,Y,Z)A)    (1)

dove A è appunto un esponente variabile tra zero ed uno.
Se N è il numero di punti attrattori, ogni punto figlio sarà sottoposto ad un campo generato da M=N*3 (le tre componenti X,Y,Z) forze contrastanti date dall'equazione (1).
Un programma si incaricherà di variare M*2 coefficienti (il peso e l'esponente di ogni equazione) con l'obiettivo di minimizzare lo scarto quadratico medio tra i punti di controllo ideali e quelli reali, dando per scontato che comunque i punti attrattori ideali, dopo la deformazione, coincideranno con quelli reali.



CONCLUSIONI

Nell'articolo viene presentato un metodo per la deformazione di componenti architettonici rilevati. Tale metodo non è orientato alla definizione per saturazione di informazioni, ma tende al raggiungimento dell'obiettivo in due fasi separate:
A) Costruzione, per mezzo della modellazione solida, di componenti ideali simili topologicamente e metricamente ai loro omologhi reali.
B) Deformazione dei componenti ideali per mezzo di punti attrattori fino a minimizzare lo scarto tra questi e i componenti reali rilevati per via topografica o fotogrammetrica. Il controllo della deformazione avviene per mezzo di punti di controllo opportunamente distribuiti sulla superficie dei componenti.
I vantaggi derivanti da tale metodo sono essenzialmente due:
1) La manipolazione dei componenti può essere controllata per buona parte da normali programmi di modellazione solida. Questo consente l'utilizzo di un gran numero di programmi esistenti molto sofisticati oltre a tecniche di modellazione sedimentate, proprie della progettazione assistita da elaboratore (CAD).
2) La maggiore complessità dovuta per la fase di deformazione dei componenti è comunque di gran lunga meno pesante, in termini di punti digitalizzati, rispetto ad un approccio esaustivo. Inoltre è possibile modulare la precisione e l'accuratezza aumentando a piacere il numero dei punti di controllo e degli attrattori.
Ad esempio, nel caso si voglia semplicemente rappresentare in assonometria o prospettiva l'intero edificio le deformazioni saranno ridotte al minimo; se, al contrario, si rende necessario uno studio puntuale e preciso di una parte dell'edificio si aumenterà la precisione anche fino a raggiungere quella tipica di un modello esaustivo.
Al momento attuale si sono messi a punto due programmi, ancora allo stadio di prototipi, scritti in linguaggio Pascal, operativi su sistemi Windows. Il primo visualizza in modo interattivo le deformazioni di un solido elementare, come ad esempio il prisma. Il secondo ricerca per successive iterazioni il minimo scarto tra un componente ideale deformato ed il suo omologo reale.
Inoltre un algoritmo del tutto analogo è implementato anche nel programma didattico Cartesio.


Assonometria del cubo deformato in funzione dell'esponenziale della distanza.
Il cubo è stato suddiviso in parti per evidenziare gli andamenti di deformazione: risulta evidente che le parti più distanti dai "vettori forza" non vengono influenzate da questi ultimi.
Ai lati del cubo sono evidenziati i tre "vettori forza" con le relative componenti: due vettori sono caratterizzati da due sole componenti, il terzo da tre distinte componenti in X, Y e Z. In colore rosso e in linea tratteggiata è mostrato invece il cubo di partenza.

Come si può vedere più avanti, negli altri casi - usando altre "funzioni forza" - emergono alcune deformazioni "fantasma", applicate su punti non previsti della faccia anteriore del cubo.

Figura a sinistra - Cubo deformato in funzione di EXP distanza (come per la prima immagine).
Figura a destra - Cubo deformato in funzione del logaritmo della radice quadrata della distanza.

Figura a sinistra - Cubo deformato in funzione della distanza alla quarta.
Figura a destra - Cubo deformato in funzione di EXP radice quadrata della distanza.

Figura a sinistra - Cubo deformato in funzione della radice quadrata della distanza.
Figura a destra - Cubo deformato in funzione della distanza.

Figura a sinistra - Cubo deformato in funzione del quadrato della distanza.
Figura a destra - Cubo deformato in funzione del cubo della distanza.

APPENDICE

Di seguito vengono presentate alcune funzioni utilizzate nei programmi.

function forza(dist,espon:real):real;
begin

   dist:=dist*coef_rid;
   if dist<epsi then forza:=max_forza else
      forza:=1/exp(elev(dist,espon));
end;

I significati delle variabili o costanti in neretto sono:
dist distanza in X, Y o Z del punto figlio considerato dal punto attrattore considerato
espon esponente A
coef_rid coefficiente di riduzione che permette di contenere l'oggetto in un cubo di lato 10 unità
epsi costante piccola a piacere per stabilire quando la distanza è da considerarsi a zero
max_forza costante grande a piacere per indicare forza infinita
elev funzione di elevazione: distespon


function delta(tipo:integer;coord,peso,espon:real):real;
var term,term1,d :real;
    k            :integer;

begin
    term1:=0;d:=0;
    for k:=1 to punti_att do
          begin
       term:=peso*forza(abs(coord-p_att[k,tipo]),espon);
       term1:=term1+term;
                d:=d+diff[k,tipo]*term;)
    end;
    delta:=d/term1;
end;

I significati delle variabili in neretto sono:
tipo indica la coordinata X, Y o Z
coord coordinata X, Y o Z del punto figlio considerato
punti_att numero totale di punti attrattori
peso peso assegnato ad una coordinata di un punto attrattore
espon esponente A
p_att matrice contenente le coordinate dei punti attrattori
diff matrice contenente i moduli delle forze in X, Y, Z


BIBLIOGRAFIA

A.A.V.V., Dispense del corso Computational Geometry: Modellazione geometrica e superfici sculturate, Politecnico di Milano, 1986.
A. Puppo, Prontuario e formulario di matematica, Patron, 1982.
I.D. Faux M.J. Pratt, Computational geometry for design and manufacture, Ellis Horwood, 1979.
D.H.McLain, Drawing contours from arbitrary data points, in "The Computer Journal", Vol. 17, N. 4.
T.A. Foley, Weighted bicubic spline interpolation to rapidly varying data, ACM Transactions on Graphics, Vol. 6, N. 1.
F. Cheng A. Goshtasby, A parallel B-splines surface fitting algorithm, ACM Transactions on Graphics, Vol. 8, N. 1.
P.J. Davis, Interpolation and approximation, Blaisdele, 1963.

Homepage Camillo Trevisan  

Homepage Istituto Universitario di Architettura di Venezia

Homepage Dipartimento di Progettazione Architettonica

Visitatori dal  02/05/2000          Ultimo aggiornamento: 30/4/1998

o