【计算机图形学】着色简介
文章目录
- 前言
- 光照模型
- 纹理
前言
来源: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、计算机图形学——纹理的相关问题及解决办法
【计算机图形学】着色简介相关推荐
- 6、计算机图形学——着色频率、插值与插值的矫正
一.着色频率 通过光照模型可知,最终的光照结果和光照点的法线向量关系很大.所以,根据不同的法线向量,就有不同的着色方法.在图形学中,法线分为:面法线.顶点法线和像素法线.光照和这三种法线相互作用,就有 ...
- 5、计算机图形学——着色与光照模型
一.着色(shading)的概念 着色,顾名思义就是给物体上色.在计算机图形学中,着色就是确定物体上或者图形上的每个像素的颜色. 像素或者物体表面的颜色受光照和材质的影响,光照中光线的颜色一定程度上决 ...
- 计算机图形学 学习笔记(一):概述,直线扫描转换算法:DDA,中点画线算法,Bresenham算法
前言 本笔记基于 http://www.icourse163.org/learn/CAU-45006?tid=1001746004#/learn/announce 感谢中国农大 赵明老师的分享~ 现在 ...
- 计算机图形学三维投影程序,三维计算机图形学
<三维计算机图形学>是科学出版社出版.本书共分17章,内容包括IDE环境与编程基础.基本语法与数据类型.运算操作.流程控制.面向对象程序设计.用户界面编程.文件系统管理.图形图像多媒体编程 ...
- 是利用计算机图形学的成果,计算机图形学大会
计算机图形学大会是计算机图形学学术交流的重要论坛,为与会学者提供广泛的学术交流平台,内容包括计算机图形学.虚拟现实.计算机动画等相关领域的最新的研究与开发成果.如中国计算机图形学大会,经中国计算机图形 ...
- Games101--现代计算机图形学入门 作业3笔记(渲染管线、着色模型、双线性插值)
一.渲染管线 一.作业要求 在这次编程任务中,我们会进一步模拟现代图形技术.我们在代码中添加了ObjectLoader(用于加载三维模型),VertexShader与FragmentShader,并且 ...
- 计算机图形学及OpenGL简介摘记
计算机图形学(Computer Graphics)是研究怎样用计算机表示.生成.处理和显示图形的一门学科.图形的具体应用范围很广,但是按基本的处理技术划分只有两类.一类是线条,如工程图.地图.曲线图表 ...
- 华人小哥开发“CG工坊”,帮你快速入门计算机图形学 | GitHub热榜
子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI CG新手们,你们的福音来了~ 为了让初学者更好地学习计算机图形学基础知识,一位哈佛小哥创建了graphics-workshop,一周左右的时 ...
- 计算机图形学之光线跟踪算法的研究与实现2017年我的优秀毕业论文
计算机图形学之光线跟踪算法的研究与实现2017年我的优秀毕业论文 版权所有使用者请联系我 刘创 QQ:903188593 2.2.2 Phong光照模型 事实上对于漫反射的物体表面,使用Lambert ...
最新文章
- 更改sybase下设备名
- CentOS系统 Nginx、MySQL、PHP 服务器的部署
- 使用 LxRunOffine 迁移 WSL Ubuntu安装目录
- Windows 7 蓝屏代码大全 amp; 蓝屏全攻略
- window安装python3后怎么用pyspark_window10搭建pyspark(超级详细)
- 软件工程的难题-解耦问题
- 小菜学Flex2(二 currentState初步使用)
- Redux 入门 -- 处理 async action
- Java数据结构和算法---程序员常用10种算法
- 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验00 熟悉开发环境(2021级)
- 论文笔记:3DMM(ACM1999)
- 市电220V说的是峰峰值还是有效值呢?
- 机器学习基础知识之概率论基础详解
- elasticsearch7.x Java High Level REST客户端封装工具
- SCons教程 (2) SConstruct 文件介绍
- 舆情监控系统计算机 书籍,网络舆情监测系统方案建议书.doc
- Xshell登录进入CentOS 6.5系统后,Python交互模式和数据库模式下,出现乱码的问题及解决方法
- 双线性群简介与基本运算
- 若依前后端分离框架学习-6:日志管理
- 想学CG原画?112G零基础到大神游戏场景、原画教程免费领取