ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Near-Convex Decomposition and Layering for Efficient 3D Printing笔记

2021-04-22 20:29:27  阅读:279  来源: 互联网

标签:Layering 分割 面片 剖分 Efficient 三角 簇集 Near 组件


声明:文中所有观点仅代表个人见解,若有不妥之处欢迎指正。

这篇论文于2018年 被 SCI 1区 "Additive Manufacturing"录用。原文链接:http://hpcg.purdue.edu/bbenes/papers/Demir18AM.pdf

目录

1.Overview

2.Decomposition(剖分)

2.1Search Subspace Creation 创建搜索子空间

2.2Segmentation 分割

2.3Configuration 确定组件的放置位置及旋转角度

1.Overview

输入:未标记的网格模型(三角面片无规则无组织无序),

(1)Cluster:通过定义的度量计算三角面片的相似性,得到最初的相似三角面片簇集,然后计算空间相似度对簇集进行合并和分割,得到最初搜索子空间(search subspace)

(2)Components-Minimization: 对搜索子空间进行剖分得到组件,然后迭代的减小目标函数,收敛得到最后的解集

(3)Configuration:确定剖分后的组件的放置位置及旋转角度

输出:上一步得到的剖分后的有明确位置及旋转角度的组件

打印->组装->End

2.Decomposition(剖分)

剖分分成两部分:创建搜索子空间,分割。

2.1Search Subspace Creation 创建搜索子空间


先介绍两个度量公式,均在作者15年发表的文章(“Coupled Segmentation and Similarity Detection for Architectural Models ”)中给出了定义:

形状差异性度量:

这里ti,tj代表两个三角面片,ai,aj是其面积,ei,ej是其边长,max为最长边,min为最短边,ni,nj是法向,通过这个公式计算差异度。

空间相似性度量:

这里Ta,Tb指两个簇集,ti∈Ta,tj∈Tb, \alpha(ti,tj)是一个函数,当ti,tj存在一条公共边,α=1,否则α=0;简单来说这个公式就是计算两个簇集中公共边的占比。若占比大于阈值\tau N,则这两个簇集相似,反之不相似。


Step1: 首先定义一个标准度量来计算两个三角面片之间的差异大小,差异包括面积,边及法向;即上述形状差异性度量。

本文定义当差异度不大于阈值时,将这些三角面片划分到一个簇中,通过实验发现阈值取0.6对本工作最为合适。

通过上述方法可以计算得出一个最初的包含相似三角面片的簇集。

Step2: 对上一步得到的簇集进行迭代的融合与分割,以平衡空间相似度和形状相似度。迭代到收敛为止。

定义一个标准度量计算簇集的相似性,即上述空间相似性度量。本文阈值取0.5,当空间相似性不小于0.5时,两个簇集合并,其中不存在公共边的划分为一个新的簇集。注意:这里的公共边指的是完整的一条边,若两条不等长的边重合,不算存在公共边。

左为未标记的三角面片模型,右为经过“创建搜索子空间”操作的结果。

2.2Segmentation 分割

这一步中要将得到的搜索子空间中的每个子空间分割到组件中。


首先制定一组需要进行优化的组件属性,以得到更好的打印效果。

组件属性:

(1)concavity凹度,图a中凹度多的模型需要更多的支撑结构(模型下方蓝色虚线维支撑结构)

(该公式定义于A SIMPLE AND EFFICIENT APPROACH FOR 3D MESH APPROXIMATE CONVEX DECOMPOSITION)

P(x)是三角面片顶点到当前簇集的凸壳(convex hull)的投影(投影以垂直表面),可以发现凸面的凹度为0,因为面越凹距离凸面越远。

 

(2)surface angle表面角度,认为打印版的平面精度最高,所以以xy水平面为基面,若面与基面的夹角平行或超过一定角度(越垂直越好),梯度效应越小

当面与基面的夹角平行或超过阈值,NH(f)=1,反之=0,∠(B)是基面与水平面的夹角,文中将最大的三角面片作为基面,但该基面还没有旋转到水平面。

 

(3)sizes/numbers,要在分割尺寸与分割数量中找到一个平衡值,所以最小化簇中的尺寸变化,让切割出来的大小尽量保持差不多

μs为簇内组件的平均尺寸,s(x)是当前簇的长宽高。

 

(4)deviation误差:组件所组成的完整模型与原模型间的误差要尽可能小,提高模型保真度

 

对上述四个属性建立一个最小化目标函数,

将目标函数最小的参数x输入到分割函数Ω中,得到一组不重叠的剖分,并限制x的范围。


近凸分割算法:

基于Mamou and Ghorbel 提出的 Volumetric Hierarchical Approximate Convex Decomposition (VHACD)方法得到的解集,通过上一步的目标函数收敛解集,得到最后的最佳分割。 其中使用了 Powell提出的BOBYQA算法搜索VHACD的参数空间。

各凸分割方法的比较,f是本文方法。


剖分的逐步效果图:由少组件到多组件的划分。组件是簇集的凸壳,组件少时,与原模型的误差就会大。


2.3Configuration 确定组件的放置位置及旋转角度

对于每个组件,首先找到它的OBB(Oriented Bounding Box),然后旋转它,使包围盒的最小维度沿z轴方向(即最慢的挤压速度轴)。然后,调整对象的方向,使最大的面水平躺在打印床上。再找到每个组件的OBB的第二主导轴,并通过进一步旋转组件,将其设置为沿y轴放置,以获得更好的包装。使用贪婪包装算法将所有组件放置在足够近的位置以有效地打印,但又足够远,以避免在打印时合并组件。因为目标函数需要一个较少的组件数量,所以贪婪算法的计算量不会很大。


经过以上步骤得到的组件及其位置信息、旋转角度,经过打印,组装,得到最后的模型。

实验部分及结论部分参照论文,不做赘述。

Thanks for reading!

 

标签:Layering,分割,面片,剖分,Efficient,三角,簇集,Near,组件
来源: https://blog.csdn.net/weixin_48404229/article/details/115975276

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有