A Lame World  

FONCTIONNEMENT

Fonctionnement
Le logiciel ALW
Entrez dans ALW !
Les avatars
Le monde virtuel
Les objets actifs
ALW : A Lame World
Un monde de Lame !
Qu'est ce que c'est ?
L'equipe de travail
Chronologie
Historique
A la 1e soutenance
A la 2e soutenance
A la 3e soutenance
A la 4e soutenance
Ressources
humaines
matérielles
Contest
Introduction
S'inscrire
Modifier son profil
Upload
Votes
Résultats
Vendredi 3 mai 2024

Exemple d'un objet actif : distributeur

Un objet actif est un objet qui peut être activé, c'est à dire effectuer une certaine opération et subir la physique de l'environnement. Plusieurs commandes peuvent être appliquées à un objet actif : créer, détruire et activer.

Comment créer un nouvel objet actif ? Tout d'abord, imaginer un objet actif ainsi qu'une action associée lorsqu'on l'active. Nous allons prendre l'exemple d'un nouvel objet actif, ici un distributeur de canettes. L'action associée est l'apparition d'une canette à deux métres devant le distributeur, le son d'une canette qui est bue puis la disparition de la canette à la fin du son.

Graphiquement

Il nous faut une image d'un distributeur pour pouvoir élaborer la texture. On prend un appareil photographique numérique, on court à l'EPITA (mais si ! Il n'y a que là où il y a des distributeurs de canettes !), on photographie quelques devantures de distributeurs puis on sélectionne la meilleure photo. Par exemple via PhotoShop, on retouche l'image et on la transforme en texture (redimmensionnant inférieur à 256*256 en puissance de 2 : 2, 4, 8, 16, 32, 64, 128, 256).

Changer le fichier activobj.ini

Editez le fichier "activeobjs.ini" dans le répertoire "settings" du client, et créez une nouvelle section qui porte le nom du nouvel objet actif que vous venez de créer (ex: [distrib] ). Créez une nouvelle clé "mesh3DS" et donnez comme valeur le nom de l'objet dans la scene chargée (ex: mesh3DS=DISTRIB). Créez une nouvelle clé "file3DS" et donnez comme valeur le chemin d'accès au fichier 3DS (ex: file3DS=models/distrib.3ds). Créez une nouvelle clé "fileDEF" et donnez comme valeur le chemin d'accès au fichier .DEF généré par "3DS2DEF.exe" de Panard Vision (ex: fileDEF=models/distrib.def).

activobj.ini !

Si votre objet actif émet un son: Créez une nouvelle clé "fileSND" et donnez comme valeur le chemin d'accès au fichier .WAV (ex: fileSND=sounds/canette.wav ). Créez une nouvelle clé "rngeSND" et donnez comme valeur un entier qui correspond à la distance en mètres à laquelle on entend le son émis par votre nouvel objet actif (ex: rngeSND=3 ). Si le son doit être joué en boucle: Créez une nouvelle clé "loopSND" et donnez comme valeur 1 (ex: loopSND=1 ).

Code

Puis on modifie plusieurs fichiers dans le code :

  • Dans le fichier ActiveObj.cpp, toute à la fin, dans la fonction GetActivObjectClass, on copie les deux lignes précédant la partie "else return NULL" et on fait un coller directement à l'endroit où l'on se trouve. Puis on modifie les lignes que l'on vient d'ajouter, ce qui donne :
    else if (!strcmp(name, "distrib"))
    return new Distrib(pvw);
  • Dans le fichier Alwobjs.hpp, on rajoute après les autres objets actives un "include" comme suit :
    #include "Distrib.hpp"
  • Puis on crée un fichier Distrib.hpp en suivant les propriétés spécifiques à notre objet acitf, en agissant par analogie avec un autre objet actif comme radio.hpp. Ces fichiers .hpp d'objets actifs sont très semblables.
  • Puis on crée un fichier Distrib.cpp en suivant les propriétés spécifiques à notre objet acitf, en agissant par analogie avec un autre objet actif comme radio.cpp. Ces fichiers .cpp d'objets actifs sont très semblables pour les fonctions comme Load, GetPositionXYZ ou DestroyMesh. La spécificité de l'objet actif se fait dans la fonction TestCollision.

Le distributeur !

[haut de page]

FONCTIONNEMENT
| Le logiciel ALW | Entrez dans ALW ! | Les avatars | Le monde virtuel | Les objets actifs|

© 1999-2000 A Lame World
l'Équipe Virtual Rippers : Laurent Mascherpa - Antoine Lisse - Arnaud Meyer
Ingénieurs en informatique de l'EPITA