IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Irrlicht Discussion :

[Grand Débutant Irrlicht] Comment associer une caméra FPS au mesh d'un perso ?


Sujet :

Irrlicht

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 92
    Points
    92
    Par défaut [Grand Débutant Irrlicht] Comment associer une caméra FPS au mesh d'un perso ?
    Salut à tous,

    Je débarque tout juste dans le monde de la prog 3D.
    Je m'essaye pour l'instant sur la création d'un FPS à temps perdu et pour le fun,
    on verra + tard si ça devient + sérieux.

    Pour mes premiers pas j'ai regardé et compilé les tutos fournis dans le pack d'irrlicht
    et j'aimerais maintenant leur ajouter ma petite touche pour apprendre comment tout cela marche.
    Tripatouiller quoi.

    Mon premier objectif est d'obtenir la vue et le contrôle du perso communs à tous les FPS.
    Le souci c'est que j'y connais encore pas grand chose.
    En faisant quelques recherches j'ai trouvé qu'il
    est possible d'associer la caméra au mesh avec setParent(...);
    Donc j'ai pris le tuto 07.Collision, j'y ai chargé le mesh de sydney et ajouté la caméra
    comme parent de sydney et je me retrouve avec la caméra au centre du mesh
    et le mesh qui suit les mouvements de la caméra.

    Je fais donc appel à vos connaissances pour :
    - savoir si d'emblée j'ai pas grillé des étapes, auquel cas lesquelles ?
    - savoir comment obtenir la vue et le contrôle du perso, je parle + en terme d'algo, au
    niveau du code je vais essayer de me débrouiller, histoire d'apprendre.

    En tout cas merci de votre aide et de votre patience.
    Bien à vous.
    Titux

    PS : cette question a peut être déja été posée mais je ne l'ai pas trouvée.

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    Bien le bonjour,

    Pour ajouter une caméra FPS, il suffit d'utiliser la commande addCameraSceneNodeFPS() ou quelque chose comme ça. Ça te donne une caméra qui s'oriente à la souris et qui se bouge au clavier, comme dans un FPS. Cependant il n'y a aucun lien avec un mesh.

    Quand tu joues à un FPS, tu ne vois pas ton propre personnage, tu vois juste des bras et une arme, rajoutés à l'écran. Il n'est pas nécessaire de mettre un mesh autour de la caméra. Il suffit que les autres joueurs voient un mesh là où se situe ta caméra, nuance.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    La méthode addCameraSceneNode renvoit un pointeur de type "scene::ICameraSceneNode*"

    donc tu peux écrire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    scene::IAnimatedMeshSceneNode* meshNode;
     
    meshNode = smgr->addAnimatedMeshSceneNode(smgr->getMesh("./monmesh.b3d"));
     
    scene::ICameraSceneNode* camera;
    camera = smgr->addCameraSceneNodeFPS(); // smgr c'est le pointeur sur le scene manager
     
     
    // dans la boucle principale
    GameLoop()
    {
       camera->setPosition(meshNode.getPosition());
       camera->setRotation(meshNode.getRotation());
    }

    C'est pour exposer le principe de base, après il faudra faire des réglages (ajouter des offsets pour que la caméra ne se retrouve pas à l'intérieur du mesh).
    Et ici la caméra suit les mouvements en translation et rotation du mesh, il faut que ton mesh soit déplacé pour que cela fonctionne, exemple ultra simplifié:

    - si la touche UP est tapée, alors meshNode.setPosition(meshNode.getPosition()+vector3df(1.0f,0.0f,0.0f))
    - récuper le delta de la souris pour incrémenter l'angle du meshNode

Discussions similaires

  1. [VB.NET] Comment associer une Ombre à une Form?
    Par jazz matazz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 28/02/2006, 14h00
  2. Réponses: 3
    Dernier message: 14/12/2005, 19h18
  3. [Débutant][VE] Comment afficher une fenetre Shell (bean)
    Par antony dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 11/08/2005, 11h46
  4. Réponses: 12
    Dernier message: 09/08/2005, 14h29
  5. [Débutant] [Applet] Comment signer une applet
    Par xterminhate dans le forum Applets
    Réponses: 3
    Dernier message: 09/06/2005, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo