Historique des modifications - Message

Message #10004

Sujet: [débutant] problème de caméra fps à la compilation


Type Date Auteur Contenu
Dernière modification 28-05-2011 21:08:32 Magun
faire du copier/coller et déplacer du text ne résume pas la programmation ...

quand tu me dit placer GameLoop dans la boucle de rendue j'est comprit un apelle de la fonction
tu devrait dabord combler tes lacunes en c++ avans de commencer un moteur 3d

Code c++ :

#include <irrlicht.h>
#include <iostream>

GameLoop(irr::scene::ICameraSceneNode*camera, IAnimatedMeshSceneNode*meshNode)
{
        camera->setPosition(meshNode->getPosition());
        camera->setRotation(meshNode->getRotation());
}
int main()
{
    irr::IrrlichtDevice *device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(800,600), 32, true, true, false,0);

    irr::video::IVideoDriver* driver = device->getVideoDriver();
    irr::scene::ISceneManager* smgr = device->getSceneManager();

    device->getCursorControl ()-> setVisible (false);
    irr::scene::IAnimatedMeshSceneNode * = smgr->addAnimatedMeshSceneNode (smgr->getMesh ("./plan.obj"));
    meshNode->setMaterialFlag(irr::video::EMF_LIGHTING, false);
    meshNode->setMaterialTexture(0, driver->getTexture("terrain-texture.jpg"));
    meshNode->setMD2Animation(irr::scene::EMAT_STAND);

    irr::scene::IMeshSceneNode* cube = smgr->addCubeSceneNode(10.0f,0, -1, irr::core::vector3df( 0.0f,0.0f, 20.0f));
    cube->setMaterialFlag(irr::video::EMF_WIREFRAME, true);

    irr::SKeyMap keyMap[5];
    keyMap[0].Action = irr::EKA_MOVE_FORWARD;
    keyMap[0].KeyCode = irr::KEY_KEY_Z;
    keyMap[1].Action = irr::EKA_MOVE_BACKWARD;
    keyMap[1].KeyCode = irr::KEY_KEY_S;
    keyMap[2].Action = irr::EKA_STRAFE_LEFT;
    keyMap[2].KeyCode = irr::KEY_KEY_Q;
    keyMap[3].Action = irr::EKA_STRAFE_RIGHT;
    keyMap[3].KeyCode = irr::KEY_KEY_D;
    keyMap[4].Action = irr::EKA_JUMP_UP;
    keyMap[4].KeyCode = irr::KEY_SPACE;

    irr::scene::ICameraSceneNode *camera = smgr->addCameraSceneNodeFPS( 0, 100.0f, 0.1f, -1, keyMap, 5);

    while (device->run())
    {
        driver->beginScene(true, true, irr::video::SColor(255,255, 255, 255));
             sceneManager->drawAll ();
             GameLoop(camera, meshNode);
        driver->endScene ();
    }
    device->drop ();
    return 0;
}


maintenant réfléchie deux second smile
que va faire la camera "fps" quand tu souhaite bouger ? (via les touche)
tu appuis sur un touche la camera "avance", elle change de position donc, et aussi tot après la camera changent de position par raport à meshNode ( via GameLoop )
a-tu donc beusoin d'une camera fps ?
si tu souhait faire bouger un nodes comme un personnage disons, c'est le nodes qui ce doit de bouger et non à la camera de transmetre les mouvements, elle ne fait que le suivre

et pensse a structuré t'est codes, sa risque de devenir vite illisible sur de gros codes
Création du message 28-05-2011 21:07:03 Magun
faire du copier/coller et déplacer du text ne résume pas la programmation ...

quand tu me dit placer GameLoop dans la boucle de rendue j'est comprit un apelle de la fonction
tu devrait dabord combler tes lacunes en c++ avans de commencer un moteur 3d

Code c++ :

#include <irrlicht.h>
#include <iostream>

GameLoop(irr::scene::ICameraSceneNode*camera, IAnimatedMeshSceneNode*meshNode)
{
        camera->setPosition(meshNode->getPosition());
        camera->setRotation(meshNode->getRotation());
}
int main()
{
    irr::IrrlichtDevice *device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(800,600), 32, true, true, false,0);

    irr::video::IVideoDriver* driver = device->getVideoDriver();
    irr::scene::ISceneManager* smgr = device->getSceneManager();

    device->getCursorControl ()-> setVisible (false);
    irr::scene::IAnimatedMeshSceneNode * = smgr->addAnimatedMeshSceneNode (smgr->getMesh ("./plan.obj"));
    meshNode->setMaterialFlag(irr::video::EMF_LIGHTING, false);
    meshNode->setMaterialTexture(0, driver->getTexture("terrain-texture.jpg"));
    meshNode->setMD2Animation(irr::scene::EMAT_STAND);

    irr::scene::IMeshSceneNode* cube = smgr->addCubeSceneNode(10.0f,0, -1, irr::core::vector3df( 0.0f,0.0f, 20.0f));
    cube->setMaterialFlag(irr::video::EMF_WIREFRAME, true);

    irr::SKeyMap keyMap[5];
    keyMap[0].Action = irr::EKA_MOVE_FORWARD;
    keyMap[0].KeyCode = irr::KEY_KEY_Z;
    keyMap[1].Action = irr::EKA_MOVE_BACKWARD;
    keyMap[1].KeyCode = irr::KEY_KEY_S;
    keyMap[2].Action = irr::EKA_STRAFE_LEFT;
    keyMap[2].KeyCode = irr::KEY_KEY_Q;
    keyMap[3].Action = irr::EKA_STRAFE_RIGHT;
    keyMap[3].KeyCode = irr::KEY_KEY_D;
    keyMap[4].Action = irr::EKA_JUMP_UP;
    keyMap[4].KeyCode = irr::KEY_SPACE;

    irr::scene::ICameraSceneNode *camera = smgr->addCameraSceneNodeFPS( 0, 100.0f, 0.1f, -1, keyMap, 5);

    while (device->run())
    {
        driver->beginScene(true, true, irr::video::SColor(255,255, 255, 255));
             sceneManager->drawAll ();
             GameLoop(camera, meshNode);
        driver->endScene ();
    }
    device->drop ();
    return 0;
}


maintenant réfléchie deux second smile
que va faire la camera "fps" quand tu souhaite bouger ? (via les touche)
tu appuis sur un touche la camera "avance", elle change de position donc, et aussi tot après la camera changent de position par raport à meshNode ( via GameLoop )
a-tu donc beusoin d'une camera fps ?
si tu souhait faire bouger un nodes comme un personnage disons, c'est le nodes qui ce doit de bouger et non à la camera de transmetre les mouvements, elle ne fait que le suivre

et pensse a structuré t'est codes, sa risque de devenir vite illisible sur de gros codes

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
144 invités en ligne
membre en ligne: -
RSS Feed