sabato 31 ottobre 2009

Altre News

Shader Falloff
Continuando il lavoro di traduzione del vecchio codice di N3D (versione VB6) nel nuovo N3D (versione dot.net 2.0) ho implementato il filtro FallOff che nella nuova reincarnazione diventa un Nodo perfettamente integrabile in uno Shader.


Applicazione dello Shader Falloff


Interfaccia
Migliorato lo standard di alcune interfacce che faranno parte dell'editor definitivo del nuovo N3D: treescene, lista dei materiali.


Interfaccia di gestione delle proprietà delle istanze della ScenaInterfaccia di gestione delle proprietà dei materiali della Scena


Finestra di scelta generica
Continuando l'implementazione delle finestre di scelta anche per le ultime tipologie di istanze finora implementate (luci, camere, oggetti, constraint), ho voluto standardizzarne il codice in modo da poterlo applicare facilmente a future nuove tipologie di istanze e un giorno per poter applicare delle immagini di anteprima.


Finestra di scelta di una CameraFinestra di scelta di una Luce


Caricamento File PLY
Implementata una nuova primitiva utile al caricamento dei file PLY. Grazie a questo oggetto potrò caricare degli oggetti particolarmente pesanti (>1M Poligoni) così da poter testare al meglio e ottimizzare molti aspetti del motore 3D.


Rendering di un oggetto in formato PLY contenente più di 7 milioni di poligoni

venerdì 30 ottobre 2009

Miglioramenti del Codice

Shader
Per un miglioramento sostanziale dello standard di costruzione degli Shader ho deciso di eliminare l'oggetto N3DShader e di utilizzare la sola N3DNode per la gestione completamente di uno shader.

Le Primitive
Nella versione VB6 di N3D lo standard di costruzioni degli oggetti primitivi era basato semplicemente sull'utilizzo di alcune funzioni di una classe (N3DPrimitive), una per ogni primitiva, le quali poi tornavano la rispettiva istanza.
Adesso invece grazie alle potenzialità della programmazione OOP ho potuto associare una classe ad ogni primitiva, incorporando le proprietà fondamentali di costruzione (es: il raggio interno del Torus), facilmente modificabili da interfaccia come una qualsiasi proprietà.


Interfaccia di inserimento di una Primitiva nella Scena e rispettive proprietà

Finalmente l'Undo!

Anche in questi mesi con piccoli ma importanti passi lo sviluppo del nuovo N3D è andato avanti, e tra le ultime novità la più sostansaziale è il completamento dell'implementazione dello standard di gestione dell'Undo/Redo.
Questo standard è esclusivamente il frutto di un mio lavoro, dato che sul web non ho trovato del materiale utile a questo scopo.

Lo Standard
Tramite due semplici classi (N3DUndo e N3DUndoManager) si può gestire l'undo/redo di qualsiasi metodo o proprietà o gruppi di essi. Le classi che vogliono utilizzare questo standard devono ereditare dalla N3DUndo e implementare alcuni metodi utili a raccogliere le informazioni principali per poter annullare o ripristinare una azione.
Tramite poi l'istanza globale della N3DUndoManager (g_UndoManager) è possibile ottenere la lista delle azioni salvate, e anche annullare o ripristinare una o più azioni.


Standard Undo/Redo


Prime applicazioni
Applicato lo standard Undo/Redo ad alcune proprietà dell'istanza (selezione, rotazione, posizione, scala e colore) e alla gestione dei materiali (aggiunta, caricamento, eliminazione).


Interfaccia di Undo/Redo