星期五, 4月 23, 2010

OGRE 1.7 terrain

弄了我半天,1.6之前只要直接set 一個cfg檔就可以畫出個簡單的terrain,1.7搞得好麻煩,雖然說新增了很多feature啦。

不過沒有新的tutorial或是usage document...搞了老半天才知道怎麼用,實在好累,先把code貼上來,以免過陣子忘記...

//這個改成non-static function了,而且如果不在create terrain前呼叫,會導致run time error,
//而且這error從message或是windbg都看不出來怎麼死的,死在singleton裡,看到的人鐵定
//覺得莫名其妙XD
TerrainGlobalOptions* mTerrainGlobals = OGRE_NEW TerrainGlobalOptions();
mTerrain = OGRE_NEW Ogre::Terrain(sceneMgr);
Ogre::Image img;
img.load("terrain.png", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
Vector3 lightdir(0.55, -0.3, 0.75);
lightdir.normalise();

Light* l = sceneMgr->createLight("tstLight");
l->setType(Light::LT_DIRECTIONAL);
l->setDirection(lightdir);
l->setDiffuseColour(ColourValue::White);
l->setSpecularColour(ColourValue(0.4, 0.4, 0.4));
sceneMgr->setAmbientLight(ColourValue(0.2, 0.2, 0.2));
Ogre::Terrain::ImportData defaultimp;
/*...set the ImportData information...*/
mTerrain->prepare(defaultimp);
mTerrain->load();
/*...set the blend map...*/  
blendMap0->dirty();
blendMap1->dirty();
blendMap0->update();
blendMap1->update();
mTerrain->freeTemporaryResources();

這blog貼code有沒有啥好方法啊?
貼張圖,1.7的terrain有支援normal map跟light map,而且加入了paging manager,以後就可以做大型場景了,bye bye PLSM.

沒有留言: