您的位置:首页 > 其它

ogre地形

2012-08-13 17:49 274 查看
1 首先

mTerrainGlobalOptions = new Ogre::TerrainGlobalOptions();

mTerrainGlobalOptions->setMaxPixelError(3);

mTerrainGlobalOptions->setCompositeMapDistance(2000);

mTerrainGlobalOptions->setLightMapDirection(lightdir);

mTerrainGlobalOptions->setCompositeMapAmbient(mSceneMgr->getAmbientLight());

mTerrainGlobalOptions->setCompositeMapDiffuse(l->getDiffuseColour());

2 实例化一个TerrainGroup对象

mTerrainGroup = OGRE_NEW Ogre::TerrainGroup(mSceneMgr, Ogre::Terrain::ALIGN_X_Z, mapSize, worldSize);

mTerrainGroup->setOrigin(Ogre::Vector3::ZERO);

mTerrainGroup->setResourceGroup("General");

////设置地形默认属性

Ogre::Terrain::ImportData& defaultimp = mTerrainGroup->getDefaultImportSettings();

defaultimp.terrainSize = TERRAINWORLDSIZE;

defaultimp.worldSize = TERRAINWORLDSIZE;

defaultimp.inputScale = 1;

defaultimp.minBatchSize = 33;

defaultimp.maxBatchSize = 65;

//设置纹理

defaultimp.layerList.resize(1);

defaultimp.layerList[0].worldSize = BLENDMAPWORLDSIZE;

defaultimp.layerList[0].textureNames.push_back("DefaultTexture.jpg");

defaultimp.layerList[0].textureNames.push_back(DEFAULTNORMALMAP);

3 定义地形块:

//name是后缀为.ogt的文件,或为0,表示平面数据,我觉得这个东西应该是高度数据。

mTerrainGroup->defineTerrain(pageX, pageY, name);

4 地形多层纹理混合:

//获取地形的第1一层纹理:

Ogre::TerrainLayerBlendMap* blendMap = terrain->getLayerBlendMap(l);

float* data = blendMap->getBlendPointer();

for (int h = 0;h<100;h++)

{

for (int 0;w<100;w++)

{

data[dataIndex] = 0.0f; //设置为不可见,

}

}

blendMap->dirty();

blendMap->update();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: