中国科技核心期刊      中国指挥与控制学会会刊     军事装备类重点期刊
Engineering & Application

Research on Consistency of Collision Detection and Response in Distributed Simulation Environment

  • XIE Yun-kai 1 ,
  • MENG Xiang-hui 1 ,
  • ZHANG Yan-yan 2 ,
  • LIU Qing-feng 1 ,
  • WANG Jia-rong 1 ,
  • LIANG Shi-long 1
Expand
  • 1. Naval Academy Special Service Research Institute, Beijing 100072
  • 2. School of Mechanical and Electrical Engineering, Harbin Institute of Technology, Harbin 150001, China

Received date: 2021-05-17

  Revised date: 2021-08-12

  Online published: 2022-05-09

Copyright

Copyright reserved © 2022

Abstract

The cycle difference and data transmission delay between simulation nodes will cause the mismatch of collision detection and collision response, lead to the penetration phenomenon between entities in the virtual scene, and bring unreal virtual experience. Therefore, the consistency of collision detection and response in distributed simulation environment is studied. A state updating method of simulation object based on motion lock is proposed, which separates entity dynamic simulation and collision detection. The simulation object is divided into two parts: simulation entity and detection entity. The detection entity receives the dynamic simulation results. When collision is detected, the state of the simulation entity is locked and corrected by loop feedback, the state of the simulation entity is unlocked and the state of the simulation entity coincides with the state of the detection entity until the detection entity in the visual simulation unit is no longer collided. It can effectively avoid the crossing problem caused by asynchronous detection and response.

Cite this article

XIE Yun-kai , MENG Xiang-hui , ZHANG Yan-yan , LIU Qing-feng , WANG Jia-rong , LIANG Shi-long . Research on Consistency of Collision Detection and Response in Distributed Simulation Environment[J]. Command Control and Simulation, 2021 , 43(6) : 84 -87 . DOI: 10.3969/j.issn.1673-3819.2021.06.015

在虚拟现实环境中,碰撞检测用来确定虚拟场景中的物体是否发生接触或穿透;依赖检测结果,碰撞响应负责根据物理规律对仿真实体的运动状态或结构特性变化进行仿真[1],为环境体验者提供相应的视觉或力觉反馈,从而带给体验者身临其境的感觉。因此,精确的碰撞检测及其响应是体验者与虚拟环境进行真实交互的重要基础。
对于大型人在回路的虚拟仿真系统(如飞行模拟器、车辆模拟器等),为同时保证仿真精度和实时性,整个系统的仿真计算往往分布在多个仿真节点上并行处理,负责碰撞检测计算的节点和负责碰撞响应的节点常常相对独立。在这种仿真环境中,仿真节点间的周期差异和数据传输延迟必将造成碰撞检测和碰撞响应的不匹配,导致虚拟场景中实体间的穿透现象,带来不真实的虚拟体验。为此,需要对分布仿真环境下碰撞检测及其响应的一致性问题进行研究。

1 研究现状

碰撞检测及其响应直接影响虚拟仿真的真实感与沉浸感,因而一直是虚拟现实及相关领域重点研究的问题。对于碰撞检测,相交性计算的加速是研究的重点。其中,基于包围盒层次结构研究高效的碰撞检测方法是该领域的热点方向[2,3,4,5,6],仿真对象包括刚体和柔性体,涉及AABB层次树,包围球层次树,OBB层次树,k-DOPs层次树和混合层次包围体树等多种包围体层次形式。针对包围体层次结构的特点,并行计算被用来提高算法的效率[7,8,9]。此外,空间分割方法也常用来作为加速碰撞检测的工具[10,11]。对于碰撞响应,其实现则依赖于相关动力学仿真的研究[12,13,14]。在这些研究中,研究者侧重的往往是碰撞检测的效率与碰撞响应的正确性,对分布式仿真环境下碰撞检测及其响应的一致性研究较少。
针对分布仿真,仿真节点间的时空一致是关键的基础性问题,是获得逼真的虚拟现实环境及正确仿真结果的重要保障[15]。相关的研究围绕消除网络延迟对节点间仿真一致性的影响展开,主要包括延迟补偿和运动预测[16,17,18]。前者接收具有延迟的数据,并通过外插等方式对实际仿真时刻的数据进行估算,实现延迟补偿;后者在数据发送前对其未来状态进行预测及修正,以弥补传输过程中的时间消耗。这些方法有效减少了网络延迟的影响及对网络带宽的需求。但是在其针对的分布仿真系统中,每个仿真节点独立完成一个或多个仿真实体的仿真,不涉及仿真节点间对于同一仿真实体的协同仿真问题。而针对大型模拟器的多节点并行仿真应用,导致不一致问题的原因除网络延迟外还包括节点仿真的不同步,这一点在碰撞过程中尤为突出。因而,本文重点针对这类问题展开碰撞检测及响应的一致性研究。

2 碰撞检测与响应不匹配原因分析

在分布仿真环境中,碰撞检测仿真节点与碰撞响应仿真节点相对独立。这种仿真方式会导致碰撞检测与其响应不匹配的问题,生成与真实体验相悖的仿真结果。为分析分布仿真环境中碰撞检测与响应不匹配的原因,将分布式仿真与集中式仿真的仿真流程进行对比,见图1图2
图1 集中式仿真实现流程图
图2 分布式仿真实现流程图
图1,在集中式仿真过程中,碰撞检测模块根据当前运动状态进行计算,若没有检测到碰撞则进行基本动力学仿真,并使用解算结果更新实体状态,完成可视化;若检测到碰撞则进行碰撞响应动力学解算,对先前结果进行修正,并使用新结果进行实体状态更新和可视化。碰撞检测及其响应在同一个仿真循环内完成,整个仿真过程不存在二者不匹配的现象。
图2,在分布式仿真过程中,动力学仿真部分只负责动力学仿真解算,碰撞检测结果来自于可视化仿真部分。由于二者仿真周期不一致且存在数据传输延迟,因此碰撞检测结果对应的是若干动力学仿真循环前的运动状态,无法在同一个仿真循环内获得当前碰撞状态并及时更新运动状态。可视化仿真部分负责碰撞检测和实体状态更新,在一个仿真循环中无论碰撞与否都使用当前循环接收的动力学解算结果更新实体状态。与集中式仿真对比可看出,若没有发生碰撞,二者的区别仅在于动力学仿真与可视化仿真间的网络传输延迟;若发生碰撞,则除去两仿真模块间信息交互的网络延迟外,还存在仿真循环间的不同步现象。
图3进一步说明了这种循环不同步的现象。假设不考虑网络传输延迟,对于第n个可视化仿真循环,其接收到第n个动力学仿真循环的解算结果并检测到碰撞。根据分布式可视化仿真的循环流程,其将碰撞检测的结果发出,并在循环内部继续使用已经接收的动力学仿真结果进行实体状态更新及可视化。由上述分析可知,实体状态更新所使用的仿真结果是没有考虑碰撞响应的,真正的碰撞响应仿真结果要等到第n+m个循环后才能够获得。这样第n帧的虚拟场景的碰撞检测和响应是无效的,即碰撞检测和碰撞响应不匹配,从而便会出现实体间的穿越现象。这种现象在网络延迟和碰撞响应解算的作用下会进一步凸现,严重影响交互的真实感。
图3 仿真循环不同步说明
综上所述,在分布式仿真环境中,导致碰撞检测与响应不一致性的原因包括分布仿真循环不同步和网络传输延迟两个方面。

3 基于运动锁的解决方法

针对分布仿真中仿真节点循环不同步的问题,提出一种基于运动锁的仿真对象状态更新方式,避免检测与响应不同步造成的穿越现象。
图4,对于虚拟场景中的仿真实体,考虑分布仿真,将实体动力学仿真和碰撞检测分离,即将仿真对象分为仿真实体A和检测实体A’两部分。仿真实体A代表虚拟世界中的仿真对象,由动力学仿真结果驱动;检测实体A’是仿真实体几何属性的复本,接收相关参数,用于碰撞检测计算。在仿真循环周期内,检测实体A’首先接受动力学仿真结果,并以此作为碰撞检测的依据,碰撞检测计算使用包围盒层次结构加速[1]。当检测到A’碰撞发生时,则对仿真实体A的状态进行锁定,即抛弃当前循环接收的仿真参数,保持原有运动状态。同时,将碰撞检测结果反馈回动力学仿真单元。动力学仿真单元根据检测结果进行碰撞响应计算,对原有仿真结果进行修正,并将新的实体运动状态发送回可视化仿真单元。此过程往复进行,直到可视化仿真单元中状态更新后的检测实体A’不再发生碰撞为止。此时仿真实体A的状态解锁,即使用接收到的动力学仿真计算结果更新运动状态,A与A’状态重合。
图4 基于运动锁的分布仿真原理图
针对可视化仿真循环,循环开始时,来自动力学仿真的参数首先更新检测实体A’,并依据A’的状态进行碰撞检测,而仿真实体A的状态参数在循环结束前根据检测的结果确定。若未发生碰撞,则在循环的末端使用当前循环接收的仿真参数更新仿真实体A的状态,整个循环结束。若发生碰撞,整个仿真的流程可描述为图5,检测到A’的碰撞后,仿真实体A经过n个循环的运动锁定后,使用动力学仿真参数进行状态更新,实现运动解锁。
图5 基于运动锁的分布仿真流程图
对于仿真实体A,其在第N-1个分布循环中接收仿真参数进行状态更新,该循环视作N’-1。此后一直等待,直到接收到第N+n个考虑碰撞响应的仿真结果才进行下一次的状态更新,该循环可视为N’。在这两个循环内,碰撞检测和碰撞响应完全一致。对于中间的仿真状态,仿真实体A一直处于锁定状态,更新的仅仅是检测实体。采用这种强同步的方式,避免了碰撞检测与响应不一致性的现象。

4 实验验证

仿真程序具有动力学仿真和可视化仿真两个仿真循环。仿真环境可模拟可变的网络延迟。为验证本文方法的适用性,网络延迟分别为50 ms、100 ms和150 ms。仿真实体受键盘指令控制,与虚拟场景中静态物体碰撞。
一致性策略的有效性通过记录经过碰撞后分布仿真系统中可视化节点仿真实体的更新位置与相应动力学仿真节点实体位置的偏差定量衡量。并且,一致性策略的效果也可由碰撞后实体响应状态的有效性定性说明。
表1中结果可看出,本文方法能够有效消除仿真节点间的不同步现象,在不同的网络环境下均能有效保证节点间的一致性。
表1 不同仿真环境的仿真节点位置偏差记录
无延迟 延迟50 ms 延迟100 ms 延迟150 ms
不使用本文算法 0.162 m 0.923 m 1.681 m 2.436 m
使用本文算法 0 m 0.135 m 0.217 m 0.283 m

5 结束语

本文所研究的基于运动锁的仿真对象状态更新方式,主要适用于分布仿真环境下仿真节点间的周期差异造成的碰撞检测和碰撞响应的不匹配问题,实际使用与实验结果表明,该方式可有效避免检测与响应不同步造成的穿越现象,能带来更加真实的虚拟体验,具有推广借鉴使用价值。
[1]
冯善达, 刘怡昕. 虚拟战场环境中典型碰撞问题研究[J]. 系统仿真学报, 2006, 18(6):1582-1584,1592.

[2]
史旭升, 乔立红, 朱作为. 基于改进OBB包围盒的碰撞检测算法[J]. 湖南大学学报(自然科学版), 2014, 41(5):26-31.

[3]
赵伟, 曲慧雁. 基于云计算Map-Reduce模型的快速碰撞检测算法[J]. 吉林大学学报(工学版), 2016, 46(2):578-584.

[4]
Zhang X, Kim Y J. Interactive Collision Detection for Deformable Models using Streaming AABBs[J]. Visualization and Computer Graphics, IEEE Transactions, 2007, 13(2):318-329.

DOI

[5]
孙浩鹏, 李杨. 面向虚拟现实的水轮机与流体碰撞算法[J]. 吉林大学学报(理学版), 2013, 51(6):1123-1127.

[6]
朱元峰, 孟军. 一种基于混合包围盒结构的实时碰撞检测的有效方法[J]. 系统仿真学报, 2008, 20(19):5099-5104.

[7]
潘海鸿, 戴骏, 陈琳, 等. 多机器人并行动态包围体层次树碰撞检测算法[J]. 计算机辅助设计与图形学学报, 2014, 26(11):1948-1956.

[8]
杜鹏, 唐敏, 童若锋. 多核加速的并行碰撞检测[J]. 计算机辅助设计与图形学学报, 2011, 23(5):833-838.

[9]
唐敏, MANOCHA Dinesh, 童若锋. 基于SIMD指令的柔性物体并行碰撞检测[J]. 计算机学报, 2009, 32(10):2042-2051.

[10]
S. Ar, B. Chazelle. Self-customized BSP Trees for Collision Detection[J]. Computational Geometry, 2000, 15(1):91-102.

DOI

[11]
Luque R G, Comba J L D, Freitas C M D S. Broad-phase Collision Detection using Semi-adjusting BSP-trees[C]. Proceedings of the 2005 Symposium on Interactive 3D Graphics and Games, ACM, 2005: 179-186.

[12]
Atencio Y P, Esperanca C, Cavalcanti P R, et al. A Collision Detection and Response Scheme for Simplified Physically based Animation[C]. Computer Graphics and Image Processing, IEEE Computer Society, 2005: 291-298.

[13]
谢世富, 马立元, 刘鹏远, 等. 虚拟环境下运动线缆碰撞检测算法研究与实现[J]. 系统仿真学报, 2013, 25(8):1865-1870.

[14]
刘智斌, 李占利, 曹宝香. 虚拟环境中织物的碰撞检测及响应[J]. 系统仿真学报, 2007, 19(7):1497-1499,1578.

[15]
范林军, 凌云翔, 王涛, 等. 探索分布仿真应用中广义时空域层级一致性[J]. 软件学报, 2013, 24(2):317-330.

[16]
Tumanov A, Allison R, Stuerzlinger W. Variability-aware Latency Amelioration in Distributed Environments[C]. Charlotte: 2007 IEEE Virtual Reality Conference, IEEE Computer Society, 2007: 123-130.

[17]
Ohlenburg J. Improving Collision Detection in Distributed Virtual Environments by Adaptive Collision Prediction Tracking[C]. Chicago: Proceedings of the IEEE Virtual Reality 2004, IEEE Computer Society, 2004: 83-90.

[18]
朱洪敏, 武殿梁, 范秀敏. 分布式虚拟装配环境中碰撞检测方法研究[J]. 系统仿真学报, 2009, 21(22):7154-7159.

Outlines

/