Archive:Les bases du Blender Game Engine

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher


Ces tutos utilisent les possibilités de Blender dans les capacités qu'il a de créer de l'interaction et donc, par extrapolation, des jeux.
Comme pour les autres tutos maisons, ceux-ci sont présents ailleurs sur le net. Dans la mesure ou ils constituent un socle de base, ils vous sont livrés de manière brute.
A faire via l'outil logic (F4)

Créer un chronomètre sous Blender

  • Sur un objet de la scène au choix :
    • Add Property
    • sélectionnez "Timer" et cochez "D" à droite

Un chronomètre se lancera lorsque vous lancerez le jeu avec "P"

Fichier:4 chronometre.blend


Déplacer un objet à l'aide du clavier sous Blender

  • Sur l'objet à déplacer :
    • cochez "Actor" et "Dynamic" dans le menu à gauche
  • Dans les briques logiques "Sensors, Controllers, Actuators" :
    • créez un nouveau "Sensors" et choisissez dans le menu déroulant (à droite de la petite croix) "Keyboard"
    • à droite aussi du bouton key cliquer et appuyez sur une touche de votre choix pour indiquer la direction (exemple flèche du haut)
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers" en posant votre curseur sur l'anneau doré à droite du "Sensors", en cliquant dessus et en le tirant vers celui à gauche du "Controllers". A relier aussi de la même manière à votre "Actuators" à venir
    • créez un "Actuators" et choisissez dans le menu à droite de la petite croix "Motion". Dans la ligne "dloc" mettre 0.1 dans le seconde colone

Vous avez assignez à une touche (flèche vers le haut) une action de déplacement (motion) sur un axe choisi (y) pour une intensité choisie (0.1)
Il faut recommencer l'opération pour les autres touches :

  • flèche gauche pour tourner à gauche (Actuators "Motion" / dRot : -0.1 en Z),
  • flèche droite pour tourner à droite (Actuators "Motion" / dRot : 0.1 en Z),
  • flèche descend pour reculer (Actuators "Motion" / dLoc :-0.1 en y).

Lancez le jeu en appuyant sur "P" dans l'une des fenêtre de votre choix

Fichier:1 deplacement clavier.blend

Déplacer un objet à l'aide de la souris sous Blender

Version I

  • Sur l'objet à déplacer :
    • cochez "Actor" et "Dynamic" dans le menu à gauche
  • Dans les briques logiques "Sensors, Controllers, Actuators" :
    • créez un nouveau "Sensors" et choisissez dans le menu déroulant (à droite de la petite croix) "Mouse" et sélectionnez "Movement". Inscrivez aussi "Mouse dans la case grisée
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers". Cliquer sur le bouton "AND" du "Controllers" et sélectionnez "Python". Inscrivé dans la partie grisée "Mouse Look" et "VueSouris.py" après "Script :" comme le nom du fichier que nous allons appeler. A relier aussi de la même manière à votre "Actuators" à venir
    • créez deux "Actuators" "Motion" sans mettre rentrer aucune valeur. Vous inscrirez LookLeftRight à côté de Motion dans la partie grisée du premier "Actuators" et LookUpDown dans la partie grisée du second.

Attention aux majuscules et aux minuscules c'est important.
Dans cet exemple il s'agit d'appeler un script Python. Ce script est téléchargeable [[[Fichier:vuesouris.py ici]]]].
Il s'agira d'ouvrir ce fichier dans une fenêtre "Text Editor" Open...le nom du fichier est inscrit au bas de la fenêtre TX:VueSouris.py

Fichier:2 deplacement souris.blend

Version II

Ce petit script permet de créer un lien entre un objet et la souris.
Cette fois ci, l'objet suit la souris suivant des coordonnées proposées dans le script.
Le curseur de la souris est persistant dans ce exemple, vous identifierez la ligne "Rasterizer.showMouse(1)".

Le fichier Fichier:10 suivi objet souris.blend

Faire disparaître un objet au contact d'un autre objet sous Game Blender Engine

  • Sur l'objet à ramasser :
    • créez un nouveau "Sensors" et choisissez dans le menu déroulant (à droite de la petite croix) "Near"
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers".
    • créez un nouveau "Actuators" "Edit Object" et sélectionnez "End Object"

Si vous souhaitez que ces disparitions soient comptées et visibles, ajoutez un second "Actuators" relié au même "Controllers" et choisissez "Message" puis sélectionnez "Subject : Pickup" et poursuivez :

  • Ajoutez un empty dans votre scène :
    • Add Property, choisissez "int" et enclanchez "D" au bout de la ligne
    • dans le menu game en haut de votre écran, séléctionnez "Show Debug Property"
    • créez un nouveau "Sensors" attaché à votre empty et choisissez dans le menu déroulant "Message" et pour le subject : "pickup"
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers"
    • créez un nouveau "Actuators" "Property" choisissez "Add" et pour Prop : "items" et value : "1"

Fichier:6 disparition objet.blend

Faire apparaître un objet par pression d'une touche sous Game Blender Engine

  • Ajouter un cube à votre scène vièrge sur un premier calque
  • Ajouter une sphère sur un second calque (les calques sont représentés par de petits carrés présents sous chacune de vos fenêtre de travail. Nommer cette sphère "s". Pour cela appuyer sur "n" et dans la première ligne OB: inscrivez "s".

Si vous lancer le jeu à ce moment là "p" dans le premier calque alors vous ne voyez que le cube.

  • Créez une interaction sur votre cube :
    • créez un nouveau "Sensors" et choisissez dans le menu déroulant "Keyboard" puis une touche : au hazard la barre espace
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers". A relier aussi de la même manière à votre "Actuators" à venir
    • créez un nouveau "Actuators" "Edit Object" et sélectionnez "Add object" et inscrivez le nom de l'objet sphère après OB : "s". Ne pas oublier de mettre un chiffre pour Time (ce sera le temps d'apparition de votre objet : 100 par exemple.
  • Retour sur le calque de votre sphère. Sélectionnez la et donnez lui des consignes :
    • créez un nouveau "Sensors" et choisissez dans le menu déroulant "Always" puis une touche : au hazard, la barre espace
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers" et à l'Actuator à venir
    • créez un nouveau "Actuators" "Motion" et inscrivez à la ligne Dloc '0.1"

Lancez le jeu en pressant "P" et après essayez des coups de "barre espace". Votre objet sphère apparaît. Dans notre exemple, la sphère apparaît au milieu du cube et part vers l'avant sur l'axe des "y" pendant 100 unités de temps.


Fichier:5 apparition objet.blend

Faire un menu sous Blender

Faire apparaitre le curseur de la souris et qu'il soit persistant sous Blender

  • créez une nouvelle scène vièrge d'aucun objet :
  • Créez dans une fenêtre Text Editor un nouveau scipt :
  • Ne pas oublier de lui ponner un nom exemple "Mouse.py" à indiquer en base de la fenêtre Texte editor après "TX :"
    • import Rasterizer (sur une première ligne)
    • Rasterizer .showMouse(1)
  • Créez un plan qui servira de fond, face à la caméra, dans la nouvelle scène et sur ce plan :
    • créez un nouveau "Sensors" et choisissez dans le menu déroulant "Mouse" et après "Movement"
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers". Séléctionner "Python" et indiquer le nom de votre Sript : Mouse.py
    • créez un nouveau "Actuators" "Motion" sans entrer aucune valeur

Dans cet exemple nous demandons au plan d'appeler le sript Python Mouse.py.

Fichier:8.1 persistance souris.blend

Créer le menu

Ce tuto nécessite que le curseur souris soit persistant. Il est donc indispensable de faire le tuto précédent avant.

  • créez un mesh texte comme par exemple "entrer" entre le plan et la caméra :
    • transformez ce mesh en polygone par "ALT C" et sélectionnez mesh dans le menu déroulant
    • sélectionnez tout le mesh "A" et extruder le texte pour lui donner du volume
  • Sur l'objet texte "Entrer" :
    • créez un nouveau "Sensors" et choisissez dans le menu déroulant "Mouse" et après "Mouse over"
    • créez un second "Sensors" et choisissez dans le menu déroulant "Mouse" et Left Button "
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers"
    • créez un nouveau "Actuators" "Scene" et sélectionnez dans le menu déroulant "Set Scene" sans inscrire dans la case SCE :"jeu"

Dans cet exemple nous appelons la scene jeu. Cela suppose que cette scene existe. En effet, il est de bon ton de créer une scène pour le menu et une autre pour le jeu à proprement parlé.
Lancez "P" pour tester

Fichier:8.2 faire menu.blend

Faire que le jeu recommence lorsqu'un objet est touché sous Game Blender Engine

L'objet qui se déplacera sera un cube simple (Actor / Dynamic). C'est lui qui viendra percuter d'autres objets.

  • Sur l'objet à toucher :
  • L'objet est un parallélépipède rectangle dans notre exemple. Il est aussi un Actor
    • créez un nouveau "Sensors" et choisissez dans le menu déroulant "Touch" et après "Movement"
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers"
    • créez un nouveau "Actuators" "Scene" et sélectionnez "restart" dans le menu déroulant

Dans cet exemple, on ré-initialise la scène.

Fichier:9 recommencer.blend

Lancer une animation dans le Game Blender Engine

  • Ajoutez un cube à votre scène et créez l'animation
    • frame 1, appuyer sur "I" pour Insert key et "LocRotScale"
    • frame 100, grossissez votre cube et le déplacez. Appuyer une seconde fois sur "I" pour Insert key et "LocRotScale"
  • Créez l'interaction
    • créez un nouveau "Sensors" attaché à votre cube et choisissez dans le menu déroulant "Keyboard" et pour pour key "Espace"
    • créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers"
    • créez un nouveau "Actuators" "Ipo" et Sta "1" End 100

Appuyer sur "P" et aussi la barre espace

Dans cet exemple on lance notre animation (Ipo curve créée au départ) en appuyant sur la barre espace. D'autres actions peuvent déclancher une animation.

Fichier:7 lancer animation.blend

OSC dans le Game Blender Engine

Références :

Prérequis :

  • Installer Pygame avec synaptic sous ubuntu.
  • Tous les fichiers utiles sont en bas de cette partie

Exercice / Le cube qui bouge sur l'axe des x

Cheminement : python -> osc -> blender

  • Ouvrez blender dans une console.
  • Ouvrez le fichier demo.blend dans Blender.
  • Pour un test en local laisser les paramètres du scipt nommé connnexion.py

( attaché à l'objet osc_socket) ip et port sur les ligne 5 et 6.

  • Dans une autre console lancer le script demo.py du tiroir python en inscrivant "python demo.py"
  • Pour arrêter le script : ctrl-c
  • Lancer le Game Blender engine alias BGE ( touche p )
  • Pour voir le message osc:
  • Décommenter la ligne 27 ( print d ) du script listen_osc.py
  • Relancer le BGE

Exercice / Le cube qui bouge sur l'axe des x et qui tourne

  • Idem que précédemment mais en ouvrant le fichier demo2.blend / sauf que l'on peut faire tourner le cube avec les touches flèche gauche et flèche droite.
  • La rotation est géré par le BGE lui même.
  • Puis regarder dans la console de Blender le flux osc.

Exercice / l'Alien

  • Ouvrer le fichier alien.blend dans Blender.
  • Dans une autre console lancer le script alien.py du tiroir python en inscrivant "python alien.py"
  • Pour arrêter le script : ctrl-c ou q dans la console
  • Relancer le BGE.


  • Pour voir le message osc:
  1. Décommenter la ligne 28 ( print msg ) du script listen_osc.py
  2. Relancer le BGE
  3. Puis regarder dans la console de Blender le flux osc

Les fichiers utilisés dans les exercices :

  • Les fichiers Python

Fichier:Demo.tar.gz

Fichier:Alien.tar.gz

  • Les fichiers Blend

Fichier:Demo.blend

Fichier:Demo2.blend

Fichier:Alien.blend

Suivi d'un objet par la caméra dans le Game Blender Engine

  • Sur la caméra :
  1. créez un nouveau "Sensors" et choisissez dans le menu déroulant "always"
  2. créez un nouveau "Controllers" et relier votre "Sensors" à votre "Controllers". A relier aussi de la même manière à votre "Actuators" à venir
  3. créez un nouveau "Actuators" "Edit Object" et sélectionnez "Track to" et inscrivez le nom de l'objet après OB :

Fichier:3 suivi camera objet.blend

Une autre méthode consiste à mettre un Actionneur "Camera" sur la caméra !! avec sensors "Always" et Controllers "And"

Texte dans Game Blender Engine

  • Créez un plan
  • Sélectionnez le plan et passez en Mode Texture Paint, appliquez l'image arialbd.tga sur le plan via l'Uv Image Editor (voir +de détails ci-dessous)
  • Dans le menu F9 en Mode Edition Onglet Texture Face sélectionnez Tex sur la première ligne et Text sur la troisième. Vous choisirez aussi Alpha plus bas pour ne faire apparaitre que le texte
  • Dans le menu Game Engine créez une propriété sur le Plan de départ. Choisissez String et indiquez Text pour le name de la propriété. Vous indiquez dans la case suivant le ou les textes à afficher

Fichier:Arialbd.tga

Fichier:Tuto Text.blend

Texturer un objet dans le Game Blender Engine

Uv Mapping

  • Sélectionnez votre objet (un cube)
  • Sélectionnez la face à texturer
  • Passez en mode Texture Paint, passez en Mode Edit
  • Dans une autre fenêtre importer l'image ) mapper : Uv Image Editor : image/open/fichier.jpg
  • Créez un matériel et une texture image pour celui-ci / dans Map Input cochez UV à la place d'Orco

En dépliant le mesh

  • Sélectionnez votre objet (un cube)
  • Sélectionnez les arrêtes futures coupures pour déplier un "patron" et Touche CTRL E
  • Passez en mode Texture Paint puis en Mode Edit
  • Sélectionnez toutes les faces sur lesquelles votre texture devra s'appliquer
  • Dans une autre fenêtre / Uv Image Editor : Touche E pour déplier
  • Uv/Scrip/Save Uv face Layout pour exporter en le patron en .tga
  • Dans Gimp posez votre patron en image de font, ouvrit un nouveau calque et jouez avec la transparence pour dessiner comme voulu
  • Réimportez votre image dans Blender : dans la fenêtre / Uv Image Editor : image/open/fichier.jpg et hop !

A coup de pinceau

  • Créez un nouveau matériel pour votre objet et cochez Vcolor Paint
  • Touche v pour entrer dans le mode Vertex Paint
  • F9 pour accéder aux propriétés des couleurs sous l'onglet Paint