#1 

11-01-2007 12:34:34

Astroknight
Membres
Date d'inscription:
Messages: 8
IP: 84.103.218.231
Courriel

Bonjour, j'ai des connaissances assez basiques du C++ et j'ai voulu essayer la methode addAnimatedMeshSceneNode pour me familiariser avec irrlicht seulement voilà, j'arrive à compiler le programme mais apres quand je le lance j'ai un access violation (bug de base).

voici le code que j'utilise pour essayer d'afficher le mesh animé :

...
scene::IAnimatedMesh* m = Device->getSceneManager()->getMesh("Anime.MY3D");

Model = Device->getSceneManager()->addAnimatedMeshSceneNode(m);
Model->setMaterialFlag(video::EMF_LIGHTING, false);
Model->setDebugDataVisible(true);
Model->setAnimationSpeed(30);
...

si quelqu'un voit l'erreur et que ça saute aux yeux, merci d'avance


Hors ligne


#2 

11-01-2007 13:29:50

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.16.15.55
Courriel  Site web

Salut, essaye avec ça :

scene::IAnimatedMesh* m = Device->getSceneManager()->getMesh("Anime.MY3D");

IAnimatedMeshSceneNode* Model = Device->getSceneManager()->addAnimatedMeshSceneNode(m);
Model->setMaterialFlag(video::EMF_LIGHTING, false);
Model->setDebugDataVisible(true);
Model->setAnimationSpeed(30);

Et contrôle bien que le fichier Anime.MY3D est bien au même endroit que l'executable.
Sinon que dit la console derrière, ça peut aider de savoir ce qu'elle renvoit.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#3 

11-01-2007 20:02:02

Astroknight
Membres
Date d'inscription:
Messages: 8
IP: 86.73.0.222
Courriel

Je viens de tester ton code, le probleme c'est que le bug semble provenir de l'instruction

scene::IAnimatedMesh* m = Device->getSceneManager()->getMesh("Anime.MY3D");

enfin c'est là que le deboggeur de VC6 se place quand j'ai le violation error.
Le fichier MY3D est bien dans le meme repertoire que le programme et en ce qui concerne la console il affiche la version de irrlicht et la liste des pilotes utilisés (Dx9 et ma carte graphique)
apres il n'y a pas d'erreurs de chargement, si ce n'est le message d'erreur window avec le rapport d'erreurs en hexa


Hors ligne


#4 

11-01-2007 22:50:50

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.16.15.55
Courriel  Site web

Tu peux poster la totalité du code ?
Ah et aussi met voir ta config au cas ou.


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#5 

13-01-2007 15:36:57

Astroknight
Membres
Date d'inscription:
Messages: 8
IP: 86.73.0.222
Courriel

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

using namespace irr;
#pragma comment(lib, "Irrlicht.lib")


using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

IrrlichtDevice *Device = 0;

int main()
{
	
	video::E_DRIVER_TYPE driverType;

	printf("Please select the driver you want for this example:\
"\\
		" (a) Direct3D 9.0c\
 (b) Direct3D 8.1\
 (c) OpenGL 1.5\
"\\
		" (d) Software Renderer\
 (e) Apfelbaum Software Renderer\
"\\
		" (f) NullDevice\
 (otherKey) exit\
\
");

	char i;
	std::cin >> i;

	switch(i)
	{
		case 'a': driverType = video::EDT_DIRECT3D9;break;
		case 'b': driverType = video::EDT_DIRECT3D8;break;
		case 'c': driverType = video::EDT_OPENGL;   break;
		case 'd': driverType = video::EDT_SOFTWARE; break;
		case 'e': driverType = video::EDT_SOFTWARE2;break;
		case 'f': driverType = video::EDT_NULL;     break;
		default: return 1;
	}	


	IrrlichtDevice *device =
		createDevice(driverType, core::dimension2d<s32>(640, 480));

	if (device == 0)
		return 1; // could not create selected driver.

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


// voila la partie sur laquelle je bosse, le chargement d'un objet 3d animé

	scene::IAnimatedMesh* m = Device->getSceneManager()->getMesh("Anime.MY3D");

	IAnimatedMeshSceneNode* Model = Device->getSceneManager()->addAnimatedMeshSceneNode(m);
	Model->setMaterialFlag(video::EMF_LIGHTING, false);
	Model->setDebugDataVisible(true);
	Model->setAnimationSpeed(30);

//apres ce qui suis provient directement des tuto de irrlicht

	smgr->addCameraSceneNodeFPS();

	
	device->getCursorControl()->setVisible(false);

	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"Meta le gros boulet [";
			str += driver->getName();
			str += "] FPS:";
			str += fps;

			device->setWindowCaption(str.c_str());
			lastFPS = fps;
		}
	}

	device->drop();
	
	return 0;
}

Voila, je code sous visual C++6 et ma config :

intel M70 (centrino)
Radeon X600 64M dédiées
512 DDR2


Pour info j'arrive a compiler et executer les exemples de irrlicht, donc ma config doit suffir largement (surtout pour charger un MY3D de moins d' 1Mo), de plus le debogueur de VC6 trouve l'endroit où il y a erreur (cité plus haut) mais je ne vois pas ce qui provoque ce bug


Hors ligne


#6 

13-01-2007 17:28:03

Jerry Kan
Membres
Date d'inscription:
Messages: 265
IP: 82.243.77.149
Courriel

Astroknight Ecris:

[
Voila, je code sous visual C++6 et ma config :

intel M70 (centrino)
Radeon X600 64M dédiées
512 DDR2

ey ! j'ai exactement la meme config (sauf pour la ram)


Hors ligne


#7 

13-01-2007 18:33:24

Copland
Modérateurs
Date d'inscription:
Messages: 657
IP: 90.11.178.7
Courriel  Site web

Alors au début tu as un pointer sur Device ....
IrrlichtDevice *Device = 0;

Puis un autre pointer mais cette fois sur device ...
IrrlichtDevice *device = createDevice(driverType, core::dimension2d<s32>(640, 480));

Et là tu fait ça sur un pointer Device qui est = 0 ça va pas ton truc.
scene::IAnimatedMesh* m = Device->getSceneManager()->getMesh("Anime.MY3D");
IAnimatedMeshSceneNode* Model = Device->getSceneManager()->addAnimatedMeshSceneNode(m);

Remplace les Device-> par des device-> plustôt non ? big_smile


Config : I5 2400, ATI HD6870 1Go DDR5, 4Go DDR3.
Single Boot : Windows Seven.

Hors ligne


#8 

14-01-2007 13:24:02

Astroknight
Membres
Date d'inscription:
Messages: 8
IP: 86.73.0.222
Courriel

OMG, forcement vu comme ça...

Merci bien, en effet l'erreur viens de là, je n'ai pas encore l'habitude de manipuler les objets de Irrlicht


Hors ligne


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