Marcela Hernández Hoyos CREATIS Janvier 2000

Slides:



Advertisements
Présentations similaires
Chaîne de Synthèse Réel Modélisation Rendu Image Fichier Scène
Advertisements

Module 5 : Implémentation de l'impression
Constructive Volume Geometry (CVG) Article de Min Chen & John V. Trucker COMPUTER GRAPHICS Benoît Capelli – Stéphane Renaudie DESS IMM
LOD et Progressive Meshes (maillages progressifs) Hugue Hoppes 1996
A propos de java Sun, fin 1995 C++ nettoyé semi-interprété
Introduction à Java - les paquetages -
C.
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Design Pattern MVC En PHP5.
Chap. 1 Structures séquentielles : listes linéaires
Assistance à distance Parfois on se sent bien seul face à un problème informatique surtout si on n’est qu’un simple utilisateur. Lorsqu'un problème survient.
Algorithme et programmation
Développement d’applications web
Page 1 Introduction à ATEasy 3.0 Page 2 Quest ce quATEasy 3.0? n Ensemble de développement très simple demploi n Conçu pour développer des bancs de test.
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
IFT3730: Infographie 3D Transformations Géométriques
Transformations de visualisation en OpenGL
Administration de bases de données spatiales avec SavGIS
Interface CWIPI Thierry Morel Formation OpenPALM avril 2012
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
Configuration de Windows Server 2008 Active Directory
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
FICHIERS : Définition : Algorithme général:
DESS CCI POO-JAVA TD n°7 exercice n°1
Modélisation géométrique à l’aide d’un maillage
Structures de données IFT-2000
Modèles d’implantation
Projet Génie Logiciel & UML, Bases de Données & Interfaces
OBJETS ÉLÉMENTAIRES DANS L’ESPACE À TROIS DIMENSIONS
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
Console MMC de Windows 2000 Présenté par Suzanne Savoie Cours 4.
Package IFT1025 Jian-Yun Nie.
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
Module 5 : Publication de ressources dans Active Directory
Standard Template Library
Texture 2D en PGC++.
IFT3355: Infographie Transformations Géométriques
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Patrons de conceptions de créations
Animateur : Med HAIJOUBI
Structures des données
(Vient du grec et signifie « Peut prendre plusieurs formes »)
Créer son site web Chapitre II. Les caractères spéciaux Les navigateurs ne reconnaissent pas les caractères spéciaux. Heureusement chaque caractère possède.
La notion de type revisitée en POO
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
11/04/ L'héritage Cours 7 Cours 7.
Programmation objet La base.
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Tutorat en bio-informatique
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 6 Transformation et animation de plusieurs modèles 3D avec XNA –Chargement des modèles 3D (modèle.
Initiation au JavaScript
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
Introduction à SVG Scalable Vector Graphic. Informations ● Plus d'informations ici (draft, tutoriaux, outils... ): –
Visualisation des flots optiques en 3D
Introduction aux technologies du jeux-vidéo Steve Gury
Premières notions de la 3D
Dreamweaver Séance 1.
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Dreamweaver le retour Avec Les Formulaires Les Calques
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Sommaire : -A propos des images importées -Les boutons et l’interactivité dans la scène -Textes dynamiques -Les clips (les liaisons) -Les sons -Les composants.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Transcription de la présentation:

Marcela Hernández Hoyos CREATIS Janvier 2000 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 Tcl/Tk & Vtk & C++

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) Système Orienté Objet

Pour quoi VTK? Gratuit Code source C++ POO Extensible 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

Documentation Livres Page web Autres exemples 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

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

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

Programmation Orientée Objet Concepts de base

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

Exemple - Programmation procédurale typedef struct { int x; int y; } point2D; 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) Structure de données point2D *p2D; point3D *p3D; . p2D = malloc … p3D = malloc … printPoint2D(p2D); printPoint3D(p3D); Variable Champs Fonction Appel aux fonctions

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

VTK Un système de Visualisation Orienté Objet

Exemple - Sphère Source Mapper Actor Renderer Render Window 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

Exemple - Volume

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

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

Modèle de Visualisation

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

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 entrée Process B Process C sortie dataset A dataset B

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 aucune entrée  1 entrée  1 entrée Source Filter Mapper  1 sortie  1 sortie aucune sortie

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

Exemple Source Mapper Actor Renderer Render Window 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

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)

Cells 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 1 3 2 1 3 4 5 6 7 2 Tétraèdre Hexaèdre Maillage = liste de triangles Triangle = liste de points Objet Cell

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

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é

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

Type des attributs associés aux points et aux cells d'un dataset 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 a11 a12 a13 a21 a22 a23 a31 a32 a33 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

Modèle Graphique

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

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

Render Window Renderer 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)

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

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

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

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 ()

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

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

Classe vtkActor Méthodes Généralement 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

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 )

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

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 ()

Transform 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 Changement d'échelle Rotation TR x = - é ê ù ú 1 cos sin q ë û Translation (tx,ty,tz) Chgt d'échelle (sx,sy,sz) Rotation q autour de x

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 ()

Modèle de Traitement

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

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

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

Écriture d'images vtkImageWriter vtkBMPWriter vtkTIFFWriter 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

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

Traitement vtkImageAnisotropicDiffusion2D/3D Lissage par la méthode de diffusion anisotrope vtkImageContinuousDilate3D (vtkImageContinuousErode3D) Opérations morphologiques de dilatation/érosion vtkImageCityBlockDistance Carte de distances 1,2 or 3D vtkImageFFT Transformée de Fourier vtkImageGaussianSmooth Filtrage gaussien

Traitement vtkImageGradient vtkImageMarchingCubes vtkImageMedian3D Gradient de l'image vtkImageMarchingCubes Génération d'isosurfaces (rendu de surfaces) vtkImageMedian3D Filtrage médian vtkImageResample Re-échantillonnage d'une image avec interpolation linaire vtkImageSkeleton2D Squelettisation d'images 2D

Traitement vtkImageSobel2D/3D vtkImageThreshold Opérateur de sobel vtkImageThreshold Seuillage vtkVolumeRayCastIsosurfaceFunction Rendu surfacique d'un volume vtkVolumeRayCastMIPFunction Création de l'image MIP (maximum intensity projection) d'un volume

Exemple d'une Application

Tcl/Tk & VTK & C++

Vtk & C++ VTK est une librairie de classes C++ Pour programmer : Aucun problème de communication Pour programmer : Inclure les fichier "headers" correspondants (.h) Programmer en C++ #include "vtk.h" #include "vtkImageReader.h" #include "vtkImageData.h" #include "vtkImageCache.h" #include "vtkScalars.h" extern "C" { #include "idvol.h" } Pour programmer en même temps avec libido (C)

Librairie de classes C++ VTK et Tcl/Tk VTK Composant de communication avec des langages interpretés : Tcl/Tk, Java, Python Tcl/Tk Librairie de classes C++ (compilée) En Tcl Charger la librairie (load vtktcl) Pour chaque classe VTK Il existe une nouvelle commande Tcl pour créer les objets Une fois l'objet est crée, le nom de l'objet devient une commande pour appeler ses méthodes

Exemple Charger la librairie Commande Tcl vtkActor load vtktcl vtkActor actorToto actorToto print actorToto SetDebug 1 puts [actorToto GetDebug] set property [actorToto GetProperty] $property Print $property SetColor 1 0 0 puts [$property GetColor] Charger la librairie Commande Tcl vtkActor Nouvelle commande actorToto Nouvelle commande $property

Interface graphique du logiciel Normalement Les "Render Window" sont des fenêtres indépendantes Le logiciel aura une fenêtre séparée pour chaque render window Pour combiner les Render Window (de VTK) et les objets graphiques d'interface Tk dans une seule fenêtre Widget vtkTkRenderWidget C'est un widget Tk comme les autres Possède une méthode spéciale pour communiquer avec VTK vtkRenderer monRenderer vtkTkRenderWidget .maFenetre -width 300 -height 300 set RenWin [.maFenetre GetRenderWindow] $RenWin AddRenderer monRenderer

Communication avec DLLs Logiciel Tcl/Tk DLL C++ avec VTK Création d'un objet VTK en Tcl/Tk et manipulation en C++ Récupérer le pointeur de l'objet (adresse) avec la méthode print Passer l'adresse à la fonction de la dll (avec le cast correspondant) VTK VTK