mSceneMgr->setSkyPlane(true, plane, \0.5, 150, 150);
这样看起来就对了。如果我们往上看,就能看见天空(真实情况也是这样),而不会滑稽地从别处探出来。不管你是否使用弯曲,这都能解决当你往地平线上看的时候出现的不正常现象。
还有一种办法能让雾效不涉及整个天空,但需要对材质脚本进行修改。这已不是本课的内容,为了今后参考,它就是材质里禁用雾效的那个参数。
黑暗中的雾
当你设置雾的时候,可能不想使用天空,因为雾已经浓到你无法看见天空了。上面讲的雾效的一些技巧在某些场景非常有用。不把雾设置成明亮的颜色,而是设成非常暗,看看有什么效果。(注意,我们把天空面设置成离摄像机只有10个单位距离,在设置雾之前):
[cpp] view plaincopy
Ogre::ColourValue fadeColour(0.1, 0.1, 0.1);
mWindow->getViewport(0)->setBackgroundColour(fadeColour); mSceneMgr->setFog(Ogre::FOG_LINEAR, fadeColour, 0.0, 10, 150);
Ogre::Plane plane; plane.d = 10;
plane.normal = Ogre::Vector3::NEGATIVE_UNIT_Y;
mSceneMgr->setSkyPlane(true, plane, \
0.5, 150, 150);
编译运行程序,不算太糟糕。当然,一旦你会使用光照,你就不必用这种技巧了。但这的确展示了雾效的灵活性,以及用这个引擎你能做一些有趣的事情。如果你正写一个第一人称游戏,使用黑色雾能够制造“失明”或“符咒”这样的特效。