罗 敏,李子扬,冯 磊
(1.中国科学院 定量遥感信息技术重点实验室,北京 100094;2.中国科学院 光电研究院,北京 100094;3.中国科学院大学,北京 100049)
多通道三维动态显示同步方法研究
罗 敏1,2,3,李子扬1,2,冯 磊1,2
(1.中国科学院 定量遥感信息技术重点实验室,北京 100094;2.中国科学院 光电研究院,北京 100094;3.中国科学院大学,北京 100049)
在多通道三维动态显示技术中,保持通道间的同步显示一直是技术难点之一。确保不同通道之间的同步显示,尤其是在显示大规模场景和仿真运动实体时,对保持画面的流畅和质量具有重要的意义。提出了使用数据包发送控制信息分别控制静态场景和动态实体的解决方法,实现了通道间动静态数据的同步;针对通道间显示不同步的问题,提出了自适应等待时间的消息反馈方法,实现了通道间显示的同步。对比实验表明,该技术有效提高了多通道的显示同步率,实现了大规模场景、多运动实体的平滑显示。
多通道显示;同步显示;消息反馈算法
多通道显示系统[1]是指利用一个或多个显示通道共同拼接生成一个完整的视景画面,为用户提供一个具有高度沉浸感的虚拟环境。与一般单通道显示相比,其具有更大的显示尺寸、更多的显示内容和更好的视觉效果[2]。同步问题是多通道显示系统的关键技术之一[3],在显示同一幅视景画面时,不同的通道间需要协同工作,共同完成渲染任务。传统的多通道显示系统往往只侧重于静态场景的同步,当场景中同时含有运动实体时,常常会出现画面撕裂、重影等问题。
常见的同步算法[4]可分为4类:保守算法[5]、乐观算法[6]、混合算法[7]和自适应算法[8]。保守算法要求各类事件严格按时间先后顺序处理执行,方法虽简单却容易出现死锁现象;乐观算法允许事件按任意顺序执行,如果发生因果关系错误,则退回重新执行该事件,这样会增加系统的复杂性;混合算法是保守算法和乐观算法的混合;自适应算法是混合算法的动态调整算法,通过动态地改变一个或多个变量使系统在保守算法和乐观算法之间调整。多通道动态同步显示由于其自身具有帧速高、数据交换频繁等特点,一般的同步算法并不能完全解决通道间同步显示的问题。在常见的同步算法基础上,文献[9]通过控制节点发送命令通知渲染节点切换缓冲,随后渲染节点要求控制节点发送数据的方法来解决由于负载不均衡引起的不同步;文献[10]通过保守算法和运动实体的平滑技术来实现多通道间的同步;文献[11]通过推算定位的方法来实现多通道的显示同步;文献[12]通过反馈确认和纹理切割的同步算法来实现多通道间的同步。
本文采用了Master/Slave结构的多通道三维显示系统,按功能可分为4个部分:Master节点、Slave节点、投影仪和显示屏,如图1所示。
图1 系统结构图
Master节点为主控端,负责信息的交互,包括Master节点与Slave节点间信息的网络交互和Master节点与用户间的操作信息交互。前者用于实现通道间的控制与场景的同步显示,后者便于用户操作整个多通道显示系统。Slave节点为从属端,接收主控端的数据并根据这些信息进行场景的显示和渲染。
本文以三通道显示系统为例进行研究。在三通道显示系统中,选取中间节点作为Master节点,该节点不仅用于实现信息交互,还作为显示节点的一部分参与场景的显示。用户通过该节点发送控制信息,控制信息和同步信息组成的数据包通过网络传输到Slave节点,所有节点均完成渲染任务后同时显示并投影到大屏幕上,完成完整的三维地理信息动态显示过程。
2.1 传统显示同步技术
系统显示场景一般需要经过3个阶段,即读取数据、渲染场景及显示场景[13]。由于各个通道的独立性,在经历这3个阶段时,各通道处理能力无法完全一致,必然会造成处理时间上的差异,最终导致系统显示的不同步。因此,为了保证通道间的显示同步,一般会进行两次同步控制,第一次同步要保证不同的显示节点显示同一时刻的动态视景画面;第二次同步要保证不同的显示节点在同一时刻显示,即画面显示同步。多通道同步控制如图2所示。
图2 多通道同步控制图
但是,在大规模场景中存在运动实体的情况下,简单的两次同步仍不能达到很好的效果,特别是在运动物体穿越一个屏幕进入另一个屏幕时,常会出现画面撕裂、运动不平滑的现象。考虑到大规模场景动态显示的特殊性,需将现有的同步控制方法加以改进:在第一次同步时确保运动实体的平滑显示,第二次同步时确保画面的同时显示。只有两次同步共同起作用才能保证动态视景画面的显示同步。
2.2 运动实体同步方法
多通道三维显示系统的目的之一就是为观察者提供更大的观察角度,多个通道的视域范围拼接形成更大的观察范围。换句话说,多通道三维显示也可以理解为将从给定点观察到的视景画面平均地分配到多个通道上显示,而这个给定点位置也可称之为视点的位置,如图3。
视点坐标的改变即改变了地形观察的范围。对静态场景来说,通过改变视点坐标就可达到地形场景的变换,就如同使用照相机拍摄照片,场景未发生改变,改变了相机的方向就改变了拍摄的内容。然而,运动实体每一帧的位置和姿态都可能发生改变,其参考的坐标系为世界坐标系和自身坐标系。参考坐标系的不统一导致了控制方式的不一致。因此,本文采用的方法为分开控制静态场景和运动实体。
图3 三通道显示
针对控制方式的不同,改进了传统的数据包格式,将数据包分为了基本信息、固定部分和可变部分,如图4所示。基本信息包括当前渲染场景的帧数、时间戳、渲染状态等基本信息;固定部分即视点同步信息,主要用来控制静态场景的同步;可变部分为场景中运动实体的信息,主要用来控制每一个运动实体的同步,可根据场景中运动物体的个数调整其大小,同步信息中包括了运动物体的编号和位置姿态矩阵。主节点获取这些信息并通过UDP将数据包发送到从节点,从节点根据收到的信息设置自己渲染范围内的场景和运动实体,就完成了第一次同步。
2.3 自适应等待时间的消息反馈同步方法
图4 数据包格式
在多通道显示过程中,为了避免由于单个节点渲染过慢或UDP丢包导致等待时间过长、显示时刻不一致的情况出现,本文提出了一种自适应等待时间的消息反馈方法,由Master节点控制通道间的统一显示。如果遇到Slave节点在一定时间内没有返回反馈信息的情况,则根据当前帧率动态地调整反馈消息的等待时间,不但可保证所有节点在同一时刻更新显示内容,而且可保持画面刷新的帧率,不影响显示效果。在图形绘制时,还结合了双缓存技术,让下一帧的数据渲染在后台进行,前端只负责当前帧图形的显示,当一帧图形显示完毕,两组缓存交换内容。具体的流程如图5所示。
关键步骤总结如下:①Master和Slave分别初始化并设置最长等待时间,等待时间随当前帧率动态调整;②Slave收到数据则即刻向Master返回接收信息,若超过等待时间仍未收到数据则向Master返回未接收信息;③Master收到所有反馈或超过最大等待时间均即刻发送显示命令; ④Slave接收显示命令则即刻显示,若未收到数据包,则用上一帧的渲染数据代替当前帧;若未收到显示命令,则超过等待时间后直接显示。
图5 显示同步流程图
3.1 硬件及其参数信息
该实验的硬件部分由3台配置相同的图形工作站组成,把其中一台作为Master主控端,用来发送基本信息及显示,另外两台作为Slave从属端,用来接收数据和显示渲染效果。硬件及其参数信息如表1所示.
表1 硬件及其参数信息
3.2 评估参数
帧速率是指计算机每秒画面更新的次数,是评估一个显示系统优劣的重要标准。其数值越大,画面的显示就越流畅。因此,显示系统在加入了同步模块,保证画面同步显示的同时还需要保证帧速率的大小。如果为了保证画面的同步显示而造成帧速率的大幅降低,那么同步显示显然是不成功的,整个显示系统也是毫无意义的。
在多通道三维显示系统中,还可通过节点间的差异公式来判断各通道间帧速率的差异。渲染节点差异公式如下:
式中,参数P为渲染节点间的差异值;M为Master节点的帧率;Si为第i个Slave节点的帧率;n为参与计算的帧率的个数。P值越大,说明通道间帧速率的差异越大,同步效果越差;反之,则同步效果越好。
3.3 实验结果对比
采用表1的配置搭建了一个基于PC机群的三通道三维仿真系统,设计了3组实验来验证算法的有效性,分别为未使用同步算法与使用同步算法的对比实验、动态场景增多后帧率的变化实验和三角片元增大后帧率的变化实验。测试场景帧速,并将数值记录下来。由图6和图7对比可知,未使用同步算法时,三通道间的帧率并不完全一致,有一定差别,容易导致通道间视景画面的不同步,特别是在运动物体跨越屏幕时,会出现割裂现象。由图8和图9对比可知,当运动物体增多时,同步算法能达到较好的同步效果。由图10和图11对比可知,渲染场景中的三角片元增多时,同步算法仍能达到较好的同步效果。
图6 未使用同步时帧率
图7 使用同步时帧率
图9 使用同步时增多运动物体帧率
图10 未使用同步时增大片元数帧率
图11 使用同步时增大片元数帧率
将使用同步算法和未使用同步算法的帧率进行比较,可以看到,无论是否使用同步算法,最大帧率和最小帧率都在30 fps以上,画面的流畅性较好[14]。但是在未使用同步算法时,渲染节点间的差异较大,无法实现多通道下的运动实体的平滑过渡。根据式(1)计算渲染节点的差异,如表2所示。在3组对比实验中,使用同步算法后,节点间的差异明显缩小,达到了良好的同步效果。
表2 使用同步算法和未使用同步算法的数据比较/ fps
针对现有的多通道三维地理显示往往侧重于静态场景的同步渲染,没有过多考虑场景中包含运动实体的情况,本文提出了该系统下的运动实体同步方法和自适应消息反馈同步方法。从理论上论证了实验的可行性,给出了具体的步骤,最后用实验验证了算法的有效性,提高了通道间显示同步率。
尽管文中的方法能较好解决多通道三维动态显示的问题,但仍存在一些值得改进的地方。在自适应反馈同步方法中,当数据包丢失,则用上一帧来显示当前帧的内容,在渲染大量运动实体,通道间数据交换较大时,可能会造成画面不同步。在今后的研究中,可探讨通过预测轨迹的方法对运动实体的具体位置进行预测,从而达到更好的同步。
[1] 马天,黄建国,胡方. 基于PC机群的多通道视景仿真系统的研究[J].系统仿真学报,2009(19):6 053-6 056
[2] Nam S, Deshpande S, Vishwanath V, et al. Multi-application Inter-tile Synchronization on Ultra-high-resolution Display Walls[C].Proceedings of the First Annual ACM SIGMM Conference on Multimedia Systems, 2010
[3] 王学慧,张磊.并行与分布式仿真时间推进同步机制综述[J].计算机仿真,2010(2):126-129,281
[4] Hiller J B, Hartrum T C. Conservative Synchronization in Objectoriented Paralleled Battlefield Discrete Event Simulation[C]. Proc.11th Workshop on Parallel and Distributed Simulation, 1997
[5] Som T K, Sargent R G. A Probabilistic Event Scheduling Policy for Optimistic Parallel Discrete Event Simulation[J]. IEEE Computer Society, 1998, 28(1): 56-63
[6] Steinman J S. Breathing Time Warp[C].ACM SIGSIM Simulation Digest, 1993
[7] Ferscha A. Adaptive Time Warp Simulation of Timed Petri Nets[J]. IEEE Transactions on, 1999, 25(2): 237-257
[8] 王海峰,孙益辉,陈福民.分布式实时渲染中帧同步的实现[J].微计算机应用,2007(10):1 073-1 076
[9] 吕品,张金芳. 基于PC机群的多通道视景仿真技术研究[J].计算机工程与应用,2006(26):38-40,70
[10] 吕鹏,龙飞隆.基于虚拟现实的船舶操纵系统视景多通道同步技术[J].舰船电子工程,2007(3):129-132,223
[11] 肖朝,杨红雨. 多通道投影显示系统同步算法研究[J].四川大学学报:工程科学版,2012(4):96-102
[12] Soares L P, Raffin B, Jorge J A. PC Clusters for Virtual Reality [J]. IJVR, 2008, 7(1): 67-80
[13] 马继峰,彭晓源,冯勤,等. 虚拟作战系统中场景生成与显示关键技术研究与实现[J].系统仿真学报,2004(8):1 735-1 737,1 741
[14] 黄昆仑,白蔚.视频帧率上转换技术综述[J].数字通信世界,2011(5):82-84
P208
B
1672-4623(2016)03-0048-04
10.3969/j.issn.1672-4623.2016.03.016
罗敏,硕士,主要从事地理信息系统研究。
2015-03-11。
项目来源:国家高技术研究发展计划资助项目(2013AA7026059)。