CN110717970B - 一种基于离散碰撞检测的借助法线修正位置的移动方法 - Google Patents
一种基于离散碰撞检测的借助法线修正位置的移动方法 Download PDFInfo
- Publication number
- CN110717970B CN110717970B CN201910865108.XA CN201910865108A CN110717970B CN 110717970 B CN110717970 B CN 110717970B CN 201910865108 A CN201910865108 A CN 201910865108A CN 110717970 B CN110717970 B CN 110717970B
- Authority
- CN
- China
- Prior art keywords
- next position
- obstacle
- moving
- primitive
- collision detection
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种基于离散碰撞检测的借助法线修正位置的移动方法,用于快速求得离散碰撞检测中移动位置的近似解,模型在移动中,若移动的终点位置可达,则路径中的任意位置必然可达;故模型在移动中发生碰撞时,对于每一个相交的图元,将模型沿该图元法线方向移动,使两者分离,若无法分离则按二分等方法倒退。该方法在执行过程中,不断逼近终点位置的精确值,以实现对碰撞位置的修正。
Description
技术领域
本发明涉及计算机图形学实时渲染技术领域,尤其涉及一种基于离散碰撞检测的借助法线修正位置的移动方法。
背景技术
碰撞检测主要用于检测不同模型之间的相交情况,并以此为基础进行物理现象的模拟。实时渲染领域中,现有的动态碰撞检测算法依据其性质可分为离散碰撞检测与连续碰撞检测。
离散碰撞检测中,主要考虑将时间分为离散的时刻,在每个时刻模拟模型发生的运动,检测运动后模型间的碰撞情况,并进行相应处理。因此离散碰撞检测可能会漏过部分高速物体间的碰撞,或当一个物体在连续的两个时间点之间位移较大时可能会穿过墙壁或其他物体。并且由于其碰撞后检测的特性,需要校准碰撞点位置,其记录的碰撞时间也并不精准。
连续碰撞检测中,主要在模型发生运动之前预测其运动轨迹,并结合各模型的运动轨迹进行计算。离散碰撞检测不会出现模型之间互相穿透的现象,保证了碰撞时间与碰撞位置计算的准确性,但算法复杂度高,较难满足实时性的要求。
发明内容
本发明旨在提供一种克服上述问题之一或者至少部分地解决上述任一问题的基于离散碰撞检测的借助法线修正位置的移动方法。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明的一个方面提供了一种基于离散碰撞检测的借助法线修正位置的移动方法,其特征在于,已知移动模型M,移动方向S,步幅t,计算移动一步的终点时,包括以下步骤:S1:记临时变量t0=0、t1=t、t′=t;S2:将移动模型M向移动方向S的方向移动距离t′,得到下一位置M′;S3:判断下一位置M′是否与障碍物碰撞,如果下一位置M′与障碍物碰撞,则t1=t′,将与下一位置M′碰撞的障碍物存入C,执行S4;如果下一位置M′与障碍物未碰撞,则t0=t′,执行S6;S4:判断C中障碍物是否出现重复,如果未出现重复,则执行S5;若出现重复,则清空C,执行S6;S5:根据与下一位置M′碰撞的图元的法线,修正下一位置M′,执行S3;S6:如果大于阈值,则/>执行S2,如果/>不大于阈值,算法结束。
其中,步幅t根据精度与速度的要求进行确定。
其中,C中障碍物根据精度与速度的要求进行确定,包括但不限于:全部模型、部分模型、空间数据结构中的某个子空间、模型的包围盒和模型的图元。
其中,根据与下一位置M′碰撞的图元的法线,修正下一位置M′包括:确定每一个与当前下一位置M′碰撞的图元,图元法线反方向一侧下一位置M′中顶点与图元的最大距离值;确定与图元法线同向的方向;根据最大距离值和方向,确定向量B;累加所有与下一位置M′碰撞的图元所对应的B得到Btotal;修正下一位置M′=M′+Btotal。
其中,阈值的范围为大于0小于1,根据精度与速度的要求进行确定,用于精度控制。
其中,如果为重力计算,移动方向S为重力方向。
由此可见,本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法,模型在移动中,若移动的终点位置可达,则路径中的任意位置必然可达;故模型在移动中发生碰撞时,对于每一个相交的图元,将模型沿该图元法线方向移动,使两者分离,若无法分离则按二分等方法倒退,在执行过程中,不断逼近终点位置的精确值,可以快速求得离散碰撞检测中移动位置的近似解。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法的流程图;
图2为本发明实施例提供的与单一图元相交时的算法示意图;
图3为本发明实施例提供的模型与多个图元相交时的算法示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法的流程图,参见图1,本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法,已知移动模型M,移动方向S,步幅t,计算移动一步的终点时,包括以下步骤:
S1:记临时变量t0=0、t1=t、t′=t。
在具体实施过程中,本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法可用于二维或三维场景中,基于离散碰撞检测的物理模拟。并且模型可使用任何形状图元。其中,对于不同于直线的规则移动的碰撞检测,可将移动方向考虑为曲线。
作为本发明实施例的一个可选实施方式,步幅t根据精度与速度的要求进行确定。具体地,步幅t的选择,若可保证M与任意M′碰撞,则可大量减少离散碰撞检测中的“穿模”现象。步幅t主要依据精度与速度的要求进行选择,步幅t越大计算速度越快,精度越低。因此,可以根据实际需要进行选择和确定。
S2:将移动模型M向移动方向S的方向移动距离t′,得到下一位置M′;
S3:判断下一位置M′是否与障碍物碰撞,如果下一位置M′与障碍物碰撞,则t1=t′,将与下一位置M′碰撞的障碍物存入C,执行S4;如果下一位置M′与障碍物未碰撞,则t0=t′,执行S6;
S4:判断C中障碍物是否出现重复,如果未出现重复,则执行S5;若出现重复,则清空C,执行S6。
作为本发明实施例的一个可选实施方式,C中障碍物根据精度与速度的要求进行确定,包括但不限于:全部模型、部分模型、空间数据结构中的某个子空间、模型的包围盒和模型的图元。具体地,C中障碍物,可为模型、模型的部分、空间数据结构中的某个子空间、模型的包围盒、图元等,具体选择须根据精度与速度要求。循环中重复与相同障碍物碰撞,可近似视为当前的t′对应位置不可达。
S5:根据与下一位置M′碰撞的图元的法线,修正下一位置M′,执行S3。
作为本发明实施例的一个可选实施方式,根据与下一位置M′碰撞的图元的法线,修正下一位置M′包括:确定每一个与当前下一位置M′碰撞的图元,图元法线反方向一侧下一位置M′中顶点与图元的最大距离值;确定与图元法线同向的方向;根据最大距离值和方向,确定向量B;累加所有与下一位置M′碰撞的图元所对应的B得到Btotal;修正下一位置M′=M′+Btotal。具体地,对于每一个与当前M′碰撞的图元,计算图元法线反方向一侧,M′中顶点与图元的最大距离值。记长度为此最大距离,同时确定与图元法线同向的方向,根据长度和方向确定向量为B。累加所有与M′碰撞的图元所对应的B得到Btotal,从而可以得到修正的M′=M′+Btotal。
具体地,本步骤中使用二分方式逼近,在实际使用时,根据数据量还可以采用三分等方式,这在本发明中并不做具体限制。
作为本发明实施例的一个可选实施方式,阈值的范围为大于0小于1,根据精度与速度的要求进行确定,用于精度控制。具体地,阈值的合理的取值范围为(0,1),用于控制计算结果的精度,主要依据精度与速度的要求进行选择,同时需考虑步幅t的精度。阈值越大,收敛速度越快,精度越低;阈值越小,收敛速度越慢,精度越高。
作为本发明实施例的一个可选实施方式,如果为重力计算,移动方向S为重力方向。具体地,将移动方向S确定为重力方向之后,执行上述步骤S1-S6。
由此可见,利用本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法,该方法采用近似算法,在计算过程中逐渐逼近精确值,同时主要考虑实时性的要求,而非精确度的要求。
作为本发明实施例的一个可选实施方式,在执行S2-S6时,可结合空间数据结构进行进一步加速。在具体实施过程中,可根据使用的模型数量、模型复杂度、模型维度,结合相应的空间数据结构进行进一步加速。
以下通过与单一图元相交时,本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法得到的计算结果为例,对本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法进行说明,参见图2,当与单一图元相交时,本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法,得到Mfinal。具体地,确定与当前M′碰撞的图元,图元法线反方向一侧M′中顶点与图元的最大距离值;确定与图元法线同向的方向,根据最大距离值和方向,确定向量B,修正后的Mfinal=M′+B,从而得到Mfinal。
以下通过模型与多个图元相交时,本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法得到的计算结果为例,对本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法进行说明,参见图3,当模型与多个图元相交时,本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法,得到Mfinal。确定每一个与当前M′碰撞的图元,图元法线反方向一侧M′中顶点与图元的最大距离值;确定与图元法线同向的方向;根据最大距离值和方向,确定向量B,该B包括B1和B2,累加B1和B2得到Btotal;修正下一位置Mfinal=M′+Btotal,从而得到Mfinal。
由此可见,利用本发明实施例提供的基于离散碰撞检测的借助法线修正位置的移动方法,在计算过程中逐渐逼近精确值,从而可以进行位置修正。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (6)
1.一种基于离散碰撞检测的借助法线修正位置的移动方法,其特征在于,已知移动模型M,移动方向S,步幅t,计算移动一步的终点时,包括以下步骤:
S1:记临时变量t0=0、t1=t、t′=t;
S2:将所述移动模型M向所述移动方向S的方向移动距离t′,得到下一位置M′;
S3:判断所述下一位置M′是否与障碍物碰撞,如果所述下一位置M′与障碍物碰撞,则t1=t′,将与所述下一位置M′碰撞的障碍物存入障碍物集合C,执行S4;如果所述下一位置M′与障碍物未碰撞,则t0=t′,执行S6;
S4:判断障碍物集合C中障碍物是否出现重复,如果未出现重复,则执行S5;若出现重复,则清空障碍物集合C,执行S6;
S5:根据与所述下一位置M′碰撞的图元的法线,修正所述下一位置M′,执行S3;
2.根据权利要求1所述的方法,其特征在于,所述步幅t根据精度与速度的要求进行确定。
3.根据权利要求1所述的方法,其特征在于,所述障碍物集合C中障碍物根据精度与速度的要求进行确定,包括但不限于:全部模型、部分模型、空间数据结构中的一个子空间、模型的包围盒和模型的图元。
4.根据权利要求1所述的方法,其特征在于,所述根据与所述下一位置M′碰撞的图元的法线,修正所述下一位置M′包括:
确定每一个与当前所述下一位置M′碰撞的图元,图元法线反方向一侧所述下一位置M′中顶点与图元的最大距离值;
确定与图元法线同向的方向;
根据所述最大距离值和所述方向,确定向量B;
累加所有与所述下一位置M′碰撞的图元所对应的B得到Btotal;
修正所述下一位置M′=M′+Btotal。
5.根据权利要求1所述的方法,其特征在于,所述阈值的范围为大于0小于1,根据精度与速度的要求进行确定,用于精度控制。
6.根据权利要求1所述的方法,其特征在于,所述移动方向S为重力方向。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910865108.XA CN110717970B (zh) | 2019-09-12 | 2019-09-12 | 一种基于离散碰撞检测的借助法线修正位置的移动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910865108.XA CN110717970B (zh) | 2019-09-12 | 2019-09-12 | 一种基于离散碰撞检测的借助法线修正位置的移动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110717970A CN110717970A (zh) | 2020-01-21 |
CN110717970B true CN110717970B (zh) | 2023-07-07 |
Family
ID=69210432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910865108.XA Active CN110717970B (zh) | 2019-09-12 | 2019-09-12 | 一种基于离散碰撞检测的借助法线修正位置的移动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110717970B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116562027B (zh) * | 2023-05-12 | 2023-11-28 | 江苏大学 | 一种圆和线段集的二维连续碰撞检测方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140358505A1 (en) * | 2013-05-31 | 2014-12-04 | The Board Of Trustees Of The University Of Illinois | Collision impulse derived discrete element contact force determination engine, method, software and system |
CN109682336B (zh) * | 2018-12-28 | 2020-12-29 | 上海理工大学 | 用于车身精度检测的三坐标测量路径自动规划与优化方法 |
CN110047143B (zh) * | 2019-03-04 | 2023-03-21 | 南昌大学 | 一种基于空间细分与动态包围盒的连续碰撞检测方法 |
CN110136269B (zh) * | 2019-05-09 | 2022-09-23 | 安徽工程大学 | 基于法线自修正的跌落测试可视化虚拟现实*** |
-
2019
- 2019-09-12 CN CN201910865108.XA patent/CN110717970B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110717970A (zh) | 2020-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109341707B (zh) | 未知环境下移动机器人三维地图构建方法 | |
JP7479064B2 (ja) | 動的障害物を有する環境における動作計画を容易にする装置、方法及び物品 | |
TWI428778B (zh) | 碰撞判定裝置及碰撞判定程式 | |
JP7314411B2 (ja) | 移動ロボットの障害物情報感知方法、装置 | |
WO2018176596A1 (zh) | 基于权重改进粒子群算法的无人自行车路径规划方法 | |
CN105590339B (zh) | 三维模型的碰撞检测方法及*** | |
CN110992456B (zh) | 一种基于位置动力学的雪崩模拟方法 | |
CN112440281A (zh) | 一种基于数字孪生的机器人轨迹规划方法 | |
CN104408774B (zh) | 一种基于gpu加速的实体面片模型间碰撞检测方法 | |
CN108363393B (zh) | 一种智能运动设备及其导航方法和存储介质 | |
CN103236079A (zh) | 一种基于三维模型体素化的内部球改进构造方法 | |
CN113246143A (zh) | 一种机械臂动态避障轨迹规划方法及装置 | |
CN108638055A (zh) | 一种七自由度空间机械臂自主避障规划方法 | |
CN108733065A (zh) | 一种机器人的避障方法、装置及机器人 | |
CN113442140B (zh) | 一种基于Bezier寻优的笛卡尔空间避障规划方法 | |
CN110717970B (zh) | 一种基于离散碰撞检测的借助法线修正位置的移动方法 | |
Tang et al. | Hierarchical and controlled advancement for continuous collision detectionof rigid and articulated models | |
CN113536613B (zh) | 一种人群疏散模拟方法、装置、终端设备及存储介质 | |
CN114326810A (zh) | 一种无人机在复杂动态环境下的避障方法 | |
CN112665592B (zh) | 一种基于多智能体的时空路径规划方法 | |
CN112504279B (zh) | 适用于无人机的无碰撞路径规划方法、***及介质 | |
WO2018210303A1 (zh) | 道路模型的构建 | |
Geng et al. | Robo-Centric ESDF: A fast and accurate whole-body collision evaluation tool for any-shape robotic planning | |
CN116858253A (zh) | 一种适用室内环境的轻量性预测式导航方法及*** | |
CN113934219B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |