I did try to make a tangent mesh like the tutorial but the result is even worse :
[img=http://img129.imageshack.us/img129/5297/sanstitrehi8.th.jpg]
Here is the code (I removed some part of it, not important for normal mapping):
Code: Select all
#include <irrlicht.h>
#include <iostream>
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#pragma comment(lib, "Irrlicht.lib")
IMeshSceneNode* fixednode = 0;
IrrlichtDevice *device = 0;
int main(void)
{
device = createDevice(EDT_OPENGL,
dimension2d<s32>(1024, 768), 16, false, false, false, &receiver);
device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();
guienv->addStaticText(L"test import .x", rect<int>(10,10,200,22), true);
IAnimatedMesh* mesh = smgr->getMesh("../model/mycharacter.x");
driver->setTextureCreationFlag(video::ETCF_ALWAYS_32_BIT, true);
scene::IMesh* tangentMesh = smgr->getMeshManipulator()->createMeshWithTangents(mesh->getMesh(0));
fixednode = smgr->addMeshSceneNode(tangentMesh);
fixednode->setMaterialTexture(1, driver->getTexture("../model/normals2.png"));
if (fixednode)
{
fixednode->setMaterialFlag(EMF_LIGHTING, true);
fixednode->setMaterialFlag(EMF_BACK_FACE_CULLING, false);
fixednode->setMaterialType(video::EMT_PARALLAX_MAP_SOLID);
}
ILightSceneNode *light = smgr->addLightSceneNode(0, vector3df(0,0,50), SColorf(0.5f, 0.5f, 0.5f, 0.1f), 600.0f);
ISceneNodeAnimator* anim = smgr->createFlyCircleAnimator(vector3df(0,-40,50), 20.0f);
light->addAnimator(anim);
anim->drop();
light = smgr->addLightSceneNode(0, vector3df(0,40,0), SColorf(0.2f, 0.2f, 0.2f, 0.1f), 600.0f);
ICameraSceneNode *camera = smgr->addCameraSceneNodeMaya(NULL, -100.0f, 100.0f, 100.0f);
camera->setFOV(PI/10.0f);
while(device->run())
{
driver->beginScene(true, true, 0);
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
I'll try to do this with a very simple mesh, just in case...