GRAPHISME PAR ORDINATEUR SIF-1032
Contenu du cours 6 Transformation et animation de plusieurs modèles 3D avec XNA –Chargement des modèles 3D (modèle multi-mesh) –Création des matrices de transformation –Animation des modèles Affichage de triangles –Tampon de sommets –Tampon d’indices (cube de couleur)
Transformation et animation de plusieurs modèles 3D avec XNA Création des variables d’instance et initialisation des matrices world, view et projection (perspective) permettant l’animation d’un hélicoptère (dans la classe game) Chargement du modèle (multi-mesh) dans la méthode LoadContent()
Transformation et animation de plusieurs modèles 3D avec XNA Mise-à-jour des variables de transformation de modèles dans la méthode Update() Animation des modèles (voir la méthode DrawModel())
Transformation et animation de plusieurs modèles 3D avec XNA Animation des modèles (méthode DrawModel()) –Les transformations de chaque modèle 3D (mesh) sont stockées dans la matrice meshWorldMatrix[] –model.Meshes.Count donne le nombre de meshes composant le modèle 3D –model.Meshes[index] donne accès à la mesh indexée par l’indice index –Meshes[0] : fuselage –Meshes[1] : rotor principal –Meshes[2] : rotor arrière –La matrice world découle de la transformation de la mesh relative à son parent, suivie de la transformation de la mesh elle-même et de la transformation globale (tout le modèle 3D)
Transformation et animation de plusieurs modèles 3D avec XNA Animation des modèles (méthode Draw())
Transformation et animation de plusieurs modèles 3D avec XNA Animation des modèles (méthode Draw()) –La transformation du modèle 3D (mesh) de la matrice meshWorldMatrix[0] appliquée au fuselage (translation de (0, 0,0)) –La transformation du modèle 3D (mesh) de la matrice meshWorldMatrix[1] appliquée au rotor principal (rotation par rapport à l’axe y) –La transformation du modèle 3D (mesh) de la matrice meshWorldMatrix[2] appliquée au rotor arrière (translation de (0, -0.25, -3.4) pour placée le rotor à l’origine suivie d’une rotation par rapport à l’axe x, suivie d’une translation de (0, 0.25, 3.4) pour replacer le rotor à sa place –
Transformation et animation de plusieurs modèles 3D avec XNA Animation des modèles
Transformation et animation de plusieurs modèles 3D avec XNA Animation des modèles
Transformation et animation de plusieurs modèles 3D avec XNA Animation des modèles (sans la transformation: mesh.ParentBone.Transform
Affichage de triangles Ajout de variables d’instance permettant la gestion des triangles –Création de notre propre objet BasicEffect –Création d’un objet VertexBuffer qui contiendra les sommets des triangles
Affichage de triangles Instanciation des objets dans LoadContent() –Instanciation de l’objet BasicEffect –Création et instanciation d’objets VertexPositionColor[] pour stocker la position et la couleur de chaque sommet –Instanciation de l’objet VertexBuffer qui contiendra les sommets des triangles
Affichage de triangles Affichage du triangle dans Draw() –Initialisation de l’objet BasicEffect (matrices de tranformation et vertex coloring) –La liste des sommets est passée à la carte graphique par le méthode SetVertexBuffer(vertexBuffer) –La méthode DrawPrimitives() spécifie le type de primitive (triangle list) à afficher en mode rasterized
Affichage de triangles Affichage du triangle dans Draw()
Affichage de triangles (tétrahèdre) Affichage de triangles: Ajout dans la classe Game1
Affichage de triangles (tétrahèdre) Affichage de triangles: liste de sommets dans LoadContent()
Affichage de triangles (tétrahèdre) Affichage de triangles: Changement de la vue dans Update()
Affichage de triangles (tétrahèdre) Affichage de triangles dans la méthode Draw()
Affichage de triangles (tétrahèdre) Affichage de triangles dans la méthode Draw()
Affichage de triangles (liste d’indices: cube) Une liste d’indices permet de spécifier des triangles sans avoir à générer la liste complète des sommets (ex: cube => 12 triangles X 3 sommets = 36 sommets VS 8 sommets et 12 triangles spécifiés à partir d’une liste d’indices dans la tables des sommets. Ajout des variable d’instance dans la classe Game1
Affichage de triangles (cube) Instanciation et initialisation de la liste de sommets et d’indices dans la méthode LoadContent()
Affichage de triangles (cube) Instanciation et initialisation de la liste de sommets et d’indices dans la méthode LoadContent()…
Affichage de triangles (cube) Affichage dans la méthode Draw()
Affichage de triangles (cube) Affichage dans la méthode Draw()
Affichage de triangles (cube) Affichage dans la méthode Draw()
Projet de session Constitution des équipes Choix du projet (animation, image de synthèse, objets impliqués) Choix du modèle de représentation des objets Répartition initiale des tâches (important) Premier échéancier (12 mars 2012) –objets modélisés –visualisation des objets –animation simple dans l’espace