2009-09-15 7 views
20

Ho sentito alcune buone recensioni di Visualization ToolKit (VTK) dagli sviluppatori. Ma esattamente quanto è potente? Ad esempio, può gestire la visualizzazione di un intero giacimento di petrolio (in un simulatore) con miliardi di punti delle griglie? La maggior parte dei simulatori di bacini industriali funziona su processori paralleli. So che VTK supporta l'elaborazione parallela, ma ancora una volta quanto può essere stabile l'utilizzo di processori paralleli quando si esegue qualcosa come le simulazioni di giacimento? Qualcuno ha usato VTK su un progetto così ampio?Quanto è buono VTK?

Mathematica supporta alcune semplici simulazioni di giacimento, ma penso che utilizzi le librerie Java Swing. Quindi, qualcuno ha qualche idea di VTK utilizzato per una visualizzazione potente diversa da 3DSplice? Inoltre, qualcuno può dire qualcosa sul tempo di sviluppo usando VTK?

risposta

11

VTK è codificato in C++ e utilizzabile in C++, Python, Tcl/Tk, Java. Labs come Sandia (incluso, credo, il loro sforzo Titan), Los Alamos e Livermore, usano VTK per gli sforzi di visualizzazione su una scala abbastanza grande per rivaleggiare con le tue ambizioni (ovviamente, questo viene fatto con enormi quantità di hardware in supporto, e programmatori estremamente esperti molto esperti con VTK e tutte le altre tecnologie utilizzate nel progetto - "miliardi di punti della griglia" non è un progetto da affrontare finché non si dispone di una squadra con competenze così estreme, non con QUALSIASI toolkit).

Non sto affermando che questo (un progetto di visualizzazione della scala fieramente ambiziosa che avete in mente) sarà FACILE, non importa come lo affrontate - ma non posso pensare a nessun quadro alternativo che possa fare è più semplice di VTK! -)

+0

Fondamentalmente, sono un ingegnere petrolifero, ma sono molto appassionato di programmazione (so che c'è una differenza tra essere appassionati ed esperti). Abbiamo un team di programmatori esperti che sono stati coinvolti nello sviluppo di simulatori di giacimento. Ultimamente, abbiamo pensato a VTK. Quindi, per quanto riguarda il tempo di sviluppo? –

+1

I tempi di sviluppo possono essere più veloci di qualsiasi altro toolkit simile di cui abbia mai sentito parlare, ma la messa a punto e l'ottimizzazione per l'esecuzione di visualizzazioni di miliardi di nodi VELOCE su enormi cluster si sentiranno sempre come se ci volesse per sempre - è un problema intrinsecamente difficile. Non conosco nessuno strumento che rende il tuo sviluppo più veloce di VTK, ma ciò non significa che ti piacerà la quantità di sforzo richiesto anche con VTK (quindi qual è l'alternativa - non fare nulla perché è troppo difficile?). –

+0

Ci sono anche alcuni aspetti negativi (dalla mia breve esperienza personale con esso): * La documentazione potrebbe essere (molto) migliore. * Solo una mailing list, nessun forum. * Se le cose non funzionano, è difficile scoprire perché. * La qualità dell'API è così così (nomi dispari, funzioni duplicate, concetti dispari) – Bim

-2

Definire come "VTK" (o qualsiasi libreria) "potente" è impossibile. Dipende dai tuoi bisogni. Non è che si possa gettare qualsiasi griglia su VTK, rinforzare con un sacco di hardware e aspettarsi che funzioni senza intoppi. VTK non è orientato verso modelli enormi, tuttavia esiste una libreria denominata Paraview che tenta di supportarla.

Sidenote: visualizziamo miliardi di modelli di celle in modo interattivo su laptop normali (non utilizzando VTK/Paraview). Come? Immagino sia un segreto ... :)

+0

Desidero passare questo per menzionare ParaView, ma ParaView è un programma stand-alone, non una "libreria". Inoltre, il suo ruolo non è l'aggiunta del supporto per i dati di grandi dimensioni a VTK. Per ora, sono costretto a votare -1 per essere tecnicamente scorretto. – Eric

3

La mia esperienza personale con VTK è positiva, ma solo con piccoli set di dati. Può sicuramente essere molto lento se si dispone di set di dati di grandi dimensioni, come nel tuo caso. Tra i lati positivi, mette in mostra così tante modalità di visualizzazione che è impensabile riscriverle nella pura OpenGL. Non so da dove viene la lentezza del VTK, ma probabilmente l'architettura della pipeline non aiuta. Inoltre, molto dipende dal filtro che usi. La trama volumetrica, per esempio, è incredibilmente lenta per costruzione (molti piani paralleli trasparenti).

Una soluzione che abbiamo trovato utile era ritagliare il set di dati al minimo indispensabile prima di tracciarlo. Molto spesso, la perdita di precisione visiva è trascurabile. Puoi anche provare con il filtro LevelOfDetail (LOD) ma non ho esperienza con esso.

7

VTK è un toolkit piuttosto potente in quanto offre implementazioni ragionevolmente efficienti di un'ampia varietà di algoritmi di visualizzazione. Per vedere un po 'di ciò che VTK può fare, ti consiglio di dare un'occhiata allo ParaView. ParaView crea un'applicazione utilizzabile su VTK in modo da poter visualizzare immediatamente i dati unendo vari componenti VTK.

Per indirizzare più direttamente le vostre domande, l'elaborazione parallela in VTK viene utilizzata per accelerare la creazione della visualizzazione. Questo dovrebbe essere stabile, ma indipendente dal calcolo della simulazione. Imparare a usare VTK richiede un po 'di tempo, ma c'è un libro che puoi acquistare che spiega molti aspetti su come usarlo. Sperimentare con gli involucri Python è un buon modo per imparare a usare VTK.

Per le vostre applicazioni, non sono sicuro che VTK sia la soluzione più adatta.Vorrei raccomandare alcuni esperimenti su piccola scala usando i collegamenti ParaView o Python VTK per vedere se è possibile creare una visualizzazione ragionevole delle proprie simulazioni.

+0

+1 per riferimento ParaView. Notare che esiste anche [VisIt] (https://wci.llnl.gov/codes/visit/) che svolge un lavoro simile. È anche utile notare che le visualizzazioni di ParaView e VisIt possono essere entrambe programmate usando Python. – Chris