GAMES101 笔记 Lecture12 Geometry3

目录

      • Mesh Operations: Geometry Processing
        • Mesh Subdivision (曲面细分)
        • Mesh Simplification(曲面简化)
        • Mesh Regularization(曲面正则化)
      • Subdivision(细分)
        • Loop Subdivision(Loop细分)
          • 如何来调整顶点位置呢?
          • Loop Subdivision Result (Loop细分的结果)
        • Catmull-Clark Subdivision(General Mesh)
          • Catmull-Clark细分方法中顶点更新方法:
      • Mesh Simplification(曲面简化)
        • Collapsing An Edge(边坍缩)
      • Shadow Mapping
        • Visualizing Shadow Mapping(可视化Shadow Mapping)
        • Problems With Shadow Mapping(Shadow Mapping中存在的问题)
        • 硬阴影和软阴影的比较
      • 参考资料

Mesh Operations: Geometry Processing

Mesh Subdivision (曲面细分)

增加了曲面的分辨率:
GAMES101 笔记 Lecture12 Geometry3_第1张图片

Mesh Simplification(曲面简化)

降低曲面分辨率,尽力保持曲面原有的几何形状。

GAMES101 笔记 Lecture12 Geometry3_第2张图片

Mesh Regularization(曲面正则化)

原始曲面上的三角形可能大小差异较大,这时我们可以通过曲面正则化来改善曲面的质量。

GAMES101 笔记 Lecture12 Geometry3_第3张图片

Subdivision(细分)

曲面细分并不仅仅是增加三角形的数量,在增加三角形的数量后,三角形的位置也会发生一些移动,使得曲面的结果更加光滑。

GAMES101 笔记 Lecture12 Geometry3_第4张图片

Loop Subdivision(Loop细分)

  1. 首先,将每个三角形分割成四个子三角形

    GAMES101 笔记 Lecture12 Geometry3_第5张图片

  2. 根据权重,调整每个顶点的位置

将新的顶点和旧的顶点区分开,采用不同的规则来改变它们的位置。

GAMES101 笔记 Lecture12 Geometry3_第6张图片

如何来调整顶点位置呢?

对于新的顶点:

简单来说,找到周围四个点的位置进行加权平均。

GAMES101 笔记 Lecture12 Geometry3_第7张图片

对于旧的顶点:

简单来说,旧的顶点在更新时不仅仅取决于周围的顶点,同时还取决于自己原来的位置。

GAMES101 笔记 Lecture12 Geometry3_第8张图片

Loop Subdivision Result (Loop细分的结果)

GAMES101 笔记 Lecture12 Geometry3_第9张图片

Catmull-Clark Subdivision(General Mesh)

Loop细分只能用于三角网格,而对于一般的网格就不适用了。

就像下图中的,有三角形、四边形等,Catmull-Clark细分就可以很好的应用。

GAMES101 笔记 Lecture12 Geometry3_第10张图片

  1. 每条边都取中点
  2. 每个面也取一个中间的点
  3. 连接所有点

GAMES101 笔记 Lecture12 Geometry3_第11张图片
经过一次细分之后:

现在有多少奇异点?

每个三角形内部的点,经过一次细分后都是奇异点,原来是奇异点的点仍然是奇异点,和原来非四边形面的数量有关系。

它们的度都是多少?

每条边的中点的度为4,非四边形面中心的点的度为3,其余点度数保持不变。

还有多少非四边形面呢?

非四边形面全部消失了,每个非四边形面都会引入一个奇异点,然后变为一个四边形面。

Catmull-Clark细分方法中顶点更新方法:

GAMES101 笔记 Lecture12 Geometry3_第12张图片

Mesh Simplification(曲面简化)

目的:减少网格中三角形或四边形的数量,但保持原来的形状,从而提高程序的性能。

在不同的场景下选用不同的三角形数量:

GAMES101 笔记 Lecture12 Geometry3_第13张图片

Collapsing An Edge(边坍缩)

GAMES101 笔记 Lecture12 Geometry3_第14张图片

如何来度量通过简化造成的几何误差呢?

二次度量误差:找到一个新的位置,把点放在这里使得二次误差最小。

二次误差:一个点到与它相关联的面的距离的平方和。

算法的主要思想:

  1. 枚举每一条边,计算出坍缩这条边的二次误差度量。
  2. 贪心地选出一条最小的边。

这个问题是一个动态的问题,坍缩一条边会导致其它某些边的二次度量误差发生变化,我们需要更新其它边的二次度量误差。

二次度量误差曲面简化结果:

GAMES101 笔记 Lecture12 Geometry3_第15张图片

Shadow Mapping

Shadow Mapping是一种图像空间的算法:

在计算阴影时,不需要知道场景中的几何信息。
会产生走样现象。

关键思想:
一个不在阴影里的点,说明可以从摄像机看到这个点,光源也可以看到这个点。

经典的Shadow Mapping只能处理点光源,这种阴影通常有很明显的边界,一个点要么在阴影里,要么不在阴影里,这种阴影我们称它为硬阴影

  1. Render from Light,从光源看向场景,记录看到的每个点的深度,得到一副深度图.
    GAMES101 笔记 Lecture12 Geometry3_第16张图片

  2. Render from eye,从摄像机看向场景,将看到的点投影回光源成像的深度图中,比较一下二者的深度值,如果深度值相同说明这个点是可见的;否则,说明该点是不可见的。

GAMES101 笔记 Lecture12 Geometry3_第17张图片

GAMES101 笔记 Lecture12 Geometry3_第18张图片
一个复杂场景的阴影实例:

GAMES101 笔记 Lecture12 Geometry3_第19张图片

Visualizing Shadow Mapping(可视化Shadow Mapping)

将深度图的点投影回原来的位置,连一条线,这样我们就会发现一个现象,什么样的点是可以被看到的呢?

光源到该点的距离等于这个点的深度值。

GAMES101 笔记 Lecture12 Geometry3_第20张图片

Problems With Shadow Mapping(Shadow Mapping中存在的问题)

  • 硬阴影(只能处理点光源)
  • 质量取决于Shadow Map的分辨率
  • 涉及浮点深度值的比较运算,意味着会产生误差。

硬阴影和软阴影的比较

GAMES101 笔记 Lecture12 Geometry3_第21张图片

参考资料

GAMES101 Lecture12

你可能感兴趣的:(计算机图形学,计算几何,几何,数学,计算机)