Jean Zay, pré/post traitement : documentation ParaView

Présentation

ParaView est un logiciel open-source multiplateforme pour la visualisation 2D-3D. ParaView permet la visualisation de grands volumes de données en parallèle. Le site de référence de ParaView est www.paraview.org. Ce document n'est qu'une courte introduction de présentation de ParaView décrivant l'interface graphique, les différentes structures et formats de données ainsi que des exemples d'utilisation des formats vtk. On trouvera dans la partie documentation des références et des tutoriaux décrivant l'utilisation de l'interface utilisateur du site de ParaView et notamment le tutorial for Supercomputing 2007

Interface utilisateur

L'interface utilisateur comprend un certain nombre de menus décrits ci-dessous :

Le menu View permet de modifier l'interface utilisateur avec le sous-menu Toolbars, d'afficher des statistiques sur les données lues (Statistics View) et de présenter ou non les menus Pipeline Browser et Object Inspector.

  • Pipeline Browser

ParaView gére la lecture des données et leur exploitation à travers un pipeline. Ce pipeline permet de visualiser comment sont reliées la lecture des données et les opérations réalisées ou en cours et d'intervenir pour supprimer un objet (bouton droit delete), le visualiser ou non (cliquer avec bouton gauche sur l' oeil).

  • Object Inspector

Permet de voir et modifier les paramètres d'un objet du pipeline, trois sous-menus sont disponibles. Le sous-menu Properties présente les options configurables pour l'objet, le sous-menu Display comment visualiser l'objet et Informations fourni des statistiques sur l'objet.

ParaView dispose avec le menu Sources de plusieurs possibilités pour générer ou annoter des objets graphiques.

Un exemple de création et animation d'une sphère est présentée dans le menu Animation.

Les filtres sont des outils graphiques permettant de réaliser un certain nombre d'opération courantes sur les données lues comme des calculs d' isosurfaces, des coupes etc … Le menu Filters comprends plus de 80 filtres classés dans différentes catégories Recent,Common,Data Analysis, Alphabetical. Seuls ceux effectivement compatibles avec les données à représenter sont affichés (les autres sont en grisé).

Filtres communs

Filtres pour l'analyse de données

ParaView dispose d'un certain nombre d'outils pour analyser les données à représenter sur une ligne (ProbeLine) ou sur l'ensemble des données (ExtractHistogram).

ParaView offre des possibilités d'animation accessibles à partir du menu ViewAnimation Inspector et ViewAnimation View . Différents modes d'animation sont possibles :

  • Sequence : animation réalisée à partir du nombre d'images (No Frames) choisie.
  • Real Time : animation réalisée dans un temps imparti.

La réalisation de l'animation se fait avec les commandes suivantes :

Il est possible de sauvegarder l'animation en format avi : File → Save Animation Exemple de création et animation d'une sphère avec les opérations suivantes :

  1. Menu Sources → Sphere → Object Inspector
    • Changer End Theta 360 → 300 Apply
  2. Menu View → Animation View
  • Changer le nb d'images No. Frames de 10 → 50 (mode sequence)
  • Ouvrir le widget SphereSource1 de la fenêtre Animation View et sélectionner Start Theta
  1. Lancer l'animation avec le menu Animation → Play

Il est possible de sauvegarder au format avi l'animation avec le menu File → Save Animation

Format des données

ParaView dispose de nombreuses possibilités pour lire des données, on peut distinguer les formats propriétaires hérités du passé (simple legacy formats) et les formats XML. Ces formats utilise différents types de représentation des géométries.

Les différents types de représentation des géométries

ParaView utilise les représentations géométriques suivantes pour ses formats propriétaires.

  • Image Data Ensemble de points ou cellules sur une grille rectangulaire régulière. Les lignes, colonnes et plans sont parallèles aux axes X,Y,Z.
  • Rectilinear Grid Ensemble de points ou cellules sur une grille rectangulaire régulière. Les lignes, colonnes et plans sont parallèles aux axes X,Y,Z. Si la topologie des données est régulière la géométrie ne l'est que partiellement car l'espace entre les points est variable.
  • Structured Grid Ensemble de points avec une topologie régulière et une géométrie irrégulière définie par un ensemble de coordonnées.
  • Unstructured grid Ensemble de points ayant une topologie et une géométrie complètement non structurée. Une grille non structurée est définie par des points, des cellules et des type de cellules.
  • Polygonal Data Ensembles de primitives (points,lignes,polygones, triangles ou tout autre structures) utilisées pour représenter le modèle à tracer

ParaView dispose de reader adaptés à certain types de fichiers prédéfinis qui sont compatibles avec un grand nombre de logiciels. Voici la liste (en continuelle évolution) des principaux reader disponibles:

Nom Déscription
AVS UCD reader Dataset in AVS UCD format (.inp)
BYU reader Movie.BYU file (.g)
DEM reader Dataset in DEM format (.dem)
EnSight reader EnSight file (.case, .sos)
ExodusIIReader Exodus II file
Facet Reader Dataset in Facet format (.facet)
Gaussian Cube reader Gaussian Cube data file (.cube)
PDB reader PDB(Protein Data Bank) file
PLOT3D reader PLOT3D file (.xyz)
Phasta reader Dataset stored in the Phasta format (pht)
PLY reader PLY polygonal file (.ply)
PNG reader PNG (Portable Network Graphics) file (.png)
POP reader POP (Parallel Ocean Program) file (.pop)
PVD reader ParaView's PVD file format (.pvd)
SESAME reader SESAME data file (.sesame)
VRML reader VRML 2.0 file (.wrl)
VTK reader Legacy VTK files(.vtk, .vtp, .vtu, .vti, .vts, .vtr)
VTK partitioned reader Partitioned Legacy VTK files (.pvtk, .pvtu, .pvti, .pvts, .pvtr)
VTK Multi Block reader VTK Multi Block files(.vtm, .vtmb, .vtmg, .vthd, .vthb)
XDMF reader XDMF (eXtensible Data Model and Format) data file .xmf
XML reader VTK XML data file format

Les formats vtk ''simple legacy format''

Les formats propriétaire hérités du passé(simple legacy formats) sont les plus simples à utiliser. Ces formats sont issus de vtk et décrits de façon détaillée dans le document File formats for vtk. L'utilisateur a également la possibilité de définir son propre type de structures de données pour la lecture ou l'écriture.

Structure générale d'un fichier vtk

La structure générale d'un fichier vtk est la suivante :

# vtk DataFile Version x.x Header
Fichier vtk Titre au choix
ASCII - BINARY Type de données
DATASET type Type de Géométrie/topologie : STRUCTURED_POINTS STRUCTURED_GRID RECTILINEAR_GRID UNSTRUCTURED_GRID POLYDATA FIELD
POINT_DATA n CELL_DATA n Attributs des données (n=nb de points ou cellules)

Description de la géométrie

  • Points structurés
    DATASET STRUCTURED_POINTS
    DIMENSIONS nx ny nz
    ORIGIN x0 y0 z0 
    SPACING sx sy sz
    • nx ny nz = dimensions de la grille
    • x0 y0 z0 = origine
    • sx sy sz = espacement en x,y,z
  • Grille rectilinéaire
    DATASET RECTILINEAR_GRID
    DIMENSIONS nx ny nz
    X_COORDINATES nx [dataType]
    x0 x1...x(n-1) 
    Y_COORDINATES ny [dataType] 
    y0 y1...y(n-1) 
    Z_COORDINATES nz [dataType] 
    z0 z1...z(n-1) 
    • nx ny nz = dimensions de la grille
    • dataType = float ou int
  • Grille structurée
    DATASET STRUCTURED_GRID 
    DIMENSIONS nx ny nz  
    POINTS N [dataType ] 
    x0 y0 z0 
    x1 y0 z0 
    x0 y1 z0 
    x1 y1 z0 
    x0 y0 z1 
    ....   
    • N = nx * ny * nz
  • Grille non structurée
    DATASET UNSTRUCTURED
    GRID POINTS n
    dataType x0 y0 z0
    ...
    x(n-1) y(n-1) z(n-1)
    CELLS n size
    nbpoints0 i0 j0 k0 l0 ...
    nbpoints1 i1 j1 k1 l1 ...
    ...
    CELL_TYPES n
    type0
    type1
    ...
    typen
    • La grille non structurée est définie par des points du maillage(POINTS),des cellules(CELLS) et des types de cellules(CELL_TYPES).
    • CELLS = n nombre de cellules et size taille de la liste des coordonnées des cellules (nombre de valeurs pour représenter la liste des nbpoints qui définissent les points de coordonnées de chaque cellule).
    • nbpoints = nb de points de coordonnées pour définir une cellule
    • CELL_TYPES = n nombre de cellules
    • type = type de cellule (ligne,triangle,quadrilatère …)
  • Données Polygonales
    DATASET POLYDATA 
    POINTS nb_points dataType 
    x0 y0 z0 
    x1 y1 z1 
    ... 
    x(n-1) y(n-1) z(n-1)
    VERTICES nb_sommets size
    nbPoints0,i0, j0, k0, ... 
    nbPoints1,i1, j1, k1, ...
    ... 
    nbPoints(n-1), i(n-1), j(n-1), k(n-1),... 
    LINES nb_lignes size idem ... 
    POLYGONS nb_Polygons size idem... 
    TRIANGLE_STRIPS nb_triangles size 
    nbPoints0, i0, j0, k0, 
    nbPoints1, i1, j1, k1, 
    ... 
    nbPoints(n-1), i(n-1), j(n-1), k(n-1),...   
    • Les données polygonales peuvent être des triangles, polygones, lignes ou sommets (VERTICES) et consistent, pour chaque type, en une liste de (numéros de) points.
    • n = nombre total de points
    • dataType = float ou int
    • size = nombre total de valeurs à lire pour chaque type (vertices, lines, polygons ou triangles)
    • nbPoints0 = nombres de sommets du polygone (sommet, ligne, triangle)

Description des attributs

Les attributs (valeur) associés à une géométrie sont identifiés par un dataName :

  • Attributs scalaire SCALARS dataName dataType [nb_Comp] LOOKUP_TABLE tableName s0 s1 … sn-1 dataName = nom (par exemple température, pression,…) dataType = type float,int nb_comp est optionnel (nombre de composants, =1 par defaut) tableName = nom de la palette des couleurs(default pour avoir la palette par defaut) s1,s2,..,sn = les valeurs.
  • Attributs vecteurs VECTORS dataName dataType v0x v0y v0z v1x v1y v1z … v(n-1)x v(n-1)y v(n-1)z
  • Attributs Normales
  • Attributs tenseurs
  • Attributs champs

Exemples

La suite d'exemples représente le même graphique avec des structures de données différentes.

Exemple STRUCTURED_POINTS

# vtk DataFile Version 3.0 
# Exemple STRUCTURED_POINTS 
ASCII DATASET STRUCTURED_POINTS 
DIMENSIONS 6 4 1 
ORIGIN 0 0 0 
SPACING 1 1 1 
POINT_DATA 24 
SCALARS A float
LOOKUP_TABLE default 
 18.46
 45.00
 -3.51
 2.12
 8.65
 9.56
 14.11
 5.21
 16.44
 22.23
 13.95
 0.86
 -13.00
 17.34
 24.04
 26.91
 -2.98
 7.37
 15.80
 15.71
 -6.68
 1.44
 -1.05
 -1.40

Exemple STRUCTURED_GRID

# vtk DataFile Version 3.0
Exemple STRUCTURED_GRID
ASCII
DATASET STRUCTURED_GRID
DIMENSIONS 6 4 1
POINTS 24 float
 0 0 0
 1 0 0
 2 0 0
 3 0 0
 4 0 0
 5 0 0
 0 1 0
 1 1 0
 2 1 0
 3 1 0
 4 1 0
 5 1 0
 0 2 0
 1 2 0
 2 2 0
 3 2 0
 4 2 0
 5 2 0
 0 3 0
 1 3 0
 2 3 0
 3 3 0
 4 3 0
 5 3 0
POINT_DATA 24
SCALARS A float
LOOKUP_TABLE default
 18.46
 45.00
 -3.51
 2.12
 8.65
 9.56
 14.11
 5.21
 16.44
 22.23
 13.95
 0.86
 -13.00
 17.34
 24.04
 26.91
 -2.98
 7.37
 15.80
 15.71
 -6.68
 1.44
 -1.05
 -1.40

Exemple RECTILINEAR_GRID

# vtk DataFile Version 3.0
Exemple RECTILINEAR_GRID
ASCII
DATASET RECTILINEAR_GRID
DIMENSIONS 6 4 1
X_COORDINATES 6 float
0. 1. 2. 3. 4. 5.
Y_COORDINATES 4 float
0. 1. 2. 3
Z_COORDINATES 1 float
0. 
POINT_DATA 24
SCALARS A float
LOOKUP_TABLE default
 18.46
 45.00
 -3.51
 2.12
 8.65
 9.56
 14.11
 5.21
 16.44
 22.23
 13.95
 0.86
 -13.00
 17.34
 24.04
 26.91
 -2.98
 7.37
 15.80
 15.71
 -6.68
 1.44
 -1.05
 -1.40

Exemple UNSTRUCTURED_GRID

# vtk DataFile Version 3.0
# Exemple UNSTRUCTURED_GRID
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 9 FLOAT
0 0 0
0 1 0
0 2 0
1 2 0
1 1 0
1 0 0
2 0 0
2 1 0
2 2 0
CELLS 4 20 <-- Nb de cellules(4),taille de la liste(20)
4 0 5 4 1 <-- 4 points pour definir chaque cellule 
4 1 4 3 2
4 5 6 7 4
4 4 7 8 3
CELL_TYPES 4 <-- 4 types de cellule
9 9 9 9 <-- Type de chaque cellule (9 = VTK_QUAD)
POINT_DATA 9 <-- Valeur des données aux points de la grille
SCALARS Vitesse float <-- 1er scalaire
LOOKUP_TABLE default <-- Table des couleurs par défaut pour le scalaire vitesse
0
0
0
1
2
1
0
0
SCALARS Temperature float <-- 2em scalaire
LOOKUP_TABLE default <-- Table des couleurs par défaut pour le scalaire temperature
1.2
2.1
2.5
3.5
1.3
1.4
1.6

Exemple POLYDATA

# vtk DataFile Version 1.0
Exemple POLYDATA
ASCII
DATASET POLYDATA
POINTS 22 float
0. 0. 0.
0. 2. 0.
0. 1. 0.
1. 1. 0.
1. 0. 0.
1. 2. 0.
2. 0. 0.
3. 0. 0.
2. 2. 0.
3. 2. 0.
2. 1. 0.
3. 1. 0.
4. 0. 0.
5. 0. 0.
4. 2. 0.
6. 0. 0.
7. 0. 0.
6. 2. 0.
8. 0. 0.
9. 0. 0.
8. 2. 0.
9. 2. 0.

LINES 15 45
2 0 1
2 4 5
2 2 3
2 6 8
2 6 7
2 10 11
2 8 9
2 12 13
2 12 14
2 15 16
2 15 17
2 18 19
2 20 21
2 18 20
2 19 21

Les formats XML

Ce format qui utilise la syntaxe XML (eXtensible Makup Langage, successeur de HTML) a les caractéristiques suivantes : - plus délicat à utiliser - permet de réaliser des E/S parallèles - compression portables des données. Il existe deux types de structures de fichiers vtk XML selon une utilisation séquentielle ou parallèle des données. Les fichiers définis pour une utilisation parallèle sont répartis en plusieurs parties, chaque processus est attaché à une ou plusieurs parties. Un fichier de ce type ne contient pas de données mais une description de la structure des données et des liens vers les différents fichiers séquentiels. Les différentes structures de données des fichiers vtk simple legacy formats sont également disponibles pour les fichiers XML.

Structures de données et suffixe pour les fichiers XML séquentiels :

  • ImageData (.vti),
  • RectilinearGrid (.vtr),
  • StructuredGrid (.vts),
  • UnstructuredGrid(.vtu),
  • PolyData (.vtp),

Structures de données et suffixe pour les fichiers XML parallèles :

  • PImageData (.pvti),
  • PRectilinearGrid (.pvtr),
  • PStructuredGrid (.pvts).
  • PUnstructuredGrid(.pvtu)
  • PPolyData (.pvtp),

La syntaxe générale est la suivante :

 <VTKFile type=?type? version=?0.1?>

 ...

 </VTKFile>
  
type : un des précédents types (ImageData,RectilinearGrid,...)

version : File version number in ?major.minor? format.

Dans chaque fichier on trouve le descriptif de la partie representée (Piece Extent) ainsi que la totalité de la zone à représenter (WholeExtent)

Structure de fichier XML séquentiel

  • ImageData
<VTKFile type=”ImageData” ...>
<ImageData WholeExtent=”x1 x2 y1 y2 z1 z2”
Origin=”x0 y0 z0” Spacing=”dx dy dz”>
<Piece Extent=”x1 x2 y1 y2 z1 z2”>
<PointData>...</PointData>
<CellData>...</CellData>
</Piece>
</ImageData>
</VTKFile>
  • RectilinearGrid
 <VTKFile type=”RectilinearGrid” ...>
<RectilinearGrid WholeExtent=”x1 x2 y1 y2 z1 z2”>
<Piece Extent=”x1 x2 y1 y2 z1 z2”>
<PointData>...</PointData>
<CellData>...</CellData>
<Coordinates>...</Coordinates>
</Piece>
</RectilinearGrid>
</VTKFile> 
  • StructuredGrid
 <VTKFile type=”StructuredGrid” ...>
<StructuredGrid WholeExtent=”x1 x2 y1 y2 z1 z2”>
<Piece Extent=”x1 x2 y1 y2 z1 z2”>
<PointData>...</PointData>
<CellData>...</CellData>
<Points>...</Points>
</Piece>
</StructuredGrid>
</VTKFile> 
  • UnstructuredGrid
 <VTKFile type=”UnstructuredGrid” ...>
<UnstructuredGrid>
<Piece NumberOfPoints=”#” NumberOfCells=”#”>
<PointData>...</PointData>
<CellData>...</CellData>
<Points>...</Points>
<Cells>...</Cells>
</Piece>
</UnstructuredGrid>
</VTKFile> 
  • PolyData
<VTKFile type=”PolyData” ...>
<PolyData>
<Piece NumberOfPoints=”#” NumberOfVerts=”#” NumberOfLines=”#”
NumberOfStrips=”#” NumberOfPolys=”#”>
<PointData>...</PointData>
<CellData>...</CellData>
<Points>...</Points>
<Verts>...</Verts>
<Lines>...</Lines>
<Strips>...</Strips>
<Polys>...</Polys>
</Piece>
14 VTK 4.2 File Formats
</PolyData>
</VTKFile> 

Structure de fichier XML parallèle

  • PImageData
<VTKFile type=”PImageData” ...> 
<PImageData WholeExtent=”x1 x2 y1 y2 z1 z2” 
GhostLevel=”#” Origin=”x0 y0 z0” Spacing=”dx dy dz”> 
<PPointData>...</PPointData> 
<PCellData>...</PCellData> 
<Piece Extent=”x1 x2 y1 y2 z1 z2” Source=”imageData0.vti”/> 
... 
</PImageData> 
</VTKFile>
  • PRectilinearGrid
<VTKFile type=”PRectilinearGrid” ...> 
<PRectilinearGrid WholeExtent=”x1 x2 y1 y2 z1 z2” 
GhostLevel=”#”><PPointData>...</PPointData> 
<PCellData>...</PCellData> 
<PCoordinates>...</PCoordinates> 
<Piece Extent=”x1 x2 y1 y2 z1 z2” 
Source=”rectilinearGrid0.vtr”/> 
... 
</PRectilinearGrid> 
</VTKFile>
  • PStructuredGrid
<VTKFile type=”PStructuredGrid” ...> 
<PStructuredGrid WholeExtent=”x1 x2 y1 y2 z1 z2” 
GhostLevel=”#”> 
<PPointData>...</PPointData> 
<PCellData>...</PCellData> 
<PPoints>...</PPoints> 
<Piece Extent=”x1 x2 y1 y2 z1 z2” 
Source=”structuredGrid0.vts”/> 
... 
</PStructuredGrid> 
</VTKFile> 
  • PUnstructuredGrid
<VTKFile type=”PUnstructuredGrid” ...> 
<PUnstructuredGrid GhostLevel=”0”> 
<PPointData>...</PPointData> 
<PCellData>...</PCellData> 
<PPoints>...</PPoints> 
<Piece Source=”unstructuredGrid0.vtu”/> 
... 
</PUnstructuredGrid> 
</VTKFile>
  • PPolyData
<VTKFile type=”PPolyData” ...> 
<PPolyData GhostLevel=”#”> 
<PPointData>...</PPointData> 
<PCellData>...</PCellData> 
<PPoints>...</PPoints> 
<Piece Source=”polyData0.vtp”/> 
... 
</PPolyData> 
</VTKFile> 

Documentation