CN106548505B - 用于三维射线跟踪的场景模型快速三角化方法 - Google Patents
用于三维射线跟踪的场景模型快速三角化方法 Download PDFInfo
- Publication number
- CN106548505B CN106548505B CN201610919353.0A CN201610919353A CN106548505B CN 106548505 B CN106548505 B CN 106548505B CN 201610919353 A CN201610919353 A CN 201610919353A CN 106548505 B CN106548505 B CN 106548505B
- Authority
- CN
- China
- Prior art keywords
- point
- polygon
- triangle
- trigonometric ratio
- salient point
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明属于计算机图形技术领域,为在不影响射线跟踪程序精度的前提下,提高场景模型三角化运算速度,减少三角数目,从而提高射线跟踪程序的整体效率。本发明采用的技术方案是,用于三维射线跟踪的场景模型快速三角化方法,步骤如下:(1)得到涵盖全部图形信息字符串;(2)从字符串中提取底面多边形、高度、顶点坐标信息;(3)对于每个物体对象,定义为DXF_Face类;(4)对每个面分别利用多边形三角化算法实现三角化;(5)利用opengl的绘图函数在窗口中展示三角化显示效果。本发明主要应用于计算机图形处理。
Description
技术领域
本发明属于计算机图形技术领域,具体应用于简单三维场景的三角化射线跟踪程序。
背景技术
现今最常用的三角化算法为劳德内三角化算法,但此算法并非专门针对多边形的三角化,三角数量较多,更适合应用于较复杂场景。
对于三角化射线跟踪,场景模型一般较为简单,多为直棱柱体,且常常采用CAD图形文件存储。因此采用分层的数据结构储存和管理图形单元较为方便。一般是将整个模型划分为物体对象,然后进一步划分为面元,每个面元为单个多边形。因此二维任意多边形的三角化是问题的关键。而对于凹点的处理是难点。
比较常见的多边形三角化方法有多边形分割法,使得分割后的每个多边形都为凸多边形,但分割多边形算法一般较复杂,对于简单模型。
在不需进行多边形分割的三角化算法中,有一种迭代消点法较为常用,每次找出一个凸点,使得此凸点与相邻两点组成的三角形不包含多边形的任何其他顶点。此方法能够较快的对任意多边形正确划分三角。
发明内容
为克服现有技术的不足,本发明目的是,在不影响射线跟踪程序精度的前提下,提高场景模型三角化运算速度,减少三角数目,从而提高射线跟踪程序的整体效率。本发明采用的技术方案是,用于三维射线跟踪的场景模型快速三角化方法,对于待三角化的三维场景模型,从读取文件到完成三角化,分为五个步骤:
(1)利用文件流读取计算机辅助设计CAD图形dxf文件,得到涵盖全部图形信息字符串;
(2)从字符串中提取底面多边形、高度、顶点坐标信息,构建物体对象,定义为DXF_Obj类;
(3)对于每个物体对象,按照顶点共面原则构建面对象,定义为DXF_Face类;
(4)对每个面分别利用多边形三角化算法实现三角化,存储为有向三角对象,定义为Triangle类;三角形由定义为Point类更基本的点和定义为Vector的向量构成;
(5)利用opengl的绘图函数在窗口中展示三角化显示效果。
利用多边形三角化算法实现三角化具体步骤是,每次找出循环链表中合适的凸点,该凸点与相邻点组成三角,记录后在循环链表中删除该凸点,组成新的多边形,重复此过程,直至多边形为凸的或三角形;进一步地,每次找出循环链表中合适的凸点是找出多边形顶点中出现的至少有两个的连续凹点,如果存在连续凹点,则找出连续凹点数量最多的凹点组,定位到凹点组最外侧的凸点,划分三角并从链表中删除该凸点;如果不存在连续凹点,则定位到任意凹点旁的凸点,划分三角并从链表中删除该凸点。
本发明的特点及有益效果是:
与现有多边形三角化算法相比,本发明具有以下优点和有益效果:该方法减少了循环迭代次数,能够更快地从场景模型中提取出适合射线跟踪计算的数据结构。在不损失运算正确性的前提下减低了时间复杂度。该改进三角化方法更适合于应用在实际的射线跟踪计算问题上。
附图说明:
图1为室内场景三角化模型举例截图;
图2为常用的多边形三角化流程图;
图3为改进的的多边形三角化流程图;
图4为常用的多边形三角化结果举例;
图5为改进的的多边形三角化结果举例。
具体实施方式
针对已有算法中的上述问题,本发明提出了一种适用于三维射线跟踪的场景模型三角化方法。先将场景模型从三维CAD模型中提取,转化成自定义的“物体”数据结构;再将每个物体划分成用循环链表表示的面元(多边形)数据结构。这样问题就转化为二维任意多边形的三角化的实现方法了。
与现有的常用迭代消点法类似,此处的方法也是每次找出循环链表中合适的凸点,该凸点与相邻点组成三角,记录后在循环链表中删除该凸点,组成新的多边形。重复此过程,直至多边形为凸的或三角形。
为了便于后续的说明,这里首先给出一些基本概念的定义。
(1)凸点的剩余顶点:当前多边形顶点中,除了该凸点及其相邻两点外的其余顶点。
(2)内部三角形:由多边形三个顶点连接而成的三角形,且不超出多边形边界。
(3)外部三角形:由多边形三个顶点连接而成的三角形,但超出多边形边界。
(4)相交三角形:由多边形三个顶点连接而成的三角形,且与多边形边界相交,或与其他已划分的三角相交。
(5)连续凹点:多边形顶点中出现至少两个相邻的凹点。
与现有方法所不同的是,本方法对凸点选取准则做了简化。原方法需先找出每个凸点的剩余顶点,然后对每个剩余顶点做“剩余顶点是否在三角内”的判断,这样可以避免出现外部三角形和相交三角形。而新方法只需找出连续凹点,即找出多边形顶点中出现的至少有两个的连续凹点。如果存在连续凹点,则找出连续凹点数量最多的凹点组,定位到凹点组最外侧的凸点,划分三角并从链表中删除该凸点;如果不存在连续凹点,则定位到任意凹点旁的凸点,划分三角并从链表中删除该凸点。这样可以避免在划分的三角形中包含连续凹点,即外部三角形。从划分三角的效果来看,原方法能够避免外部三角形和相交三角形,新方法仅能够避免外部三角形。从主要循环层数上看,后一种方法使得循环层数由两层减为一层,效率提高。
这里要说明的是,虽然新方法不能保证对一些个别多边形进行无相交的分割,但这对于较小场景的射线跟踪程序无影响。这是因为射线跟踪模型中,凹点较多的多边形大多出现在建筑的顶面,三角法向量朝上,在相交测试运算过程中不予考虑;而且由于实际过程中还要对三角进行遮挡判断,相交三角形的出现是被允许的。
下面将结合附图以及具体实施方式,对本发明做进一步描述:
以下结合一个室内场景的具体实例,使用Visual Studio2010作为开发平台,利用C#语言和opengl库进行了三角化算法的实现和展示。
对于待三角化的三维场景模型,这里以最常用的三维CAD图形(.dxf文件)为例进行说明。从读取文件到完成三角化,大体分为五个步骤:
(1)利用文件流读取dxf文件,得到字符串(涵盖全部图形信息);
(2)从字符串中提取底面多边形、高度、顶点坐标等信息,构建物体对象(定义为DXF_Obj类);
(3)对于每个物体对象,按照顶点共面原则构建面对象(定义为DXF_Face类);
(4)对每个面分别利用多边形三角化算法实现三角化,存储为有向三角对象(定义为Triangle类),三角形由更基本的点(定义为Point类)和向量(定义为Vector)构成;
(5)利用opengl的绘图函数在窗口中展示三角化显示效果。
图1是某教学楼室内场景三角化效果图。
图2和图3是多边形三角化算法的完整流程。图2给出的是现今常用的多边形三角化算法,能够对任意凹多边形三角化,结果中不存在外部三角形和相交三角形,但由于存在两个循环,执行速度较慢;图3给出的改进多边形三角化算法,能够对大多数多边形正确完成三角化,但对于一些凹点较深的多边形,可能会出现相交三角形,不过由于循环层数减为一层,执行效率比较高。由于射线跟踪的遮挡测试可以避免相交三角形的重复计算,改进算法并不会影响最终结果。
图4和图5是针对同一个多边形,分别利用两种算法实现三角化的效果图。
利用定时器计时,对此图形执行100万次三角化过程,两种算法的执行时间分别是7分22秒和2分4秒。
Claims (1)
1.一种用于三维射线跟踪的场景模型快速三角化方法,其特征是,对于待三角化的三维场景模型,从读取文件到完成三角化,分为五个步骤:
(1)利用文件流读取计算机辅助设计CAD图形dxf文件,得到涵盖全部图形信息字符串;
(2)从字符串中提取底面多边形、高度、顶点坐标信息,构建物体对象,定义为DXF_Obj类;
(3)对于每个物体对象,按照顶点共面原则构建面对象,定义为DXF_Face类;
(4)对每个面分别利用多边形三角化算法实现三角化,存储为有向三角对象,定义为Triangle类;三角形由定义为Point类更基本的点和定义为Vector的向量构成;
(5)利用opengl的绘图函数在窗口中展示三角化显示效果;
其中,利用多边形三角化算法实现三角化具体步骤是,每次找出循环链表中合适的凸点,该凸点与相邻点组成三角,记录后在循环链表中删除该凸点,组成新的多边形,重复此过程,直至多边形为凸的或三角形;进一步地,每次找出循环链表中合适的凸点是找出多边形顶点中出现的至少有两个的连续凹点,如果存在连续凹点,则找出连续凹点数量最多的凹点组,定位到凹点组最外侧的凸点,划分三角并从链表中删除该凸点;如果不存在连续凹点,则定位到任意凹点旁的凸点,划分三角并从链表中删除该凸点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610919353.0A CN106548505B (zh) | 2016-10-21 | 2016-10-21 | 用于三维射线跟踪的场景模型快速三角化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610919353.0A CN106548505B (zh) | 2016-10-21 | 2016-10-21 | 用于三维射线跟踪的场景模型快速三角化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106548505A CN106548505A (zh) | 2017-03-29 |
CN106548505B true CN106548505B (zh) | 2019-08-13 |
Family
ID=58392179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610919353.0A Active CN106548505B (zh) | 2016-10-21 | 2016-10-21 | 用于三维射线跟踪的场景模型快速三角化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106548505B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257693B (zh) * | 2018-08-02 | 2020-09-25 | 哈尔滨工程大学 | 一种基于空间分析的室内协作定位方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290222A (zh) * | 2008-06-13 | 2008-10-22 | 北京天下图数据技术有限公司 | 通过真正射影像快速构建三维建筑物场景的方法 |
CN102110306A (zh) * | 2009-12-23 | 2011-06-29 | 富士通株式会社 | 用于对凹多边形进行三角化的方法和系统 |
CN102663789A (zh) * | 2012-04-19 | 2012-09-12 | 上海巨唐信息科技有限公司 | 将二维平面内含洞及岛的多边形三角化的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8743119B2 (en) * | 2011-05-24 | 2014-06-03 | Seiko Epson Corporation | Model-based face image super-resolution |
-
2016
- 2016-10-21 CN CN201610919353.0A patent/CN106548505B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101290222A (zh) * | 2008-06-13 | 2008-10-22 | 北京天下图数据技术有限公司 | 通过真正射影像快速构建三维建筑物场景的方法 |
CN102110306A (zh) * | 2009-12-23 | 2011-06-29 | 富士通株式会社 | 用于对凹多边形进行三角化的方法和系统 |
CN102663789A (zh) * | 2012-04-19 | 2012-09-12 | 上海巨唐信息科技有限公司 | 将二维平面内含洞及岛的多边形三角化的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106548505A (zh) | 2017-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Online structure analysis for real-time indoor scene reconstruction | |
Xu et al. | Combining IFC and 3D tiles to create 3D visualization for building information modeling | |
CN102194253B (zh) | 一种面向三维地质层面结构的四面体网格生成方法 | |
CN102622776B (zh) | 三维环境重构 | |
CN102779358B (zh) | 用于设计几何三维建模对象的方法及设备 | |
CN107767453B (zh) | 一种基于规则约束的建筑物lidar点云重构优化方法 | |
CN102521869B (zh) | 一种几何特征引导的三维模型表面纹理空洞填补方法 | |
CN103714575B (zh) | 一种sph与动态表面网格相结合的流体仿真方法 | |
CN102663800A (zh) | 一种顾及城市意象的城市建筑综合与渲染的方法 | |
CN105389850A (zh) | 一种大规模三维场景的新型可见性生成方法 | |
CN115018992B (zh) | 发型模型的生成方法、装置、电子设备及存储介质 | |
CN104239601A (zh) | 织物片组合的仿真 | |
CN108830926A (zh) | 三维虚拟地球软件中空间动态粒子模型建立与可视化方法 | |
CN110503718A (zh) | 三维工程模型轻量化显示方法 | |
CN106548505B (zh) | 用于三维射线跟踪的场景模型快速三角化方法 | |
CN111383341A (zh) | 从原始网格生成结构化的3d模型 | |
Huang et al. | Segmentation algorithm of three-dimensional point cloud data based on region growing | |
CN103985150B (zh) | 一种图像处理方法及电子设备 | |
Wang et al. | 3D Scene Management Method Combined with Scene Graphs. | |
Ma et al. | Research and application of personalized human body simplification and fusion method | |
Cheng | Retracted: Application of VR computer image technology in 3D virtualization of sports human science | |
Yang et al. | A large‐scale urban 3D model organisation method considering spatial distribution of buildings | |
Westerteiger | Virtual Reality Methods for Research in the Geosciences | |
Chi | Design and implementation of image relief based on computer 3D modeling | |
Wang et al. | 3D Model Management and Dynamic Loading based on GIS Database |
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 |