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 Voir le tutoriel: http://rbwhitaker.wikidot.com/mesh-by-mesh-animation 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 9
Transformation et animation de plusieurs modèles 3D avec XNA Animation des modèles (sans la transformation: mesh.ParentBone.Transform 10
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() # triangles # sommets
Affichage de triangles (cube) Affichage dans la méthode Draw()
Affichage de triangles (cube) Affichage dans la méthode Draw() 25
Constitution des équipes 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 (28 février 2017) objets modélisés visualisation des objets animation simple dans l’espace