Irrlicht改变地形大小(宽度+高度)

时间:2013-09-10 16:41:36

标签: c++ terrain irrlicht

我想在Irrlicht中更改地形大小(宽度+高度),但我没有找到任何功能。我想要一个带有一个纹理的动态地图。我的情况是否使用了错误的模式/类?

目前我有这个:

scene::ITerrainSceneNode* terrain = sceneManager->addTerrainSceneNode("media/terrain-heightmap.bmp", 0, -1,
    core::vector3df(0.f, -4.f, 0.f),     // position
    core::vector3df(0.f, 0.f, 0.f),     // rotation
    core::vector3df(1.f, 0.f, 1.f),  // scale
    video::SColor (255, 255, 255, 255),   // vertexColor
    5,                  // maxLOD
    scene::ETPS_17,             // patchSize
    4                   // smoothFactor
);

terrain->setMaterialFlag(video::EMF_LIGHTING, false);
terrain->setMaterialTexture(0, driver->getTexture("media/terrain-texture.jpg"));
terrain->setMaterialType(video::EMT_DETAIL_MAP);

我试图找到一些用于设置宽度+高度(大小)的setter,但我没有找到任何方法。

1 个答案:

答案 0 :(得分:0)

您可以使用setScale更改地形(或任何网格)的比例。

terrain->setScale(vec3df(2.0f, 0.0f, 2.0f));

创建地形时,将比例作为第3个参数传递。因此,调用上面的行将导致您的地形在X轴和Z轴上的大小(拉伸)与您的代码段一样大。请注意,scale参数中的0.0f y值将使您的地形非常平坦,因为它将用于缩放高度贴图中提供的值。