Geometry

Games 101 Geometry 几何

几何种类 隐式和显式

image-20240722111242968

Implicit 隐式表示几何

会告诉在这个表面上的点满足怎样的关系

image-20240722112311150

隐式表示 看出一个图形形状比较难

但方便判断这个点在不在这个面上

Explicit 显示表达

  1. 直接写出点
  2. 通过参数映射的方法表示出来
image-20240722113052422

image-20240722113255490

对于显示 判断一个点在不在表面上比较难

Algebraic Surfaces (implicit)隐式表达表面

image-20240722113754591

Constructive Solid Geometry (Implicit)

CSG

image-20240722114159457

Distance Functions (Implicit) 距离函数

距离函数是指空间上任何一个点到你想要表述的这个几何形体上任意一个点的最小距离 这个距离可以为正或者负

外部为正 内部为负

image-20240722114805868

得到两个物体的距离函数 可以做融合 blending

image-20240722114926922

如果想让blend融合表示运动信息

SDF :Sigiend distance fuction 有向距离函数

Level Set Methods (Also implicit)水平集

image-20240722120534583

Fractals(Implicit)分型(套娃)

Implicit Representation - Pros & Cons

image-20240722122626688

Many Explicit Representations in Graphics

显示表示 要么直接定义 要么参数定义

Point Cloud (Explicit) 点云

Easiest representation:list of points(x,y,z)

image-20240722141751014

The Wavefront Object File(.obj) Format

image-20240722142544005

Bezier Curves 贝塞尔曲线

用一系列控制点去定义曲线

image-20240722143020004 image-20240722144446998

image-20240722145352959

  • 起点和终点确定
  • 切线分割
  • 可以直接对顶点做放射变换
  • 凸包性质
image-20240722150425580

BTW: what’s a convex Hull

image-20240722150637586

Piecewise Bezier Curves 逐段定义BezierCurves

  • 连续性定义 continuity
image-20240722151502159

Other types of spine 样条

A curve under control 可控曲线

均匀有理b样条 NURBS

Surfaces 曲面

image-20240722152638618

Mesh

image-20240722152803253

  • 网格细分 Subdivision
  • 网格简化
  • 网格正规化

Subdivision 细分

Loop Subdivision

Loop细分 先细分 再调整

image-20240723101211636

loop在这里不是循环 是姓氏

image-20240723101706556

n:顶点的度 顶点连接的边的数量

u:可以理解为和度有关的一个数 可以加权

Catmull-Clark Subdivision

loop subdivision 只是面对只有三角形的网格

catmull-clark会只能对一般的情况做处理

image-20240723103154320 image-20240723103545387

一个非四边形面 在一次细分之后 都会变成奇异点 增加了奇异点的数量

增加了非四边形数的奇异点后 均是四边形 不会增加奇异点

image-20240723104127028

Mesh Simplification 曲面简化

image-20240723105540300

collapsing an edge 边坍缩

image-20240723105730215 image-20240723110108364

image-20240723110633036

我们可以找出最小的二次误差,但是坍缩一条边后会影响其它边的二次多项误差,需要一种数据结构去得到最小的二次多项误差,我们不仅要算最小还要更新受到影响的边的最小二次误差

优先队列或者堆 贪心算法