|

楼主 |
发表于 2012-11-1 11:25:00
|
显示全部楼层
Re: Re:请问为什么光源需要环境光、漫射光和镜面光这三
snghun: Re:请问为什么光源需要环境光、漫射光和镜面光这三个属性?
环境光的存在意义:
当人站在街上,人所受到的光不只是来自太阳的直射光。
比如说,人把脚抬高时,太阳光...
我的意思是说,环境光应该也是一种光源,他们是和点光源,方向光和聚光灯是同类型的,就是他是可以独立存在的,
像这样子:
// 环境光
light.type = LIGHT_EMBIENT;
light.color = 0xC8C8C8;
// 点光源
light.type = LIGHT_POINT;
light.color = 0xC8C8C8;
// 方向光
light.type = LIGHT_DIRECTIONAL;
light.color = 0xC8C8C8;
至于是不是镜面光,这个就要看他照的方向,和材质属性了,
也就是说,点光源,方向光和聚光灯,都有可能产生镜面光。
还有,我认为点光源,方向光和聚光灯的color就是漫射光,因为他们都是直射光,但如果材质是光滑的,将变为镜面光效果.
这是我的看法,
所以,我才疑惑,为什么一个光源属性,要把不同类型的东西放到一个结构体里。
所谓的不同,就是环境光他和点光源一样,是一个独立的光源类型,而镜面光和漫射光这两个完全是一个光源,只是因为材质(物体表面是否光滑)的不同,所产生的效果不同罢了。
PS:《3D游戏编程大师技巧》就是用这个思路来计算光照的
PS: 可能需要说明下我所理解的环境光,漫射光和镜面光:
环境光:经过无数个物体所反射出来的光,间接把一个物体照亮
漫射光:光线直接照射在物体上,但由于物体表面很粗糙,导致你从各个角度看起来都一样,即没有高光点
镜面光:光线直接照射在物体上,但由于物体表面很光滑,并且你的观察角度正好使得光线反射到了你的眼睛里,产生了高光点. |
|