domenica 18 aprile 2010

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

Nessun commento:

Posta un commento