Historique des modifications - Message

Message #7966

Sujet: Environement 3D


Type Date Auteur Contenu
Dernière modification 16-02-2010 22:34:23 Ilovechocolat
Le problème de ce system c'est qu'il faut que le programme soit en communication avec les lunettes pour que celle ci s'opacifie au bon moment (c'est d'ailleurs comme ça que ça marche les tv 3D), hors, l'utilisateur n'a pas forcement de lunettes semblable avec un moyen de communiquer avec (bluetooth, infra rouge, wi fi ...).
L'idée que j'avais c'était vraiment de faire fonctionner tout ça sur un écran classique et un ordi classique

J'ai écris un truc, j'ai mes deux images mais il faut encore que je les colores et que je les fusionnes et après ça devrait marcher.

Code c++ :

#include <IRR/irrlicht.h>

void afficher3D(irr::IrrlichtDevice *device);

int main()
{
	irr::IrrlichtDevice *device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(640, 480));
	if (device == 0)
		return 1;
	irr::video::IVideoDriver* driver = device->getVideoDriver();
	irr::scene::ISceneManager* smgr = device->getSceneManager();
	device->getFileSystem()->addZipFileArchive("map-20kdm2.pk3");
	irr::scene::IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");
	irr::scene::ISceneNode* node = 0;

	if (mesh)
		node = smgr->addOctreeSceneNode(mesh->getMesh(0), 0, -1, 1024);
	if (node)
		node->setPosition(irr::core::vector3df(-1300,-144,-1249));
	smgr->addCameraSceneNodeFPS();
	device->getCursorControl()->setVisible(false);
	int lastFPS = -1;

	while(device->run())
	{
		driver->beginScene(true, true, irr::video::SColor(255,200,200,200));
		smgr->drawAll();
		afficher3D(device);
		driver->endScene();

		int fps = driver->getFPS();

		if (lastFPS != fps)
		{
			irr::core::stringw str = L"Irrlicht Engine - 3D example [";
			str += driver->getName();
			str += "] FPS:";
			str += fps;

			device->setWindowCaption(str.c_str());
			lastFPS = fps;
		}
	}
	device->drop();
	return 0;
}
void afficher3D(irr::IrrlichtDevice *device)
{
	irr::video::IVideoDriver* driver = device->getVideoDriver();
	irr::scene::ISceneManager* smgr = device->getSceneManager();
	irr::scene::ICameraSceneNode* camera = device->getSceneManager()->getActiveCamera();
	irr::core::vector3df posCam = camera->getPosition();

	camera->setPosition(posCam + irr::core::vector3df(1, 0, 0));
	irr::video::ITexture* redView = 0;
	driver->setRenderTarget(redView, false, false, irr::video::SColor(255,200,200,200));

	camera->setPosition(posCam - irr::core::vector3df(1, 0, 0));
	irr::video::ITexture* blueView = 0;
	driver->setRenderTarget(blueView, false, false, irr::video::SColor(255,200,200,200));

	irr::video::ITexture* view = 0;
	//coloration et fusion des deux images dans "3DView"
	driver->draw2DImage(view, irr::core::position2d<irr::s32>(0, 0));
	camera->setPosition(posCam);
}

Là je me heurte a un problème, en effet comment on modifie les textures.
Création du message 16-02-2010 17:18:22 Ilovechocolat
Le problème de ce system c'est qu'il faut que le programme soit en communication avec les lunettes pour que celle ci s'opacifie au bon moment (c'est d'ailleurs comme ça que ça marche les tv 3D), hors, l'utilisateur n'a pas forcement de lunettes semblable avec un moyen de communiquer avec (bluetooth, infra rouge, wi fi ...).
L'idée que j'avais c'était vraiment de faire fonctionner tout ça sur un écran classique et un ordi classique

J'ai écris un truc, j'ai mes deux images mais il faut encore que je les colores et que je les fusionnes et après ça devrait marcher.

Code c++ :

#include <IRR/irrlicht.h>

void afficher3D(irr::IrrlichtDevice *device);

int main()
{
	irr::IrrlichtDevice *device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(640, 480));
	if (device == 0)
		return 1;
	irr::video::IVideoDriver* driver = device->getVideoDriver();
	irr::scene::ISceneManager* smgr = device->getSceneManager();
	device->getFileSystem()->addZipFileArchive("map-20kdm2.pk3");
	irr::scene::IAnimatedMesh* mesh = smgr->getMesh("20kdm2.bsp");
	irr::scene::ISceneNode* node = 0;

	if (mesh)
		node = smgr->addOctreeSceneNode(mesh->getMesh(0), 0, -1, 1024);
	if (node)
		node->setPosition(irr::core::vector3df(-1300,-144,-1249));
	smgr->addCameraSceneNodeFPS();
	device->getCursorControl()->setVisible(false);
	int lastFPS = -1;

	while(device->run())
	{
		driver->beginScene(true, true, irr::video::SColor(255,200,200,200));
		smgr->drawAll();
		afficher3D(device);
		driver->endScene();

		int fps = driver->getFPS();

		if (lastFPS != fps)
		{
			irr::core::stringw str = L"Irrlicht Engine - 3D example [";
			str += driver->getName();
			str += "] FPS:";
			str += fps;

			device->setWindowCaption(str.c_str());
			lastFPS = fps;
		}
	}
	device->drop();
	return 0;
}
void afficher3D(irr::IrrlichtDevice *device)
{
	irr::video::IVideoDriver* driver = device->getVideoDriver();
	irr::scene::ISceneManager* smgr = device->getSceneManager();
	irr::scene::ICameraSceneNode* camera = device->getSceneManager()->getActiveCamera();
	irr::core::vector3df posCam = camera->getPosition();

	camera->setPosition(posCam + irr::core::vector3df(1, 0, 0));
	irr::video::ITexture* redView = 0;
	driver->setRenderTarget(redView, false, false, irr::video::SColor(255,200,200,200));

	camera->setPosition(posCam - irr::core::vector3df(1, 0, 0));
	irr::video::ITexture* blueView = 0;
	driver->setRenderTarget(blueView, false, false, irr::video::SColor(255,200,200,200));

	irr::video::ITexture* view = 0;
	//coloration et fusion des deux images dans "3DView"
	driver->draw2DImage(view, irr::core::position2d<irr::s32>(0, 0));
	camera->setPosition(posCam);
}

Là je me heurte a un problème, en effet comment on modifie les textures.

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