GameBlender
3D interactive : 
Le moteur de jeu
    Début   Index
précédentScript Python
Game Engine : animation interactive Suivant

Ce didacticiel a pour but de faire comprendre les concepts fondamentaux de la 3D interactive dans Blender . Il suppose que l'on soit familliarisé avec les méthodes de  modélisation  du logiciel.
 

Les 3 états de la 3D
Statique
Animée
Interactive
3D interactive dans blender
Fenêtre Logic
Un acteur dynamique
Comment supprimer la résistance aux autres acteurs ?
Comment faire réagir l'acteur à son environnement ? 
Définir un moteur physique
Bound, définir une limite de forme 
Sentir, réfléchir et  agir : Sensor, controler et actuator
Camera fixe
Camera subjective
Camera poursuite
La recette de base
Attention : localiser le plateau de jeu

Les 3 états de la 3D

Statique

ou image fixe . On modélise, on éclaire et on ajoute des textures . Le temps de rendu n'a pas vraiment d'importance ; on peut passer par des moteurs externes d'effets spéciaux faisant appel à des techniques longues comme le ray-tracing.
Animée
- Les contraintes sont les mêmes que pour le précédent, puisqu'il s'agit d'un ensemble d'images statiques que l'on fait apparaître successivement à l'écran pour donner l'impression d'un mouvement : le film .  Les déplacements, transformations et autres modifications qui interviennent dans le temps sont déterminés par le scénariste et mis en scène par l'animateur
- Les scènes peuvent être complexes mais elles s'enchainent en suivant un fil unique qui se reproduit toujours de la même manière .  Le temps de la réalisation peut être extrèmement long et dépend beaucoup de la durée du film lui-même (25 images par secondes à multiplier par le nombre de secondes ) et la qualité des images souhaitée , 
Interactive
- Dans un  espace 3D,  un acteur se déplace et intervient sur son environnement avec un certain degré de liberté . Il faut donc non seulement créer l'espace et l'acteur mais aussi définir comment ils vont se comporter l'un et l'autre, ainsi que l'un envers l'autre . 
De plus, le joueur doit avoir l'impression que la réponse à ses actions est immédiate .  La vitesse à laquelle les images sont crées (25 à 30 images secondes ou plus) est telle que l'on peut parler de temps réel, au moins le temps de le perception du joueur . 
- Les scènes, même si elles ont été préparées par un scénariste, un animateur et un graphiste 3d, et même si elles peuvent faire appel à des animations ou à des plans statiques,  ne suivent pas un enchainement unique mais les choix de l'acteur qui est partiellement contrôlé par le joueur . 
- Il est nécessaire d'utiliser un moteur de jeu, qui au-delà de l'apparence de profondeur gère les règles définies (collisions, comportement, physiques...). 
3D interactive dans Blender 

Fenêtre Logic

Pour définir toutes les relations entre l'acteur/joueur et l'espace virtuel 3D, le logiciel offre une série de briques  qu'il faut relier . Ces briques sont située dans la fenetre Logic, touche F4

Par défaut, si l'espace 3D est vide ou lorsqu'aucun objet n'est sélectionné, la fenêtre Logic ressemble à cela :

Si on ajoute un simple plan, les boutons apparaîtront:


(cliquez sur l'image pour agrandir)

Attention , dans Blender, seuls les Meshes peuvent être visualisés dans l'espace de jeu mais on utiliser  d'autres élements comme les armatures et les courbes ipos .

Un acteur dynamique... ou pas.

A priori, tous les meshes sont des éléments neutres du décors. Ils portent automatiquement le qualificatif Static.

La seule fonction qu'ils sont capables de remplir, se limite à opposer une certaine résistance aux acteursdynamiques

Comment faire réagir l'acteur à son environnement ?
Il n'y a pas qu'une seule façon de faire appliquer le calcul des lois  physiques (gravité, friction, force ...). La plus simple est  de cliquer sur Dynamic dans le menu Object Type :

Ce choix fait apparaître un certain nombre de bouton ssupplémentaires. 

Mais on n'a pas spécialemenent besoin de les connaître et encore moins de les modifier pour faire un essai. 


fichier .blend

Dans ces conditions particulières, la sphère dynamique tombe, imitant l'effet de la gravitation. On remarque cependant qu'elle ne fait que glisser sur la sphère qui se trouve au-dessous. Si on souhaite un peu plus de réalisme, les effets de frictions par exemple, il faut utiliser l'option Rigid body.


(fichier .blend)

La troisière option, Soft body, offre un peu d'élasticité


fichier .blend

Attention, il est possible d'enregistrer les mouvements effectués par les objets dans une situation de jeu en utilisant l'option du menu Jeu/Game :
 
Toutes les animations présentées sur cette page, utilisent cette méthode. Cependant on constate que l'état de Softbody, non seulement  modifie la structure du maillage et la renvoie modifiée  dans l'espace de travail standard (il est donc conseillé de l'utiliser avec prudence) mais en plus, il n'est pas possible de garder une trace de la progression de ces modifications pour les rejouer en rendu normal.Ainsi, dans l'animation précédente , il a été nécessaire d'imiter l'effet en ajoutant un effet de rotation supplémentaire.

Comment supprimer la résistance aux autres objets ?
Ce qui revient à gérer le dynamisme mais à ignorer le reste des objets qui se trouvent dans le monde 3D et donc adopter un comportement de fantome, que l'on traduit en angalis par le mot Ghost.

L'acteur passera au travers tout simplement :

Définir un moteur "physique"
Suivant les versions, Blender dispose d'un moteur de jeu : Ketsji, et de plusieurs bibliothèques de fonctions pour gérer les lois physique, les collisions, etc. : Sumo, Ode, Bullet... La liste pourrait s'allonger bientôt. Il faut en choisir une. Le sélecteur se trouve dans la fenêtre World (Monde), qui est un sous-contexte des Shaders .

On doit donc avoir au moins un World  défini. Si ce n'est pas le cas, on l'ajoute en cliquant sur l'unique bouton visible .

Le sélecteur de la bibliothèque se trouve à coté du bouton à glissière Grav. Sumo était le choix le plus sûr jusqu'à Blender 2.42. La bibliothèque officielle est maintenant Bullet qui offre des options infiniment  plus développées.

Bound, définir une limite de forme pour le moteur physique
Pour savoir si un acteur est en contact avec un objet de la scène de jeu, le logiciel doit effectuer des tests d'intersection  sur chacun des éléments qui le constitue, c'est-à-dire chaque face de l'acteur avec chaque facette de chaque objet  qui ne serait pas des Ghost ou déclaré No collision. Cette procédure est extrèmement longue et gourmande en ressources même en passant par l'interface opengl qui donne accès aux processeurs graphique 3D . 
L'alternative consiste à utiliser une forme de remplacement beaucoup plus simple dans les test de collision/intersection .  Le choix de cette forme se fait à partir du Menu Bounds
L'objet Sphere  est défini par défaut.  Il permet les tests les plus rapides basés sur la position du centre de la sphère et le rayon .
Pour affiner les effets de collision, on peut-être amener à changer le rayon de cette Sphere pour quelle englobe complètement l'objet Mesh ...
Il faut passer par le bouton RadiusRayon en anglais)  de la fenêtre Logic


Attention , il est possible d'obliger les système de jeu à prendre en considération la forme réelle de l'objet mesh en sélectionnant Triangle Mesh .

Ce genre de situation peut entrainer des ralentissements importants si l'objet est constitué d'un trop grand nombre de facettes. Mais la différence de mouvement est significative :
 
Bound en forme de Sphere
fichier .blend
Bound en forme de Triangle Mesh
fichier .blend

Sentir, réfléchir et  agir : sensor, controller et actuator

Camera fixe
Camera subjective 
Camera poursuite

Les procédures de base ou recette de base

1/ Pour éviter les confusions, tout sélectionner, touche A (une ou deux fois selon le cas), vider l'espace de travail, touche x -->Eraze selected, 3d, et rester en mode Wireframe,
c'est-à-dire sans texture et sans face pleine, juste le mode de représentation fil de fer.
 
Si vous possédez une carte graphique de toute dernière génération, ce dernier ne sera peut-êtr epas nécessaire. Dans le lcas contraire faites des essais. 

2/ Ajouter un plan et l'agrandir un peu, ce sera le plateau de jeu
 

Attention , le positionnement du plateau de jeu doit se faire en respectant l'oriention de l'espace 3D de Blender dans lequel les coordonnées X et Y définissent le sol et la coordonnée Z , la hauteur . 
Donc, soit on se place dans l'axe vertical en utilisant le pavé numérique : touche 5 pour une vue orthogonale, touche 7  pour une vue de dessus, soit on supprime proprement les transformations géométriques de rotation appliquées à l'objet en utilisant les raccourcis alt-R .

3/ Ajouter une icosphere ce sera l'acteur :

Attention au nombre de facettes, même si les cartes graphiques actuelles offrent des vitesse d'affichage très performantes, il vaut mieux être économe pour une plus grande fluidité de jeu . Voir Bounds
Attention il vaut mieux placer l'acteur légèrement au dessus du plateau de jeu.

4/ Garder la sphère active (fondamental, pas nécessairement sélectionnée mais active, c'est-à-dire que la bille qui symbolise son centre-pivot soit toujours magenta),  et passer dans la fenêtre Logic, touche F4 ou appuyer sur le bouton repésentant un pacman rose

5/ Repérez la série de Boutons Static/Actor/Ghost/Adavncer setting.  Appuyer sur le bouton Static. Dans le menu choisissez Dynamic ou Rigid body.  Ce choix active automatiquemnent  Actor.

6/ Amenz le pointeur souris sur la fenêtre 3D. Normalement, à cet instant, si on appuie sur p pour lancer le jeu,  il ne se passe pas grand chose : la sphère devrait subir les lois de la gravité et venir se poser sur le plan . Si on a l'intention de la faire se déplacer encore, Il faut ajouter un sensor, un actuator et  un controller . Dans le prolongement de la fenêtre Logic, il y a 3  boutons noter Add, à coté de Sphere, on les enfonce ou on utilise  les boutons Sphere, pour commencer, c'est la même chose .

7/ Le premier bouton permet de régler un sensor, c'est-à-dire le   mécanisme qui va indiquer  au jeu qu'il doit se renseigner pour savoir s'il se passe quelque chose . Comme il y a un nombre considérable de choses qui peuvent se produire, on réduit le temps de réaction en lui indiquant quoi scruter avec précision.  Dans ce cas particulier, le contrôle se faisant par les touches du clavier,  on va ajouter un sensor   [keyboard], pour que le jeu contrôle si une touche est appuyée ou non .  On ouvre le menu où il est noté [Always] et on y  sélectionne l'entrée [keyboard].

8/ Dans le même bloc sensor, on indique ensuite de quelle touche il  s'agit en cliquant le champ gris à coté de [Key], "Press a key"  devrait y apparaître .  On appuie sur la touche du clavier que l'on  souhaite faire  reconnaitre, ici  [fleche haute] , par exemple .  Le champ va se remplir avec [Uparrow]. On ne s'occupe pas du reste, pour   découvrir le principe de construction de jeu, c'est bien suffisant .

9/ On relie ce sensor au controler en cliquant sur la bille dorée à   sa droite . Sans relacher la pression sur le bouton de la souris,  on tire une ligne jusqu'à l'anneau doré qui se trouve à coté du bloc  controler .

10/ Normalement, ce bloc offre par défaut une entrée AND c'est parfait, on n'y touche pas.

11/ On relie le controler à l'actuator de la même manière, bille dorée vers anneau doré .

12/ Par défaut, l'actuator offre une entrée  [Motion] (= déplacement), là aussi c'est très  bien, on ne change pas . Par contre, il   faut augmenter au moins une valeur  pour un déplacement : [dLoc], quantité de déplacement relatif à la dernière position connue,   un des  trois curseurs . 0.1 fait très bien l'affaire. 

On vient donc d'apprendre au jeu à déplacer l'acteur principal de 0.1 unité de distance chaque fois que le joueur appuie sur la touche [Fleche haute] . On appuie sur la touche P pour essayer .

Voila, ce ne sont que les bases les plsu simples . Pour ajouter un autre mouvement, on ajoute une autre série de sensor/ controler/ actuator . Le résultat devrait ressembler à ce fichier: game/base1.blend

 
précédentScript Python
 Game Engine : animation interactive Suivant
Vers le  Haut de page

Les questions concernant cette page  peuvent être posées sur  :
 news://news.zoo-logique.org/3D.Blender

Livre en français
Blender : apprenez, pratiquez, Créez, livre, Ed. Campus Press, coll. Starter Kit
Blender Starter Kit

Forum
FAQ
Lexique
Didacticiels
Compilations
Blender2KT
Débuter
Modelage
Blender python
Materiaux
Lumière
Animation
API python (eng)
Archives nzn
Statistiques
Doc flash Sculptris
Galerie Sculptris

mon site de démos sur youtube