Games101-系列课程笔记-Lecture-12

Games101-系列课程笔记


本篇博客内容为Games-101系列课程的 Lecture 11 Geometry 2(Curves and Surfaces)内容,有兴趣的小伙伴可前往GAMES101官网下载相关内容。GAMES101官网


几何处理

  • 几何细分(Mesh Subdivision):本质上是上采样过程
  • 几何简化(Mesh Simplification):本质上是下采样过程
  • 几何正则化(Mesh Regularization):网格正规化(让所有三角形都差不多)

几何细分

  • 步骤
    • 创造更多三角形(即更多顶点)
    • 纠正所有顶点位置(包括原来的顶点和新顶点)
  • Loop 细分
    • 思想:对一个三角形,每一条边都取中点作为新创造的顶点,然后根据周围点的权重调整这个点的位置。
    • 怎么调整点:
      新顶点位置调整公式:P=3/8(A+B)+1/8(C+D)
      旧顶点位置调整公式:Q=(1-n×u)×original_position+u×neighbor_position_sum
      其中,n代表顶点的度,指的是与该顶点相连的线段数量。n=3时,u=3/16;n≠3时,u=3/(8n)
      顶点位置调整
  • Catmull-Clark细分法
    • 原理:这是一种四边形网格细分法。首先,对每个子网格选择边上的中心点和面点,将四个中心点与面点相连。通过这种方法可以将所有非四边形面转化为四边形面,并且把非奇异点(度不为4的点)个数控制为初始非奇异点+非四边形面个数。图示如下:
      Catmull-Clark细分法图示
    • 怎么调整点:
      Catmull-Clark细分法中的顶点分为三种(面心点、四边形边中心、线交叉点)。
      点调整

几何简化

  • 目标:减少网格数量,同时尽量不改变外轮廓形状。
  • 方式:边坍缩(edge collapse)
    坍缩
  • 步骤:
    Step1:选择某一局部区域的网格
    Step2:在空间中找一个点P,使这个点到这个局部区域内所有边的L2距离的平方和最小。
    Step3:给每条边打分,分数为这条边和P之间的L2距离,将所有分数放入优先队列或者堆中。
    Step4:找到L2距离最小的边E1,对这条边进行坍缩(L2距离可以表示坍缩后对原形状的影响程度,从最小L2距离开始,对原形状影响程度最小)
    Step5:E1坍缩后,其他边的L2距离也发生变化,因此需要对其他边的L2距离进行重新计算。
    Step6:重复Step4过程,直到所有边坍缩完毕。

阴影贴图(Shadow Mapping)

  • 阴影是什么:阴影是能被观察者看到,但不能被光源看到的部分。
  • 步骤:
    Step1:首先探究光源能看到什么。在光源处放一个虚拟摄像机,对场景做一遍光栅化,不做着色,只记录看到的点的深度是多少(即深度图)
    Step2:从观察者方向往场景看,将看到的每个点投影到Step1中深度图对应的位置。比较这个点到光源的实际深度和深度图上对应的深度是否一致,如果一致说明这个点通向光源的光路上没有被阻拦,那么这个点不是阴影,反之可以判断这个点是阴影。
    阴影贴图
  • 存在的问题:
    • 数值精度问题。Shadow Mapping中判断点到光源的实际深度和深度图上对应的深度是否一致,从实际角度来看不好判断,因为这两个值都是浮点数,判定两浮点数相等是很困难的事。解决方式:判断大小、设置偏差bias,判断实际深度是否大于记录深度加偏差之和。
    • 只能做硬阴影。要注意硬阴影和软阴影的区别,见下图:
      硬阴影和软阴影
    • 开销更大。Shadow Mapping要从光源和摄像机处各做一次渲染,开销更大。
    • 阴影质量基于Shadow map的质量。Shadow map的质量越高,数值精度问题越不明显,则阴影质量越好。

参考

[1]. GAMES101_Lecture_12.pdf
[2]. Shirley P , Marschner S R . Fundamentals of Computer Graphics[M]. AK Peters, 2005.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值