Historique des modifications - Message

Message #7966

Sujet: Environement 3D


TypeDateAuteurContenu
Dernière modification16-02-2010 22:34:23Ilovechocolat
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 message16-02-2010 17:18:22Ilovechocolat
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

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
106 invités en ligne
membre en ligne: -
RSS Feed