TerrainMesh Problem
TerrainMesh Problem
Hi!
Could someone please post a small code for displaying a terrainmesh?
Im a beginner and i dont know, what im doing wrong:
device = createDevice(video::EDT_DIRECTX9, core::dimension2d<s32>(640, 480), 32, false, true, 0);
driver = device->getVideoDriver();
smgr = device->getSceneManager();
TerrainNode = smgr->addTerrainMesh("Terrain",
driver->createImageFromFile("media/terrainmap.jpg"),
driver->createImageFromFile("media/heightmap.png"),
dimension2d< f32 >(300.0f, 300.0f),
500.0f,
dimension2d< s32 >(512, 512));
TerrainSceneNode = smgr->addAnimatedMeshSceneNode( TerrainNode );
smgr->addCameraSceneNodeFPS(0, 100.0f, 100.0f);
device->getCursorControl()->setVisible(false);
there is no syntax error. I dont know what im doing wrong, because there is nothing displayed.
Could someone please post a small code for displaying a terrainmesh?
Im a beginner and i dont know, what im doing wrong:
device = createDevice(video::EDT_DIRECTX9, core::dimension2d<s32>(640, 480), 32, false, true, 0);
driver = device->getVideoDriver();
smgr = device->getSceneManager();
TerrainNode = smgr->addTerrainMesh("Terrain",
driver->createImageFromFile("media/terrainmap.jpg"),
driver->createImageFromFile("media/heightmap.png"),
dimension2d< f32 >(300.0f, 300.0f),
500.0f,
dimension2d< s32 >(512, 512));
TerrainSceneNode = smgr->addAnimatedMeshSceneNode( TerrainNode );
smgr->addCameraSceneNodeFPS(0, 100.0f, 100.0f);
device->getCursorControl()->setVisible(false);
there is no syntax error. I dont know what im doing wrong, because there is nothing displayed.
You might want to set the scene node's lighting to false. Without any lights, the scene would be completly black. By setting the lighting flag to false, the object will be displayed even with no lights.
Set the flag with:
place this after you make the scene node, of course.
agrif
Set the flag with:
Code: Select all
TerrainSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);
agrif
Woops. Forgot somthing. Sorry for the double post.
did you add a loop to draw anything?
somthing like:
should go at the end of the main() function.
Also, you didn't seem to declare the variables at all. For example, the device should be declared as "IrrlichtDevice *device = createDevice()". Make sure you declare your variables.
agrif
did you add a loop to draw anything?
somthing like:
Code: Select all
while(device->run() && driver)
{
driver->beginScene(true, true, video::SColor(255,0,0,255));
scenemgr->drawAll();
driver->endScene();
}
device->drop();
Also, you didn't seem to declare the variables at all. For example, the device should be declared as "IrrlichtDevice *device = createDevice()". Make sure you declare your variables.
agrif
Thank you for your posting, but when i add these code:
device = createDevice(video::EDT_DIRECTX9, core::dimension2d<s32>(640, 480), 32, false, true, 0);
driver = device->getVideoDriver();
smgr = device->getSceneManager();
TerrainNode = smgr->addTerrainMesh("Terrain",
driver->createImageFromFile("media/terrainmap.jpg"),
driver->createImageFromFile("media/heightmap.png"),
dimension2d< f32 >(300.0f, 300.0f),
500.0f,
dimension2d< s32 >(512, 512));
TerrainSceneNode = smgr->addAnimatedMeshSceneNode( TerrainNode );
TerrainSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);
smgr->addCameraSceneNodeFPS(0, 100.0f, 100.0f);
device->getCursorControl()->setVisible(false);
I receive a null-pointer-exception....
TerrainSceneNode doesnt seem to be set???
device = createDevice(video::EDT_DIRECTX9, core::dimension2d<s32>(640, 480), 32, false, true, 0);
driver = device->getVideoDriver();
smgr = device->getSceneManager();
TerrainNode = smgr->addTerrainMesh("Terrain",
driver->createImageFromFile("media/terrainmap.jpg"),
driver->createImageFromFile("media/heightmap.png"),
dimension2d< f32 >(300.0f, 300.0f),
500.0f,
dimension2d< s32 >(512, 512));
TerrainSceneNode = smgr->addAnimatedMeshSceneNode( TerrainNode );
TerrainSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);
smgr->addCameraSceneNodeFPS(0, 100.0f, 100.0f);
device->getCursorControl()->setVisible(false);
I receive a null-pointer-exception....
TerrainSceneNode doesnt seem to be set???
Thank you for your posting, but when i add these code:
device = createDevice(video::EDT_DIRECTX9, core::dimension2d<s32>(640, 480), 32, false, true, 0);
driver = device->getVideoDriver();
smgr = device->getSceneManager();
TerrainNode = smgr->addTerrainMesh("Terrain",
driver->createImageFromFile("media/terrainmap.jpg"),
driver->createImageFromFile("media/heightmap.png"),
dimension2d< f32 >(300.0f, 300.0f),
500.0f,
dimension2d< s32 >(512, 512));
TerrainSceneNode = smgr->addAnimatedMeshSceneNode( TerrainNode );
TerrainSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);
smgr->addCameraSceneNodeFPS(0, 100.0f, 100.0f);
device->getCursorControl()->setVisible(false);
I receive a null-pointer-exception....
TerrainSceneNode doesnt seem to be set???
device = createDevice(video::EDT_DIRECTX9, core::dimension2d<s32>(640, 480), 32, false, true, 0);
driver = device->getVideoDriver();
smgr = device->getSceneManager();
TerrainNode = smgr->addTerrainMesh("Terrain",
driver->createImageFromFile("media/terrainmap.jpg"),
driver->createImageFromFile("media/heightmap.png"),
dimension2d< f32 >(300.0f, 300.0f),
500.0f,
dimension2d< s32 >(512, 512));
TerrainSceneNode = smgr->addAnimatedMeshSceneNode( TerrainNode );
TerrainSceneNode->setMaterialFlag(video::EMF_LIGHTING, false);
smgr->addCameraSceneNodeFPS(0, 100.0f, 100.0f);
device->getCursorControl()->setVisible(false);
I receive a null-pointer-exception....
TerrainSceneNode doesnt seem to be set???
Im so far, that i know, that this code doesn't save mesh data to "Terrain", because i get a nulll pointer exception, if i want to use the mesh data with another function e.g. to attach it to the TerrainSceneNode...
Code: Select all
TerrainMesh = smgr->addTerrainMesh("terrain",
driver->createImageFromFile("media/terrainmap.jpg"),
driver->createImageFromFile("media/heightmap.png"),
dimension2d< f32 >(300.0f, 300.0f),
500.0f,
dimension2d< s32 >(512, 512));
mesh = smgr->getMesh("terrain");
TerrainSceneNode = smgr->addAnimatedMeshSceneNode( mesh );
TerrainSceneNode->setMaterialFlag(video::EMF_LIGHTING, false); <--- here i get the exception :cry:
please help!
At first: Thank you very much for your help!!!
my terrain is displayed now. It was the file format!!
But now i have another problem. My terrain looks very strange.
its repeating itself in a first row, and then there are more copys of it (3x3) which have only peeks on it. Also the texture seems to be rasterized, and is not scaled to the size of my terrain(although the image is the same size). It is much bigger.
And what does the parameter with the default vertex size do? i couldn't find anything exactly in the api. I found out that here is only working (64, 64).[/img]
my terrain is displayed now. It was the file format!!
But now i have another problem. My terrain looks very strange.
its repeating itself in a first row, and then there are more copys of it (3x3) which have only peeks on it. Also the texture seems to be rasterized, and is not scaled to the size of my terrain(although the image is the same size). It is much bigger.
And what does the parameter with the default vertex size do? i couldn't find anything exactly in the api. I found out that here is only working (64, 64).[/img]