纳金网

标题: Unity3d基础教程7-灯光(灯光阴影参数设置及lightmapping制作) [打印本页]

作者: paopao    时间: 2013-1-7 16:15
标题: Unity3d基础教程7-灯光(灯光阴影参数设置及lightmapping制作)
今天我们来看一下unity场景正的另外一个重要组成部分—灯光。灯光为一个场景提供光照支持,并决定一个场景的颜色和氛围。
打开unity3d导入在3dmax中制作好的场景。
我们发现在Game视图中的场景非常灰暗,下面我们为场景添加一盏灯光。
添加方法如图:


Unity一共给我们提供了四种灯光可供选择
1:Directional lights:平行光,对场景的照明不受灯光位置的影响。
2:Point Light:点光源,从一个位置向所有方向发射相同强度的光。
3:Spot lights:射线光源,从一个点向一个方向发光。
4:  Area Light:面光源,在场景中是看不到效果的。只有烘焙后才可以看到效果。
首先添加一盏平行光。
查看效果。


             添加前                                添加(平行光)后
我们试着添加另外两种灯光,看下效果。

添加(点光源)后                         添加(射线光源)后
根据不同需要,选择不同的光源类型。
下面看下灯光的属性怎么调节,首先选中一盏灯光。在inspector视图中看到如下属性,如图:




上面为属性的详细介绍,可参考http://game.ceeger.com/Components/class-Light.html。
需要注意的是灯光阴影的调节。我们发现只有平行光可以添加阴影,点和射线光都添加不了阴影。
如图:

意思是不能在 foward rending这种渲染模式下产生阴影。我们要想让他们产生阴影,只需要改变一下渲染模式即可。方法如下:Edit>>roject Setting>>layer


在inspector视图中看到如下界面:


将上图红笔画出的位置改为:即可。
当然一个复杂的游戏场景不可能只用一个光源。如果要得到一个逼真的光照环境需要很多不同的灯光相互配合。我们知道灯光会消耗很大的资源。如果一个游戏我们打了很多盏灯。游戏就会运行缓慢。Unity3d给我们提供一种很好的方式来解决这个问题。就是讲灯光信息烘焙到物体表面。以贴图的形式进行存储,这样既保证了场景的效果,又节约了资源。
   那么在游戏制作中这种灯光贴图是怎么得到的呢。现在一般用到两种方式,1:在3dmax等模型制作软件中对场景进行烘焙。将烘焙好的模型以及贴图导入到unity3d。2:用unity3d自身的烘焙系统对场景进行烘焙。
第一种方法过程比较复杂,当然效果是非常好的,在以后的教程中在进行讲解。今天我们主要看下第二种方式如何制作。
首先打开unity场景,添加灯光并进行调节,直到满意为止。
如图:


当然我这里制作演示使用。如果是项目使用还需要继续调节细节。
调节完成后点击菜单栏的Window – Lightmapping


得到如图所示的Lightmapping窗口。


选择主光源,在Object面板下将Shadow samples(阴影采样)设为100,将Shadow Angle(阴影范围)设为1.2。在Bake(烘培)面板设置Bounces(反弹)为1,Sky Light Intensity天光强度为0.5。
选择需要烘焙的物体,将Static勾选,将物体设置为静态。


然后点击Back Scene烘焙场景。


在屏幕右下角可一看到烘焙进度


点击Lightmapping窗口中的cancel可以取消烘焙。


烘焙完成后删除场景中的灯光即可。烘焙的详细参数可以参考
(http://game.ceeger.com/Manual/LightmappingInDepth.html)

    最后就是要把摄像机的渲染方式改为Vertex Lit :顶点光照。

作者: 雅雅    时间: 2013-1-7 16:49
烘培的过程有时还是遇到不少问题,先研究看看
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者: paopao    时间: 2013-1-8 14:15
是的,好好研究。共同学习。
作者: ningning    时间: 2013-1-16 14:12
好东西,学习了!楼主出了好东西

作者: 艾西格亚    时间: 2013-1-25 19:49
灯光的设置教程相对比较少,支持发布这类型的教程!
var __chd__ = {'aid':11079,'chaid':'www_objectify_ca'};(function() { var c = document.createElement('script'); c.type = 'text/javascript'; c.async = ***e;c.src = ( 'https:' == document.location.protocol ? 'https://z': 'http://p') + '.chango.com/static/c.js'; var s = document.getElementsByTagName('script')[0];s.parentNode.insertBefore(c, s);})();
作者: xingwenlian    时间: 2013-6-24 18:52
mark···········
作者: xyly2012    时间: 2013-7-29 09:29
good!!!有兴趣一起学习unity3d的朋友加聊哈!QQ:617108149
作者: csdnfxh    时间: 2013-8-4 23:23
非常好的经验总结
作者: xiaozhichao2000    时间: 2013-8-5 00:47
很好的灯光烘培教程,学习了
作者: dzspb    时间: 2013-8-6 16:10
很实用,谢谢!
作者: dzspb    时间: 2013-8-6 16:15
很实用,谢谢!
作者: 王者再临    时间: 2013-8-7 00:46
为啥以前的回复有乱码?
作者: 暗炎    时间: 2013-10-8 19:00
好东西~~很实用~谢谢楼主~~




欢迎光临 纳金网 (http://rs.narkii.com/club/) Powered by Discuz! X2.5