» it.Collada
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

it.Collada

English

The original english version of this page is newer and may contain information this translation does not have! Click here to view the english version.

Panoramica

Il plugin collada ci consente di importare in vvvv documenti COLLADA (versione 1.4). Risponde alle caratteristiche della versione 1.4.1 delle specificazioni collada.

Le caratteristiche attualmente supportate sono:

  • Geometria della Mesh - La mesh deve essere suddivisa in triangoli o polylists.
  • Skinning - Supporta fino a 60 bones.
  • Animazione - Lineare e bezier.
  • Materiali

Caratteristiche mancanti:

  • Morphing
  • COLLADA FX (effetti e shaders)
  • COLLADA Physics

Guida per l'Utente

Installazione

Il plugin è incluso nell'AddOns Pack scaricabile daqui; nella pagina troverete anche le istruzioni su come installare l'AddOns Pack.

Per Cominciare

Usate il nodo  ColladaFile (EX9.Geometry) per caricare un file .dae ed usate un nodo  Mesh (EX9.Geometry Collada) per lavorare sul modello importato. Aprite la helppatch del nodo  Mesh (EX9.Geometry Collada) per studiare un esempio.

Elenco dei Nodi

Se il plugin è installato correttamente i nodi che seguono dovrebbero essere presenti nel NodeBrowser.

ColladaFile (EX9.Geometry)

Carica un flie Collada (.dae) in memoria. Il suo output, il cosiddetto modello Collada, rappresenta il file caricato ed è la base per tutti gli altri nodi Collada.

Pins di Configurazione
  • Coordinate system of source - Modificate le impostazioni di questo pin se volete ignorare l'orientamento del sistema di coordinate memorizzato nel file .dae. Il valore Default indica un sistema con i valori positivi verso destra (come specificato da Collada Standard).
  • Source up axis - Modificate le impostazioni di questo pin se volete cambiare l'asse verticale del sistema di coordinate. Il valore Default imposterà l'asse verticale dal file .dae. Se non ci sono indicazioni, verrà usato l'asse Y.
  • Source right axis - Modificate le impostazioni di questo pin se volete cambiare l'asse orizzontale del sistema di coordinate. Il valore Default imposterà l'asse dal file .dae. Se non ci sono indicazioni verrà usato l'asse X.
  • Source distance unit in meter - Per scalare le unità usate al momento dell'esportazione del file Collada sui metri nel mondo reale: 1 km = 1.000 mt, 1 cm = 0.01 mt. Il valore 0, zero, cercherà il fattore di scala nel file .dae.
  • Coordinate system of target - Modificate le impostazioni di questo pin per cambiare l'orientamento del vostro sistema di coordinate. Il valore Default indica un sistema con i valori positivi verso sinistra (DirectX standard).
  • Target up axis - Modificate le impostazioni di questo pin per cambiare l'asse verticale del vostro sistema di coordinate. Il valore Default è Y (DirectX standard).
  • Target right axis - Modificate le impostazioni di questo pin per cambiare l'asse orizzontale del vostro sistema di coordinate. Il valore Default è X (DirectX standard).
  • Target distance unit in meter - Per scalare i metri nel mondo reale sull'unità di distanza nella patch: 1 km = 1.000 mt, 1 cm = 0.01 mt. Il valore 0, zero, imposterà il valore di default, che è 1.0.
Pin di Input
  • Filename: trascinare il file Collada nella patch e connetterlo a questo pin, oppure inserite il percorso del file con browser di sistema.
Pins di Output
  • COLLADA Model - Fornisce i dati del file .dae per i nodi "a valle", come  Mesh (EX9.Geometry Collada), etc.
  • Info - Un pin stringa che contiene informazioni sul file .dae.

Mesh (EX9.Geometry Collada)

Questo nodo estrae le informazioni sulle mesh memorizzate nel file .dae e le converte in una Mesh "X", propria di DirectX. Per distinguere tra le differenti geometrie viene generato un sottogruppo, subset, per ciscuna. Date che è possibile che in un file .dae una mesh sia composta di più parti, ad esempio per assegnare materiali diversi, c'è un sottogruppo anche per ciascuna di queste parti.
Leggete più in basso Meshes in Collada e vvvv per maggiori dettagli su come lavorare con le geometrie Collada in vvvv.

Pins di Configurazione
  • Opaque=1? - Modificare questo pin per definire se l'opacità del materiale sia indicata da 0 o 1, dato che dipende dal tool di esportazione.
  • Skeleton pin enabled - Specifica se il pin skeletonsi abilitato. Il valore di default è false per ragioni di performance.
Pins di Input
  • COLLADA Model - Qui va connesso il pin COLLADA Model del nodo  ColladaFile (EX9.Geometry), da cui viene estratta la mesh.
  • Time - Se all'interno del file .dae è contenuta un'animazione, questo pin può essere usato per impostare il tempo dell'animazione. Influenza la trasformazione e le matrici dello skinning. A questo pin può essere applicato uno spread.
  • BinSize - Definisce quante meshes vengono selezionate da un indice. Il valore di default è -1, che significa che tutte le meshes vengono prese in considerazione. A questo pin __non_ è possibile applicare uno spread.
  • Index - Definisce la selezione della mesh. Il valore di default è 0. Da usare in combinazione con il pin BinSize.
Pins di Output
  • Mesh - La mesh X pronta per l'utilizzo in vvvv.
  • Transform - La matrice di trasformazione per ciascun sottogruppo della Mesh X.
  • Skinning - Se il file Collada contiene meshes skinned e queste meshes sono selezionate da questo nodo, allora questo pin conterrà tutte le matrici di skinning necessarie ad un nodo "a valle" che supporta lo skinning (Skinning.fx, per esempio).
  • TextureFileName - Filename della texture da usare per ogni sottogruppo delle meshes X.
  • Emissive Color
  • Diffuse Color
  • Specular Color
  • Power - Questi quattro pin descrivono il materiale per ciascun sottogruppo. Power in particolare controlla la forza dell'effetto speculare del materiale.
  • Opaque - per stabilire se un materiale sia trasparente, 0, o opaco, 1.
  • Skeleton - Se il pin di configurazione 'Skeleton pin enabled' è true, allora questo pin emetterà uno spread di punti per consentire di visualizzare lo scheletro (in combinazione per esempio col nodo  Line (EX9.Geometry) con una BinSize pari a 2).

Skeleton (Skeleton Collada)

Se presente nel file .dae, questo nodo reswtituisce lo scheletro selezionato dal pin Index. Visitate questa pagina per ulteriori dettagli: skeleton-animation-nodes-tutorial

Camera (EX9.Geometry Collada)

Se presente nel file .dae, questo nodo restituisce una matrice per la vista ed una per la proiezione per la telecamera selezionata dal pin Index. Queste matrici possono essere connesse direttamente al Renderer (EX9).

Meshes in COLLADA e vvvv

In un file Collada possono essere definite più meshes, e ciascuna mesh può essere composta di più sottogruppi, subsets, in vvvv ci può essere una sola mesh con più sottogruppi. In vvvv, per poter visualizzare tutte le meshes definite in un file .dae, tutte le meshes vengono concatenate e viene generato un sottogruppo per ciascuna.
Formalmente, la situazione potrebbe essere descritta così:

 subsets_in_vvvv(n) := SUM(i := 1 .. n)(subsets(i))

dove n è il numero di meshes nel file .dae
e subsets(i) è il numero di sottogruppi della mesh i
Tenete questo in considerazione se lavorate con files Collada complessi ed usate il pin Index di Mesh (EX9.Geometry Collada) per selezionare singole meshes Collada, e pure un nodo GetSlice (Node) per puntare a singoli sottogruppi della mesh selezionata.

Skinning

Lo Skinning è una tecnica che lega una mesh statica, skin, ad uno scheletro, il quale può essere facilmente animato. Tecnicamente ogni vertice della skin è associato con uno o più ossi, bones, dello scheletro, e ciascun bone influenza la posizione del vertice in base al peso, ‘’weight factor''.
Significa che ogni vertice della skin deve essere moltiplicato per le matrici di trasformazione dei bones che lo influenzano per ogni frame dell'animazione. Dato che normalmente una mesh consiste di qualche migliaio idi vertici, questa operazione potrebbe essere molto lenta, se fosse fatta tramite la CPU (software skinning).
Ecco perché viene effettuata tramite la GPU e perché non è altrettanto facile che impostare una scena con meshes statiche; d’altronde non è nemmeno impossibile.
Tutto ciò che si deve fare è usare un vertexshader, che esegue le suddette moltiplicazioni, e le alimenta con le matrici dello skinning che ottenete dal pin di output Skinning Transforms di  Mesh (EX9.Geometry Collada). Per cominciare date un'occhiata al nodo effetto Skinning.fx.

Tenete presente che ciascun vertice supporta fino a quattro bones, e che lo scheletro non deve avere più di 60 bones.

Note sull'esportazione da altre applicazioni

3D Studio MAX

3D Studio MAX (2010) supporta l'esportazione di file Collada, ma non è perfetto. Per esempio se si usa Physique modifier per effettuare lo skinning di un personaggio, l'esportazione non funzionerà, bisogna invece usare Skin modifier.
In più si deve aggiungere che usa poligoni come primitivi per le meshes esportate, casa che non è supportata da questo plugin (le specificazione sui file Collada dicono che un poligono dovrebbe essere usato solo in casi speciali). Vedere in basso i Messaggi d'Errore per una spiegazione su come caricare files .dae che memorizzano le meshes come poligoni.

Un modo migliore è quello di usare il plugin OpenCOLLADA. Il suo meccanismo d'esportazione supporta i triangoli, può essere usato il Physique modifier ed è anche più veloce del tool nativo.

Maya

Il plugin menzionato prima per 3D Studio Max sviluppato da FeelingSoftware è disponibile anche per Maya. (Chi lo avesse testato è pregato di riportare qui un feedback).

Blender

Scene con meshes statiche funzionano senza problemi, ma non si può dire altrettanto del rigging dei personaggi, che usano meshes skinned. (Chi avesse notizie sull'animazione è pregato di postarle qui).

Messaggi d'Errore

Se un file Collada non si carica, aprire un renderer TTY e controllare se i messaggi d'errore (se presenti) sono elencati qui sotto.

  • polygons type not supported Attualmente il supporto c'è solo per primitivi formati da triangoli o polylists. Controllate se il vostro tool per l'esportazione ha un opzione per scegliere se esportare triangoli o polylists. Se questa opzione manca date un'occhiata al tool COLLADA Refinery. Si tratta di un tool potente, che tra le altre cose può convertire poligoni in triangoli. A sinistra selezionate Macros->toTriangles, connettete i pins, ed avviate. Ha qualche problema: in alcune situazioni convertirà solo la metà della vostra mesh.

Se il messaggio d’errore non è presente in questa lista o non c’è alcun messaggio d’errore, premesso che abbiate consultato la heppatch del nodo Collada in questione e che abbiate seguito le istruzioni che trovate lì, aprite un nuovo thread nel forum.


Guida allo Sviluppo

Il codice sorgente del plugin è diviso in due progetti, ColladaSlimDX and ColladaLoader.

Il codice sorgente può essere trovato:

La struttura della directory dovrebbe apparire così:

 misc/ColladaSlimDX

plugins/_PluginInterfaces
plugins/_Utils
plugins/_SharedSources
plugins/Mesh/ColladaLoader

Progetto ColladaSlimDX

ColladaSlimDX si basa su COLLADA for XNA, ma è stato riscritto per SlimDX, e modificato ed esteso. il suo obiettivo è quello di analizzare un file Collada, costruire un DOM tree (ColladaDocument) e fornire alcuni metodi per lavorare con tutti i differenti oggetti Collada (ColladaModel). In breve, il lavoro sporco.
Per capire come funziona, controllare il codice sorgente di ColladaLoader.

COLLADADocument class

Questa classe contiene il DOM tree del file Collada. Quasi per ciascuna tag definita nelle specificazioni per Collada esiste una classe relativa con lo stesso nome, e definiti tutti i componenti della gerarchia.

COLLADAUtil class

Questa classe fornisce qualche metodo d'aiuto per accedere più facilmente al DOM tree. Ad un primo sguardo possono sembrare poco chiari, ma scavando e facendo esperienza di tutti quei piccoli dettagli che fanno sì che la vita di un programmatore sia così miserabile, vedrete che dimostreranno di essere utili. Controllate il codice sorgente per alcuni esempi.
Nuove idee sono benvenute!

COLLADAModel class

Questa classe è probabilmente quella più rognosa. In un documento Collada le cose vengono organizzate in librerie. Per esenpio la library_geometries contiene tutte gli oggetti geometrici, che possono essere meshes o splines. Oppure la library_materials che contiene tutti i materiali che possono essere assegnati ad una geometria. Quindi la prima cosa da fare è leggere tutti questi oggetti in queste librerie, e memorizzarli in dizionari (key, value pairs) per usarli successivamente.
Ora che tutti gli oggetti sono noti, o meglio ancora, ora che tutti gli oggetti di cui vogliamo sapere (luci e telecamere vengono ignorati in questo punto) sono noti, possiamo processare l'importantissimo scene object. Infine, questo ci dice quali geometrie prendano parte alla scena, quali materiali gli debbano essere assegnati, etc.

Lo scene object forniscce un grafico della scena, che è un tree e ciascun nodo del tree contiene (senza doverlo necessariamente fare) informazioni sulla trasformazione (rotazione, spostamento, etc.) e le foglie del tree cui dicono quale geometria, luce, telecamere, controller (per lo skinning o il morphing) o altri subtree debbano essere messi qui.
E' anche a questo punto che il materiale viene assegnato alla mesh.

Per ulteriori spiegazioni vedere:

Progetto ColladaLoader

ColladaLoader è il plugin per vvvv. Attualmente fornisce due nodi, ColladaFile (EX9.Geometry) e Mesh (EX9.Geometry Collada).

ColladaFile node

Il nodo ColladaFile è molto semplice. Prende una stringa come input, genera un ColladaDocument ed lo usa per generare un oggetto ColladaModel, disponibile per essere divorato dai nodi mesh Collada.

Il Nodo Mesh

Il nodo Mesh è un po' più complesso. Fondamentalmente prende un oggetto ColladaModel ed usa i metodi d'aiuto per generare una mesh compatibile con Direct3D9, che potrà essere quindi usata in vvvv.
C'è un piccolo problema: in un file Collada è possibile definire più meshes, mentre vvvv ne può gestire solo una alla volta. Per risolvere questo problema tutte le meshes devono essere riunite in una sola. E DirectX è così gentile da fornirci questo metodo.
Per poter ancora distinguere tra tutte le meshes in vvvv, ognuna di queste è assegnata ad un diverso subset.
In vvvv un subset di una mesh è trattata esattamente come la slice di uno spread (tutta quella roba modulo).
In questo modo è possibile assegnare materiali (colore e informazioni sulle textures) e trasformazioni ad ogni mesh.


Tools

  • colladaloader semplice visualizzatore Collada. Sembra abbastanza robusto, in grado di mostrare la maggior parte dei file che gli sono stati sottoposti.
  • COLLADA Asset Manager non mostra alcun file in maniera corretta, ma consente di avere una vista sul tree del documento.
  • NVIDIA FXComposer consente di avere una vista sul tree del documento.
  • XMLMarker un editor XML utile per il debug.
  • COLLADA Web Viewer basato sul plugin O3D di Google.

Files di Esempio

  • COLLADA Test Model Bank è un sito dove persone che lavorano a progetti relativi a Collada possono scambiarsi modelli per effettuare dei test.

anonymous user login

Shoutbox

~4d ago

~7d ago

joreg: The Winter Season of vvvv workshops is now over but all recordings are still available for purchase: https://thenodeinstitute.org/ws23-vvvv-intermediates/

~14d ago

schlonzo: Love the new drag and drop functionality for links in latest previews!

~22d ago

joreg: Workshop on 29 02: Create Sequencers and Precise Clock Based Tools. Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-08-create-sequencers-and-precise-clock-based-tools-in-vvvv-gamma/

~29d ago

joreg: Workshop on 22 02: Unlocking Shader Artistry: A Journey through ‘The Book of Shaders’ with FUSE. Signup here: https://thenodeinstitute.org/courses/ws23-vvvv-12-book-of-shaders/

~1mth ago

joreg: Talk and Workshop on February 15 & 16 in Frankfurt: https://visualprogramming.net/blog/vvvv-at-node-code-frankfurt/

~1mth ago

woei: @Joanie_AntiVJ: think so, looks doable

~1mth ago

xd_nitro: Anyone remember who increased projector brightness by removing some components that product the color?

~1mth ago

Joanie_AntiVJ: This looks super interesting (vectors over network) would anyone here know how to implement this in beta? https://github.com/madmappersoftware/Ponk