文章目录

  • 前言
  • 光照模型
  • 纹理

前言

来源:GAMES101-现代计算机图形学入门-闫令琪

这里简单记录下。

我不知道这个理解对不对。着色(shading)可以分为两部分:光照模型+纹理映射。即:输入三维点,这些点有它们原有的颜色,它们它们撑起一个模型;这些点使用相同的光照模型,从而有亮暗之间的区别;但是不同材质的物体表面,光照模型的系数应当有所区别,所以引入纹理,在保持亮暗的情况下,调整不同位置的漫反射情况。

那么在什么位置进行着色,如何着色呢?我暂时不知道,可以参考:opengl 三角形中顶点着色器,几何着色器,片段着色器的位置。


光照模型

光照模型包含三部分:镜面反射+漫反射+环境光照。它们的计算公式如下。

(1)环境光照:La=ka∗IaL_a = k_a * I_aLa​=ka​∗Ia​。

其中,kak_aka​为物体表面对环境光的反射率,则IaI_aIa​为环境光的强度。反射率越高,最终人眼接收到的环境光强度LaL_aLa​就会越大。

如果只有环境光模型,那么最终物体表面的颜色只是个统一的值,没有深度的变化。

(2)漫反射:kd∗(I/r2)∗max(0,n⋅l)k_d * (I/r^2) * max(0,\boldsymbol{n \cdot l})kd​∗(I/r2)∗max(0,n⋅l) 。

其中,(I/r2)(I/r^2)(I/r2) 中rrr 表示光源与点之间的距离。距离越远,光越弱;n⋅l\boldsymbol{n \cdot l}n⋅l 表示光线与当前点法线值的余弦值,角度越大,光越弱;

(3)镜面反射:ks∗(I/r2)∗max(0,n⋅h)pk_s * (I/r^2) * max(0,\boldsymbol{n \cdot h})^pks​∗(I/r2)∗max(0,n⋅h)p 。

根据入射光线和法线向量,可以得到反射光想的方向,根据反射光线的方向与视角方向的夹角计算人眼接收到光线的强度,这种高光模型称为phong模型。blinn对该模型进行了改进,根据光线方向和视角方向引入了半程向量,如下图所示,半程向量与法线向量的夹角的cos就间接表示了视角和反射光线的夹角的余弦值。加上一个指数p,就是让角度稍大,光线强度急速下降。

(4)上面三步是在一个点上应用光照模型。如何将光照模型应用到整个物体上呢?Flat、Gouraud、Phong Shading 着色方法对比 |[计算机图形学基础] 三种光照着色技术 Flat / Gouraud / Phong

Flat shading 是最简单的着色模型,每个多边形只会呈现一个颜色,这个颜色由面法向量和光照计算得来。在该模型中,每个多边形中只有多边形的面存在法向量,而其各个顶点没有。

Phong shading 是三者之中最复杂的着色方法。它的特点是结合了多边形物体表面反射光的亮度,并以特定位置的表面法线作为像素参考值,以插值方式来估计其他位置像素的色值。在这种情况下,多边形中每个顶点都有一个法向量,通过这些法向量与光照计算,来得到每个点的颜色。在使用有限数量的多边形时,对定点法向量进行插值可以给出近似平滑的曲面效果,但是这样一来的计算量肯定是非常大的。

Gouraud shading 是三者中比较折衷的方法。类似 Phong shading,其多边形的每个顶点都有一个法向量,但它在着色时不是对向量进行插值。实际使用时,通常先计算多边形每个顶点的光照,再通过双线性插值计算三角形区域中其它像素的颜色。


纹理

把纹理信息作为漫反射系数kdk_dkd​。

难点在于,如何建立图形和纹理之间的映射关系。

可参考:GAMES101-现代计算机图形学入门-闫令琪-p9 、8、计算机图形学——纹理的相关问题及解决办法

【计算机图形学】着色简介相关推荐

  1. 6、计算机图形学——着色频率、插值与插值的矫正

    一.着色频率 通过光照模型可知,最终的光照结果和光照点的法线向量关系很大.所以,根据不同的法线向量,就有不同的着色方法.在图形学中,法线分为:面法线.顶点法线和像素法线.光照和这三种法线相互作用,就有 ...

  2. 5、计算机图形学——着色与光照模型

    一.着色(shading)的概念 着色,顾名思义就是给物体上色.在计算机图形学中,着色就是确定物体上或者图形上的每个像素的颜色. 像素或者物体表面的颜色受光照和材质的影响,光照中光线的颜色一定程度上决 ...

  3. 计算机图形学 学习笔记(一):概述,直线扫描转换算法:DDA,中点画线算法,Bresenham算法

    前言 本笔记基于 http://www.icourse163.org/learn/CAU-45006?tid=1001746004#/learn/announce 感谢中国农大 赵明老师的分享~ 现在 ...

  4. 计算机图形学三维投影程序,三维计算机图形学

    <三维计算机图形学>是科学出版社出版.本书共分17章,内容包括IDE环境与编程基础.基本语法与数据类型.运算操作.流程控制.面向对象程序设计.用户界面编程.文件系统管理.图形图像多媒体编程 ...

  5. 是利用计算机图形学的成果,计算机图形学大会

    计算机图形学大会是计算机图形学学术交流的重要论坛,为与会学者提供广泛的学术交流平台,内容包括计算机图形学.虚拟现实.计算机动画等相关领域的最新的研究与开发成果.如中国计算机图形学大会,经中国计算机图形 ...

  6. Games101--现代计算机图形学入门 作业3笔记(渲染管线、着色模型、双线性插值)

    一.渲染管线 一.作业要求 在这次编程任务中,我们会进一步模拟现代图形技术.我们在代码中添加了ObjectLoader(用于加载三维模型),VertexShader与FragmentShader,并且 ...

  7. 计算机图形学及OpenGL简介摘记

    计算机图形学(Computer Graphics)是研究怎样用计算机表示.生成.处理和显示图形的一门学科.图形的具体应用范围很广,但是按基本的处理技术划分只有两类.一类是线条,如工程图.地图.曲线图表 ...

  8. 华人小哥开发“CG工坊”,帮你快速入门计算机图形学 | GitHub热榜

    子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI CG新手们,你们的福音来了~ 为了让初学者更好地学习计算机图形学基础知识,一位哈佛小哥创建了graphics-workshop,一周左右的时 ...

  9. 计算机图形学之光线跟踪算法的研究与实现2017年我的优秀毕业论文

    计算机图形学之光线跟踪算法的研究与实现2017年我的优秀毕业论文 版权所有使用者请联系我 刘创 QQ:903188593 2.2.2 Phong光照模型 事实上对于漫反射的物体表面,使用Lambert ...

最新文章

  1. 更改sybase下设备名
  2. CentOS系统 Nginx、MySQL、PHP 服务器的部署
  3. 使用 LxRunOffine 迁移 WSL Ubuntu安装目录
  4. Windows 7 蓝屏代码大全 amp; 蓝屏全攻略
  5. window安装python3后怎么用pyspark_window10搭建pyspark(超级详细)
  6. 软件工程的难题-解耦问题
  7. 小菜学Flex2(二 currentState初步使用)
  8. Redux 入门 -- 处理 async action
  9. Java数据结构和算法---程序员常用10种算法
  10. 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验00 熟悉开发环境(2021级)
  11. 论文笔记:3DMM(ACM1999)
  12. 市电220V说的是峰峰值还是有效值呢?
  13. 机器学习基础知识之概率论基础详解
  14. elasticsearch7.x Java High Level REST客户端封装工具
  15. SCons教程 (2) SConstruct 文件介绍
  16. 舆情监控系统计算机 书籍,网络舆情监测系统方案建议书.doc
  17. Xshell登录进入CentOS 6.5系统后,Python交互模式和数据库模式下,出现乱码的问题及解决方法
  18. 双线性群简介与基本运算
  19. 若依前后端分离框架学习-6:日志管理
  20. 想学CG原画?112G零基础到大神游戏场景、原画教程免费领取

热门文章

  1. 苹果6s最大屏幕尺寸_iPhone12来了,我决定给老苹果升级一下电池
  2. lenovo启动热键_联想启动热键
  3. Java泛型进阶篇: 无界通配符、上界通配符以及下界通配符
  4. TweenMax 参数说明
  5. Alpha版本冲刺(二)
  6. 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
  7. 【笔记整理】jq笔记
  8. linux常用面试题
  9. TI vs Nordic BLE 产品市场分析
  10. 简单的言语介绍一下什么是程序员