Les bases de la programmation 3D
CHAPITRE 12
291
vertices[15].TextureCoordinate = new Vector2(1, 0);
vertices[15].Color = Color.Red;
// …
}
Dans l’extrait de code précédent, les coordonnées de texture sont appliquées de telle
façon que la texture apparaît à cheval sur deux face du cube. Le résultat est visible sur la
figure 12-24.
Déplacer un objet avec les transformations
À la section « Déplacer la caméra », nous avons vu comment nous promener dans un monde
en 3D en déplaçant la caméra. Nous allons à présent voir une autre méthode pour arriver
au même effet, mais en appliquant des transformations aux objets.
Prenez l’exemple du cube de la figure 12-24. Pour être en mesure de voir les faces cachées,
vous appliquez une rotation au cube autour de l’axe Y.
Ajoutez une méthode Update() à la classe. Dans cette méthode, vous définissez la matrice
de rotation grâce à la méthode CreateRotationY de la classe Matrix, puis vous appliquez le
résultat à la propriété World de l’effet :
public void Update(GameTime gameTime)
{
rotation = * Matrix.CreateRotationY(0.3f * (float)gameTime
➥.TotalGameTime.TotalSeconds);
}
Compilez le projet : le cube tourne à une vitesse modérée autour de l’axe Y. L’exemple
de code ci-dessous utilise des rotations autour des axes X, Y et Z.
public void Update(GameTime gameTime)
{
effect.World = Matrix.CreateRotationX(0.3f *
➥(float)gameTime.TotalGameTime.TotalSeconds)
* Matrix.CreateRotationY(0.3f * (float)gameTime.TotalGameTime.TotalSeconds)
* Matrix.CreateRotationZ(0.3f * (float)gameTime.TotalGameTime.TotalSeconds);
}
La figure 12-25 montre le résultat de l’extrait de code précédent.
De la même manière, modifiez la taille du cube grâce à la fonction CreateScale().
L’exemple de code suivant fait grandir le cube en fonction du temps (figure 12-26).
public void Update(GameTime gameTime)
{
effect.World = Matrix.CreateScale(0.03f * (float)gameTime
➥.TotalGameTime.TotalSeconds);
}
=Labat FM.book Page 291 Vendredi, 19. juin 2009 4:01 16
CHAPITRE 12
291
vertices[15].TextureCoordinate = new Vector2(1, 0);
vertices[15].Color = Color.Red;
// …
}
Dans l’extrait de code précédent, les coordonnées de texture sont appliquées de telle
façon que la texture apparaît à cheval sur deux face du cube. Le résultat est visible sur la
figure 12-24.
Déplacer un objet avec les transformations
À la section « Déplacer la caméra », nous avons vu comment nous promener dans un monde
en 3D en déplaçant la caméra. Nous allons à présent voir une autre méthode pour arriver
au même effet, mais en appliquant des transformations aux objets.
Prenez l’exemple du cube de la figure 12-24. Pour être en mesure de voir les faces cachées,
vous appliquez une rotation au cube autour de l’axe Y.
Ajoutez une méthode Update() à la classe. Dans cette méthode, vous définissez la matrice
de rotation grâce à la méthode CreateRotationY de la classe Matrix, puis vous appliquez le
résultat à la propriété World de l’effet :
public void Update(GameTime gameTime)
{
rotation = * Matrix.CreateRotationY(0.3f * (float)gameTime
➥.TotalGameTime.TotalSeconds);
}
Compilez le projet : le cube tourne à une vitesse modérée autour de l’axe Y. L’exemple
de code ci-dessous utilise des rotations autour des axes X, Y et Z.
public void Update(GameTime gameTime)
{
effect.World = Matrix.CreateRotationX(0.3f *
➥(float)gameTime.TotalGameTime.TotalSeconds)
* Matrix.CreateRotationY(0.3f * (float)gameTime.TotalGameTime.TotalSeconds)
* Matrix.CreateRotationZ(0.3f * (float)gameTime.TotalGameTime.TotalSeconds);
}
La figure 12-25 montre le résultat de l’extrait de code précédent.
De la même manière, modifiez la taille du cube grâce à la fonction CreateScale().
L’exemple de code suivant fait grandir le cube en fonction du temps (figure 12-26).
public void Update(GameTime gameTime)
{
effect.World = Matrix.CreateScale(0.03f * (float)gameTime
➥.TotalGameTime.TotalSeconds);
}
=Labat FM.book Page 291 Vendredi, 19. juin 2009 4:01 16
