CN112150599B - 一种修正stl文件外法线的方法 - Google Patents

一种修正stl文件外法线的方法 Download PDF

Info

Publication number
CN112150599B
CN112150599B CN202011032555.6A CN202011032555A CN112150599B CN 112150599 B CN112150599 B CN 112150599B CN 202011032555 A CN202011032555 A CN 202011032555A CN 112150599 B CN112150599 B CN 112150599B
Authority
CN
China
Prior art keywords
surface element
triangular surface
normal
triangular
ray
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011032555.6A
Other languages
English (en)
Other versions
CN112150599A (zh
Inventor
张进
宋文艳
王泽江
刘赟
何国毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanchang Hangkong University
Original Assignee
Nanchang Hangkong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanchang Hangkong University filed Critical Nanchang Hangkong University
Priority to CN202011032555.6A priority Critical patent/CN112150599B/zh
Publication of CN112150599A publication Critical patent/CN112150599A/zh
Application granted granted Critical
Publication of CN112150599B publication Critical patent/CN112150599B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • G06F17/12Simultaneous equations, e.g. systems of linear equations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Operations Research (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)

Abstract

本发明公开了一种修正STL文件外法线的方法,用以解决STL文件中法线方向不一致的问题;通过该算法后,STL文件中所有三角面元法线全部是外法线或全部为内法线。以STL文件三角面元中心点为起点的法线为射线,在考虑射线可能与两个三角面元的公共边相交或射线刚好穿过多个三角面元的公共顶点这两种情况下,根据射线与其他面元网格交点数为奇偶判断法线是否为内法线。

Description

一种修正STL文件外法线的方法
技术领域
本发明涉及数据结构与算法技术领域,具体涉及一种修正STL文件外法线的方法。
背景技术
STL(stereo lithography)是三维图形文件接口,已被工业界认为是目前快速成型领域的标准零件描述文件格式。它采用一系列三维的三角形记录实体模型的边界,包括三角形所在平面的法线和它所包含的三个顶点坐标。STL文件中三角形法线与三个顶点之间遵循右手定则,在生成STL文件时,三角顶点记录顺序是紊乱的,导致法线有的是外法线,有的是内法线,法线方向不一致。
邱元庆等采用从一个三角面元开始遍历,比较其法向量和周围其他三角面元法向量,看差值是否在一定阈值内,若不是,则判定法向量有错。这种方法由于人为主观性和法向量方向的多样性,很难修复所有的法向量错误,尤其在曲率较大的面或面面相交的地方。李正洲等采用在三角面元附近沿法线方向取一点,从该点沿任意方向作射线,射线与三角面元交点为偶数,该三角面元法线为外法线,否则,为内法线。这一方法简单快捷,但在其公开文献中,并没考虑射线刚好穿过两个三角面元的公共边或射线刚好穿过多个三角面元的公共顶点情况。
发明内容
本发明所要解决的问题是:提供一种修正STL文件外法线的方法,以STL文件三角面元中心点为起点的法线为射线,在考虑射线可能与两个三角面元的公共边相交或射线刚好穿过多个三角面元的公共顶点这两种情况下,根据射线与其他面元网格交点数为奇偶判断法线是否为内法线。
本发明为解决上述问题所提供的技术方案为:一种修正STL文件外法线的方法,所述方法包括以下步骤,
(1).从STL文件中读取三角面元信息给A;
(2).通过三角形三顶点计算出三角形中点,以中点为起点,三角面元法线为方向,按数学公式(1)建立射线方程;设置统计交点数的变量count=0;
p=ps+t*v (1)
(3).从STL文件中读取三角面元信息给E,如E等于A则读取下一个三角面元给E;
(4).通过公式(1)(2)(3)计算出t值,根据t判断射线是否与三角面元E所在平面相交,如相交,再用公式(4)计算交点与三角面元E三顶点组成的三个三角形面积,根据三个三角形面积和是否等于三角面元E的面积,判断射线是否与三角面元E相交;
n*(p-p0)=0 (2)
t=-(ps–p0)*n/(v*n) (3)
S=|AB×AC|/2 (4)
(5).如射线与三角面元E相交,则判断这一交点与前面已求出的交点是否重合,如不重合,count变量加1;
(6).重复进行(3)、(4)、(5)步骤,直至STL文件中无三角面元赋给E;
(7).判断count是否为奇数,如为奇数,则三角面元A法线为内法线,将三角面元A内法线取反改为外法线;
(8).重复进行(1)、(2)、(3)、(4)、(5)、(6)、(7)步骤,直至STL文件中无三角面元赋给A,算法结束。
优选的,所述步骤(1)中三角面元信息包含三角形三顶点和三角面元所在平面法线。
与现有技术相比,本发明的优点是:本发明以STL文件三角面元中心点为起点的法线为射线,在考虑射线可能与两个三角面元的公共边相交或射线刚好穿过多个三角面元的公共顶点这两种情况下,根据射线与其他面元网格交点数为奇偶判断法线是否为内法线。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明方法流程图;
图2是射线示意图;
图3是平面示意图;
图4是飞行器修改前后法线比较图(左边为修改前,右边为修改后)。
具体实施方式
以下将配合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
本发明的目的是提供一种算法,用以解决STL文件中法线方向不一致的问题;通过该算法后,STL文件中所有三角面元法线全部是外法线或全部为内法线。
发明原理:涉及数学方法:
1)射线与平面交点方程
如图2所示,ps是射线起点,p为射线上任意一点,设v为射线方向单位向量,则向量psp=t*v,射线方程为:
p=ps+t*v (1)
如图3所示,n为平面法线矢量,p0为平面上一已知点,p为平面任意一点,则该平面方程为:
n*(p-p0)=0 (2)
联立方程(1)(2)求解得:
t=-(ps–p0)*n/(v*n) (3)
若t≥0,射线与平面相交,交点为:
p=ps+t*v。
2)矢量叉乘求解三角面元面积公式
已知三角面元的三个顶点A、B、C,三角面元两矢量边为AB、AC,则三角面元的面积为:
S=|AB×AC|/2 (4)
面法线射线法是以要判断的三角面元中心点为射线起点,该面元的法线方向为射线方向构建射线,判断该射线与其他三角面元相交次数(如射线与两三角面元公共线段相交或穿过多个三角面元的公共顶点时交点重叠,只算一次),若相交次数为奇数,则要判断的三角面元法线为内法线,反之,则为外法线。其中,射线与面元所在平面相交后,还需通过交点与面元三顶点所构成的三个三角形面积和是否等于面元面积才能判断交点是否落在面元上。
本发明方法如算法流程如图1所示,包括如下步骤:
1.从STL文件中读取三角面元信息给A(含三角形三顶点和三角面元所在平面法线);
2.通过三角形三顶点计算出三角形中点,以中点为起点,三角面元法线为方向,按数学公式(1)建立射线方程;设置统计交点数的变量count=0;
3.从STL文件中读取三角面元信息给E,如E等于A则读取下一个三角面元给E;
4.通过公式(1)(2)(3)计算出t值,根据t判断射线是否与三角面元E所在平面相交,如相交,再用公式(4)计算交点与三角面元E三顶点组成的三个三角形面积,根据三个三角形面积和是否等于三角面元E的面积,判断射线是否与三角面元E相交;
5.如射线与三角面元E相交,则判断这一交点与前面已求出的交点是否重合,如不重合,count变量加1;
6.重复进行3、4、5步骤,直至STL文件中无三角面元赋给E;
7.判断count是否为奇数,如为奇数,则三角面元A法线为内法线,将三角面元A内法线取反改为外法线;
8.重复进行1、2、3、4、5、6、7步骤,直至STL文件中无三角面元赋给A,算法结束。
以上仅就本发明的最佳实施例作了说明,但不能理解为是对权利要求的限制。本发明不仅局限于以上实施例,其具体结构允许有变化。凡在本发明独立权利要求的保护范围内所作的各种变化均在本发明保护范围内。

Claims (2)

1.一种修正STL文件外法线的方法,其特征在于:所述方法包括以下步骤,
(1).从STL文件中读取三角面元信息给A;
(2).通过三角形三顶点计算出三角形中点,以中点为起点,三角面元法线为方向矢量,按数学公式(1)建立射线方程;设置统计交点数的变量count=0;
p=ps+t*v (1)
(3).从STL文件中读取三角面元信息给E,如E等于A则读取下一个三角面元给E;
(4).通过公式(1)(2)(3)计算出t值,根据t判断射线是否与三角面元E所在平面相交,如相交,再用公式(4)计算交点与三角面元E三顶点组成的三个三角形面积,根据三个三角形面积和是否等于三角面元E的面积,判断射线是否与三角面元E相交;
n*(p-p0)=0 (2)
t=-(ps–p0)*n/(v*n) (3)
S=|AB×AC|/2 (4)
(5).如射线与三角面元E相交,则判断这一交点与前面已求出的交点是否重合,如不重合,count变量加1;
(6).重复进行(3)、(4)、(5)步骤,直至STL文件中无三角面元赋给E;
(7).判断count是否为奇数,如为奇数,则三角面元A法线为内法线,将三角面元A内法线取反改为外法线;
(8).重复进行(1)、(2)、(3)、(4)、(5)、(6)、(7)步骤,直至STL文件中无三角面元赋给A,算法结束。
2.根据权利要求1所述的一种修正STL文件外法线的方法,其特征在于:所述步骤(1)中三角面元信息包含三角形三顶点和三角面元所在平面法线。
CN202011032555.6A 2020-09-27 2020-09-27 一种修正stl文件外法线的方法 Active CN112150599B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011032555.6A CN112150599B (zh) 2020-09-27 2020-09-27 一种修正stl文件外法线的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011032555.6A CN112150599B (zh) 2020-09-27 2020-09-27 一种修正stl文件外法线的方法

Publications (2)

Publication Number Publication Date
CN112150599A CN112150599A (zh) 2020-12-29
CN112150599B true CN112150599B (zh) 2022-11-04

Family

ID=73894700

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011032555.6A Active CN112150599B (zh) 2020-09-27 2020-09-27 一种修正stl文件外法线的方法

Country Status (1)

Country Link
CN (1) CN112150599B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115775301B (zh) * 2023-02-13 2023-05-02 山东捷瑞数字科技股份有限公司 一种基于三维引擎统一物体模型法线的方法、装置及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761397A (zh) * 2014-01-26 2014-04-30 张靖 用于面曝光增材成型的3d模型切片及投影面生成方法
CN108646228A (zh) * 2018-05-11 2018-10-12 电子科技大学 一种基于po方法的雷达散射截面计算方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5596504A (en) * 1995-04-10 1997-01-21 Clemson University Apparatus and method for layered modeling of intended objects represented in STL format and adaptive slicing thereof
CN108298075B (zh) * 2018-02-02 2021-01-05 南昌航空大学 能悬停的扑翼飞行器及其控制方式
CN110705058B (zh) * 2019-09-19 2021-08-31 电子科技大学 一种针对超电大尺寸规模目标的近场电磁散射仿真方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103761397A (zh) * 2014-01-26 2014-04-30 张靖 用于面曝光增材成型的3d模型切片及投影面生成方法
CN108646228A (zh) * 2018-05-11 2018-10-12 电子科技大学 一种基于po方法的雷达散射截面计算方法

Also Published As

Publication number Publication date
CN112150599A (zh) 2020-12-29

Similar Documents

Publication Publication Date Title
CN106289233B (zh) 多形态障碍的无人机路径规划方法及系统
US8269771B2 (en) Remeshing method and apparatus for restoring sharp features of mesh made smooth enough
US20120206457A1 (en) Methods and Systems for Generating Continuous Surfaces from Polygonal Data
US20110158555A1 (en) Curved surface area calculation device and method
CN112150599B (zh) 一种修正stl文件外法线的方法
CN111243094B (zh) 一种基于点灯法的三维模型精确体素化方法
Andersson et al. Polyhedral perturbations that preserve topological form
US11494982B2 (en) Feature based abstraction and meshing
US8022949B2 (en) System and method for generating curvature adapted isosurface based on delaunay triangulation
CN105785919A (zh) 点云五轴无全局干涉刀轴矢量可行域计算方法
US20150206342A1 (en) Methods and Systems for Generating Continuous Surfaces from Polygonal Data
CN110001066B (zh) 一种三维打印最少分区填充方向确定方法
CN108510579B (zh) 一种工业复杂裁剪曲面的渲染显示方法
JP2023082702A (ja) 3dcadモデルの分割
CN115859524A (zh) 一种基于stl模型的圆柱体布尔求差运算方法
CN106651979A (zh) 基于投影的空间曲面四边形网格剖分方法
TW200823803A (en) Method for constructing triangular grids of point clouds
WO2022046101A1 (en) Mesh generation
CN115984511B (zh) 一种基于cad的平行六面体体积平均共形网格剖分方法
CN104504762B (zh) 一种基于拓扑重建的义齿表面局部变形方法
CN110796729B (zh) 一种基于二叉树的网格划分方法
Lin et al. Rapid prototyping through scanned point data
KR101266336B1 (ko) 3차원 유한체적 해석을 위한 전/후처리 방법
JP4241778B2 (ja) 面要素の歪み検出装置、面要素の歪み検出方法、およびプログラム
EP3279867B1 (en) Method and system for the visualization of bivariate polynomials

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant