1 / 60

Cours Vtk

Cours Vtk. Marcela Hernández Hoyos CREATIS Janvier 2000. Contenu. Qu’est-ce que c’est ? Pourquoi VTK? Documentation Syntaxe POO : Quelques concepts de base Modèles d'objets VTK Modèle de visualisation Modèle graphique Modèle de traitement Exemple d'une application

loyal
Download Presentation

Cours Vtk

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cours Vtk Marcela Hernández Hoyos CREATIS Janvier 2000

  2. Contenu • Qu’est-ce que c’est ? • Pourquoi VTK? • Documentation • Syntaxe • POO : Quelques concepts de base • Modèles d'objets VTK • Modèle de visualisation • Modèle graphique • Modèle de traitement • Exemple d'une application • Tcl/Tk & Vtk & C++

  3. Qu'est-ce que c'est ? Visualization ToolKit Système Orienté Objet Composant de communication avec des langages interpretés : Tcl/Tk, Java, Python Niveau d'application (C++,Tcl/Tk) VTK Librairie de classes C++ (compilée) Librairie graphique (openGL)

  4. Pour quoi VTK? • Gratuit • Code source C++ • Vous avez le contrôle • POO • Extensible • Possibilité de création de nouvelles classes • Plate-forme/librairie indépendante • Algorithmes avancés et très utiles • Conversion des données en images • Nombreux utilisateurs + liste de discussion

  5. Documentation • Livres • The VisualizationToolkit, 2nd edition • Schroeder, Martin, Lorenson. Prentice Hall. • VTK User's Guide • Schroeder, Martin. Kitware, Inc. • Page web • http://www.kitware.com /vtk.html • Software, FAQ’s, listes de discussion, exemples, links, etc • Autres exemples • Répertoire d'installation VTK • graphics/examplesTcl D. Fibroulet

  6. Syntaxe utilisée dans ces notes • Pour les méthodes (fonctions) • Description d'une méthode • Pseudo-syntaxe de la méthode • code Tcl/Tk • Exemple • Ajouter / Supprimer un renderer • AddRenderer (vtkRenderer) • RemoveRenderer (vtkRenderer) • vtkRendererWindow myWindow • vtkRenderer myRenderer • myWindow AddRenderer myRenderer

  7. POO ??? Système Orienté Objet VTK Librairie de classes C++ (compilée)

  8. Programmation Orientée Objet Concepts de base

  9. POO : Quelques concepts de base Structure de données Champs Fonctions Programmation procedurale Variables Classe POO Méthodes Attributs Objet

  10. Exemple - Programmation procédurale Structure de données point2D *p2D; point3D *p3D; . . . p2D = malloc … p3D = malloc … . . . printPoint2D(p2D); printPoint3D(p3D); typedef struct { int x; int y; } point2D; typedef struct { int x; int y; int z; } point3D; void printPoint2D(point2D *p) { printf("x:%d, y:%d",p->x, p->y) } void printPoint3D(point3D *p) { printf("x:%d, y:%d,z:%d",p->x, p->y,p->z) } Variable Champs Fonction Appel aux fonctions

  11. Exemple - POO Classe point2D *p2D = point2D :: New; point3D *p3D = point3D :: New; . . . . . . p2D -> print(); p3D->print(); class point2D { public: void print(); point2D *New(); protected: int x; int y; } class point3D { public: void print(); point3D *New(); protected: int x; int y; int z; } Objets Méthodes Attributs Appel aux méthodes

  12. VTKUn système de Visualisation Orienté Objet

  13. Exemple - Sphère catch {load vtktcl};source vtkInt.tcl;source colors.tcl vtkSphereSource sphere sphere SetRadius 5 sphere SetThetaResolution 36 sphere SetPhiResolution 18 vtkPolyDataMapper isoMapper isoMapper SetInput [sphere GetOutput] isoMapper ScalarVisibilityOn vtkActor isoActor isoActor SetMapper isoMapper eval [isoActor GetProperty] SetColor $peacock vtkRenderer ren1 ren1 AddActor isoActor ren1 SetBackground 1 1 1 vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize 500 500 vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize Source Mapper Actor Renderer Render Window

  14. Exemple - Volume

  15. Vtk - Système de Visualisation • Lecture, traitement et affichage de données sous la forme d'images • Deux étapes • Conversion de données en primitives graphiques • Points, lignes, triangles, … • Conversion de données graphiques en images • Affichage des primitives graphiques à l'écran • Les objets VTK sont organisés en trois modèles: • Modèle de visualisation • Étape 1 : Représentation géométrique des données • Modèle graphique • Étape 2 : Rendu de la représentation géométrique • Modèle de traitement • Traitement d'images

  16. Vtk - Système de Visualisation Modèle de Visualisation Données Source (Procedural) Création de nouvelles données Modèle graphique Modèle de Traitement Source (Reader) Mapper Lecture Transformation des données en primitives graphiques Filter Affichage Mapper (Writer) Écriture

  17. Modèle de Visualisation

  18. Modèle de visualisation • Objectif • Transformer les données en primitives graphiques • Construire la représentation géométriques des objets à afficher • Basé sur un paradigme "pipeline" • La transformation des données est décomposée en modules • Chaque module réalise une opération précise sur les données (transformation) • Les modules sont connectés entre eux pour former un réseau ou pipeline • Les données circulent à l'intérieur du pipeline, en passant d'un module à l'autre

  19. Modèle de visualisation • Deux types d'objets: • Objets "data" • Données qui circulent dans le pipeline • Appelés datasets • Objets "process" • Modules ou composants algorithmiques du pipeline Process A Process B Process C entrée sortie dataset A dataset B

  20. Objets Process Objet Process Source Filter Mapper • Démarre le pipeline • Lecture de données externes (images) • Génération de nouvelles données (graphiques) • Traite les objets donnée • Reçoit une ou plusieurs entrées • Génère une ou plusieurs sorties • Finit le pipeline • Génère des primitives graphiques • Communique le pipeline de visualisation avec le modèle graphique  1 entrée aucune entrée  1 entrée Source Filter Mapper  1 sortie  1 sortie aucune sortie

  21. Pipeline de visualisation Filter Source objet data objet data Modèle graphique Mapper Filter Filter Source objet data objet data objet data

  22. Exemple catch {load vtktcl};source vtkInt.tcl;source colors.tcl vtkSphereSource sphere sphere SetRadius 5 sphere SetThetaResolution 36 sphere SetPhiResolution 18 vtkPolyDataMapper isoMapper isoMapper SetInput [sphere GetOutput] isoMapper ScalarVisibilityOn vtkActor isoActor isoActor SetMapper isoMapper eval [isoActor GetProperty] SetColor $peacock vtkRenderer ren1 ren1 AddActor isoActor ren1 SetBackground 1 1 1 vtkRenderWindow renWin renWin AddRenderer ren1 renWin SetSize 500 500 vtkRenderWindowInteractor iren iren SetRenderWindow renWin iren Initialize Source Mapper Actor Renderer Render Window

  23. Objets Data ou Datasets objet data ou dataset • Un dataset est composé de : • Structure topologique (liste de cells) • Détermine la forme de l'objet (triangle, sphère, maillage, etc.) • Ne varie pas avec certaines transformations géométriques (translation, rotation et changement d'échelle) • Un objet contient une ou plusieurs cells • Structure géométrique (liste de points) • Instanciation de la structure topologique • Coordonnées des points qui conforment les cells • Attributs • Information complémentaire associée aux points ou aux cells (température en un point, masse d'une cell, etc)

  24. Cells 3 6 7 5 1 2 4 3 2 0 1 0 Objet Maillage = liste de triangles Cell Triangle = liste de points • Atomes qui conforment un dataset • Une cell est une organisation topologique de points (coordonnées x,y,z) • Définie par : • Type • Liste ordonnée de points Tétraèdre Hexaèdre

  25. Types de cells Vertex Polyvertex Line Polyline Triangle Triangle Strip Quadrilateral Pixel Polygon Tetrahedron Hexahedron Voxel

  26. Types de Datasets Points structurés Grille rectiligne vtkStructuredPoints Images 2D et 3D vtkRectilinearGrid Maillage carré Grille structurée Données polygonales vtkStructuredGrid Maillage 2D vtkPolyData Points, lignes, polygones Grille non structurée vtkUnstructuredGrid Maillage 2D / 3D non structuré

  27. Exemples de maillages • Les cells peuvent avoir des différentes formes et tailles • 2D : triangles, quadrilatéraux, ... • 3D : tétraèdres, hexaèdres, pyramides, … • Les maillages peuvent contenir un ou plusieurs type de cells

  28. Type des attributs associés aux points et aux cells d'un dataset a11 a12 a13 a21 a22 a23 a31 a32 a33 Scalaire Vecteur Normal vtkScalars Valeur simple vtkVectors Magnitude et direction (3D) vtkNormals Direction (3D) s (u,v,w) (nx,ny,nz) |n| = 1 Coordonnée de texture Tenseur t vtkTCoords Correspondance entre un indice et une carte de textures vtkTensors Matrice n x n 2D: (u,v) 3D: (u,v,w) s Tableau de données Tableau 0 Tableau 1 . . . Tableau n-1 vtkFieldData Tableau de tableaux Chaque tableau peut être de différent type

  29. Modèle Graphique

  30. Modèle graphique • Objectif • Transformer des données graphiques en images et les afficher à l'écran • Regroupe les caractéristiques d'un système graphique 3D (infographie) • Les principales classes VTK du modèle graphique: • Render Window • Renderer • Light • Camera • Actor • Property • Transform • Mapper

  31. Modèle graphique Render Window Renderer : Camera Light Actor : Property Transform Mapper

  32. Render Window • Gère la(s) fenêtre(s) dans laquelle on va afficher les images ou les objets graphiques • Fonctionnalité par défaut d'une fenêtre windows • Indépendante des dispositifs graphiques • Gère l'ensemble de renders contenus dans la fenêtre • Plusieurs renderers peuvent dessiner dans une même fenêtre (render window) pour créer une scène (image finale) Renderer

  33. Classe vtkRenderWindow • Méthodes • Ajouter / Supprimer un renderer • AddRenderer (vtkRenderer) • RemoveRenderer (vtkRenderer) • Configuration de l'écran • FullScreenOn () • FullScreenOff () • BordersOn () • BordersOff ()

  34. Renderer • Coordonne la(s) source(s) de lumière, la camera et les actors pour générer l'image d'une scène • Une scène comporte : • Au moins un actor, une camera et une source de lumière • Si les objets camera et light ne sont pas définis, ils sont créés automatiquement par le renderer Light : représente et manipule l'éclairage de la scène (en 3D) Actor : ce que l'on voit Camera : détermine comment projeter une géométrie 3D sur une image 2D

  35. Classe vtkRenderer • Méthodes • Ajouter/Supprimer des actors et des lights • AddActor (vtkActor) / RemoveActor (vtkActor) • AddLight (vtkLight) / RemoveLight (vtkLight) • Déterminer la camera à utiliser pour le rendu • SetActiveCamera (vtkCamera) • Créer l'image résultant du rendu • Render • Conversion de coordonnées • ViewToWorld (float, float, float) / void WorldToView (float, float, float) y y Monde Vue x x z

  36. Classe vtkLight • Méthodes • Fixer la couleur de la lumière • SetColor (float ,float ,float) / GetColor () • Déterminer la position de la source • SetPosition (float ,float ,float ) / GetPosition () • Définir l'intensité (de 0 à 1) • SetIntensity (float ) / GetIntensity () • Allumer / Éteindre • SwitchOn () • SwitchOff ()

  37. Classe vtkCamera • Méthodes • Fixer la position de la camera en coordonnées monde • SetPosition (float ,float ,float ) / GetPosition () • Déterminer la position du point focal de la camera • SetFocalPoint (float ,float ,float ) / GetFocalPoint () • Calculer la distance entre la position de la camera et celle du point focal • ComputeDistance () Plan arrière de clipping Direction de projection Point focal Position Plan frontal de clipping

  38. Actor • Objet dessiné par un renderer dans une scène • Un actor ne représente pas directement sa géométrie ni son apparence • Celles-ci sont définies en termes de : • Property • Mapper • Transform Actor

  39. Classe vtkActor • Méthodes • Associer l'objet property qui détermine les propriétés d'apparence de l'actor • SetProperty (vtkProperty) / GetProperty () • Un objet property est crée par défaut • Plusieurs actors peuvent partager le même objet property • Associer l'objet mapper qui détermine la géométrie de l'actor • SetMapper (vtkMapper) / GetMapper () • Définir la matrice de transformations qui détermine l'échelle, la position et l'orientation de l'actor • SetUserMatrix (vtkMatrix4x4 *) • Généralement • Il ne faut pas définir explicitement les propriétés ni les transformations. Des valeurs par défaut son déterminées lors de la création de l'actor

  40. Property • Détermine l'apparence de la surface d'un actor • Classe VTK : vtkProperty • Méthodes • Représentation de la géométrie de la surface • SetRepresentationToPoints () • SetRepresentationToWireframe () • SetRepresentationToSurface () • Déterminer la couleur de la surface • SetColor (float ,float ,float ) • Fixer l'opacité de la surface (0 transparent, 1.0 opaque) • SetOpacity (float )

  41. Mapper • Chargé du rendu (rendering) • Lie le modèle de visualisation et le modèle graphique • Détermine la géométrie de l'actor • Combinaison de points (sommets), lignes, polygones, etc • Définit la couleur des sommets • Fait référence à une palette de couleurs • Tout actor doit avoir un mapper associé pour pouvoir être affiché à l'écran • Classes VTK : vtkMapper, vtkPolyDataMapper, vtkDataSetMapper

  42. Classe vtkPolyDataMapper • Méthodes • Spécifier les données d'entrée au mapper (données à afficher) • SetInput (vtkPolyData) • Associer la palette de couleurs • SetLookupTable (vtkLookupTable) • Créer une palette de couleurs par défaut • CreateDefaultLookupTable () • Déterminer si le rendu est fait de manière immédiate ou pas • ImmediateModeRenderingOn () • ImmediateModeRenderingOff ()

  43. Transform Rotation Translation Changement d'échelle é ù 1 0 0 0 ê ú q - q 0 cos sin 0 ê ú TR = ê ú q q x 0 sin cos 0 ê ú 0 0 0 1 • Garde une pile de matrices de transformation • Une seule matrice courante de transformation • Fournit de méthodes pour effectuer les opérations de translation, changement d'échelle et rotation ë û Translation (tx,ty,tz) Chgt d'échelle (sx,sy,sz) Rotation q autour de x

  44. Classe vtkTransform • Méthodes • Créer d'une matrice identité • Identity () • Créer une matrice de rotation et la concaténer avec la matrice courante de transformation • RotateX (float), RotateY (float ), RotateZ (float ) • Changer d'échelle la matrice courante de transformation • Scale (float ,float ,float ) • Déplacer la matrice courante de transformation • Translate (float ,float ,float ) • Transposer la matrice courante de transformation • Transpose () • Invertir la matrice courante de transformation • Inverse ()

  45. Modèle de Traitement

  46. Modèle de traitement • Objectif • Traitement d'images • Implémentation particulière du pipeline de visualisation pour le traitement de datasets de type "Points structurés" (vtkStructuredPoints) • 2D • Images • Bitmaps • 3D • Volumes (piles de datasets 2D) • Classes spécialisées pour : • Lecture • Ecriture • Affichage • Traitement

  47. Lecture d'images (2D et 3D) • vtkImageReader • Lecture de n'importe quel type d'image • Il faut indiquer les dimensions et le type de l'image (pour sauter l'entête) • Les volumes sont lus comme une séquence d'images • Possibilité de lire un région d'intérêt (ROI/VOI) • vtkBMPReader • Images BMP • vtkTIFFReader • Images TIFF

  48. Exemple de lecture • vtkImageReader monReader • monReader SetDataByteOrderToLittleEndian • monReader SetDataExtent 0 255 0 255 34 85 • monReader SetFilePrefix "000" • monReader SetFilePattern "%s%d.ima" • monReader SetDataScalarTypeToUnsignedShort • monReader Update

  49. Écriture d'images • vtkImageWriter • Ecriture de n'importe quel type d'image • Le type de l'image à sauvegarder est le même que celui de l'image en entrée • Les dimensions déterminent si les données doivent être sauvegardés en plusieurs fichiers • vtkBMPWriter • vtkTIFFWriter

  50. Affichage d'images • Mapper • vtkImageMapper • vtkDataSetMapper • vtkPolyDataMapper • vtkVolumeMapper • Actor • vtkActor • vtkActor2D • Renderer • vtkRenderer

More Related