ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【计算机图形学】着色简介

2022-03-01 16:30:42  阅读:260  来源: 互联网

标签:多边形 简介 模型 图形学 着色 光照 向量


文章目录

前言

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

这里简单记录下。

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

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


光照模型

在这里插入图片描述

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

在这里插入图片描述

(1)环境光照: L a = k a ∗ I a L_a = k_a * I_a La​=ka​∗Ia​。

其中, k a k_a ka​为物体表面对环境光的反射率,则 I a I_a Ia​为环境光的强度。反射率越高,最终人眼接收到的环境光强度 L a L_a La​就会越大。

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

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

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

在这里插入图片描述

(3)镜面反射: k s ∗ ( I / r 2 ) ∗ m a x ( 0 , n ⋅ h ) p k_s * (I/r^2) * max(0,\boldsymbol{n \cdot h})^p ks​∗(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,其多边形的每个顶点都有一个法向量,但它在着色时不是对向量进行插值。实际使用时,通常先计算多边形每个顶点的光照,再通过双线性插值计算三角形区域中其它像素的颜色。


纹理

把纹理信息作为漫反射系数 k d k_d kd​。

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

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

标签:多边形,简介,模型,图形学,着色,光照,向量
来源: https://blog.csdn.net/sinat_38816924/article/details/123209161

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有