图形学笔记——三角形网格的数据结构

Triangle Meshes

一、要解决问题

对三角形网格的存贮来说,最简单的想法,莫过每个三角形三个顶点坐标,每个顶点坐标都是三维,利用三角形数组存贮,如下:

Triangle{
    vec3 vertexPosition [3];
}

但是这样的结构的结构存在两个问题:

  1. 网格中的每个顶点都被多个三角形共享,所以说同样的数据会被存贮很多次,造成严重浪费
  2. 无法知道三角形,顶点,边之间的相邻关系,这对于渲染等过程的处理是非常不利的

第一个问题其实很好解决,只要把顶点单独存贮,然后三角形中存储顶点数组的下标即可,如下:

IndexedMesh{
    int tInd[nt][3];	//nt:number of triangle
    vec3 vertex [nv] 	//nv:number of vertex
}

这个文件的重点在解决第二个问题,思路有以下两种:

  1. 以顶点为中心视角,将一个顶点周围的三角形以某种方式遍历
  2. 以边为中心视角,让边顺/逆时针旋转一周回到它自己,也就实现了对于三角形的遍历

同时为了避免旋转和边/顶点选择的混乱,要进行如下规定:

  1. 三角形的三个顶点,在其本身分别内为0,1,2,而且顺时针旋转
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值