3D数学 学习笔记(5) 三角网格

3D数学 学习笔记(5) 三角网格

参考书籍:
《3D数学基础:图形与游戏开发》


三角网格

在Unity中,导入的模型都有这个Mesh,如果模型顶点过多,会分成多个Mesh。

索引三角网格

// 顶点级别信息
struct Vertex 
{
	// 顶点的3D坐标
	Vector3 pos;
	// 还可以有纹理映射坐标,表面法向量,光照值等。
}; 

// 三角形级别信息
struct Triangle 
{ 
	// 顶点列表
	int vertexIndex [3];
	// 法向量,材质信息等。
}; 

// 索引三角网格
struct TriangleMesh 
{ 
	// 顶点数量
	int vertexCount ;
	// 顶点链表
	Vertex *vertexList ; 
	// 三角形数量
	int triangleCount ;
	// 三角形链表
	Triangle *triangleList ; 
};

三角带

每个三角形都与前一个三角形共享一边。

在这里插入图片描述

多个三角带可以用连接起来,点7和8之间线段可以理解为压扁的三角形,为778或788。

在这里插入图片描述

在这里插入图片描述

三角扇

所有三角形共享第一个顶点。

在这里插入图片描述


拓扑与一致性

如果两个顶点数相同且三角形互联方式一致的三角网格,称为拓扑的。即使对应不同物体、不同拉伸,不打破邻接性就是同拓扑网格。

  • 封闭网格(流形):网格覆盖在物体表面,是没有缝隙的。

拓扑异常的三角网格:

  • 孤立顶点:顶点未被任何三角形使用。
  • 重复定点:完全重复的顶点。
  • 退化三角形:使用顶点超过一次的三角形(看起来像一条线那样)。
  • 开放边:仅为一个三角形用。
  • 超过两个三角形共享的边。
  • 重复的面。

三角网格操作

焊接顶点

在这里插入图片描述

将相同的(邻近的)顶点删除,留下一个。

  • 在焊接前,应该去除孤立点。
  • 当两个来自“细长”三角形,焊接可能产生退化三角形,应该删除这样的三角形。
  • 焊接时,应该用原顶点的平均作为新顶点,但也因此可能产生原来不再容差范围内的点被新顶点干扰。解决方案有下面这些:
    • 先找出所有误差容限内的顶点组,再焊接。
    • 不考虑已经焊接过的点。
    • 记录原顶点坐标,当顶点和它们相比在容限外时不焊接。

在这里插入图片描述
在这里插入图片描述

面拆分

即复制顶点(位置不变),使边不再被共用。和焊接相反。新顶点和边和原来的重合。

在这里插入图片描述

边缩坍

将边缩减为顶点,顶点拆分。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值