CN109191551A - 一种基于三角形邻接信息的沿三维模型表面移动算法 - Google Patents
一种基于三角形邻接信息的沿三维模型表面移动算法 Download PDFInfo
- Publication number
- CN109191551A CN109191551A CN201810830688.4A CN201810830688A CN109191551A CN 109191551 A CN109191551 A CN 109191551A CN 201810830688 A CN201810830688 A CN 201810830688A CN 109191551 A CN109191551 A CN 109191551A
- Authority
- CN
- China
- Prior art keywords
- triangle
- point
- algorithm
- note
- plane
- 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.)
- Pending
Links
- 229910052717 sulfur Inorganic materials 0.000 claims description 11
- 229910052731 fluorine Inorganic materials 0.000 claims description 10
- 238000000034 method Methods 0.000 claims description 6
- 229910052799 carbon Inorganic materials 0.000 claims description 3
- 229910052757 nitrogen Inorganic materials 0.000 claims description 3
- 229910052760 oxygen Inorganic materials 0.000 claims description 3
- 229910052698 phosphorus Inorganic materials 0.000 claims 1
- 238000001514 detection method Methods 0.000 description 8
- 238000009877 rendering Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开一种基于三角形邻接信息的沿三维模型表面移动算法,属于计算机图形学领域。该算法是根据三维模型表面三角形的邻接信息,将移动分解到每个三角形上,以此计算移动轨迹与终点位置;在终点位置难以直接计算、仅有大致移动方向等情况下,该算法仍能得到正确答案。本发明主要解决以某个模型表面一点为起点,在物体表面沿某一模糊方向移动一段距离后,确定移动轨迹以及终点位置。
Description
技术领域
本发明属于计算机图形学领域,涉及一种在多个复杂模型组成的三维场景中顶点沿模型表面移动的方法,尤其是一种基于三角形邻接信息的沿三维模型表面移动算法。
背景技术
在实时渲染的三维场景中,涉及大量人机交互,沿物体表面移动是其中较为常见的操作。如角色沿地形表面行走和光效环绕于物体表面等。
计算机图形学领域中,针对沿物体表面移动的常用方法包括动态碰撞检测和高度图等算法。其中,高度图算法在生成地形时起到重要作用,但在复杂地形中,比如球体等无法使用X轴与Y轴计算Z轴分量时,需要使用链表等数据结构分别存储高度信息,处理方式较为复杂。动态碰撞检测算法可分为离散碰撞检测算法和连续碰撞检测算法。目前实时渲染的三维场景中使用的技术主要为离散碰撞检测算法。离散碰撞检测算法主要为空间分割与层次包围盒,在处理精度较高的模型时,易发生“穿模”现象。
发明内容
为解决针对沿物体表面移动的常用方法存在的上述问题,本发明提供一种基于三角形邻接信息的沿三维模型表面移动算法,该算法弥补了高度图算法和离散碰撞检测算法的缺陷,将移动分解至物体表面单个三角形,结合碰撞检测,具有较高精度,并能满足实时性要求。
为实现上述目的,本发明采用下述技术方案:
一种基于三角形邻接信息的沿三维模型表面移动算法,它包括以下步骤:
步骤1,记初始位置为O,记O所在模型为M,记O所在M表面的三角形为F,记移动方向为S(S不与F所在平面垂直),记移动距离为L;
步骤2,S=与((O+S)点在F所在平面的投影点-O)向量同向的单位向量;
步骤3,如果L>0,则执行步骤4,否则算法结束;
步骤4,C=O+S×L;
步骤5,如果C位于F外,计算OC与F边界的交点,C=与C距离最短的交点;
步骤6,移动限制;
步骤7,如果场景中存在其他允许在其表面移动的模型,且OC(不含O点)与这些模型存在交点,则执行步骤8,否则执行步骤9;
步骤8,C=与O距离最短的交点(如果O和C均属于某个三角形所在平面,则OC与该三角形的交点取OC与三角形边界的交点中与O距离最远的点),N=C所在的不在M上的三角形集合,执行步骤10;
步骤9,N=移动方向前方三角形,执行步骤10;
步骤10,如果N中元素个数≠1或N中唯一元素≠F,则重新计算S、F、M;
步骤11,L=L-OC的长度,O=C,返回步骤3。
进一步地,步骤6中的移动限制包括与其他物体产生碰撞、移动时仰角限制、高度限制和边界限制;该算法根据移动限制情况选择是否提前结束。
进一步地,步骤9中的移动方向前方三角形,包括以下计算步骤:
步骤91,如果O点位于F顶点,则执行步骤92,否则执行步骤93;
步骤92,存在公共顶点O的三角形集合记为X;计算以F所在平面的法线与S的叉积为法线并且过O点的平面,与X中每个三角形上公共点对边的交点集合I;遍历I中每个元素,记单个元素为i,(i-C)向量与S夹角最小时,i所在三角形为移动方向前方三角形;
步骤93,如果O点位于F边上,记O所在三角形F的边为E,则移动方向前方三角形为M表面与F存在公共边E的三角形,否则移动方向前方三角形为F。
进一步地,步骤10中的重新计算S、F、M,包括以下计算步骤:
步骤101,计算以F所在平面的法线与S的叉积为法线并且过C点的平面,与N边界的交点(不与C重合)集合H;遍历H中每个元素,记单个元素为h,计算(h-C)向量与F法向量夹角最小时h的值,记为P(如果使夹角最小的h不唯一,则取与S夹角最大的点);
步骤102,S=与(P-C)向量同向的单位向量;F=P所在的三角形(N中);M=F所在模型。
进一步地,步骤11中按顺序记录每次O点的位置,O点位置的集合即为移动路径。
有益效果:
1.本发明的算法是根据三维模型表面三角形的邻接信息,将移动分解到每个三角形上,以此计算移动轨迹与终点位置;在终点位置难以直接计算和仅有大致移动方向等情况下,该算法仍能得到正确答案,从而解决了以某个模型表面一点为起点,在物体表面沿某一模糊方向移动一段距离后,确定移动轨迹以及终点位置。
2.本发明的算法可拓展至三角形图元以外的模型数据存储方式,此时仅需将移动分解至单个面上,通过面与面之间的邻接信息,实现移动。
附图说明
图1为本发明基于三角形邻接信息的沿三维模型表面移动算法的示意图;
图2为本发明基于三角形邻接信息的沿三维模型表面移动算法的流程图;
图3为本发明计算移动方向前方三角形的流程图。
具体实施方式
下面结合附图和实施例对本发明进一步说明。
本发明提出一种基于三角形邻接信息的沿三维模型表面移动算法,如图1、2所示,它包括以下步骤:
步骤1,记初始位置为O,记O所在模型为M,记O所在M表面的三角形为F,记移动方向为S(S不与F所在平面垂直),记移动距离为L;
其中步骤1的S不与F所在平面垂直,具体原因为S与F所在平面垂直时并非为沿物体表面移动,而是一种离开表面的移动趋势;
步骤2,S=与((O+S)点在F所在平面的投影点-O)向量同向的单位向量;
步骤3,如果L>0,则执行步骤4,否则算法结束;
步骤4,C=O+S×L;
步骤5,如果C位于F外,计算OC与F边界的交点,C=与C距离最短的交点;
其中执行步骤5后的C点即为在三角形F上移动的终点;
步骤6,移动限制;
其中步骤6的移动限制可以为:与其他物体产生碰撞、移动时仰角限制、高度限制和边界限制等,该步骤有可能需要算法提前结束。比如:环境中移动存在边界限制情况下,OC与边界相交时,如果O点即为OC与边界的交点,则算法提前结束,否则将OC的交点赋值给C;
步骤7,如果场景中存在其他允许在其表面移动的模型,且OC(不含O点)与这些模型存在交点,则执行步骤8,否则执行步骤9;
步骤8,C=与O距离最短的交点(若O和C均属于某个三角形所在平面,则OC与该三角形的交点取OC与三角形边界的交点中与O距离最远的点),N=C所在的不在M上的三角形集合,执行步骤10;
其中执行步骤8后的M、N即为新模型上的标记,以此实现复杂环境中多模型相交时的位置转移;
步骤9,N=移动方向前方三角形,执行步骤10;
其中步骤9的计算移动方向前方三角形,如图3所示,包括以下步骤:
步骤91,如果O点位于F顶点,则执行步骤92,否则执行步骤93;
步骤92,存在公共顶点O的三角形集合记为X;计算以F所在平面的法线与S的叉积为法线并且过O点的平面,与X中每个三角形上公共点对边的交点集合I;遍历I中每个元素,记单个元素为i,(i-C)向量与S夹角最小时,i所在三角形为移动方向前方三角形;
步骤93,如果O点位于F边上,记O所在三角形F的边为E,则移动方向前方三角形为M表面与F存在公共边E的三角形,否则移动方向前方三角形为F;
步骤10,如果N中元素个数≠1或N中唯一元素≠F,则重新计算S、F、M;
其中步骤10的重新计算S、F、M,包括以下步骤:
步骤101,计算以F所在平面的法线与S的叉积为法线并且过C点的平面,与N边界的交点(不与C重合)集合H;遍历H中每个元素,记单个元素为h,计算(h-C)向量与F法向量夹角最小时h的值,记为P(若使夹角最小的h不唯一,则取与S夹角最大的点);
步骤102,S=与(P-C)向量同向的单位向量;F=P所在的三角形(N中);M=F所在模型;
步骤11,L=L-OC的长度,O=C,返回步骤3;
其中步骤11中可按顺序记录每次O点的位置,O点位置的集合即为移动路径。
对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。
Claims (5)
1.一种基于三角形邻接信息的沿三维模型表面移动算法,其特征在于,它包括以下步骤:
步骤1,记初始位置为O,记O所在模型为M,记O所在M表面的三角形为F,记移动方向为S且S不与F所在平面垂直,记移动距离为L;
步骤2,S=与((O+S)点在F所在平面的投影点-O)向量同向的单位向量;
步骤3,如果L>0,则执行步骤4,否则算法结束;
步骤4,C=O+S×L;
步骤5,如果C位于F外,计算OC与F边界的交点,C=与C距离最短的交点;
步骤6,移动限制;
步骤7,如果场景中存在其他允许在其表面移动的模型,且不含O点的OC与这些模型存在交点,则执行步骤8,否则执行步骤9;
步骤8,C=与O距离最短的交点,如果O和C均属于某个三角形所在平面,则OC与该三角形的交点取OC与三角形边界的交点中与O距离最远的点;N=C所在的不在M上的三角形集合,执行步骤10;
步骤9,N=移动方向前方三角形,执行步骤10;
步骤10,如果N中元素个数≠1或N中唯一元素≠F,则重新计算S、F、M;
步骤11,L=L-OC的长度,O=C,返回步骤3。
2.根据权利要求1所述的基于三角形邻接信息的沿三维模型表面移动算法,其特征在于,所述步骤6中的移动限制包括与其他物体产生碰撞、移动时仰角限制、高度限制和边界限制;该算法根据移动限制情况选择是否提前结束。
3.根据权利要求1所述的基于三角形邻接信息的沿三维模型表面移动算法,其特征在于,所述步骤9中的移动方向前方三角形,包括以下计算步骤:
步骤91,如果O点位于F顶点,则执行步骤92,否则执行步骤93;
步骤92,存在公共顶点O的三角形集合记为X;计算以F所在平面的法线与S的叉积为法线并且过O点的平面,与X中每个三角形上公共点对边的交点集合I;遍历I中每个元素,记单个元素为i,(i-C)向量与S夹角最小时,i所在三角形为移动方向前方三角形;
步骤93,如果O点位于F边上,记O所在三角形F的边为E,则移动方向前方三角形为M表面与F存在公共边E的三角形,否则移动方向前方三角形为F。
4.根据权利要求1所述的基于三角形邻接信息的沿三维模型表面移动算法,其特征在于,所述步骤10中的重新计算S、F、M,包括以下计算步骤:
步骤101,计算以F所在平面的法线与S的叉积为法线并且过C点的平面,与N边界的不与C重合的交点集合H;遍历H中每个元素,记单个元素为h,计算(h-C)向量与F法向量夹角最小时h的值,记为P,如果使夹角最小的h不唯一,则取与S夹角最大的点,记为P;
步骤102,S=与(P-C)向量同向的单位向量;F=P所在的三角形,即N中;M=F所在模型。
5.根据权利要求1所述的基于三角形邻接信息的沿三维模型表面移动算法,其特征在于,所述步骤11中按顺序记录每次O点的位置,O点位置的集合即为移动路径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810830688.4A CN109191551A (zh) | 2018-07-26 | 2018-07-26 | 一种基于三角形邻接信息的沿三维模型表面移动算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810830688.4A CN109191551A (zh) | 2018-07-26 | 2018-07-26 | 一种基于三角形邻接信息的沿三维模型表面移动算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109191551A true CN109191551A (zh) | 2019-01-11 |
Family
ID=64937427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810830688.4A Pending CN109191551A (zh) | 2018-07-26 | 2018-07-26 | 一种基于三角形邻接信息的沿三维模型表面移动算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109191551A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110717965A (zh) * | 2019-09-10 | 2020-01-21 | 江苏理工学院 | 一种三维空间内基于降维的实时路径生成方法 |
-
2018
- 2018-07-26 CN CN201810830688.4A patent/CN109191551A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110717965A (zh) * | 2019-09-10 | 2020-01-21 | 江苏理工学院 | 一种三维空间内基于降维的实时路径生成方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109685914B (zh) | 基于三角网格模型的剖切轮廓自动补面方法 | |
Tang et al. | Interactive continuous collision detection between deformable models using connectivity-based culling | |
US9710951B2 (en) | Techniques for processing image data generated from three-dimensional graphic models | |
CN109003325A (zh) | 一种三维重建的方法、介质、装置和计算设备 | |
US10460510B2 (en) | Methods and systems for viewing a three-dimensional (3D) virtual object | |
JP6356378B2 (ja) | 幾何学的三次元モデルオブジェクトを設計する方法 | |
CN103236079B (zh) | 一种基于三维模型体素化的内部球改进构造方法 | |
CN107972034B (zh) | 一种基于ros平台的复杂工件轨迹规划仿真系统 | |
CN104331584A (zh) | 一种面向附面层计算的二维混合网格自动化生成方法 | |
CN111145356B (zh) | 一种基于Unity3D模型的切割方法 | |
CN102629391A (zh) | 基于数字图形介质的三维空间结构图形切割及切片方法 | |
CN102881047B (zh) | 一种自动的非封闭隐式曲面重建方法 | |
CN104134236A (zh) | 一种三维平面实体的布尔运算方法 | |
Karsch et al. | Snaxels on a plane | |
Vyatkin | Method of binary search for image elements of functionally defined objects using graphics processing units | |
CN109191551A (zh) | 一种基于三角形邻接信息的沿三维模型表面移动算法 | |
US10891780B2 (en) | Methods and systems for viewing a three-dimensional (3D) virtual object | |
CN108986212B (zh) | 一种基于裂缝消除的三维虚拟地形lod模型的生成方法 | |
Cho et al. | 3D volume drawing on a potter's wheel | |
KR101105244B1 (ko) | 3차원 격자구조에서의 교점을 이용한 곡면 모델링 장치 및 방법 | |
CN104036547B (zh) | 基于Leap Motion控制的三维笔刷实时生成网络模型的方法与装置 | |
Chao et al. | Unsupervised learning of fine structure generation for 3d point clouds by 2d projection matching | |
CN116258822B (zh) | 基于元宇宙的三维引擎边界限定方法、设备及存储介质 | |
US11727616B2 (en) | Contour lines for volumetric objects | |
CN106548505A (zh) | 用于三维射线跟踪的场景模型快速三角化方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190111 |