图形学笔记八 Geometry 几何

参考课程:
https://www.bilibili.com/video/BV1X7411F744?p=10
从第40分钟左右,终于到了Geometry部分。

一、几何的表达方式分类
1.隐式几何(数学公式)

隐式的几何不会告诉我们这些点在哪里,而会告诉我们这些点满足的函数关系。比如x2+y2+z^2=1就表示了一个球体。隐式的表达的缺点就是,很难直接看出它的形状是什么

image.png

但是优点就是,判断点的位置关系,在内在外在表面,很方便:
image.png

2.显式几何(映射)

通过参数映射,把uv映射到一个马鞍面上。想知道表面的样子时,把每一个UV都测一遍就行,很容易得到。


image.png

然而想要判断内外时,显式的表达就很难。

二、CSG(Constructive Solid Geometry)即可构造硬质几何体
image.png
三、距离函数

对于任意一个几何,不直接描述表面,而是描述空间中任何一个点到这个表面的最近距离。所以空间中任何一个点都会定义出一个值来。下图把两个物体的距离函数定义出来,做一个blending就能融合


image.png
image.png

距离函数应用:


image.png
四、分形

可以理解为无限套娃:


image.png

以下内容属于P11:
https://www.bilibili.com/video/BV1X7411F744?p=11

五、点云

不考虑物体是一个表面,而是表面为一堆点,只要点足够密集,就看不到点与点之间的缝隙。理论上可以表示任何几何体,通常三维扫描等得到的结果就是点云,点云可以变成三角形面。

扩展:绪论:什么是点云?

六、多边形网格

多边形网格被非常广泛地应用


image.png
七、贝塞尔曲线
1.公式计算

2.性质一

在仿射变换下,只需要对顶点做仿射变换,就能得到这个贝塞尔曲线在仿射变换下的结果。但是其它变换不行,比如投影变换就不行。

3.性质二

贝塞尔曲线在控制点形成的凸包内,即几个控制点形成的凸包内。


image.png

如上图就是凸包,可以把黑点当成钉子,然后一个非常大的橡皮筋,啪地一下收缩,包围而成的多边形就是凸包。

4.逐段贝塞尔曲线

控制点多了以后,贝塞尔曲线并不直观,很难控制。于是我们想到每次定义一段贝塞尔曲线,然后连起来,普遍习惯每四个控制点定义一段。但是怎么保证连接处还是平滑的呢?

答案就是导数要连续,也叫C1连续:


image.png

当然还有C0连续:


image.png
八、样条splines
image.png

船舶设计者使用细小的有弹性的木条或者钢片,通过配重的钩子约束木条的形状来设计船壳。这样的木条被称之为样条。

1.B-splines

相对于未分段的贝赛尔曲线。B样条具有局部性,即更改局部一个点,不会影响其他控制点。

B样条很复杂,可以参考

清华大学-计算机图形学基础(国家级精品课)
https://www.bilibili.com/video/av66548502

九、贝赛尔曲面
image.png
1.如何从贝赛尔曲线得到贝赛尔曲面

如图,曲面就像渔网,锚点是上面的黑点。然后锚点固定在空间中的某个位置,再接受一个力,就得到这样的形变:


image.png

具体是怎么做的呢?画出四条贝塞尔曲线后,在这四个线上再取四个点,认为是一个新的贝塞尔曲线的控制点。在不断扫的过程中,形成了曲面。


20211221_224207 00_00_00-00_00_30~1.gif
2.通过参数映射把uv 映射到曲面上任何一个点

这个没听懂……,曲面的uv,几何体的uv ??


image.png
十、Mesh Operations:Geometry Processing

以下为P12内容
https://www.bilibili.com/video/BV1X7411F744?p=12

  • Mesh subdivision 曲面细分是指将一个模型的面合理的分成更多小的面,从而提升模型精度,提高渲染效果
  • Mesh simplification 曲面简化是指将一个模型的面合理的合成更少的面,从而降低模型精度,为特定情形下提供使用(如LOD技术)
  • Mesh regularization 除了细分与简化之外,还有另外一种同属一类的操作叫做曲面规则化(Mesh Regularization)其所作的便是将三角面都变的尽可能相同,从而也达到提升模型效果的目的
十一、subdivision 曲面细分

创造更多的三角形,并且改变他们的位置,让表面更光滑。

1.Loop细分(Loop Subdivision)

TIPS:这里的loop是人名,不是循环的意思

Loop细分是一种专门针对三角形面的细分方法,其核心步骤也十分容易理解:


image.png

如图所示在连接每条边的中点生成一个新的三角形,原来的三角形就会被分割成4个三角形。我们将所有的顶点分为两类,一类是新生成的顶点,一类是老的原来就有的顶点,对于新生成的顶点做如下处理:


image.png

如图,先找到一个白点,它一定是某一条边的中点,找到共享这条边的两个三角形。这条边的两侧就是AB,对面的就是CD。那么生成后的白点,需要的调整位置,就是图中的公式了。其中1/8,3/8都是加权平均,公式的值怎么来的涉及到具体的算法设计就不说了,我们只考虑如何执行。

对于旧的顶点,做如下处理:


image.png

对于旧的顶点,一部分靠周围旧的顶点的值,一部分保留自己的,按照公式移动位置

  • n为顶点的度(连接的边的数量),度是图论中的概念
  • u为一个和n有关的数

从公式中可以看出来,如果n比较大,那么自己的坐标位置就不那么重要了。反之,如果n=2,那么自己的坐标权重就很大。


最终效果
2.Catmull-Clark 细分

Loop细分假设的是三角形网格,但是对于非三角形网格,就没办法,这时候就要用到Catmull-Clark 细分。

  • 定义四边形面以及非四边形面
  • 如果度不为4的点 定义为奇异点(模型里叫极点,3星、5星)

找到不是四边形的面,这里以三角形为例:
取每个边的中点,以及面上取一个点(重心或其他的点),把这些点连起来即可。


image.png

在这个过程中,所有的面都变成了四边形面。也就是一次细分后,每一个非四边形面消失,并会引入一个奇异点。

现在总共有4个奇异点,在上面的过程中,两个三角形中各增加了一个奇异点。

结论很简单,在四边形内做上述操作,连接的是四条边的中点,肯定度为4,就不会增加奇异点。而非四边形,做上述操作,必定增加奇异点。

但是,做过上述操作之后,所有的非四边形面都消失了。并且之后的细分,奇异点也不会增加。也就是说,只有第一次细分时,增加了非四边形面的个数对应的奇异点。

点的位置的调整,分为三类:新的点分为 面上的点,边上的点 分别操作,老的点单独操作。可以看出,通过平均的方式,得以平滑:


image.png
image.png

如上图,最终效果,我没搞懂为啥Catmull-Clark让物体的边缘逐渐圆滑起来。

十二、Mesh simplification 曲面简化
image.png

如上图,离得远,低模完全看不出区别。这正是LOD的原理。

1.边坍缩 edge collapsing
image.png

其实曲面简化所利用的一个方法叫做边坍缩,如上图所示就是将一条边的两个顶点合成为一个顶点。但随之而来的问题就是,曲面简化需要尽量保持原本模型的shape,如何坍缩一条边,或者说坍缩哪一条边能够使得原模型样貌被改变的程度最小,这就是曲面简化的关键所在。

为此引入一个度量,即二次误差度量(Quadric Error Metrics)。即坍缩之后蓝色新顶点所在的位置与原来各个平面的垂直距离之和。如果能够使得这个误差最小那么对整个模型样貌修改一定程度上也会较小。

那么其实到这整个曲面简化的算法流程已经比较清晰了

  • 为模型每条边赋值,其值为坍缩这条边之后,代替两个老顶点的新顶点所能得到的最小二次误差度量
  • 选取权值最小的边做坍缩,新顶点位置为原来计算得出使得二次误差最小的位置
  • 坍缩完之后,与之相连其他的边的位置会改动,更新这些边的权值
  • 重复上述步骤,直到到达终止条件

这其实是一个标准的贪心算法,可能到不了全局最优解,但事实证明最终的结果依然相当不错。


image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容