Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

镜面术语 (Blinn-Phong)

  • 光线的强度取决于反射方向,当 v ⃗ \vec{v} v 越接近 R ⃗ \vec{R} R 时,光线越强。
    • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

    • 那 I ⃗ \vec{I} I 与 v ⃗ \vec{v} v 的两者相加做平行四边形法则得到单位化后的 h ⃗ \vec{h} h 。比较 h ⃗ \vec{h} h 与法线 n ⃗ \vec{n} n 的夹角:Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

    • 如果不计算 h ⃗ \vec{h} h ,直接一把梭哈 v ⃗ \vec{v} v I ⃗ \vec{I} I 两者,这样是不是也可以。

      • 是可以,这种方法叫做Phong 方法
      • 使用 h ⃗ \vec{h} h 的方法是其改进版,称之为 B l i n n − P h o n g Blinn-Phong Blinn−Phong 方法。这样可以减少一些复杂运算
    • 什么要使用 p p p呢,如果不使用 p p p,则当两者相差$45^{o} , 但 是 ,但是 ,但是cos$值还是很大Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

    • 随着 k s k_s ks​ 与 p p p 的变换,高光变换:Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

环境光照

  • 环境光照着色不取决于任何物体:

    • 这里做一个大胆假设,后面课程会对该模型进行修正:

      • 假定环境光照

        • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

      把三种光照方式相加起来Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

着色频率

如图:Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

着色频率。第一个选择一个大多边形,第二个选择一个三角形,内部使用插值方法,第三个对每一个像素进行着色。

  • Flat Shading

    • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)
  • Gouraud Shading

    • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)
  • Phong shading——这里指的是着色频率,之前光线反射。Phong这个大牛天妒英才,wc。

    • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)
  • 三种形式的对比

    • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

    • 如果模型足够复杂,着点也可以起到一定效果。当然,计算机量方面,着像素不一定比着三角形大。

定义顶点的法线向量

  • 如果从一个几何图形中得到一个点的法线向量
    • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

    • 使用点周围的平面法向量的加权得到该点的法向量

  • 如果知道了两个点的法向量,那么确定该边其他点的法向量:
    • 不断插值平滑过渡,但是需要单位化变成单位向量
    • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

图形(实时渲染)管线

  • 流程(这个操作已经在显卡中写好了):
    • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

    • 为什么要定义三角形?

      • 在空间中连接点点形成三角形,这样的话,可以保留的空间信息。投影到2D平面时,三角形的信息还在。
    • 每一个步骤细节体现:

      • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

      • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

      • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

      • 整个实时渲染界都是在处理 顶点处理 像素处理这一方面,可以在这两个阶段进行编程自定义。这部分代码就叫做ShadingLecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

      • 如何让三角形显示出以下图片样式,这就叫做纹理映射

        • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)
      • 使用Shade 编程

        • 不需要特意使用对每个像素着色
        • 如果对顶点操作,叫做顶点shader、如果是对像素,就叫做像素shader
        • 使用两个全局变量 一个是质地、一个是光照方向。漫反射的简单实现。
        • Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

计算机硬件可以快速处理大量的场景的三角形。

Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

现在很多游戏引擎都已经处理好了计算机图形学的内容,我们可以更多的关注编程场景、游戏开发。

纹理映射

在图片中不同位置物体的属性,不同点不同的物理属性:Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

三维物体的表面是二维物体,这一可以和一张图建立映射关系。三维表面映射到二维平面图片上,这个过程叫做纹理映射。

如何把空间的三角形映射到纹理上,这不是我们处理的事情,这是美工处理的事情。我们直接可以知道不同纹理映射到不同的三角形上(物体的坐标)。Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

纹理上有坐标系,使用三维图片铺展开平面。无论如何,(u,v)的坐标都大于0Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

纹理不止是使用一次,还可以“复制粘贴”

Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

Lecture 08 Shading 2 (Shading, Pipeline and Texture Mapping)

纹理无缝衔接,高度合成。如果不能无缝连接的话,也可以考虑插值连接。

纹理是着色的时候不同点的属性

上一篇:cpp引用内部的元素指针变化问题


下一篇:线性表主函数+扩容