图形学笔记(九)几何 ——几何表示方法(CSG、距离函数、水平集 、点云、网格(obj格式))、贝塞尔曲线(面)

图形学笔记(八)着色2 —— 纹理映射、重心坐标、双线性插值、Mipmap、三线性插值、各向异性过滤、纹理的应用(环境贴图、法线贴图等)
图形学笔记(十)几何2 —— 曲面细分(Loop细分、Catmull-Clark细分)、曲面简化(边坍缩、二次度量误差)、曲面正则化

1 几何的表示方法

分为显式(Explicit)和隐式(Implicit)。

隐式几何的表现形式:

  • algebraic surface
  • level sets
  • distance function

显式几何的表现形式:

  • point cloud
  • polygon mesh
  • subdivision,NURBS

1.1 隐式的几何表示(Implicit)

1.1.1 概览

在这里插入图片描述

基于对点进行归类,找到满足特定关系的点。例如:球体,在三维空间中可以写成 x 2 + y 2 + z 2 = 1 x^2+y^2+z^2=1 x2+y2+z2=1

更通用的表示,f(x,y,z) = 0

优点:

  1. 很容易判断点是否在面上。(将点代入f(x,y,z),正数表示点在图形外,负数表示点在图形内,0表示点在图形上。)
  2. 表述起来很容易(对存储很有利)。
  3. 容易做面与光线求交。
  4. 容易描述和处理拓扑结构。

缺点:难以描述复杂的形状,很难知道这个面上有哪些点,很难看出式子表示的是什么形状。

1.1.2 CSG —— Constructive Solid Geometry(Implict)

通过一系列基本几何的基本布尔运算来定义新的几何。
在这里插入图片描述例子:
在这里插入图片描述这个方法在很多建模软件得到了很多的应用。

1.1.3 距离函数 Distance Function(Implict)

距离函数:给出任何一个位置到物体的最短距离。对一个点不描述表面,而是描述点到表面的最近距离。

把两个物体的距离函数都算出来然后把两个距离函数做融合(blending)
在这里插入图片描述例子:混合一个移动的边界
在这里插入图片描述通过blend两个SDF可以得到移动后的边界。

分别求出两个物体对应的距离函数, 然后把他们blend起来,然后恢复成原本的面(找出SDF 的值为0的位置)

1.1.4 水平集 Level Set Methods(Implict)

封闭形式的方程很难描述复杂的形状,所以选择一种替代方案:存储一个值近似函数的网格(可以是二维的也可以是三维的)
在这里插入图片描述通过找到插值为0的位置来找到表面,它具有一个对形状更加显示的控制。

例子:
如果有一个三维的纹理表示人体不同位置的骨密度,可以让密度函数=某个具体的值,然后找到所有满足这个等式的位置,就可以得到一个表面。
在这里插入图片描述

1.1.5 分形 Fractals(Implict)

分形又有自相似的意思,自己的部分和整体很像(有点像递归),例子有雪花(不断的六边形)、下面的西兰花等。
在这里插入图片描述这些类型的几何在渲染时会造成强烈的走样。

1.2 显式的几何(Explicit)

1.2.1 概览

所有的点直接给出,或通过参数映射定义表面。
在这里插入图片描述

优点:对于表示形状很容易。
有点:难以判断点是否在表面上(或内、外)。

1.2.2 点云(Point Cloud)

  • 简单的表示为点的列表(x,y,z)
  • 可以简单的表示任何一种几何图形
  • 对于表示大数据集是很有用的(>>1 point/pixel)
  • 经常被转换成多边形网格
  • 难以在采样不足的区域画出来
    在这里插入图片描述

1.2.3 多边形网格(Polygon Mesh)

  • 存储点和多边形(通常是三角形或四边形)
  • 容易去处理/模拟,进行自适应采样
  • 数据结构比较复杂
  • 图形学中最常用的表示

在这里插入图片描述

eg:The Wavefront Object File(.obj)格式

它是一个文本文件,由指定的顶点、法线、纹理坐标和它们的连接组成。

如下图表示了一个立方体:

  • v是顶点坐标
  • vn是法线(多了两条是因为建模误差)
  • vt是纹理坐标
  • f(face)表示面,比如f 5/1/1 1/2/1 4/3/1 表示这个三角形面是由第5、1、4个顶点组成的,三个点的纹理坐标是第1、2、3对应的纹理坐标,这个面的法线是第一条法线。

在这里插入图片描述

2 曲线(Curves)

应用:相机拍摄路径、 动画曲线、定义字体(控制点)。
在这里插入图片描述

2.1 贝塞尔曲线(Bezier Curves)

2.1.1 概览

用一系列的控制点来定义某一条曲线。这些控制点使用切线来定义贝塞尔曲线。
如下图,注意曲线起始方向沿着 P 0 P 1 P_0P_1 P0

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值