GAMES101笔记_Lec10~12_几何 Geometry

1 几何的表达方式 Introduction to geometry

1.1 几何形体的例子 Examples of Geometry

在这里插入图片描述

  • 不同形状的杯子有着不同的几何体组成
  • 车上有光滑的曲面
  • 复杂的机械结构里有各种形状不同的零件
  • 布料由很复杂的表面结构,远看是透明的,股由纤维组成,线由股组成…
  • 水滴掉落时形成的复杂几何表面
  • 很大的场景如何简化几何,《超能陆战队》中就有大量远景城市镜头,对如何简化模型做了研究
  • 毛发形成的复杂几何结构
  • 微观几何结构
  • 树生长枝干、树叶形成的复杂几何结构

1.2 隐式几何 “Implicit” Representations of Geometry

代数曲面(Algebraic surfaces)、CSG(Constructive solid geometry)、水平集(Level set methods)、分形(Fractals)…

1.2.1 隐式几何 Implicit Surface

  • 给出点满足某些特定关系 Points satisfy some specified relationship
  • 不直观,很难判断面上的点在哪 Sampling can be hard
  • 容易判断点在内部还是外部(将点的坐标代入函数判断与0的关系) Inside/Outside tests easy
  • 通常将满足的关系化为 f ( x , y , z ) = 0 f(x,y,z)=0 f(x,y,z)=0的形式
    在这里插入图片描述

1.2.2 代数曲面 Algebraic Surfaces

表面是x、y、z的多项式的零点集 Surface is zero set of a polynomial in x, y, z
在这里插入图片描述

1.2.3 CSG Constructive Solid Geometry

  • 通过布尔运算组合隐式几何 Combine implicit geometry via Boolean operations
    在这里插入图片描述

1.2.4 距离函数 Distance Functions

  • 距离函数描述的是:空间中的任意一点到想要表述的几何形体上的任意一点的最小距离(外正或内负,空间中任何一点都定义出来一个值) giving minimum distance (could be signed distance) from anywhere to object

  • 这种方法是通过融合(Blend)距离函数的方式来描述新的物体,得到融合后的距离函数后,可以令距离函数为0时的位置为表面
    在这里插入图片描述

  • 如下是直接融合两张图和融合距离函数的差别,融合距离函数得到的结果为0处左为黑,右为白
    在这里插入图片描述

弹幕补充:可以想象两个磁场同时存在,找等势面的情况

1.2.5 水平集 Level Set Methods

  • 对于融合距离函数的方法,得到融合后确定的函数后,可以通过距离函数为0的地方确定为表面;对于解析式很难描述的复杂形状,替代方案是存储数值近似函数的网格,然后通过插值找出为0的表 Closed-form equations are hard to describe complex shapes. Alternative: store a grid of values approximating function

  • 可以提供对形状的更明确的控制(如纹理) Provides much more explicit control over shape (like a texture)

  • 在地理上有类似概念——等高线
    在这里插入图片描述

  • 在CT、核磁共振等得到的医疗数据(如密度)中,可以找到使密度函数等于某个密度的集合,通过水平集的方法找到表面 Level sets encode, e.g., constant tissue density

  • 水滴在落下四溅的过程中也可以通过定义距离函数或水平集的方式表述水滴和水滴融合在一起后的表面 Level set encodes distance to air-liquid boundary

1.2.6 分形 Fractals

  • 表现出自相似性 Exhibit self-similarity, detail at all scales
  • 经常被用来描述一些自然现象 “Language” for describing natural phenomena
  • 难以控制形状 Hard to control shape!
    在这里插入图片描述

1.2.7 隐式几何的优缺点 Implicit Representations - Pros & Cons

  • 优点 Pros:
    • 简洁的描述(如一个函数) compact description (e.g., a function)
    • 某些查询容易(物体内部,到表面的距离) certain queries easy (inside object, distance to surface)
    • 利于求光线到表面的交集 good for ray-to-surface intersection
    • 对于简单的形状,描述准确/没有采样错误 for simple shapes, exact description / no sampling error
    • 容易处理拓扑结构的变化(如流体) easy to handle changes in topology (e.g., fluid)
  • 缺点 Cons:
    • 难以创建复杂的形状 difficult to model complex shapes

1.3 显式几何 “Explicit” Representations of Geometry

三角形面(triangle meshes)、贝塞尔曲面(Bezier surfaces)、曲面细分(subdivision surfaces)、非均匀有理B样条(NURBS)、点云(Point Cloud)…

1.3.1 显式几何 Explicit Surface

  • 所有的点都直接或通过参数映射给出 All points are given directly or via parameter mapping
  • 容易判断面上的点在哪 Sampling Is Easy
  • 难以判断点在内部还是外部 Inside/Outside tests hard
  • 除了三角形面,通过参数映射定义的方法也很常见
    在这里插入图片描述

1.3.2 点云 Point Cloud

  • 最简单的表示方法:点列表(x,y,z) Easiest representation: list of points (x,y,z)
  • 轻松表示任何类型的几何体 Easily represent any kind of geometry
  • 适用于足够大型的数据集 (>>1 点/像素) Useful for LARGE datasets (>>1 point/pixel)
  • 通常转换为多边形网格 Often converted into polygon mesh
  • 难以使用欠采样的数据进行绘制 Difficult to draw in undersampled regions
    在这里插入图片描述

1.3.3 多边形面 Plygon Mesh

  • 存储顶点和多边形(通常是三角形或四边形) Store vertices & polygons (often triangles or quads)

  • 更容易进行处理/模拟,自适应采样 Easier to do processing / simulation, adaptive sampling

  • 更复杂的数据结构 More complicated data structures

  • 也许是图形中最常见的表示 Perhaps most common representation in graphics
    在这里插入图片描述

  • obj格式文件经常用于图形研究 Commonly used in Graphics research

    • 是一个指定顶点、法线、纹理坐标及其连接状况的文本文件 Just a text file that specifies vertices, normals, texture coordinates and their connectivities
      在这里插入图片描述

2 曲线 Curves

接下来从曲线开始详细说明其他显式几何表示方法

2.1 曲线的应用 Examples of Curves

  • 镜头的运动路径 Camera Paths
  • 物体沿曲线运动的动画 Animation Curves
  • 矢量文字 Vector Fonts

2.2 贝塞尔曲线 Bézier Curves

  • 贝塞尔曲线是需要一系列的控制点去定义的一个曲线,这个曲线满足一些性质,比如下图的要沿着切线方向
    在这里插入图片描述

2.2.1 贝塞尔曲线的计算——de Casteljau Algorithm

  1. 定义三个点(二次贝塞尔曲线) Consider three points (quadratic Bezier)
  2. 根据t值在两条边上分别插值出两个点 Insert two points using linear interpolation on both edges
  3. 连接两个点再次根据t值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值