ogre代码学习——场景、天空面、雾化
2013-04-28 10:42
316 查看
1. 场景管理器特性
void createScene(void)
{
// Set ambient light
mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
// Create a light
Light* l = mSceneMgr->createLight("MainLight");
// Accept default settings: point light, white diffuse, just set position
l->setPosition(20,80,50);
ColourValue fadeColour(0.93, 0.86, 0.76);
mSceneMgr->setFog( FOG_LINEAR, fadeColour, .001, 500, 1000);
mWindow->getViewport(0)->setBackgroundColour(fadeColour);
std::string terrain_cfg(“terrain.cfg”);
mSceneMgr -> setWorldGeometry(terrain_cfg);
// Infinite far plane?
if (mRoot->getRenderSystem()->getCapabilities()->hasCapability(RSC_INFINITE_FAR_PLANE))
96
{
mCamera->setFarClipDistance(0);
}
// Define the required skyplane
Plane plane;
// 5000 world units from the camera
plane.d = 5000;
// Above the camera, facing down
plane.normal = -Vector3::UNIT_Y;
// Set a nice viewpoint
mCamera->setPosition(707,2500,528);
mCamera->lookAt(0, 0, 0);
}
增加了雾化效果,包括雾的颜色和方程参数,视口的背景色与雾颜色相同,避免背景与场景的反差
Plane为天空平面,高度5000,只建立没设置天空面。
如果把视口背景色设置为黑色,是如下效果,雾仍然有影响
加入天空面
mSceneMgr->setSkyPlane(true, plane, ”Examples/CloudySky”);
天空距离5000,被雾笼罩,辨认不出纹理
图形硬件对雾的处理是整个场景被渲染完成后才进行,因此GPU无法挑拣出天空面,导致天空面被雾化影像
效果如下:
解决此问题,把天空距离拉近到500,雾所不能影响的对方,如下:
由于天空面只是一个平面,平视时会看到天空和背景的交界线,可以用地形去遮盖,也可以用背景色去掩饰,但是更好的是用天空盒或穹顶
(至少天空曲面),解除可视角度的限制。
void createScene(void)
{
// Set ambient light
mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
// Create a light
Light* l = mSceneMgr->createLight("MainLight");
// Accept default settings: point light, white diffuse, just set position
l->setPosition(20,80,50);
ColourValue fadeColour(0.93, 0.86, 0.76);
mSceneMgr->setFog( FOG_LINEAR, fadeColour, .001, 500, 1000);
mWindow->getViewport(0)->setBackgroundColour(fadeColour);
std::string terrain_cfg(“terrain.cfg”);
mSceneMgr -> setWorldGeometry(terrain_cfg);
// Infinite far plane?
if (mRoot->getRenderSystem()->getCapabilities()->hasCapability(RSC_INFINITE_FAR_PLANE))
96
{
mCamera->setFarClipDistance(0);
}
// Define the required skyplane
Plane plane;
// 5000 world units from the camera
plane.d = 5000;
// Above the camera, facing down
plane.normal = -Vector3::UNIT_Y;
// Set a nice viewpoint
mCamera->setPosition(707,2500,528);
mCamera->lookAt(0, 0, 0);
}
增加了雾化效果,包括雾的颜色和方程参数,视口的背景色与雾颜色相同,避免背景与场景的反差
Plane为天空平面,高度5000,只建立没设置天空面。
如果把视口背景色设置为黑色,是如下效果,雾仍然有影响
加入天空面
mSceneMgr->setSkyPlane(true, plane, ”Examples/CloudySky”);
天空距离5000,被雾笼罩,辨认不出纹理
图形硬件对雾的处理是整个场景被渲染完成后才进行,因此GPU无法挑拣出天空面,导致天空面被雾化影像
效果如下:
解决此问题,把天空距离拉近到500,雾所不能影响的对方,如下:
由于天空面只是一个平面,平视时会看到天空和背景的交界线,可以用地形去遮盖,也可以用背景色去掩饰,但是更好的是用天空盒或穹顶
(至少天空曲面),解除可视角度的限制。
相关文章推荐
- OGRE代码学习——场景查询
- ogre3D学习基础14 -- 雾化效果与天空面,天空盒,天空穹
- 【Ogre编程入门与进阶】第八章 地形、天空与雾化效果
- 【Ogre编程入门与进阶】第八章 地形、天空与雾化效果
- 菜鸟学习OGRE和天龙八部之十五: 添加MFC的菜单,来控制场景的显示
- Ogre代码学习之1——Ogre中地形lod的基础:deltaHeight的计算
- 菜鸟学习OGRE和天龙八部之十五: 添加MFC的菜单,来控制场景的显示
- ogre代码实例-场景、摄像机的创建,节点的平移旋转缩放
- Ogre 学习框架代码^__^
- Ogre代码学习之1——Ogre中地形lod的基础:deltaHeight的计算
- .Net语言 APP开发平台——Smobiler学习日志:Poplist控件在APP中的应用场景以及代码
- ogre场景查询—简单学习
- .Net语言 APP开发平台——Smobiler学习日志:Poplist控件在APP中的应用场景以及代码
- AI challenger 场景分类 PyTorch 迁移学习 Places365-CNNs 启动代码
- cocos2d-x3.0学习之场景切换代码
- ogre代码学习——地形 手工和cfg创建
- Cocos2d-x创建和转换场景学习笔记 分类: cocos2d代码编写 2015-07-27 17:38 8人阅读 评论(0) 收藏
- ogre3D学习基础11 -- 交换两个场景管理器
- 【笔记】三、场景管理器、地形、天空、雾化
- 对生成对抗网络GANs原理、实现过程、应用场景的理解(附代码),另附:深度学习大神文章列表