domenica 18 aprile 2010

Altre News

Anteprima del Materiale
Implementata la preview (o anteprima) del Materiale, per ora è semplicemente una conversione della versione utilizzata su N3D vecchia versione. Comunque, ne immagino una futura implementazione per una veloce anteprima dei file elencati nelle varie Dialog di scelta.


Interfaccia per l'anteprima del Materiale


Mappa Light
Un altra mappa molto utile nella costruzione di buoni Shader è quella Light (o Luce), utile per esempio per un buon Shader X-Ray oppure per simulare la texture di palazzi visti di notte, come nell'esempio seguente.


Esempio di utilizzo della Mappa Light


Energy Preserve
Una regola ferma per rendere delle superfici realistiche e che la quantità di luce riflessa non sia maggiore di quella entrante altrimenti il risultato diventa irreale. Se per esempio rendessimo una superficie troppo riflessiva (mappa specular) e contemporaneamente troppo diffusiva (mappa diffuse) avremmo un risultato poco realistico.


Energy Preserve disattivo


Se invece bloccassimo i valori di diffusione e riflessione in maniera tale che la somma dei coefficienti non superasse mai il valore di 1 allora avremmo un risultato più realistico.


Energy Preserve attivo


Standard Shader a valori da 0 a 1 e l'Invert
Create delle tipologie di Nodi che gestiscono in maniera standard dei valori di uscita a virgola mobile con range da 0 a 1. Grazie a questa implementazione ho potuto aggiungere l'attributo Invert a questa tipologia di nodi (es: shader bump, falloff, noise).

Nuovo Standard XML

Nuove fondamenta per un nuovo Now3D
Creare un programma può essere paragonato a creare una casa, se le fondamenta sono solide la casa viene su bene e dura nel tempo, tornando a Now3D le fondamenta di cui parlo riguardano l'inserimento dello standard XML nel codice di Now3D e, avendo trovato delle limitazioni nella flessibilità di programmazione nella struttura che stavo sviluppando, quindi, per risolverle, ho preferito dedicarci la maggior parte del tempo.

Sono tutti dei Nodi
L'esigenza di rivedere ulteriormente lo standard XML è scaturito dal fatto che applicando lo standard di salvataggio (e caricamento) alle istanze, ho avuto la necessità di gestire le associazioni Shape/Istanza, Materiale/Istanza e Istanza/Istanza e, immaginando l'implementazione di una semplice associazione simile a quella BRDF/Materiale e Mappa/Materiale (e cioè dei sottotag a quello principale es: shapes o materials), ne ho notato una scarsa flessibilità.
Così ho deciso che la struttura migliore per gestire le associazioni tra gli elementi di N3D fosse quella dei Nodi, in questo modo, per la connessione Shape/Istanza, si potrà, per esempio, associare una connessione di entrata "Shape" di una istanza alla corrispettiva connessione di uscita di uno Shape (per l'appunto la connessione di uscita "Shape").


Schema del nuovo Standard XML


Massima flessibilità!
Naturalmente, anche il codice è stato completamente rivisto per poter gestire questo standard. Così le classi per i Materiali, le Mappe, i BRDF, le Istanze e gli Shape ereditano dalla BaseNode e, quindi, a tutti gli effetti dei Nodi aventi connessioni, con la possibilità di connettersi tra di loro.
La flessibilità di questa struttura è assoluta; ad esempio, si può associare un materiale a più oggetti, un nodo Shader a più mappe, uno Shape a più Istanze, una istanza a un altra istanza (creando quindi gerarchie di oggetti), o perfino un Nodo a più Shader (cosa utile in caso di nodi Bitmap associati a immagini di elevata pesantezza).