I.SOURCE
OGRE offical Wiki
http://www.ogre3d.org/tikiwiki/ETMAdd-ons Forum
http://www.ogre3d.org/addonforums/viewforum.php?f=16ETM Offical
http://www.oddbeat.de/wiki/etm
II.USE
1).創建與釋放
ET::TerrainManager* mTerrainMgr;
ET::SplattingManager* mSplatMgr;
mTerrainMgr = new ET::TerrainManager(mSceneMgr);
mSplatMgr = new ET::SplattingManager("ETSplatting", "ET", 128, 128, 3);
delete mTerrainMgr;
delete mSplatMgr;
2).設置相關細節
// create a fresh, mid-high terrain for editing
ET::TerrainInfo terrainInfo (129, 129, std::vector<float>(129*129, 0.5f));
// create a manual lightmap texture
TexturePtr lightmapTex = TextureManager::getSingleton().createManual( "ETLightmap", "ET", TEX_TYPE_2D, 128, 128, 1, PF_BYTE_RGB);
Image lightmap;
ET::createTerrainLightmap(terrainInfo, lightmap, 128, 128, Vector3(1, -1, 1), ColourValue::White,ColourValue(0.3, 0.3, 0.3));
// load the terrain material and assign it
MaterialPtr material (MaterialManager::getSingleton().getByName("ETTerrainMaterial"));
mTerrainMgr->setMaterial(material);
III.扯淡
地形的本質是
class Tile : public Ogre::Renderable, public Ogre::MovableObject
TerrainImpl::createTerrain創建地形的時候,用設置信息創建tile:TerrainImpl::createTiles
node = mTerrainNode->createChildSceneNode(name);
mTiles[i][j] = new Tile(name, mSceneMgr, this, mIndexHandler, mInfo, mOpt, i*(mOpt.tileSize-1), j*(mOpt.tileSize-1));
node->attachObject(mTiles[i][j]);
mTerrainNode(OGRE::SceneNode型)是地形的根,命名規則是“mInstanceName + "/Terrain"” 當然mTerrainNode的父節點是root。 tile合成了地形,玩啥就和tile玩吧。都整到這一部了,那該干嘛干嘛。
IV.淺嘗輒止
deform地形的時候,還是有些復雜處理的。貼圖的時候,也有處理的。還聽人說有裂縫一說。還是有些技巧的。雖然沒有OGRE1.7.2新地形那么負責,ETM還是值得一玩的。