[IRRLICHT 1.8.1] Brak ścian Sześcianu
Ostatnio zmodyfikowano 2013-12-30 23:35
wojownik266 Temat założony przez niniejszego użytkownika |
[IRRLICHT 1.8.1] Brak ścian Sześcianu » 2013-12-20 12:01:27 Zabrałem się właśnie za sklejanie pierwszej sceny w irrlichcie z jednym obiektem w roli głównej. Program się ładnie kompiluje i działa poza jednym wyjatkiem. Gdy przybliżę sześcian i wejdę do jego środka to znikają wszystkie (poza jedną) ściany tego sześcianu. Sześcian ten to Scena.irr zrobiona w blenderze 2.46 przy uzyciu skryptu do exportowania scen z blendera do formatu .irr. Wie ktoś co może być przyczyną opisanego wyżej problemu i jak to naprawić? #include <irrlicht.h>
using namespace irr; using namespace core; using namespace scene; using namespace video;
int main( int argc, char * argv[] ) { IrrlichtDevice * device = createDevice( EDT_OPENGL, core::dimension2d < u32 >( 640, 480 ) ); if( device == 0 ) return 1; device->setWindowCaption( L"Load .irr file example" ); device->setResizable( true ); video::IVideoDriver * driver = device->getVideoDriver(); scene::ISceneManager * smgr = device->getSceneManager(); if( argc > 1 ) smgr->loadScene( argv[ 1 ] ); else smgr->loadScene( "Scene.irr" ); scene::ICameraSceneNode * camera = smgr->addCameraSceneNodeFPS(); camera->setPosition( core::vector3df( 0, 0, - 4 ) ); scene::IMetaTriangleSelector * meta = smgr->createMetaTriangleSelector(); core::array < scene::ISceneNode *> nodes; smgr->getSceneNodesFromType( scene::ESNT_ANY, nodes ); smgr->setAmbientLight( video::SColorf( 255, 255, 255 ) ); scene::ISceneNodeAnimator * anim = smgr->createCollisionResponseAnimator( meta, camera, core::vector3df( 5, 5, 5 ), core::vector3df( 0, 0, 0 ) ); meta->drop(); camera->addAnimator( anim ); anim->drop(); scene::ISceneNode * cube = smgr->getSceneNodeFromType( scene::ESNT_CUBE ); if( cube ) camera->setTarget( cube->getAbsolutePosition() ); int lastFPS = - 1; while( device->run() ) if( device->isWindowActive() ) { driver->beginScene( true, true, video::SColor( 0, 200, 200, 200 ) ); smgr->drawAll(); driver->endScene(); int fps = driver->getFPS(); if( lastFPS != fps ) { core::stringw str = L"Load Irrlicht File example - Irrlicht Engine ["; str += driver->getName(); str += "] FPS:"; str += fps; device->setWindowCaption( str.c_str() ); lastFPS = fps; } } device->drop(); return 0; }
|
|
maly |
» 2013-12-20 12:35:26 cube->setMaterialFlag( video::EMF_BACK_FACE_CULLING, false ); |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2013-12-20 13:57:06 O ile dobrze pamiętam to coś podobnego było w ogl 1.1... Tak że chyba wiem co masz na myśli. Jednak po dodaniu tej instrukcji do kodu powyżej, powoduje to że programu nie da się uruchomić ponieważ przy próbie uruchomienia otrzymuję komunikat że "Wystąpił problem z aplikacją... i zostanie zamknięta". Jak to obejść? Wie ktoś? |
|
maly |
» 2013-12-20 14:22:59 Upewnij się czy smgr->getSceneNodeFromType zwraca poprawny wskażnik na cube. scene::ISceneNode * cube = smgr->getSceneNodeFromType( scene::ESNT_CUBE ); if( cube ) { camera->setTarget( cube->getAbsolutePosition() ); cube->setMaterialFlag( video::EMF_BACK_FACE_CULLING, false ); } |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2013-12-20 14:41:44 Teraz program się ładnie kompiluje i uruchamia ale problem ze sciankami bez zmian. Coś mi się zdaje że brakuje paru linijek kodu które wyrzuciłem... Tak że narazie bardzo Ci dziękuję za poświęcony mi czas i jak dosztukuję to co brakuje to znowu się odezwę. Miłego dnia!! |
|
DejaVu |
» 2013-12-30 23:35:07 |
|
« 1 » |