GameBlender
|
3D
interactive :
Le
moteur de jeu
|
|
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,
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 Radius
( Rayon 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
:
|
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
Les questions concernant cette page
peuvent être posées sur :
news://news.zoo-logique.org/3D.Blender
|