三角网格 Incremental Remeshing 算法

欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。

在这里插入图片描述

整体算法流程

remesh(target_edge_length)
	low = 4/5 * target edge length
	high = 4/3 * target_edge_length
	for i = 0 to 10 do
		split_long_edges(high) // 分裂比较长的边
		collapse_short_edges(low,high) // 删除比较短的边
		equalize_valences() // 优化点的度数
		tangential_relaxation() // 沿切平面平滑点
		project_to_surface() // 投影回原始网格面上

分裂长边

在这里插入图片描述

在这里插入图片描述
如果检测到有长边,则从中间分裂该边,并添加两条边。

删除边

在这里插入图片描述

将所有以a终点的边改成以b为终点,如果删除边后会产生比较长的边,则此次操作被驳回。

优化度数

equalize_valences()
for each edge e do
	let a, b, c, d be the vertices of the two triangles adjacent to e
	deviation_pre = abs(valence(a)-target val(a))
	+ abs(valence(b)-target_val(b))
	+ abs(valence(c)-target_val(c))
	+ abs(valence(d)-target_val(d))
	flip(e)
	deviation_post = abs(valence(a)-target_val(a))
	+ abs(valence(b)-target_val(b))
	+ abs(valence(c)-target_val(c))
	+ abs(valence(d)-target_val(d))
	if deviation pre ≤ deviation post do
	flip(e)

target_val函数值 ,内部点为6,边界点为4.
如果flip后能整体度够接近target_val则执行,否则不执行。

沿切平面平滑

tangential_relaxation()
	for each vertex v do
		q[v] = the barycenter of v’s neighbor vertices // 利用1领域计算v点的新坐标
	for each vertex v do
		let p[v] and n[v] be the position and normal of v, respectively
		p[v] = q[v] + dot(n[v],(p[v] − q[v])) * n[v] // 把v点移回到法平面上

可以利用uniform Laplacian 权计算v点的平均值

在这里插入图片描述

投影回到原始网格

project_to_surface() 
	for each face center fc do 
		aabb.add_box(fc) // 在aabb tree中加入以fc为中心,边长为1/2 点距的方盒子
	for each vertex v do
		faces = aabb.find(q[v]) // 查询与v的盒子相交的面
		for each face f do
			v=find_nearst(f, q[v]) // 将q[v]投影到f上

利用aabb tree 加速查找可能投影到的面。

依次投影到三角面上,取最短距离。


本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值