Introduzione ad AVS/Express utente

slide 1

Questo corso sarà una rapidissima introduzione all'ambiente di visualizzazione AVS/Express. Per questioni di tempo non potrà essere un corso completo, ma aspirerà almeno a suscitare la vostra curiosità e a spingervi a sperimentare questo strumento.


slide 2

Obiettivo principale: muoversi all'interno dello strumento con "quel tanto di grazia" necessaria per sperimentare e concretizzare i concetti teorici visti nella parte di introduzione alla visualizzazione scientifica.


slide 3

Per saperne di più su AVS/Express e su progetti che lo utilizzano è disponibile una lista di puntatori.


slide 4

slide 5

Al lancio di AVS/Express appare un dialogo che permette di scegliere il tipo di applicazione che si vuole creare oppure caricare un'applicazione precedentemente salvata. Per ora scegliete il default (Single-window DataViewer e 3D).

Le due finestre sono:

  • Il Network Editor con le librerie di moduli e l'area di lavoro.
  • Il Data Viewer le cui componenti sono spiegate nella prossima slide.

slide 6

Il Data Viewer è diviso in quattro parti:

  • Il Viewer vero e proprio
  • Una Toolbar per l'accesso ad alcune funzionalità di uso comune, come la scelta del comportamento del mouse nel viewer o il "magico" bottone RNC (Reset-Normalize-Center) per recuperare le scene in fuga
  • Un'area in cui compaiono le interfacce utente dei moduli oppure gli Editors selezionabili da menu
  • Un indicatore di stato dell'esecuzione con il bottone di interruzione

Nell'esempio viene visualizzato il risultato del modulo LEA (Lagrangian-Eulerian-Advection) per la visualizzazione di campi vettoriali 2D dipendenti dal tempo. Questo modulo è disponibile nel repository dello IAC.


slide 7

Vengono chiamati editors le interfacce a varie funzioni di AVS/Express.

Bisogna ricordarsi di selezionare l'oggetto grafico di interesse prima di utilizzare Editors -> Object.


slide 8

Le principali librerie di moduli disponibili sono:

Startper i principianti
Mainle tecniche di visualizzazione principali
Standard objectsi tipi di dati primitivi
User Interfacewidget per la creazione di interfacce utenti
Annotation Graphingcharting 2D
Examplesesempi di uso delle tecniche di visualizzazione
Library Workspacesaree per la creazione di moduli utente

slide 9

L'importazione dei dati è la parte più importante di un sistema di visualizzazione.

In ordine decrescente di facilità le opzioni disponibili sono:

  • Lettori per i formati inclusi in AVS/Express
  • Lettore per tabelle ascii
  • Creazione di un file .fld che descrive i dati
  • Add File Import Module
  • Lettori per altri formati disponibili pubblicamente
  • Scrittura di un lettore custom

slide 10

In AVS/Express esistono moduli per interagire con le visualizzazioni.

Ricordarsi che la visualizzazione ha lo scopo di raggiungere una comprensione d'assieme dei dati, mentre questi strumenti permettono una lettura precisa e puntuale dei valori.


slide 11

Spesso il punto finale di una visualizzazione è la presentazione dei risultati ad un congresso o su una pubblicazione. Si possono esportare immagini o animazioni. Ecco alcuni esempi nel campo chimico.


slide 12

I moduli si trascinano dalla libreria all'area di lavoro (Network Editor: NE). Si uniscono disegnando il collegamento. Disegnando ancora il collegamento si disconnettono. Si aprono con un doppio click. Il bottone destro ha varie funzioni:

  • Sul modulo sono importanti "Help" ed "Info".
  • Sul NE: "Arrange Icons".
  • Su un collegamento: "Insert Link" permette di vedere quello che pasta su un collegamento.

Sul NE il Pan si fa con Shift-M2 (sul PC con Shift-ButtonLeft); lo Zoom invece con Ctrl-M2 (sul PC con Ctrl-ButtonLeft).


slide 13

Se non avete troppa fantasia provate per esempio: Examples -> Visualization -> Orthoslice.

Aprite il modulo e staccate un link rosso (si stacca ridisegnando il collegamento). Che cosa cambia?


slide 14


slide 15

Il lettore si trova nella libreria Main. Il background digradante si trova sotto Main -> Geometries.


slide 16

L'Object Manager gestisce l'ordine di esecuzione dei moduli, il passaggio dei dati, etc. ed è il cuore di AVS/Express.

L'Object Manager ha tre interfacce:

  • Grafica del Network Editor
  • Programmatica tramite l'API per C, C++ e Fortran
  • Il linguaggio V

Un esempio di linguaggio V l'avete aprendo il file ex1.v salvato nell'esercizio precedente. In questo corso non approfondiremo questo linguaggio, ma è quello che rende speciale e potente AVS/Express.

Statements di linguaggio V e comandi per l'Object Manager possono anche essere scritti dal prompt VCP, quello che appare come OM(Root) ->


slide 17

Per modificare le proprietà di rendering di un oggetto grafico:

  1. Selezionare l'oggetto grafico con l'apposito bottone o con Ctrl-Click sull'oggetto nel viewer.
  2. Con l'editor Object modificare Modes (modi di rendering delle varie primitive grafiche) oppure Properties e poi Type per le caratteristiche per esempio delle superfici.

Nell'elenco degli oggetti Top indica la radice dell'albero degli oggetti grafici.


slide 18

Interagendo col viewer si può ruotare l'oggetto, la camera oppure le luci (primi tre bottoni della Toolbar).

Le luci hanno il loro editor. Per renderle bidirezionali si può usare il secondo bottone da sinistra della Toolbar.

Per accelerare la manipolazione dell'oggetto si può abilitare l'Alternate Object (sesto da destra).

La proiezione ortografica (quella di default) rende più precise le misure, ma non è molto naturale come la proiezione prospettica. Si cambia col terzo bottone da destra.


slide 19

Nell'editor delle luci il toggle "Show Lights" visualizza una freccia per indicare la direzione delle luci.


slide 20

Riprendiamo molto rapidamente i concetti già visti di formato geometrico dei dati.

Quello che cambia è la quantità di informazioni necessarie per descrivere la geometria del dato.

Puntiforme (scatter)solo le coordinate dei punti
Non strutturati (Unstructured)più la connettività
Curvilinei (Structured)è una griglia regolare deformata, oltre alle coordinate dei punti basta solo il numero di righe e colonne (e piani)
Rettilineari (Rectilinear)le coordinate lungo agli assi (oltre al numero di righe e colonne)
Uniformi (Uniform)oltre al numero di righe e colonne bastano le coordinate di due punti

slide 21

Un esempio di formato scatter è il file che utilizzeremo conc.dat

Un esempio di formato uniform è il file che utilizzeremo splash.fld oppure una qualsiasi immagine.


slide 22

Un esempio di strutturato è il file di esempio di AVS/Express bluntfin.fld

Un esempio di mesh non strutturata è il file che utilizzeremo example2.inp o gli esempi di AVS/Express per il lettore UCD.


slide 23

In AVS/Express il tipo di dato che permette di descrivere tutte queste configurazioni geometriche si chiama Field.

Attenzione! In AVS/Express il termine field si riferisce a due cose distinte:

  • Il tipo di dato stesso
  • Il formato di file che permette di descrivere una geometria uniform, rectilinear o unstructured

slide 24

Se volete vedere la struttura di un field istanziate il modulo Main -> Visualization -> Field Schema -> Field e apritelo.


slide 25

La grid è composta semplicemente dalle coordinate dei punti.

I dati associati ai nodi sono sotto node_data.


slide 26

Tutto quanto riguarda la connettività si trova nella Mesh. Ci possono essere distinti gruppi di celle (per esempio un gruppo per ogni tipo di cella). Ognuno di questi si chiama Cell Set.


slide 27

Questa struttura può essere descritta come Structured con 2 colonne e 5 righe oppure come Unstructured con 1 cell set di tipo Quad.


slide 28

Alla cella può essere associato uno o più dati.


slide 29

Rispetto al trattamento di node data, ci sono meno moduli che trattano cell data. Spesso, quindi, è meglio convertire i cell data in node data col modulo cell_to_node.


slide 30

Il field Unstructured offre la massima flessibilità di descrizione dei dati al prezzo di una maggiore complessità. Per semplificarne la creazione si possono usare i moduli Main -> Field Mappers -> Mesh Mappers.


slide 31

Andando in ordine di semplificazione: Structured ha la connettività implicita, per cui non bisogna fornirla.


slide 32

Rectilinear non ha bisogno delle coordinate di ogni nodo, bastano quelle dei nodi lungo gli assi.


slide 33

Uniform calcola le coordinate da solo due punti.

Di default non servono nemmeno queste coordinate perché la spaziatura è uno.


slide 34

Non trattiamo oggi i file dipendenti dal tempo. Un esempio è dato dal modulo Time Data (in Loop mettere Cycle Options a Bounce e premere Run).


slide 35

Il file da utilizzare conc.dat si trova qui oppure sul server del corso.


slide 36

Ora importeremo un file in formato field (.fld) che descrive un Field uniform.

Attenzione! Il file .fld (splash.fld) non contiene i dati, ma descrive e punta al file di dati splash.asc . Tutti e due devono essere presenti sul disco per l'esercizio successivo.


slide 37

Vi siete procurati il file?

FLD Wizard è una piccola utility che permette di scrivere il file .fld per descrivere i propri dati. Non è ingegnerizzata, ma funziona.


slide 38

Scaricate il file in formato AVS UCD (Unstructured Cell Data) example2.inp


slide 39

Un esempio "buffo" e semplice di texture.

Un esempio più realistico è invece un'immagine aerea spalmata su una altimetria digitale (DEM). Attenzione a settare il toggle "Flip Image" nel Read Image oppure vi troverete il mare in montagna!

Altri parametri per i più avventurosi:

  • Scala verticale: 0.2
  • Editors -> Object -> Texture -> Interpolation: Bilinear.

Cosa cambia?


slide 40

Il modulo Image Capture crea un filmato catturando il contenuto del viewer ogni volta che questo cambia. In una seconda fase questi frames sono combinati in un filmato in formato MPEG o AVI (non provate ad usare AVI su Linux: usa un codec non molto comune).

Per automatizzare la modifica della visualizzazione si può utilizzare il modulo animator. Si definiscono dei Key Frames e poi il modulo interpola fra loro.

Prima di presentarsi ad un congresso con un filmato prodotto così verificare che sia visibile sul sistema di presentazione! Ricordatevi che gli standard sono belli perché ce ne sono così tanti fra cui scegliere…


slide 41

Il ciclo si chiude con il bottone chiamato Complete dopo + e -.


slide 42

Ci sono varie possibilità per customizzare AVS/Express. In ogni caso, prima di farlo, verificate che in AVS/Express non ci sia già un modo per ottenere quello che si vuole.

Il contenitore chiamato Macro si trova sotto Standard Objects.

Una volta creato un proprio modulo si può salvarlo nelle Library Workspaces: basta trascinarlo lì. A questo punto si può utilizzarlo come qualsiasi modulo di AVS/Express.

Attenzione! Se a questo punto si esce dall'applicazione si perdono le customizzazioni (cioè questi moduli). Bisogna sempre salvare il progetto prima di uscire se sono state fatte customizzazioni.


slide 43

Il meccanismo di salvataggio delle customizzazioni si chiama project.

Per creare un nuovo progetto Project → Save As… e dare il nome di una directory vuota o non esistente.

Nella slide si vede cosa va a finire sotto la directory di progetto (qui chiamata prj). Le due cose più importanti sono il file avsenv che spiega ad AVS/Express dove cercare le cose e il file v/templ.v che contiene tutte le modifiche fatte alle librerie (e quindi anche il codice che descrive i miei moduli creati nei Library Workspaces).

Per ricaricare un progetto salvato lanciare AVS/Express dalla directory del progetto.

Se si sposta la directory di progetto oppure la directory di installazione di AVS/Express ricordarsi di aggiornare il file avsenv.

Il nome del progetto corrente viene scritto a video quando si lancia AVS/Express e nella barra in alto della finestra del Network Editor.


slide 44

La struttura a progetti si può descrivere come una serie di piani trasparenti sovrapposti. Quello che viene trovato nella directory del progetto non viene cercato nella directory di installazione di AVS/Express.

Quindi, attenzione al nome dei file che create nella directory di progetto (provate a creare un file che si chiama app.v nella directory di progetto e poi lanciate AVS/Express… Dopo l'esito fatale cancellate app.v e v/app.vo per tornare alla normalità).

Questa struttura dei progetti permette di gestire gruppi di lavoro che devono sviluppare più moduli della stessa applicazione senza pestarsi i piedi ed utilizzando solo moduli finiti e certificati.


slide 45

Attenzione! Salvare l'applicazione non equivale a salvare le customizzazioni ad AVS/Express!

  • Save Application: Menu File -> Save Application. Viene creato un file con estensione .v
  • Save Project: Menu Project -> Save. Viene aggiornato il file v/templ.v sotto la directory del progetto.

slide 46

Ecco un esempio di customizzazione a partire da un modulo esistente di AVS/Express.


slide 47

La creazione di interfacce grafiche segue lo stesso paradigma di qualsiasi altra network di AVS/Express. L'unica differenza è che il collegamento verde (parent) non indica passaggio di dati, ma un rapporto contenitore/contenuto.

UIapp crea una finestra indipendente. UImod_panel invece crea una finestra che si "attacca" nell'apposito spazio del Data Viewer.


slide 48

Il Layout Editor si abilita da menu (UI Builder -> Layout Editor). Un widget si muove selezionandolo con un doppio click destro e poi trascinandolo con il bottone sinistro (questo su PC; su Linux si seleziona e sposta con il bottone centrale). Ricordarsi alla fine di disabilitare il Layout Editor.


slide 49

Vediamo ora molto rapidamente come si aggiunge del codice utente.

Un Wizard crea una serie di files a supporto ed uno scheletro di routine nel linguaggio di programmazione scelto. Qui va inserito il proprio codice che viene aggiunto a quello di AVS/Express creando un nuovo eseguibile sotto il progetto stesso. Questo sarà l'eseguibile da lanciare, non più quello sotto l'installazione.


slide 50

Il primo step del wizard (lanciato dal menu Object -> Add Module) definisce alcune caratteristiche generali del modulo.

Poi si definiscono i vari metodi (routines).


slide 51

Poi per ogni parametro si definiscono le sue caratteristiche e il comportamento, cioè quale metodo deve essere fatto partire quando si modifica quel parametro. Questa è la base del funzionamento di una network che non ha scritto da nessuna parte la procedura di attivazione dei moduli.


slide 52

L'ultimo step del wizard definisce alcune caratteristiche necessarie per la compilazione. I vari makefiles o build files per il progetto vengono rigenerati ogni volta da AVS/Express, per cui tutte le caratteristiche necessarie per il build devono essere definite qui.


slide 53

L'interfaccia fra il proprio codice ed AVS/Express è composta da due strati: la definizione V del modulo e lo scheletro C (C++ o Fortran). Lo scheletro inizialmente contiene le routines dell'API dell'Object Manager per passare i valori dal codice ai parametri del modulo e viceversa.

Il C++ è il linguaggio più naturale per scrivere i moduli: molta della complessità di interfacciamento è nascosta.

Il fatto che l'interfaccia di un modulo abbia una parte scritta in V fa presumere che bisogna ricordarsi di salvare il progetto dopo aver definitio un modulo.


slide 54

Spero vi siate divertiti…

Contattatemi se avete bisogno di un aiuto all'indirizzo: [il mio indirizzo di mail]