[OGRE]基础教程来五发:来谈一谈蓝天白云

造完了地面,接下来的任务就是搞定天空啦。

这里主要给大家介绍两种常见的构建天空的方法:

天空盒:始终围绕摄像机一定距离的包围盒

天空穹:没有底的立方体

天空面:一个天空平面

这个要比地形系统简单的多了。


一、天空盒

在OGRE中,在可以用一行代码看到天空盒的效果:

mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox");

这个函数一共可以传四个参数:

参数1:是否启用天空盒子
参数2:天空的材质脚本
参数3:距离摄像机的距离
参数4:是否在场景中其他元素前面渲染

	//设置天空盒
	//参数1:是否启用天空盒子
	//参数2:天空的材质脚本
	//参数3:距离摄像机的距离
	//参数4:是否在场景中其他元素前面渲染
	mSceneMgr->setSkyBox(true, "Examples/SpaceSkyBox", 5000, false);


运行效果如图:



二、天空穹

和天空盒稍有区别,注意调用函数的参数代表不同意义:

	mSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8);

前两个参数和天空盒子一样,

第三个参数表示天空穹的曲率,建议2~65之间,数值越低距离感越强。

第四个参数是纹理贴图的覆盖次数,

第五第六的参数和天空盒子的三四参数的意义一样。


运行效果如图:



三:天空面

其实天空面就是一个Plain,实现的代码如下:

	Ogre::Plane plane;
	plane.d = 1000;
	plane.normal = Ogre::Vector3::NEGATIVE_UNIT_Y;
	mSceneMgr->setSkyPlane(true, plane, "Examples/SpaceSkyPlane", 1500, 75);

第四个参数是天空面的大小,第五个是纹理贴图的重复次数。

运行效果如图:


显然这样的运行效果不是很理想,因为离地太近了,将代码作如下修改:

mSceneMgr->setSkyPlane(true, plane, "Examples/SpaceSkyPlane", 1500, 50, true, 1.5f, 150, 150);


第六个参数和前面相似,是否先渲染。

第七个参数可以设置其曲率,第八第九个是xy轴的碎片数目。

再次运行,效果好了很多:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值