图形学学习笔记2 网格数据结构

1 网格数据应用

  1. 渲染
  2. 集合查询(某个面的顶点有哪些,两个点是否相连等)
  3. 几何操作(添加、删除某个点/线/面;网格化简;顶点分裂,边缘折叠)

2 网格数据的存储

  1. 一般的网格存储(很难有效实现)
  2. 什么是好的数据存储?(空间复杂度,时间(构建时间,查询时间,修改时间),时间空间的权衡,冗余)

3 定义一个网格

  1. 几何上(顶点坐标)
  2. 连通
  3. 表面及材料属性(材料颜色Material color,周围环境Ambient,高光系数hightlight coefficients,纹理坐标Texture coordinates,双向反射分布函数BRDF,双向纹理函数BTF)
  4. 渲染属性(光照,法向,渲染模型)

4 常用网格文件

  1. wavefont OBJ(*.obj),
  2. 3D Max (*.max, *.3ds),
  3. VRML(*.vrl),
  4. nventor (*.iv),
  5. PLY (*.ply, *.ply2),
  6. User‐defined(*.m, *.liu)

5 边表

图形学学习笔记2 网格数据结构_第1张图片

优点:方便快捷,可以表示非流形网格

缺点:太简单,不能表达边和点之间的关系

6 邻接矩阵

  1. 将网格看成连通图
  2. 对给定的n个点,构造一个n*n的邻接矩阵,如果点i和点j相连则(i,j)的值为true
  3. 几何信息(点的坐标)
  4. 添加一个面:顶点指标三元组(v1,v2,v3)

图形学学习笔记2 网格数据结构_第2张图片

优点:1、存储了点之间的连通性;2、可以存储非流性网格

缺点:有面对点的联系,没有点对面的联系

7 双连通边表(DCEL)

记录每一个面,每一条边,每一个点(几何信息,拓普信息,属性信息),半边结构

  1. 点记录:点v的坐标;指向以点v作为起点的半边的的指针
  2. 面记录:指向面f边界的半边的指针
  3. 边记录:指向边e起始点的指针origin(e);指向他的双胞胎半边的指针twin(e);指向该边左边的面的指针IncFace(e);IncFace(e)的上一条边prev(e)和下一条边next(e);

图形学学习笔记2 网格数据结构_第3张图片

例子:

图形学学习笔记2 网格数据结构_第4张图片

图形学学习笔记2 网格数据结构_第5张图片

优点:所有的查询时间复杂度都为O(1);通常情况下,所有的操作时间复杂度都为O(1)。

缺点:只能表示流型网格

8 角表(Corner Table)

角c包含的信息有:

  1. c.t:角c所在的三角形
  2. c.v:角c所对的点
  3. c.n:c.t中角c逆时针方向的下一个角
  4. c.p:c.t中角c逆时针方向的上一个角
  5. c.o:与c相对的角
  6. c.r:角c右边的角 == c.n.o
  7. c.l:角c左边的角 == c.p.o

图形学学习笔记2 网格数据结构_第6张图片

例子:

图形学学习笔记2 网格数据结构_第7张图片

优点:所有的查询时间复杂度都为O(1);通常情况下,所有的操作时间复杂度都为O(1)。

缺点:只能表示流型网格;高冗余(但可以接受)

你可能感兴趣的:(计算机图形学)