DAVID-ShapeFusion consente l'allineamento e la combinazione delle scansioni 3D effettuate da diversi punti di vista (varie facce dell'oggetto). E' molto di più di un semplice strumento di unione, in quanto consente inoltre:
la rimozione dei margini delle scansioni in modo semplice e personalizzabile;
l'allineamento automatico e semi-automatico delle superfici;
la riduzione delle imprecisioni e sporcature delle scansioni (disturbi e artefatti della mesh) e fondere le textures riducendo ed eliminando i problemi nei punti di contatto tra le varie textures.
Il risultato è una scansione a 360° uniforme e texturizzata del vostro modello 3D.
I seguenti punti vi faranno da guida attraverso le funzionalità di DAVID-ShapeFusion:
Come prima cosa bisogna aggiungere una o più scansioni del modello rilevato nella lista, cliccando sul pulsante “
Aggiungi”:
Alternativamente è possibile riempire questa lista premendo il tasto “
Avanti” nella precedente finestra di “3D Laser Scanner”, dopo ciascuna scansione (vedere il capitolo precedente).
Dopo aver aggiunto tutte le scansioni alla lista di Shape Fusion, si può usare la funzione “
Sistema” per ridisporre ciascuna scansione:
Attivando/disattivando ogni scansione nella lista (spunta sul quadratino a fianco del nome) è possibile vedere e nascodere le scansioni e agire, ruotando e spostando, le singole mesh nella finestra 3D.
Se si vuole, è possibile “ripulire” le singole scansioni con lo strumento di selezione rettangolare e/o poligonale presenti nella finestra 3D (i due pulsanti in alto con i simboli di selezione tratteggiata). Lo scopo è quello di consentire l'eliminazione di parti della mesh e difetti non utili e problematici per l'allineamento delle scansioni!
Il prossimo passo è l'allinamento delle singole facce dell'oggetto acquisito. Premere il pulsante “
Allineamento” per aprire il relativo menù “Finestra di allineamento”:
Qui è possibile scegliere tra sei differenti modalità di allineamento, da applicare a ciascuna coppia di scansioni (le operazioni di allineamento vanno eseguite ogni 2 elementi della lista): '
Rotazione libera', '
Rotazione intorno all'asse X', '
Rotazione intorno all'asse Y', '
Rotazione intorno all'asse Z', '
Allineamento manuale', '
Allineamento accurato' e '
Allineamento accurato globale'. Usando la 'Rotazione libera', il computer eseguirà un primo allineamento tra due scansioni scelte, senza alcun vincolo di traslazione e rotazione. Più precisamente, il programma cerca di allineare le scansioni in base alle aree in comune, facendo combaciare le aree della mesh con maggiore superficie di contatto condivisa. Questo contatto, senza vincoli, ottimizza il processo di allinamento nella maggior parte dei casi, ma non in tutte le casistiche. I seguenti tre metodi di allineamento sono abbastanza simili al primo, eccetto il fatto che la relativa posizione tra le scansioni è vincolata. Per esempio la 'Rotazione intorno all'asse Y' dà per scontato che l'oggetto sia ruotato intorno ad un asse parallelo all'asse Y del sistema di coordinate di riferimento (l'asse Y è quello verticale se ci si riferisce al sistema di coordinate, se si usa David per la scansione) e inoltre prevede che l'oggetto non sia translato lungo l'asse Y. Ma il centro di rotazione non è vincolato, ovvero è possibile ruotare l'oggetto manualmente, senza dover ricorrere ad un supporto girevole. Dopo aver scelto un sistema di allineamento, le istruzioni nelle varie finestre di allineamento vi guideranno attraverso l'intero processo.
Nel caso del nostro busto di Beethoven, abbiamo ruotato l'oggetto intorno all'asse Y (il suo naturale asse verticale) e scelto la modalità 'Rotazione intorno all'asse Y'.
Adesso il punto 1 ci chiede di cliccare sulla scansione
che vogliamo allineare. Dopo averla selezionata nella Finestra 3D e/o nella lista, dovrebbe apparire un parallelepipedo rosso intorno alla scansione scelta:
Cliccare sulla seconda scansione
alla quale vorrete allineare la prima…
Avverrà l'allineamento principale. Dopo pochissimi secondi entrambe le scansioni saranno allineate:
Non resta che ripetere la stessa procedura per tutte le atre coppie di scansioni. Dopo dovreste avere un modello 3D come questo:

Fare attenzione che l'allineamento delle superfici sia molto preciso per ottenere un buon risultato di fusione. Un preciso allineamento è caratterizzato da scansioni che condividono una buona parte di superficie tra loro (almeno 1/3 di scansione in comune - per verificare che l'allineamento sia ottimo, quando ruotate la vista 3D vedrete uno “sfarfallamento” dei poligoni nelle parti sovrapposte).
Se il processo di allineamento non vi soddisfa, tentate ancora. Il processo di allineamento si basa su un algoritmo casuale, quindi avrete ottime possibilità che il secondo, o al massimo il terzo tentativo, sia quello giusto. Se neanche questo funziona correttamente, probabilmente le scansioni hanno troppe poche parti in comune e dovrete usare l'allineamento manuale o allineare con il mouse le scansioni direttamente nella finestra 3D (muovi/ruota le scansioni con il pulsante sinistro/destro del mouse mentre si tiene premuto il tasto Ctrl da tastiera) e infine usare soltanto l' 'Allineamento accurato' o l''Allineamento accurato globale' (quest'ultimo è molto utile in quanto, definendo le interazioni e la precisione del calcolo, è possibile allineare in modo preciso tutti gli elementi in uno stesso momento). l' 'Allineamento manuale' permette di specificare tre o più coppie di punti corrispondenti, che andranno a coincidere dopo l'allineamento:
In alcuni casi sarà difficile individuare la corrispondenza delle coppie di punti sulle scansioni. In questi casi sarà d'aiuto usare l'eventuale texture presente (vedere il terzultimo paragrafo del capitolo “Scansione 3D Laser” per capire come acquisire textures). DAVID-Shapefusion carica e mostra la texture quando si aggiungono le scansioni per le quali si siano “catturate” textures. Se anche così non riuscite ad allineare bene le superfici, forse perchè il vostro oggetto ha aree troppo simili e non caratterizzate, è possibile, prima dell'acquisizione texture, posizionare dei marcatori sull'oggetto da rilevare.
Dopo i primi allineamenti, è buona norma unire insieme due o più scansioni già allineate. Basterà selezionare 2 o più elementi nella lista (tener premuto Ctrl da tastiera mentre si selezionano altre scansioni) e poi pigiare 'Unisci'. Questo raggrupperà le scansioni insieme e le renderà gestibili come una singola mesh. Per esempio, nel caso del busto di Beethoven, è possibile unire le prime tre scansioni dopo averle allineate, appena prima di allineare l'ultima. In questo modo l'ultima scansione sarà fatta combaciare alle altre contemporaneamente, dando migliori risultati rispetto all'allineamento, ad esempio tra la prima e la terza scansione.
Per staccarle, basterà premere il pulsante destro del mouse sul nome del raggruppamento nella lista e scegliere il pulsante “Stacca”.
Se necessario, eliminare le parti inutili e/o problematiche delle scansioni con lo strumento di selezione nella Finestra 3D e una volta evidenziate le parti, premere “Cancella selezione” o Del da tastiera.
Dopo aver allineato e ripulito con precisione le scansioni, è il momento di fonderle insieme. Premere il pulsante '
Fusione' e dopo alcuni secondi (o minuti, dipende dalla complessità della fusione e dal vostro pc) apparirà il risultato.

DAVID non includerà le scansioni invisibili nella fusione (ovvero tutte quelle scansioni non selezionate con la spunta nella lista).
Il risultato di fusione è strettamente legato ai parametri 'Risoluzione', 'Smussatura' e 'Rimozione'. Consigliamo di provare con diversi parametri. Iniziare con valori molto bassi di risoluzione (ad esempio 100) perchè a bassa risoluzione il processo di fusione è molto più efficace nel mascherare gli errori di allineamento, eliminare le sporcature e arrotondare i bordi delle scansioni. Un valore di risoluzione alto richiede lunghi tempi di elaborazione da parte del pc e si verranno a creare meshes con molti più triangoli. Se il risultato di fusione ha dei fori ed è poco accurata, frastagliata, si può agire sul parametro 'Smussatura'. Partire usando un valore basso e aumentarlo pian piano fino a che il risultato non sarà soddisfacente.
Dalla versione di DAVID-Shapefusion 1.5, è stato integrato un sistema di fusione alternativo a quello 'Semplice', chiamato 'Poisson', il quale ha alcuni vantaggi rispetto al precedente:
non necessita di parametri quali 'Smussatura' e 'Rimozione';
TUTTI i fori verranno chiusi automaticamente e la fusione apparirà compatta;
migliore approssimazione dei lati frastagliati;
migliori risultati in caso di sporcature e cattivo allineamento.
Due piccoli inconvenienti sono la lentezza di calcolo e la sfocatura e parziale perdita dei dettagli più fini (riferendosi ad un paragone tra scansioni eseguite nelle due modalità con le stesse quantità di poligoni).
Se si usa il metodo di fusione 'Semplice', si può agire anche sul pulsante 'Riduzione'; pigiandolo più volte si rimuoveranno le sporcature dai bordi delle scansioni.
Se i vostri oggetti hanno delle textures, queste saranno fuse insieme. Superfici senza texture (come ad esempio chiusure di fori tramite calcolo Poisson) saranno colorate, a scopo identificativo, di rosa.
Se necessario è possibile ripulire le fusioni anche con lo strumento di selezione e rimozione manuale (pulsante “lazo” e “X” rossa nelle Finestra 3D).
Il pulsante 'Salva' apre una nuova finestra del programma dove poter scegliere tra i formati file *.OBJ, *.PLY, e *.STL. Qui è possibile salvare sia il risultato di fusione e/o ciascuna scansione, magari già allineata e corretta.
La funzione di salvataggio di Shape Fusion non è attiva nella versione gratuita di DAVID.
Per esperti:
Invece che usare l'interfaccia grafica di DAVID-ShapeFusion, è possibile scrivere uno script e automatizzare il processo.
Digitare DAVID-Laserscanner.exe <nome del file>
dove <nome del file> specifica un file contenente comandi (uno script testuale in cui vi sono sequenze di comandi). Usare “regid” invece di “nome del file” per ottenere l'ID di Registrazione.
Un file di testo di debug sarà creato con il nome di 'out.log'. Gli errori saranno scritti in un file 'err.log'.
Add <nome del file>
Carica una scansione (file OBJ). La prima scansione sarà indicizzata 0, la seconda 1 e così a seguire…
Align <idA> <idB> <useTexture> [<x> <y> <z> [<angolo>] ]
Allineamento automatico (registrazione) di due scansioni.
idA: scansione indicizzata A (sarà allineata a B)
idB: scansione indicizzata B
useTexture: percentuale del filtro texture (0-99) (solo dalla versione 2.1 di DAVID)
x y z: asse opzionale di rotazione
angolo: angolo opzionale di rotazione
FineAlign <idA> <idB> <useTexture>
Allineamento accurato automatico (registrazione accurata) di due scansioni.
idA: scansione indicizzata A (sarà allineata a B)
idB: scansione indicizzata B
useTexture: percentuale del filtro texture (0-99) (solo dalla versione 2.1 di DAVID)
GlobalFineAlign <useTexture> <numLoops> <highPrecisionMode>
Allineamento globale accurato (solo dalla versione 2.1 di DAVID)
useTexture: percentuale del filtro texture (0-99)
numLoops: numero di interazioni
highPrecisionMode: 0 (off) o 1 (on)
FuseSimple <resolution> <smoothness> <removal>
Fusione semplice di tutte le scansioni.
FusePoisson <resolution>
Fusione Poisson di tutte le scansioni.
SaveMesh <nome del file> <id> <scale>
Salva una mesh triangolare (file in formato OBJ, PLY o STL).
I segunti parametri sono disponibili solo dalla versione 2.1 di DAVID:
id: Quale scansione salvare (0,1,2,… = singola scansione, -1 = risultato di fusione, -2 = tutte le scansioni in un file)
scale: Fattore di scala (1.0 per non scalare)
Add scan0.obj
Add scan1.obj
Add scan2.obj
Add scan3.obj
Align 1 0 0 0 1 0 90
Align 2 1 0 0 1 0 90
Align 3 0 0 0 1 0 -90
FusePoisson 300
SaveMesh result.stl -1 1.0
AdvancedSettings_SetParam <path> <value>
Modifica uno degli AdvancedSettings.
path: nome e percorso del valore, es. ShapeFusion\GlobalFineRegistration\CompensateDrift
value: il nuovo valore (String, Double, Int, o Bool: 1 per true, 0 per false)
Combine <idA> <idB>
Combina le scansioni. Scansione <idB> sarà aggiunta a <idA>.
Attenzione: l'indice di tutte le scansioni dietro a idB saranno diminuite di 1!
Duplicate <id>
Duplica una scasnione. La copia sarà creata e posizionata in fondo alla lista.
InvertNormals <id>
Inverte le normali alla superficie della scansione <id>
MakeInvisible <id>
Rende la scansione <id> “invisibile”, ad esempio sarà ignorata durante la Fusione e l'Allineamento Globale Accurato
MakeVisible <id>
Rende la scansione <id> nuovamente “visibile”, ad esempio sarà compresa durante la Fusione e l'Allineamento Globale Accurato
ReflectOnMirrorPlanes <id>
Riflette parti della scansione <id> considerate oltre ai piani specchianti (definiti nei Parametri Avanzati). Le scansioni riflesse saranno aggiunte come nuove scansioni e poste in fondo alla lista.
RemoveTexture <id>
Rimuove la texture dalla scansione <id>
ResetPose <id>
Ripristina l'iniziale posizione e rotazione della scansione <id>.
Shrink
Restringe il risultato di Fusione (il comando deve essere eseguito DOPO la fusione)
Uncombine <id>
Separa le scansioni precedentemente combinate assieme.