openGl 光照(二)

这篇博客深入探讨了物体颜色的来源,解释了小草为何呈现绿色。接着介绍了如何创建光照场景,特别是冯氏光照模型的环境、漫反射和镜面光照分量的计算方法。此外,还涵盖了光照贴图的概念,以及在多光源场景中如何叠加光照效果。最后,讨论了在OpenGL中实现光照的技术细节。
摘要由CSDN通过智能技术生成

1 为什么小草是绿的,物体的颜色是怎么出来的?

答:一个物体的颜色是由它反射得颜色决定的,小草吸收太阳光除绿色以外的颜色,并将绿色反射出来,所以看到是绿色的。假如用单一蓝光照射,那会是黑色。

2 如何创建一个光照场景?

答:再新建一个光照着色器就行了,将光源颜色和对象颜色作为输入变量传至光照着色器计算出输出变量。

3 冯氏光照模型是什么?

答:光照是非常复杂的,为了简化其操作,一般使用冯氏光照模型,它由环境(Ambient),漫反射(Diffuse),镜面(Specular)三个光照组成。

4 冯氏光照模型三个分量怎么计算出来的?

答:环境(Ambient)光照:比如太阳光跟远近角度无关,光照颜色乘以环境因子再乘环境颜色。

漫反射:比如手电筒光跟角度远近均有关系,法向量乘以定向的光线。散射光最终强度 = 材质反射系数 × 散射光强度 × max(cos(入射角),0)。

镜面光照:如果物体表面光滑照射到物体的光又会反射出来,形成一个亮点这就是镜面光照,计算方式也是物体的法向量乘以光的方向向量。镜面光最终强度 = 材质镜面亮度因子 × 镜面光强度 × max(cos(反射光向量与视线方向向量夹角),0)。

5 什么是光照贴图?

答:在加载纹理时,加入光照的元素。

6 平行光,点光源,聚光有什么特别,如何表示?

答:平行光,比如太阳光不会随着距离强度衰减但有方向,定义一个方向向量来模拟平行光。点光源,比如火把,它会朝所有方向发光但是会衰减,根据常量系数及强度计算衰减系数,因此要定义好衰减常量系数。聚光比如手电筒,它有方向且跟光照角度有关,因此要定义好光照方向及角度。

7 在多光源场景中,如何实现叠加?

答:定义一个单独的颜色为最终输出颜色,然后计算各个光源分量对这片段分贡献,叠加到最终输出颜色变量上。

8 在opengl中如何实现光照的

答:并不是调用opengl光照相关的函数,而是操作一些方向向量和调节一些光照相关的参数就是实现不同光照场景。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值