PRESENTATION ET UTILISATION DU MOTEUR DE JEU PANDA 3D

I-                  Introduction

 

Avant de vous présenter Panda 3d il est important de définir ce qu’est un moteur graphique. Un moteur graphique est un composant logiciel (élément qui constitue un logiciel) qui crée des images à base de tableau, ou chaque case du dit tableau est rempli de pixels et effectue l’opération de rendu (d’affichage).

Panda 3D est donc un moteur graphique, il est open source (depuis 2002) et a été développé par Disney VR Studio. Ce moteur était à la base destinée pour les animations des parcs d’attractions Disney. Le Moteur a été développer en C++ mais l’utilisation principale est en Python. Il n’existe pas d’outils dédier pour utiliser le moteur. Il est cependant fortement conseiller d’utiliser PyCharm.

C’est un moteur qui repose sur un repère Cartésien (x, y, z), dans lequel on insère grâce à du code des modèles 3D. Les modèles 3D sont soit créé à partir d’’un logiciel tier de modélisation comme Blender ou de manière textuelle avec un format spécifique, le EGG.

L’utilisation de type de fichier spécifique comme le BAM pour les fichiers compresser, les EGG pour les modèles ainsi que les MF pour les données du jeux (modèles, textures, données additionnelles…) rendent l’utilisation de ce moteur compliquer.

Cependant il existe une grande documentation pour compenser à cela.

Panda 3D est donc manipulable grâce au langage Python mais aussi C++. Ultérieurement, nous allons voir une démonstration de ce dont est capable ce moteur ainsi que quelque fonctions et commandes qui lui sont propres.

Des commandes capables de déplacer la caméra, de régler sa vitesse son orientation, mais aussi pour inclure un modèle 3d, contrôler les frames, les animations etc.

 

 

 

II-               Capacité du moteur

 

1-     Géométrie 3d

 

Il existe deux classes lorsqu’on utilise la géométrie 3d avec Panda3D, le « modèle », qui est une forme géométrique non animé et « l’acteur » qui est lui une forme géométrique animé.                            Pour le moteur, une forme est considérée animé uniquement si elle change de forme, si une balle est lancée mais que sa forme ne bouge pas, qu’elle reste circulaire, elle sera considérée comme un modèle et non comme un acteur.

De nombreux moteurs proposent des outils pour créer de larges terrains. Et panda 3D en fait partie. Il donne accès a des classes permettant de créer de large terrain à partir d’image. Notamment deux :

-Le « HeightfieldTesselator » qui prend une image et généré un terrain. L’inconvénient est lorsque la caméra change de point pour aller à un autre, il est obligé de regénérer le terrain. Afin de changer de point, celui-ci elle doit régénérer le terrain en entier pour se focaliser sur le nouveau point. Sur de grand terrain, cela peut entrainer pour le joueur des retards lors de la régénération du terrain. Cette classe donc n’es pas adapté aux terrains extrêmement grands.

-Le GeoMipTerrain. Cette classe a été proposé par la communauté. Il divise le terrain en petit morceaux, ainsi quand la caméra bouge, on ne génère pas tout le terrain a nouveau. Cela entraine cependant de gros calculs qui ne sont pas forcément nécessaire pour les terrains de petites tailles.

Le format pour ajouter un modèle, un acteur ou une animation, est le. EGG. Principalement utiliser par des logiciels comme Maya, Max ou Blender. Le format EGG est bon pour debugger mais pas pour la vitesse. La première fois qu’un EGG va être charger par l’utilisateur cela va prendre du temp car le logiciel transforme automatiquement le EGG en BAM (type unique au moteur Panda3d).

Maintenant que les modèles sont créés et implanter, il est possible de rajouter des textures.

Le « Texturing » est le fait d’appliquer une texture sur un modèle ou un acteur. Une texture est une image en deux dimensions comme un JPEG ou un windows BMP file. Il est possible de modifier la taille des textures ainsi que leurs code RVB.

 

Exemple de modèle crée avec Maya et insérer dans le moteur de jeu Panda 3D.

 

2- La physique

 

La physique dans un moteur de jeu correspond aux collisions, a la gravité etc…

La physique de Panda3D est simple, il propose 4 choix intégrés à utiliser pour la physique :

Le moteur physique intégré de Panda : Panda 3D intègre un moteur physique de base pouvant exercer des forces aux classes. Cela permet de gérer des forces angulaires ou linéaires, ainsi que la viscosité.

Pour utiliser le moteur physique, il faut d’abord activer le système a particule. C’est une technique graphique permettant de de simuler de nombreux phénomènes naturels comme le feu, les explosions…

Pour activer les particules, il suffit d’utiliser la commande « base.enableParticles » au sein de votre code.

Panda fournit un gestionnaire de physique par défaut, base.physicsMgr, qui convient la plupart du temp. applications.PersonManager manipule le calculateur de physique chaque fois qu'il est associé à un PhysicsManager. Le calculateur prend en compte le temp écoulé entre les images. Pour que la physique fonctionne mieux aux changements d’image (framerate).

 

3- Les sons

 

Pour mettre du son dans vos créations, il existe 3 librairies pour gérer les sons.

-OpenAl, c’est une bibliothèque audio open source connue.

-FMOD est un puissant moteur sonore multiplateforme qui prend en charge différents types de fichiers audio – MP3, WAV, AIFF, MIDI, MOD, WMA et OGG Vorbis. Cependant, sa License vous empêche de l’utiliser à des fins commerciales, à moins que vous n’achetiez une License spéciale. L’utilisation non commerciale est quand a-t-elle gratuite.

-La dernière bibliothèque est Miles. Miles est un système audio non inclus dans panda 3D.

Il en existe d’autres qui sont compatible avec le moteur.

Après avoir choisi votre bibliothèque, il vous sera possible de manipuler les sons préalablement charger. De les jouer ou les arrêter, savoir leurs statuts. Mais aussi d’augmenter ou de baisser le son de tel variable ou de créer une boucle sur un son.

 

 

 

 

 

III-             Explication d’un code

 

1-     Lancer un programme Panda 3D

 

Pour lancer un programme Panda 3D codé en Python, il faut tout d’abord que vous ayez créer un programme en python. Vous pouvez enregistrer un bloc-notes en .py et vous aurez un fichier python. Puis dans l’invite de commande (pour accéder à l’invite de commande tapez cmd dans la barre de recherche windows), rediriger le chemin d’accès vers le dossier de votre projet grâce à la commande 

 

Maintenant que votre invite de commande pointe sur votre dossier contenant votre code python. Vous pouvez essayer de lancer votre programme avec la commande :

Vous devrez passer cette commande a chaque fois vous voudrez tester le résultat de votre programme python.

 

2-     Crée une application Panda3D

 

Après avoir créer un fichier en .py, nous pouvons commencer à coder. Tout d’abord commencer par insérer ces quelques lignes.

 

Ici, nous avons fait hériter notre classe principale (MyApp) de ShowBase. ShowBase charge la plupart des autres modules Panda3D et fait apparaître la fenêtre 3D. La procédure run () dans ShowBase contient la boucle principale. La boucle ne doit être appeler qu’une seule fois et doit être la dernière ligne de votre script.

Si vous lancez votre programme à ce stade, vous obtenez une fenêtre grise, vide, sans rien à l’intérieur.

 

 

 

 

 

 

3-     Le graphe de scène

 

Voyons maintenant comment faire apparaitre une « scène ». Panda3D contient une structure de données appelée graphe de scène. Le graphe de scène est un arbre contenant tous les objets à rendre. À la racine de l’arbre se trouve un objet nommé render. Rien n'est rendu jusqu'à ce qu'il soit inséré pour la première fois dans le graphique de scène.

Avant de faire apparaitre un modèle, il faut le charger. On le charge avec la commande « objet.scene = objet.loader.loadModel( «Le modèle a charger »).

Puis on le faire apparaitre dans le graphe de scène un modèle ou un acteur, il faut utiliser la commande « objet.scene.reparentTo(objet.render) ».

 

Il est ensuite possible de manipuler les coordonnées pour manipuler la scène introduite. Grâces aux commandes :

- « objet.scene.setScale(x, y, z) »

- « objet.scene.setPos(x, y, z) »

Le code devrait ressembler à cela :

 

Vous devriez voir une pelouse, des rochers et des bambous, ainsi qu’un arbre. La caméra quant à elle est à ras du sol et ne bouge pas part si vous utilisez la souris.

 

 

4-     Utilisation et modification de la caméra

 

Changeons donc cette caméra pour pouvoir admirer un peu mieux la scène. Nous allons créer une procédure pour placer la caméra ou nous voulons et avoir une rotation de celle-ci.

 

 

La procédure calcule la position souhaitée de la caméra en fonction du temps écoulé. La caméra tourne de 6 degrés toutes les secondes. Les deux premières lignes calculent l’orientation souhaité, d’abord en degré, puis en radian. SetPos défini la position de la caméra et setHpr l’orientation.

 

 

Le code avec l’appel de la procédure et son écriture devrait alors ressembler à cela.

Si vous essayer le code, vous vous rendez compte que la caméra tourne et qu’elle n’est plus à ras du sol. Vous pouvez essayer de changer les différents paramètres pour voir comment ils influent sur la rotation et la hauteur de la caméra.

 

5-     Ajout d’un acteur

 

Même principe que pour le graphe de scène, il va d’abord falloir le télécharger puis l’afficher.  A la différence du graphe de scène, on va pouvoir appliquer au modèle des animations.

 

La première scène va télécharger le modèle « panda-model » présent dans le dossier « models ».

La deuxième va définir l’échelle du modèle. La troisième va, comme vu précédemment faire apparaitre l’acteur dans la scène. Et la quatrième va boucler sur l’animation « walk ».

Vous devriez alors voir un Panda marcher au milieu de la scène.

 

Pour faire votre propre codes et animations, je vous invite à aller voir la documentation de Panda3d qui est très bien faite et fournie.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *