几何(Geometry)


各种不同的几何(Geometry)

图形学中分为两种几何:隐式的几何(implicit)、显式的几何(explicit)。

比如球的隐式表示为 x2+y2+z2 = 1。显式的表示可以将球拆成不同的三角形面,将球的位置表示出来。

进行推广,既然我们定义用 x, y, z 表示的关系,那就用函数来表示,比如球 f(x, y, z) = x2+y2+z2-1

隐式的几何有好处也有坏处。如果我们想说整个的形状是什么,很难直观看出来。

隐式的好处就是很容易判断一个点在不在这个形状里面。

把这些面上所有的点都表示出来,就是典型的显式的表示。还有一种显式的方法,通过参数映射的方法,就是把 (u, v) 上所有的点都走一遍,你就知道它在三维空间中的形状。

通过参数映射,把 (u, v) 映射到空间上去。

问这个点是不是在里面,无从下手。

所以为什么会有不同的表示方法,因为有一些问题它就适合用隐式的方式表示,有一些问题它就适合用显式的方式表示。

隐式的表示的各种各样的方法:

通过基本几何的基本运算来得到新的几何,下面那个复杂的几何就是通过简单的几何运算完成的。这种操作也得到了非常非常广泛的应用。

通过距离函数,空间中任何一个点都定义一个值来,表示它在物体内还是物体外

通过 Blend 两个对应的 SDF,就等于是在 Blend 它们的边界。

用距离函数表示出来的图:

这个概念在地理上得到广泛的应用,叫做等高线。就是为了描述一个函数在不同位置有相同的值。

下面是和距离函数类似的概念:水平集(Level-Set)

水平集可以表示物体的密度

分形。自相似。

变化频率太高了会引起严重的走样,这种类型的几何对于渲染是非常大的挑战。

隐式的几何总结:

 

显式的几何同样有很多的表示方法

点云,若想表示复杂的模型,就需要特别多的点、特别密集的点进行表示

例如三维空间中的扫描,一般就是得到特别多的点云。

获得一个点云,如何变成三角形的面,这是很多研究在做的。

用得最多的还是这种多边形面,三角形或者四边形的面。

存储用三角形面形成的物体,一种文件格式 .obj,是一个文本文件,将空间中的一堆点,一堆法线,一堆纹理坐标,分开来表示空间中的模型(与编译的 .obj 文件不一样)

上面表示的是空间中的立方体。用八行 v x y z 定义八个点;立方体只有六个面,定义六条法线 vn,有八行是因为自动建模有很多冗余的地方;定义纹理坐标 vt,当然这里也有冗余。

然后还要定义它们的连接关系 f,就是哪三个点会形成一个三角形,v 的坐标 / vt 的坐标 / vn 的坐标,说是坐标,其实就是第几个数,第 5 个顶点、第 1 个顶点、第 4 个顶点,形成一个三角形,并且这三个顶点上分别用第 1 个纹理坐标、第 2 个纹理坐标、第 3 个纹理坐标,并且这三个顶点上分别用第 1 个法线、第 1 个法线、第 1 个法线。它就是通过这种关系,将每三个点联系在一起,并且定义它们用什么样的法线和纹理坐标。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM