【GAMES 101】Geometry

Lecture 10

Texture(last lecture)

Bump Mapping

以下内容参考自《3D游戏与计算机图形学中的数学方法》

构造凹凸图

用高度图计算凹凸图: H ( i , j ) H(i,j) H(i,j)表示高度图在 ( i , j ) (i,j) (i,j)处的高度值,则在s和t方向上的切向量 S ( i , j ) S(i,j) S(i,j) T ( i , j ) T(i,j) T(i,j)分别为

S ⃗ ( i , j ) = ( 1 , 0 , a H ( i + 1 , j ) − a H ( i − 1 , j ) ) \vec S(i,j)=(1,0,aH(i+1,j)-aH(i-1,j)) S (i,j)=(1,0,aH(i+1,j)aH(i1,j))
T ⃗ ( i , j ) = ( 0 , 1 , a H ( i , j + 1 ) − a H ( i , j − 1 ) ) \vec T(i,j)=(0,1,aH(i,j+1)-aH(i,j-1)) T (i,j)=(0,1,aH(i,j+1)aH(i,j1))

其中,a为控制法向量扰动程度的系数

N ⃗ ( i , j ) = S ⃗ ( i , j ) × T ⃗ ( i , j ) ∣ ∣ S ⃗ ( i , j ) × T ⃗ ( i , j ) ∣ ∣ = ( − S ⃗ z , − T ⃗ z , 1 ) . n o r m a l i z e d ( ) \vec N(i,j)=\frac{\vec S(i,j)\times \vec T(i,j)}{||\vec S(i,j)\times \vec T(i,j)||}=(-\vec S_{z},-\vec T_{z},1).normalized() N (i,j)=S (i,j)×T (i,j)S (i,j)×T (i,j)=(S z,T z,1).normalized()

切线空间

顶点法向量指向z轴正方向,再定义一个在表面与该顶点相切的向量,就能构造一个正交基。

计算光照时,顶点到光源的向量 L L L,和Normal Map采样得到的法线,要变换到同一个空间

Shadow Mapping

Geometry

  • Implicit:定义点满足的关系

    • 代数定义:f(x,y)=0
    • 距离函数
  • Explicit:给出所有的点

    • 点云:list of points
    • 多边形面
    • 曲面细分
Constructive Solid Geometry(Implicit)

几何的交并补
在这里插入图片描述

Distance Functions(Implicit)

描述空间中每个点到该几何形体的最小距离,有方向,在几何体外部为正,内部为负

在这里插入图片描述

Polygon Mesh(Explicit)

定义vertices、normals,texture coordinates,以及它们组成primitive的关系

Lecture 11

Curves

Bezier Curves

用控制点定义曲线

在这里插入图片描述

de Casteljau Algorithm

考虑参数$t\in [0,1]$,对每个t,如图所示进行多次插值,计算出对应的x(t),最终所有的x(t)构成由b0-b3这4个控制点确定的贝塞尔曲线

在这里插入图片描述

Algebraic Formula

在这里插入图片描述

通式:

在这里插入图片描述

Properties of Bezier Curves
  • 对贝塞尔曲线做仿射变换=对控制点做仿射变换后再绘制贝塞尔曲线

  • 曲线位于控制点的凸包中

Piecewise Bezier Curve

  • C0连续:在分段点上值连续

在这里插入图片描述

  • C1连续:在分段点上切线连续

在这里插入图片描述

Surfaces

Bezier Surfaces

4条贝塞尔曲线,构造1个贝塞尔曲面

在这里插入图片描述

取4条曲线在参数u处的4个点,作为新的贝塞尔曲线的控制点,再在新的贝塞尔曲线上计算参数v处的点

在这里插入图片描述

16个点进行多次插值得到:

Lecture 12

Mesh Subdivision(曲面细分)

在这里插入图片描述

Loop Subdivision

只能处理三角形面

先把1个三角形分成4个(增加3个顶点),然后调整每个顶点的位置

  • 新增的顶点

在这里插入图片描述

  • 原来的顶点

在这里插入图片描述

Catmull-Clark Subdivision

可以处理四边形面

奇异点:度不为4的点

取面的中心点,和每条边的中点相连。一次细分就可以让所有面变成四边形面,增加非四边形面数个奇异点

在这里插入图片描述

在这里插入图片描述

顶点位置更新:

分为3种情况:面的中点、边的中点和原来的顶点

在这里插入图片描述

Mesh Simplification(曲面简化)

降低模型的面数

Edge Collapse

每次选择二次误差度量最小的一条边进行坍缩

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值