#25 

11-11-2008 21:48:18

hardcpp
Abonné
Date d'inscription: 26-04-2008
Messages: 229

ok c deja mieux smile

Hors ligne


#26 

14-02-2009 14:42:30

capry
Membre
Date d'inscription: 14-02-2009
Messages: 83

Bonjour, je débute sur Irrlicht, et après plusieurs essais d'imiter la caméra personnalisée de WoW (résultats pas au point), j'ai voulu tester ce code. Mais lorsque je compile (en ayant mit "    cFollowCamera camera(cube1.getPointeur());   " où cube1.getPointeur est le sceneNode de mon modèle que je veux suivre )
le compilateur me donne (dev C++) :


In function `int main()':
cannot declare variable `camera' to be of type `cFollowCamera'
because the following virtual functions are abstract:
virtual bool irr::IEventReceiver::OnEvent(const irr::SEvent&)
[Build Error]  [main.o] Error 1


Voilà alors je voudrais savoir si j'ai mal fait quelque chose, ou si cela vient du code...
Merci D'avance

Capry

Hors ligne


#27 

15-02-2009 03:25:43

hardcpp
Abonné
Date d'inscription: 26-04-2008
Messages: 229

remplace

Code:

class MonEcouteur : public IEventReceiver 
{ 
public:   
   virtual bool OnEvent(SEvent event)

par

Code:

class MonEcouteur : public IEventReceiver 
{ 
public:   
   bool OnEvent(const irr::SEvent event)

Hors ligne


#28 

15-02-2009 10:26:30

capry
Membre
Date d'inscription: 14-02-2009
Messages: 83

Merci de ta réponse,
mais j'ai toujours le même message dans le compilateur.
Je ne vois pourtant pas ce qui cloche.

Hors ligne


#29 

15-02-2009 20:47:44

hardcpp
Abonné
Date d'inscription: 26-04-2008
Messages: 229

pardon remplace
class MonEcouteur : public IEventReceiver
{
public:   
   bool OnEvent(const irr::SEvent event)

par

class MonEcouteur : public IEventReceiver
{
public:   
   bool OnEvent(const irr::SEvent& event)

Hors ligne


#30 

16-02-2009 10:29:34

capry
Membre
Date d'inscription: 14-02-2009
Messages: 83

Ah là c'est mieux déjà, le compilateur, ne m'affiche pas d'erreur, par contre le programme plante au démarrage...
Je vais essayer de voir si ce n'est pas à cause d'un de mes codes que le programme plante...

ÉDIT : apparemment non, j'ai mit le code minimale (device, driver, chargement du modèle etc...) mais le programme bug toujours à partir du moment où j'ajoute "  cFollowCamera camera(Nmodele); " (où Nmodele est le noeud)
J'ai donc toujours le message d'erreur qui a priori pourrait venir de n'importe où dans le code donné.
Je me doute que c'est embêtant à trouver, mais je voudrait savoir si quelqu'un à déjà tester le code, et s'il est bien foctionnel ? Sinon je continue à chercher de mon côté aussi bien sûr ^^ ...

Dernière modification par capry (16-02-2009 10:38:39)

Hors ligne


#31 

16-02-2009 21:09:50

hardcpp
Abonné
Date d'inscription: 26-04-2008
Messages: 229

a mon avit il trouve pas le mesh

Hors ligne


#32 

16-02-2009 21:38:30

capry
Membre
Date d'inscription: 14-02-2009
Messages: 83

Eh bien si je ne mait pas la ligne cFollowCamera camera(Nmodele);, il y a le mesh qui apparait (un cube), mais si je met cette ligne, le programme plante... J'en déduit donc que la partie que j'ai faite est bonne, mais il doit y avoir une erreur dans le code donnée non. L'as-tu testé ?

Hors ligne


#33 

17-02-2009 15:53:44

capry
Membre
Date d'inscription: 14-02-2009
Messages: 83

C'est bon en modifiant 2/3 petites choses il n'y à plus de problèmes, je vois mon objet et la caméra suis le perso. Mais j'ai beau appuyer sur n'importe quel bouton de la souris rien ne se passe. La classe prévoit-elle les événements avec la souris ?

EDIT : Là j'ai modifié plein de trucs pour l'adapter à mon code et ça marche ^^. Merci Beaucoup. Maintenant il y a juste un truc qui me chagrine : on ne peut pas régler la hauteur. Par exemple quand on descend la souris la caméra monte, et quand on monte la souris, la caméra descend. Est-ce que quelqu'un pourrait me donner le code pour celà ? Merci.
Sinon pour toute personne ayant des difficultés avec ce code je veux bien donner le mien...

Dernière modification par capry (17-02-2009 17:49:00)

Hors ligne


#34 

18-02-2009 15:10:59

capry
Membre
Date d'inscription: 14-02-2009
Messages: 83

Je sais qu'il ne faut pas poster 3 messages d'affiliés mais comme personne ne met de nouveaux messages...

Bref je me suis essayé à modifier un peu le code pour tourner autour du perso, mais cette fois-ci en prenant en compte la hauteur ce qui donne au lieu de :

Code:

...
  if(MouseX != 0)
  {
        if (MouseX <= 8*.05f) 
        {
            m_updated = true;
            m_yRotationAngle += 0.01;
            while (m_yRotationAngle > 2*PI)
                m_yRotationAngle -= 2*PI;
        }
        else if (MouseX >= 8*.95f) 
        {
            m_updated = true;
            m_yRotationAngle -= 0.01;    
            while (m_yRotationAngle < 2*PI)
                    m_yRotationAngle += 2*PI;
        }
  }
 }
 if (m_DernierePosition != m_Nmodele->getPosition()) 
 {
       m_updated = true;
       m_DernierePosition = m_Nmodele->getPosition();
 }
 if (m_updated) 
 {
  m_updated = false;
  vector3df m_Camerapos = m_DernierePosition;
  
 m_Camerapos.X += distance*sin(m_yRotationAngle);
 m_Camerapos.Z += distance*cos(m_yRotationAngle);
 m_Camerapos.Y += distance;
  m_Cam->setPosition(m_Camerapos);
  m_Cam->setTarget(m_DernierePosition);
 }
...

Ceci :

Code:

if(MouseY != 0)
      {
        if (MouseY <= 8*.05f) 
        {
            m_updated = true;
            m_xRotationAngle -= 0.01;
            while (m_xRotationAngle < 2*PI)
                m_xRotationAngle -= 2*PI;
        }
        else if (MouseY >= 8*.95f) 
        {
            m_updated = true;
            m_xRotationAngle += 0.01;    
            while (m_xRotationAngle > 2*PI)
                    m_xRotationAngle += 2*PI;
        }
      }
      if (m_DernierePosition != m_Nmodele->getPosition()) 
      {
       m_updated = true;
       m_DernierePosition = m_Nmodele->getPosition();
      }
 if (m_updated) 
 {
  m_updated = false;
  vector3df m_Camerapos = m_DernierePosition;
  m_Camerapos.X += distance;
  m_Camerapos.Z += distance*cos(m_xRotationAngle);
  m_Camerapos.Y += distance*tan(m_xRotationAngle);
  m_Cam->setPosition(m_Camerapos);
  m_Cam->setTarget(m_DernierePosition);
 }

La caméra gère maintenant la hauteur mais le problème c'est que la caméra passe par exemple au dessus du perso, s'éloigne de plus en plus vers le haut beaucoup trop loin, et au bout d'une certaine distance se retrouve à une distance normal en dessous de la caméra o_O.

Comme j'ai peur de mal m'exprimer voici un lien pour télécharger le programme :
http://www.megaupload.com/?d=YHNZFDWW


Sinon je voudrait savoir (car je n'ai pas trouver) quelle ligne dois-je ajouter ou qu'est ce que je doit ajouter pour que la caméra ne dépasse pas la distance donnée ?
Merci d'avance,
Capry





EDIT :

Bah apparment j'ai trouvé comment faire pour l'axe Y :

Code:

 if (m_updated) 
 {
  m_updated = false;
  vector3df m_Camerapos = m_DernierePosition;
  m_Camerapos.X += distance*cos(m_xRotationAngle);
  m_Camerapos.Z += distance*cos(m_xRotationAngle);
  m_Camerapos.Y += distance*sin(m_xRotationAngle);
  m_Cam->setPosition(m_Camerapos);
  m_Cam->setTarget(m_DernierePosition);
 }

Donc comme ça la caméra se déplace bien sur l'axe horizontal, mais est incompatible avec l'autre, c'est-à-dire que la caméra fait n'importe quoi si je met :

Code:

if(m_updated) 
 {
  m_updated = false;
  vector3df m_Camerapos = m_DernierePosition;
  //Déplacement verticaux
   m_Camerapos.X += distance*cos(m_xRotationAngle);
   m_Camerapos.Z += distance*cos(m_xRotationAngle);
   m_Camerapos.Y += distance*sin(m_xRotationAngle);
  //Déplacement horizontaux
   m_Camerapos.X += distance*sin(m_yRotationAngle);
   m_Camerapos.Z += distance*cos(m_yRotationAngle);
   m_Camerapos.Y += distance;
  
   m_Cam->setPosition(m_Camerapos);
   m_Cam->setTarget(m_DernierePosition);
 }

Je touche au but, mais il me reste encore ce problème avant que la caméra imite celle de WoW par exemple.
Merci de m'aider à le résoudre (même si pour l'instant je parle un peu tout seul XD).
Bonne soirée,

Capry

Dernière modification par capry (18-02-2009 21:21:19)

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
84 invités en ligne
Aucun membre connecté
RSS Feed