Historique des modifications - Message

Message #1644

Sujet: Afficher des lignes en 3D


Type Date Auteur Contenu
Création du message 24-02-2007 10:01:32 katsankat
Salut, essaye ça
#include <irrlicht.h>

using namespace irr;
using namespace core;
using namespace video;
using namespace scene;


void Dessiner_Ligne(IVideoDriver* driver, core::vector3df from,
			core::vector3df to, SColor couleur )
{
	matrix4 mat;
	SMaterial material;
	material.Texture1 = 0;
	material.Lighting = false;
	driver->setTransform(ETS_WORLD, mat); 
	driver->draw3DLine(from, to, couleur);
}


int main(int argc, char **argv)
{
  IrrlichtDevice* device = createDevice(EDT_OPENGL, dimension2d<s32>(400, 400),
		32, false, false, false); if (!device) return 1;

  IVideoDriver* driver = device->getVideoDriver();
  ISceneManager* smgr  = device->getSceneManager();

  // [cam]
  scene::ICameraSceneNode* cam;
	cam = smgr->addCameraSceneNodeFPS(0,100.0f,200.0f);
	cam->setPosition(core::vector3df(-200, 100, -200));
	cam->setTarget(core::vector3df(0,00,0));
	device->getCursorControl()->setVisible(false);

  // [Light]
   ILightSceneNode*  pLight = device->getSceneManager()->addLightSceneNode();
   SLight &l = pLight->getLightData();
      l.Type = ELT_DIRECTIONAL; 

   ISceneNode* pNode = device->getSceneManager()->addEmptySceneNode();
   pLight->setPosition(vector3df(0,1,1));
   pLight->setParent(pNode);

  // [Empty nodes pour relier les lignes]
   ISceneNode* a[4];

   irr::gui::IGUIFont* font = device->getGUIEnvironment()->getBuiltInFont();
   for (int n=0; n<4; n++)
   {
     a[n] = device->getSceneManager()->addEmptySceneNode();
     core::stringw str(L"Noeud "); str +=n;
     smgr->addTextSceneNode(font, str.c_str(), video::SColor(255,0,140,0), a[n]);
     a[n]->setPosition(core::vector3df(20*n,30*n,40*n));
   }

   // [main loop]
   while (device->run())
   {
     driver->beginScene(true, true, SColor(255, 40, 40, 40));
     smgr->drawAll();

     core::vector3df pos = a[1]->getPosition();
     pos.X++;
     if (pos.X>100) pos.X =-100;
     a[1]->setPosition(pos);

     for (int n=1; n<4; n++)
        Dessiner_Ligne (driver, a[n]->getPosition(), a[n-1]->getPosition(), SColor(255,n*50,n*50,n*50));

     driver->endScene();
  }

  device->drop();
  return 0;
}

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
156 invités en ligne
membre en ligne: -
RSS Feed