|
|
但在Camera移动时,地形和树之间的位置会移动, 它们能相对不动吗?
CODE:
void createScene(void)
{
mSceneMgr->setAmbientLight(Colourvalue(1.5, 1.5, 1.5));
mTerrainMgr = new ET::TerrainManager(mSceneMgr);
mTerrainMgr->setLODErrorMargin(2, mCamera->getViewport()->getActualHeight());
mTerrainMgr->setUseLODMorphing(true, 0.2, "morphFactor");
ET::TerrainInfo terrainInfo (129, 129, vector<float>(129*129, 0.5f));
// set position and size of the terrain
terrainInfo.setExtents(AxisAlignedBox(0, 0, 0, 1500, 300, 1500));
// now render it
mTerrainMgr->createTerrain(terrainInfo);
mSplatMgr = new ET::SplattingManager("ETSplatting", "ET", 128, 128, 3);
mSplatMgr->setNumTextures(6);
// 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));
lightmapTex->getBuffer(0, 0)->blitFromMemory(lightmap.getPixelBox(0, 0));
// load the terrain material and assign it
MaterialPtr material (MaterialManager::getSingleton().getByName("ETTerrainMaterial"));
mTerrainMgr->setMaterial(material);
Entity *ent = mSceneMgr->createEntity("head", "taohua3.mesh");
ent->setMaterialName("Examples/taohua");
mSceneMgr->getRootSceneNode()->createChildSceneNode(Vector3(240, 0, 580))->attachObject(ent);
MaterialPtr mat=MaterialManager::getSingleton().getByName("Examples/taohua");
Pass *pass=mat->getTechnique(0)->getPass(0);
pass->setSceneBlending(SBT_TRANSPARENT_ALPHA);
pass->setDepthCheckEnabled(false);
SceneNode* camNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
camNode->setPosition( 40, 300, 580 );
camNode->attachObject(mCamera);
mCamera->pitch( Degree(-30) );
mCamera->yaw( Degree(-45) );
|
|