计算机图形学理论(1):建模基础

本系列根据国外一个图形小哥的讲解为本,整合互联网的一些资料,结合自己的一些理解。

场景的组成部分

场景相当于一个或多个模型的集合。模型包含以下内容:

  • 结构描述:几何形状,如顶点、纹理坐标等
  • 表面描述:外观及光照等

image.png

犹他壶模型(Utah teapot)

对于学图形学的人来说,犹他壶并不陌生。犹他壶模型是计算机图形学早期著名的3D模型(大约70年代~80年代)。在那个时候,3D模型通常被表示为多项式函数,主要技术被称为“样条曲线(spline curves)”,该技术将模型划分为多个表面块,如下所示:
image.png

三角形网格

现在我们主要使用多边形或三角形网格来构建模型。

3D 对象数据的类型

  • 多边形网格(polygonal meshes) —— 代表复杂的现实世界对象。
  • 样条面片(spline patches) —— 程序化建模。
  • 体积数据,体素(voxel) —— 通过将对象的密度存储在三维数组中来表示对象。
  • 构造立体几何(Constructive Solid Geometry) —— 常用于机器零件。
  • 其他。

这是网格和样条线之间的比较:
image.png

建模技术

点云技术

image.pngimage.png
首先,点云样本是非结构化的数据,所以没有关于两点之间邻接(连通性)的信息。为了使点能够连接在一起,我们必须使用额外的算法,例如 K 最近邻算法。

使用点云技术的优点之一是“简单”。此外,由于点云样本通过扫描能成为“原始数据raw data”,因此如今备受关注。

使用相机进行 3D 扫描

原理是通过一系列相机扫描物体,之后相机生成点云并捕获纹理。

原始数据都是“rgbd”数据,“rgb”的部分用于表示颜色和纹理,然后“d”(深度)用于生成点云。深度是指点与相机之间的距离。
image.png

多边形汤(Polygon Soup)

多边形汤是一组非结构化的多边形。它可以渲染一个对象,但不可以再进行其他操作,因为这些多边形之间并没有几何上的连系,也不含拓扑信息。为什么起这个名可以看下知乎的一个回答
image.png

网格(Mesh)

网格是一组连接的多边形(通常是三角形)。 例如,多边形可以由多个三角形组成,并且三角形表示为一组顶点。一开始三角形之间没有连接,我们可以通过为每个顶点附加有关相邻三角形的附加信息(索引)来实现多边形上的连接。
image.pngimage.png
网格是表示对象的显式方法。

隐式曲面(水平集 Level set)

通过使用三维函数,我们可以隐式地表示一个对象。曲面表面上的点应满足“F(x,y,z) = 0”。当函数的结果为零时,表示该点是曲面上的一个点,称为等值曲面。
image.pngimage.png
这种技术有优点也有缺点。
优点:

  • 可以保证模型无孔洞
  • 易于改变拓扑

缺点:

  • 必须遍历体积数据,就会造成 CPU 时间开销,导致速度慢。
  • 需要更多的内存空间。

体素(Voxels)

医疗领域在CT、MRI中经常使用此类物体。体素是体积数据的 3D 图像。
image.png

构造立体几何

使用主要的几何图形,从布尔运算的层次结构中获得目标几何图形(并集、差集和交集),例子之一是CAD程序中的机械建模。
image.png

场景图(Scene Graph)

文章的开头提到过“一个场景相当于一个或多个模型的组合”。我们可以将模型放置为层次树,而不是将它们放置为列表。

如下图所示,从办公桌的角度来看,桌面上的一组模型(电话、镜子、相框)是叶子节点。通过使它们依赖于办公桌,我们可以构建新的模型。
image.pngimage.png
通过绘制一组对象的图形,我们可以应用视椎体进行剔除。“视锥体”是相机能够看到物体的空间。“剔除”是一种不会在视锥体空间之外渲染对象的技术。创建一组模型后,我们可以为包含所有对象的组设置包围体。如果我们将视图空间投影到单位立方体空间(NDC空间),红球将位于该空间之外。然后,我们可以在 CPU 操作内将其从渲染目标中删除。
image.png

程序化建模

我们在这里使用替换规则。
image.png
程序化建模的一个例子是“地形”。我们不使用纯随机数,而是利用高度图并生成受相邻位置高度影响的随机数。
image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞GIS图形的sky.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值