zoukankan      html  css  js  c++  java
  • 总结一下光照部分的知识

    生活中我们所看到的物体所呈现出来的颜色,其实是它反射光源造成的,我们在OpenGL里面模拟光照,实质上就是通过各种方式计算出反射光源。


    首先,我们学习了“颜色”这一小章节,核心知识就是物体本身的颜色(矩阵)乘以光源颜色(矩阵),得到的就是物体反射的颜色。

    为了模拟物体更加真实的效果,我们接着学习了“基础光照”,核心知识是冯氏光照模型,由此引入了环境光(ambient),漫反射光(diffuse),以及镜面光(specular)。

    然后是”材质“章节,在冯氏光照模型的基础上,将物体和光源都设定了几个光照分量(结构体的形式),实现了对环境光,漫反射光,镜面光更加精准的控制。于此同时,还有一个反光度(shininess)的概念,也就是物体表面高光块的大小,数值越大高光块越小。

    “材质”之后是“光照贴图”,我们将前面学习的纹理结合进来,使得物体表面更加细节(不再是同一种颜色),同时将物体的环境光分量以及漫反射光分量设置为统一贴图纹理,将镜面光设置为另一贴图纹理,可实现更加真实的效果。

    还有“投光物(Light caster)”,讨论了定向光,点光源,以及聚光。定向光既平行光,类似于太阳;点光源新加入了一个光强衰减的函数,也即随着距离的增加,刚开始光强下降得很快,后来下降程度会变慢;聚光类似于我们生活中的手电筒,只有一束扇形的光照区域,但是普通实现的聚光边缘有一边硬圈(也就是过渡不自然),需要我们加入一个平滑/软化边缘的函数,运算结果加到光照效果中。

    最后一章是“多光源”,将上面的定向光,点光源,聚光都结合了起来,用函数重构了每种光源的实现,简化了片段着色器的结构。

    大致如此,除了一开始的颜色以及基础光照章节,其他的章节其实都很简单,基本上没有学习新的东西,只是将学过的知识,代码进行重构(重写类,重写函数)或者换一个角度去解决某些问题(比如引入物体对应的三个光照分量,使得实现效果更加精准,更加易于控制)。

    总结:还阔以(好敷衍)。

    原来人类的悲欢并不相通, 我只觉得他们吵闹。
  • 相关阅读:
    总结Themida / Winlicense加壳软件的脱壳方法
    Themida和Winlicense加壳软件脱壳教程
    dwg格式用什么打开
    3D图形图像处理软件HOOPS介绍及下载
    高精度快速预览打开dwg文件的CAD控件CAD Image DLL介绍及下载
    快速加载DXF、DWG格式文件控件ABViewer
    Devexpress XtraReport 打印时弹出Margins提示解决办法
    报表引擎交叉表的报表设计示例
    git已经push到远程分支的merge操作,如何回滚
    ClassNotFoundException这类问题的解决方案
  • 原文地址:https://www.cnblogs.com/zhlabcd/p/11689965.html
Copyright © 2011-2022 走看看