Now3D's profileNow3D LivePhotosBlogLists Tools Help

Blog


    July 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.

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://now3d.spaces.live.com/blog/cns!4DCDB5548CDBFC04!182.trak
    Weblogs that reference this entry
    • None