sabato 29 marzo 2014

Creazione automatica di modelli CAD 3D

Uno dei campi che ha preso piede negli ultimi anni nella progettazione è la rilevazione laser di ville e monumenti storici. La tecnica viene definita Image Based Data Processing (IBDP).
Tuttavia l'uso di laser soffre di difficoltà legate alle operazioni di rilevamento ed al peso dei file CAD prodotti laddove non vi siano appositi algoritmi capaci di semplificare le forme rilevate.
E' bene notare come tutto ciò sia contrario alla computer grafica che per anni ha migliorato la resa qualitativa dinamica del render grafico grazie a semplificazioni computazionali o nel caso dei tessellation shader, grazie a funzioni di forma.
In tal ottica alcune aziende stanno studiando dei prodotti professionali con una precisione accettabile, alla portata di un più vasto pubblico di  modellatori.
L'intento è quello di ottenere la migliore qualità con la semplicità di appositi algoritmi di riconoscimento che in tempo reale riescano a descrivere le volumetrie scansionate.
Tuttavia in tal senso va rilevato come ci siano già dei software che eseguono la definizione volumetrica di un solido complesso con due semplici foto scattate da diverse prospettive.
In questo caso la ricostruzione volumetrica del modello avviene forse per mezzo di un complesso algoritmo che sfrutta tecniche stereometriche (fotogramma stereometrico).

In aggiunta in questo modo è possibile ottenere anche le "mappe" di supporto per una rappresentazione grafica avanzata (: normal, displacement, specular, ambient occlusion, diffuse, bump)
Il pregio maggiore risulta la velocità di azione, senza la necessità di dover eseguire costose operazioni di rilevamento.

Ciononostante esistono anche dei difetti nell'uso di questa tecnica,
La mesh prodotta risulta anche in questo caso di notevole peso (file obj da 580 MB) per l'inserimento di una serie di particolari minuti che l'appesantiscono.
Nell'immagine che segue si può vedere come un lato del volto sia molto particolareggiato e scabroso sulla superficie in parte anche a causa dei graffi dorati presenti sulla guancia, mentre la parte di sinistra appaia più liscia e con una meshatura a triangoli maggiore, avendo eseguito un'operazione di smooth con un software di sculpting.
Inoltre in funzione dei punti di scatto delle immagini, il modello presenta delle deformazioni volumetriche che possono alterare planarità o volumetrie.
Anche in questo caso con un buon programma di sculpting è possibile eseguire operazioni di trasformazione, spostamento e rotazione per correggere eventuali errori, ma a discapito del tempo necessario per intervenire.
Quindi la precisione di questa tecnica non è eccelsa, tuttavia applicando una texture con l'immagine frontale, luci ed ombre rafforzano la volumetria nascondendo eventuali difetti.

Un'altra strada che si potrebbe percorrere è dovuta all'uso dei tessellation shader, un'innovativa evoluzione della computer grafica introdotta solo qualche anno fa con le Directx11 (ed analogo OpenGL).
In questo caso si opera con una superficie sferica o piana andando ad applicare la texture e le "mappe" prodotte dal software, recanti istruzioni dell'andamento volumetrico dell'oggetto.
Se prima avevo accennato al fatto che il file CAD prodotto pesava 580 MB, è bene notare che tale tecnica pesa solo quanto 3 immagini, richiedendo uno sforzo computazionale alla GPU nella visualizzazione del modello.
In questo caso tuttavia la modifica dei particolari relativi al modello risulta più complessa, dovendo andare ad alterare le sfumature di grigio della Heightmap (per i tessellation shader il bianco puro corrisponde ad un certo valore della funzione di forma definita sulla superficie, mentre il nero corrisponde a zero spostamenti).
La volumetria risulta più schiacciata poichè l'altezza massima raggiunta dai vertici secondo le istruzioni dello shader è contenuta (si dovrebbe intervenire modificando le istruzioni dello shader).
Osservando esempi di texture particolareggiate utilizzando questi shader, si può notare come la loro resa risulti migliore se dedicate alla definizione di particolari minuti su superfici generiche descriventi un oggetto.
Quindi il procedimento migliore dovrebbe mirare ad ottenere un andamento medio della volumetria rilevata con l'elaborazione delle foto, ritocchi in un programma di sculpting del file CAD creato, a cui aggiungere uno shader per definire deformazioni locali.


venerdì 28 marzo 2014

Comprensione

Il lavoro di progettazione è in larga parte una via per prevedere il futuro.
Sapendo cosa accadrà con un metodo scientifico, con l'analisi dei fattori, siano essi segnali simici o macrofattori econimici, difficoltà di settore o situazioni locali / personali, è la chiave di volta per stimare la risposta attesa. Stimare la risposta attesa è la chiave di volta per i costrutti economici odierni.
Molti quando valutano la persona stimano se questa sia ottimistica o pessimistica.
Ma una notte insonne mi ha fatto comprendere che il problema in questo modo è mal-posto, poichè un altro dato emerge dall'ecosistema in cui mi sento e molti altri si sentono inseriti.
In un tale periodo di evidente crisi economica chi si presenta come ottimista è un falso, mentre chi appare come pessimista, magari è solo qualcuno che ha ben chiara la situazione reale e da mesi ragiona su quali mosse compiere per affrontare al meglio il futuro stimando quali forze economiche e dinamiche ci saranno.
Ciononostante si evince come vi sia la necessità oggi più che mai di collaborare per ridisegnare il futuro del singolo individuo, del gruppo od anche della nazione, laddove il modus operandi dev'essere la comprensione del futuro e la comprensione degli uni verso gli altri.

sabato 22 marzo 2014

Nuova versione dell'engine Unity

E' uscito il video con le features per la nuova versione dell'engine Unity 3D.
Molti degli aggiornamenti previsti interessano il mondo della programmazione di videogiochi, ma ve ne sono di interessanti anche per la realizzazione di ambienti architettonici virtuali.


www.youtube.com/watch?v=tSfakMeW0lw

Le features che ritengo più rilevanti:
  • la possibilità di visualizzare online il progetto senza l'ausilio di un plugin;
  • l'illuminazione real time che ora può fare concorrenza ai programmi di render;
  • reflection probes;
  • nuovi shader;
  • potenziamento degli strumenti per la gestione degli audio (un campo che manca ai semplici programmi per render grafico);
  • HDR scene view che permette di visualizzare al meglio la scena durante la fase di costruzione;
  • miglioramento delle opzioni di rendering per luci d'ambiente;
  • miglioramenti alle cubemaps;
  • miglioramento alla compatibilità per l'importazione di FBX.
Questi aggiornamenti sono paralleli all'annuncio di Microsoft della prossima uscita delle nuove DirectX12, le quali miglioreranno il computo grafico delle schede video.
Ben presto anche le OpenGL pubblicheranno dei miglioramenti simili.
Quindi in questo caso non si vedranno nuovi e strabilianti effetti come i tassellation shader, inseriti con le DirectX11, i quali con il semplice uso delle texture riescono a migliorare la rappresentazione volumetrica dei particolari minuti senza doverli necessariamente disegnare in un software CAD.

sabato 1 marzo 2014

Casa sul mare

Un piccolo esempio delle potenzialità di un engine per ambienti CAD virtuali.
Da notare che non sono stati inseriti molti meccanismi (personaggi in moto, porte scorrevoli,...), o subshader...
Sono visibili alcuni effetti HDR anche se abbastanza contenuti come valori, mentre altri sono attivabili con i pulsanti Q, E, G.
Per gli spostamenti valgono i consueti pulsanti WASD e barra spaziatrice, mentre in alcune zone i pulsanti M, N, B permettono di cambiare colori e tonalità.
L'ambiente oltre ad utilizzare texure con normal map, è stato renderizzato con algoritmo Path Tracer come primo integratore e Quasi-Montecarlo (2048 raggi) come secondo integratore. Io continuo a preferire il Metropolis Modificato, sebbene non abbia ancora idea come fare ad integrarlo dai software che ne fanno uso.
Un'alternativa prima o poi da sperimentare è la renderizzazione su 3DSMax con Metal Ray o V-Ray, due motori di rendering basati su Ray-Tracing.