Now3D 的个人资料Now3D Live照片日志列表 工具 帮助

日志


7月11日

NURBS e Demo

Nuove potenzialità

Dopo mesi di silenzio, eccomi di nuovo a presentarvi gli ultimi sviluppi di Now3D versione Dot.Net.
Dall'ultima volta ho voluto aggiungere nuove funzionalità che, spero, daranno un qualcosa in più a Now3D.
Ed ora veniamo alle news. Animoticon
 

Le NURBS

Una delle strutture tridimensionali che mi hanno sempre incuriosito sono le superfici parametriche.
Fanno parte di questa tipologia: le NURBS, le B-spline e le Bezier.
Tempo fa studiai le curve Bezier con dei buoni risultati, adesso ho messo in pratica quello che appresi di queste curve e l'ho ampliato in termini tridimensionali.
20080710_NURBS_Patch La mia implementazione dello Shape NURBS, si basa su patch (una patch è la minima parte di una superficie parametrica) formate da una griglia 4x4 di vertici, assemblabili tra loro così a formare superfici più complesse. Una volta definita la struttura, naturalmente, ho implementato la visualizzazione di questo Shape.
Esistono vari algoritmi di visualizzazione delle superfici parametriche, da quelli che suddividono la patch in poligoni a quelli basati sull'intersezione di un raggio con la superficie (Raytracing), per adesso, ho scelto quella più semplice da implementare, anche se non la più veloce, la tessellazione (tesselation), dove suddivido ogni singola patch in una griglia N*M dove N e M definiscono il dettaglio con il quale sarà resa la patch, maggiore è il dettaglio e più morbida sarà la silhouette della patch.

20080710_NURBS_Teapot Una volta implementato lo Shape, mi sono chiesto cosa sarebbe stato meglio visualizzare per poter dare da subito un esempio delle potenzialità dello strumento. Ho pensato di usare un classico del 3D, la famosa teiera modellata nel 1975 da Martin Newell dell'università americana dello Utah, così una volta scovato il file contenente i dati della teiera, ho creato uno Shape utile al caricamento di questo particolare formato di file.




 
 
 

Massive Demo

Come promesso la volta scorsa, ho implementato la prima Demo di Now3D.Net.
Contiene molte delle funzionalità di Now3D.Net, e per l'occasione ho voluto inserito il rendering RayTracing di un oggetto molto particolare.
 

Lo shape MeshInstance

20080710_MeshInstanceHo sempre ammirato certe immagini di prova dei pacchetti grafici, ad esempio quelle contenenti oggetti formati a loro volta da molti oggetti più piccoli.
Per questo motivo ho voluto implementare uno shape speciale di tipologia mesh ai quali vertici è possibile applicare ulteriori shape di qualsiasi tipologia.
L'implementazione è stata più complessa di quello che pensavo, ma i risultati valgono la fatica.
Ho dovuto inserire un limite all'utilizzo di questo particolare Shape, non si potrà istanziare più di una volta lo stesso Shape.
Comunque, prossimamente, renderò questa struttura ancora più flessibile, e spero che in futuro di poterla utilizzare per simulare i peli (Fur) o per estendere una pianta più volte fino a formarne delle distese.

 

La Demo

Potete scaricare la demo da questo indirizzo: http://www.now3d.it/files/N3DNetMassiveDemo.msi
Questa demo è incentrata su una nuova potenzialità di Now3D.Net, e cioè la possibilità di renderizzare miliardi di poligoni, un qualcosa di impensabile per il vecchio Now3D versione VB6.
20080710_Demo_ScanLine Una volta caricata la demo avrete accesso alla schermata del visualizzatore real-time dove potrete ruotare uno shape NURBS. Potrete facilmente cambiarne il dettaglio testando così l'algoritmo di tessellazione che ho implementato. Scegliete tra le 4 modalità di visualizzazione (wireframe, flat, gouraud e phong) e applicate i materiali messi a disposizione: Phong, Ashikhmin, Blinn-OrenNayar e Phong-Noise (l'effetto noise è reso solo in modalità phong). Tramite la rotellina del mouse potete effettuare uno zoom sulla teiera. Per renderizzare immagini più grandi vi basterà ridimensionare la finestra.


 
20080710_Demo_RT Una volta scelta la rotazione che preferite per la teiera, cliccate su "Render 1.6 billion polygons" e accederete alla modalità Raytracing.
In questa modalità vedrete la renderizzazione di uno shape MeshInstance dove lo shape principale è una teiera a 8 suddivisioni e gli shape "figli" sono anch'essi delle teiere ma a a 128 suddivisioni. Il numero di poligoni presenti in questa scena sono ben 1.618.577.408!
Dopo aver premuto il pulsante "Render", si avvierà una fase durante la quale verranno effettuati dei precalcoli atti a velocizzare il rendering finale.
Una volta conclusa la fase di precalcolo, potrete testare con mano le potenzialità del nuovo Now3D.
I tempi di rendering (teiera in posizione di default e finestra nelle dimensioni iniziali) sono 34 sec su un PC equipaggiato di una CPU E8400 3GHz e 3GB di Ram.

 
20080710_BugDXPer causa di un problema ancora sconosciuto, non ho potuto includere la visualizzazione tramite DirectX, infatti, come vedete dall' immagine a lato, dopo un certo numero di poligoni la visualizzazione risulta errata, spero di risolvere il problema per la prossima volta. Triste





 
 
 
 

 

Altre News

I Riflessi RayTracing

20080710_RTReflections2 Le riflessioni sono state il secondo passo durante l'implementazione del motore RT di Now3D versione VB6, per questo, ho deciso che anche per questo nuovo motore RT doveva essere così.
Il risultato potrebbe sembrare poco fotorealistico, e il motivo principale sta nella mancanza di vari algoritmi di fall-off (caduta).
 

 
 
 


 
 

Ottimizzazione della memoria

Con l'occasione di rivedere da zero il motore grafico di N3D ho deciso di ottimizzare l'occupazione di memoria in caso del RayTracing di shape di tipo Mesh, ottenendo ottimi risultati.
Ho rivisto completamente le strutture dati che utilizzavo per appoggiare dei dati di precalcolo, queste le usavo per velocizzare il rendering, ma adesso, grazie all'algoritmo octree, non sono più necessarie.
Una scena formata da 1792 oggetti-istanza da 903.224 poligoni ciascuno per un totale di 1.618.577.408 poligoni occupa appena 250MB di ram (vedi la Demo Massive)! Caldo
 
 
Alla prossima!
 
Giuliano Cornacchiola
 

Stato Attuale lavori

Caratteristica

% Stato avanzamento

Descrizione

Spettro dei Colori 

0% Rendering utilizzando tutto lo spettro della luce.

 Le Constraint

0%  

Le Animazioni 

5%

Primi test di animazione.

Interfaccia

15%

Proprietà, Nodi, Finestre e albero della Scena.

Superfici Parametriche

25%

B-spline, NURBS, Bezier.

Formato file XML

30%

 

Rendering RayTracing

35%

AntiAliasing, velocizzazione tramite Octree, Riflessi, Rifrazioni, RT Distribuito, Final Gathering.

Rendering Scanline

50%

Modalità: Flat, Gouraud, Phong.

Le Azioni

60%

Tipologia di oggetti utili a gestire gli input da parte dell'utente (mouse, tastiera e altro)  in azioni su altri oggetti.

Le Quaternion

60%

Migliore controllo dell'orientamento di un oggetto.

Accelerazione Hardware

70%

Implementata la modalità Gouraud tramite le DirectX.

Materiali

80%

Interfaccia standard per i Materiali le Mappe e i Filtri.

Le Istanze

100%

Gestione generica di Oggetti, Telecamere, Luci e molto altro, con la possibilità di condividere uno shape.