当前位置: 首页 > news >正文

计算机图形学(十一):真实感图形(光照模型、材质模型)

目录

光照模型

材质模型


光照模型

参考链接:

百度文库https://wenku.baidu.com/view/58a87e9a7d192279168884868762caaedd33baa7.html 用计算机在图形设备上生成连续色调的真实感图形必须完成四个基本的任务。

1.用数学方法建立所构造三维场景的几何描述,并将它们输入计算机。这部分工作可由三维立体造型或曲面造型系统来完成。场景的几何描述直接影响图形的复杂性和图形绘制的计算费用,选择合理而有效的数据表示和输入手段是极其重要的。

2.将三维几何描述转换为二维透视图。这可通过对场景的透视变换来完成。

3.确定场景中的所有可见面,这需要使用隐藏面消除算法将被其它物体遮挡的不可见面消去。

4.计算场景中可见面的颜色,就是根据基于光学物理的光照明模型计算可见面投射到观察者眼中的光亮度大小和颜色组成,并将它转换成适合图形设备的颜色值,从而确定投影画面上每一象素的颜色,最终生成图形。

当光照射到物体表面时,光线可能被吸收、反射和透射。被物体吸收的部分转化为热,反射、透射的光进入人的视觉系统,使我们能看见物体。为模拟这一现象,需要建立一些数学模型来替代复杂的物理模型,这些模型就称为明暗效应模型或者光照(明)模型

应用光照模型可计算物体表面向空间给定方向辐射的光亮度。

在光栅图形系统上显示的三维图形的真实感取决于能否成功地模拟明暗效应,这要求设计较好的明暗模型,用以计算可见表面应该显示的亮度和彩色。

明暗模型并不需要精确地考虑真实世界中光线和表面的性质,而只需要在兼顾精确程度和计算成本的要求下,追求更好的显示效果。通常设计一个明暗模型需要考虑的主要问题是照明特性、表面特性和观察角度

>照明特性是指可见表面被照明的情况,主要有光源的数目和性质,环境光及阴影效应等。

>表面特性主要是指表面对入射光线的反射、折射或透明的不同情形,还有表面的纹理及颜色等。

>观察角度是指观察景物时观察者相对可见表面所在的位置。

已经有许多不同的明暗模型都较好地处理了上述各问题。不同明暗模型的区别主要在于模拟的方法,实现的复杂程度,及取得的显示效果等方面。

一般来说,明暗模型可以分解为三个部分,即漫射照明、具体光源的照射及透射效应。具体光源的照明产生的效果又分为漫反射和镜面反射两部分。

简单的光照模型仅考虑光源照射在物体表面产生的反射光。这种光照模型通常假定物体是光滑的且由理想材料构成,所生成的图形可以模拟出不透明物体表面的明暗过渡,具有一定的真实感效果。这类光照明模型称为局部光照明模型。

复杂的光照明模型除了考虑上述因素之外,还要考虑周围环境的光对物体表面的影响。如光亮平滑的物体表面会将环境中其它物体映像在表面上,而通过透明物体也可看到其后的环境景象。这类光照模型称为整体光照模型,它能模拟出镜面映像、透明等精细的光照明效果。

为了表现自然界中的阴影,在应用光照模型时还需要物体表面是否位于阴影区内,以取舍相应光源的照明影响。

更精致的真实感图形绘制还要考虑物体表面的细节纹理,这可以通过一种称为“纹理映射”的技术把已有的平面花纹图案映射到物体表面上,并在应用光照明模型时将这些花纹的颜色考虑进去。物体表面细节的模拟使绘制的图形更接近自然景物。

对于彩色表面,上述各公式也可以应用,只需分别应用于对各颜色分量的计算。例如,选择通常的红、绿、蓝颜色系统,这时上述公式中有关亮度及反射系数等,就要看做是三元向量。通过分别对各颜色分量进行计算,就可以完成对彩色表面的亮度计算。

 

求得扫描线上每点的法向量后,在每点处实际计算亮度,可以应用任何一种光照明模型。如果应用镜面反射,比起亮度插值法会得到明显的改进,因为强光能更加真实地得到反映。即使不应用镜面反射,法向插值的结果也比亮度插值的结果好。这是因为对每一点都使用法向量的近似值,使得可以减少Mach带效应引起的问题。但另一方面,对每一点都要计算亮度,使得计算量大为增加。

 

材质模型

用材料对光的红、绿、蓝三原色的反射率来近似定义材料的颜色。像光源一样,材料颜色也分成环境、漫反射和镜面反射成分,它们决定了材料对环境光、漫反射光和镜面反射光的反射程度。在进行光照计算时,材料对环境光的反射率与每个进入光源的环境光结合,对漫反射光的反射率与每个进入光源的漫反射光结合,对镜面光的反射率与每个进入光源的镜面反射光结合。对环境光与漫反射光的反射程度决定了材料的颜色,并且它们很相似。对镜面反射光的反射率通常是白色或灰色(即对镜面反射光中红、绿、蓝的反射率相同)。镜面反射高光最亮的地方将变成具有光源镜面光强度的颜色。例如一个光亮的红色塑料球,球的大部分表现为红色,光亮的高光将是白色的。

材质的颜色与光源的颜色有些不同。对于光源,R、G、B值等于R、G、B对其最大强度的百分比。若光源颜色的R、G、B值都是1.0,则是最强的白光;若值变为0.5,颜色仍为白色,但强度为原来的一半,于是表现为灰色;若R=G=1.0,B=0.0,则光源为黄色。对于材质,R、G、B值为材质对光的R、G、B成分的反射率。比如,一种材质的R=1.0,G=0.5,B=0.0,则材质反射全部的红色成分,一半的绿色成分,不反射蓝色成分。也就是说,若光源颜色为(LR,LG,LB),材质颜色为(MR,MG,MB),那么,在忽略所有其他反射效果的情况下,最终到达眼睛的光的颜色为(LR*MR,LG*MG,LB*MB)。

同样,如果有两束光,相应的值分别为(R1,G1,B1)和(R2,G2,B2),则将各个颜色成分相加,得到(R1+R2,G1+G2,B1+B2),若任一成分的和值大于1(超出了设备所能显示的亮度)则约简到1.0。

相关文章:

  • 【云原生】Hadoop HA on k8s 环境部署
  • 四元数是什么
  • 大衣哥家里再添喜事,生产厂家免费送给他一辆新车
  • 爬取疫情数据并存到mysql数据库
  • 场景应用:网络的子网掩码为255.255.240.0,它能够处理的主机数是多少?
  • Qt5开发从入门到精通——第七篇六节( 图形视图—— 图元的旋转、缩放、切变、和位移)
  • 内网穿透工具natapp的注册、下载、安装与使用(详细教程)
  • CDH openssl 安装报错 TXT_DB error number 2
  • 【Linux线程同步专题】一、什么是线程同步、互斥量与死锁
  • 内网渗透-Linux权限维持
  • Git 便捷操作
  • 美国项目管理协会和埃森哲最新报告:越来越多的公司设立首席转型官一职
  • y145.第八章 Servless和Knative从入门到精通 -- 消息系统基础和Eventing及实践(九)
  • CDQ整体二分-三维偏序(陌上花开)
  • Vue3+elementplus搭建通用管理系统实例十三:添加树形选择器及多选功能
  • AWS实战 - 利用IAM对S3做访问控制
  • CentOS 7 防火墙操作
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Java教程_软件开发基础
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • React-Native - 收藏集 - 掘金
  • SOFAMosn配置模型
  • web标准化(下)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 大整数乘法-表格法
  • 分布式事物理论与实践
  • 区块链技术特点之去中心化特性
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 数据可视化之 Sankey 桑基图的实现
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 用Visual Studio开发以太坊智能合约
  • 正则表达式
  • 容器镜像
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​Java并发新构件之Exchanger
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (003)SlickEdit Unity的补全
  • (06)Hive——正则表达式
  • (27)4.8 习题课
  • (C)一些题4
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (五)MySQL的备份及恢复
  • (一)RocketMQ初步认识
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ***检测工具之RKHunter AIDE
  • ./configure,make,make install的作用
  • ./和../以及/和~之间的区别
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008