吕圣卿 陈一民* 黄 晨 高明柯,2
1(上海大学计算机工程与科学学院 上海 200444)
2(湖南科技大学数学与计算科学学院 湖南 湘潭 411201)
一种基于网络的并行渲染和跨平台同步展示系统
吕圣卿1陈一民1*黄 晨1高明柯1,2
1(上海大学计算机工程与科学学院 上海 200444)
2(湖南科技大学数学与计算科学学院 湖南 湘潭 411201)
虚拟现实的实时展示和交互的应用越来越广泛,但由于普通PC机渲染的性能问题,无法在保证帧率的条件下渲染超高分辨率的场景。基于网络的并行渲染系统具有性价比高、扩展性好等特点,并且可以输出超高分辨率的画面,适合大型的虚拟现实场景展示。该系统使用Unity3D支持虚拟现实渲染和跨平台的特性,使用PC机群基于Sort-First结构的实时并行渲染框架展示弧形超高分辨率场景,并使用网络将手机、平板和PC机群连接在一起,利用增强现实的方式同步展示整个场景。该系统支持多机同时连接展示,可以应用到博物馆、教学、展览等领域。
并行渲染 Sort-First Unity3D 跨平台 同步
目前,虚拟现实的实时展示和交互的应用越来越广泛,已成功应用于车辆仿真[1]、计算机辅助设计[2]、地理信息系统、医学康复训练[3]等领域。随着虚拟现实场景规模的不断增加,以及人们对高帧率、超高分辨率画面的追求,用普通的PC单机难以实现,而大型图像工作站和高端显卡成本昂贵,难以普及和扩展。在这种情况下,基于网络的并行渲染系统是一种比较好的替代方案,它将需要渲染的整个场景任务分配到多个渲染结点上,多个渲染结点协同完成每帧图像,他们共同组成一个高分辨率的图像。该系统具有性价比高、兼容性好、扩展性好等特点[4]。
1994年,Molnar等[5]提出了一种从数据分配(sorting)的角度对并行渲染的分类方法。它依据从对象空间到屏幕空间的转换过程中渲染任务发生的时间节点,将并行渲染方法分为3类:sort-first,sort-middle和sort-last。三种方式中,sort-middle和sort-last适合硬件实现[6-7]。而sort-first方式能将渲染资源充分利用,是三种方法中通信量最少的,适合于软件实现,构建集群式的并行渲染系统[8-9]。
Unity3D是一款跨平台的游戏开发引擎,它具有很好的网络控制、三维展示和交互功能,非常适用于虚拟现实平台的设计开发[10-11]。
在目前的并行渲染展示系统中,基本都是平面的展示屏幕[12-13]或者长方体的CAVE投影系统[14],而且这些展示系统是孤立的部分,无法和手机、平板等其他设备联动。
为了提供更好的视觉体验,本文将一组大屏幕排列成弧形,形成一个环幕的效果,并提出一种基于矩阵变换的弧形多屏显示墙投影矩阵计算方法,从而利用Unity3D实现了一种基于网络的sort-first并行渲染系统来展示超高分辨率场景。同时使用网络将移动端和PC机群连接在一起,利用增强现实的方式展示场景。
本文设计了一种基于网络的sort-first并行渲染系统。该系统将多台计算机模拟在同一个场景中,并通过同步服务分别显示场景中一个部分的画面,这些画面共同拼接成整个场景。图1为系统的硬件结构。
图1 系统结构
系统由一台总控服务器、一组PC机群渲染结点和若干个手机、平板组成,并且由高速以太网和WIFI连接。多屏显示墙用于显示高分辨率虚拟现实场景。总控服务器用来同步控制及动态协调并行渲染结点和移动终端的展示内容,并可以接收用户输入,操纵场景中显示对象的位置、方向等。并行渲染结点运行Unity3D,接收总控服务器的控制信息,通过视点和视角动态调整视棱锥,把渲染后的像素信息显示到多屏显示墙上。移动终端通过无线热点与总控服务器连接,利用增强现实的方式同步展示整个场景。
该系统可以支持多用户同时观看,既可以通过多屏显示墙观看超高分辨率的虚拟现实场景,又可以通过移动端AR,多终端多角度同时观察整个场景。
在目前的并行渲染展示系统中,分屏方式有两种:一种是按照平面矩形进行分屏,如图2所示,该方式实现简单,适用于屏幕和投影,但是该方式在显示范围广的情况下可能会导致虚拟现实三维场景的失真;另一种按照长方体的CAVE投影系统进行分屏,图3展示了CAVE系统的视景体空间分布图,它用投影方式展示,能够展示大视角的虚拟现实场景,给人身临其境地感觉,但是它采用投影方式,一定长度上限制了其分辨率和清晰度,而且需要特定的空间才能展示。
图3 CAVE系统视景体空间分布图
图2 按照平面矩形进行分屏
本文结合了两种方式的优点,将多屏显示墙摆放成弧形,如果显示器足够,可以形成环形屏幕阵列。该方法拥有显示分辨率高,可视角度大并且三维场景不失真等优点,能够让用户身临其境地观察和体验虚拟场景。
在Unity3D的虚拟现实场景中,相机一般采用视棱锥透视投影,在远近两个裁剪面之间的视棱锥中的图元才会进行投影变换和渲染,这样可以大大减少渲染的图元数量和提高渲染速度。
在并行渲染中,分屏会将整个场景视棱锥根据分屏要求沿着相机射线方向进行划分,如图4所示,将原来的视棱锥一分为二,形成2个视棱锥。这两个视棱锥中的场景会分配给两个并行渲染结点分别进行渲染。与传统划分不同的是,本文采用多个正棱锥进行组合,形成一个近似弧形的前裁剪面和后裁剪面,这样可以使得并行渲染展示系统达到更好的效果。
图4 一分为二的视棱锥
多屏显示墙使用多个并行渲染结点进行显示的模式,内在场景相同,但是每个节点展示视角不同。单个渲染结点上的投影矩阵如图5所示,通过显示屏幕的尺寸和观察者头部位置来计算出Unity 3D中投影矩阵和相机位置,其中,pa、pb、pc为投影平面的三个顶点,该平面为视棱锥的前裁剪面,pe为相机位置,这样确定了相机与屏幕之间的位置关系、方向等信息。
图5 单个投影矩阵
为了达到更好的视觉效果,多屏显示墙呈弧形排列,弧形所对应圆的半径为R,如图6所示。令H为显示屏长边长度,W为显示屏短边宽度,w′为显示屏的边框厚度,α表示相邻两块显示屏之间的夹角。在投影矩阵计算时,考虑w′,可以抵消显示屏间隙导致的画面显示失真。
图6 计算投影矩阵(俯视图)
假设空间中一点Q的坐标系1中的坐标值为Q(x,y,z),则点Q在坐标系2中的坐标值Q′(x′,y′,z′)可以表示为:
(1)
式(1)中,T表示平移矩阵,R表示旋转矩阵,且R=RxRyRz,其中:
(2)
(3)
(4)
以计算坐标系3中的点pa′在坐标系1中的坐标值为例。显示屏1的中心点为坐标系1的坐标原点,显示屏2的中心点为坐标系3的坐标原点,pe为坐标系2的坐标原点,且pe在显示屏1和显示屏2的中心垂线上。pa′在坐标系1、2、3中的坐标值分别为pa′(x1,y1,z1)、pa′(x2,y2,z2)、pa′(x3,y3,z3)。则:
(5)
(6)
式(5)中T=[0 0R]T,R=RxRyRz,其中:
(7)
(8)
(9)
所以,可以得到以下关系:
(10)
同理,通过以上方法,可以求得各屏幕顶点在坐标系1中的坐标值,然后配置每个渲染结点的投影矩阵,从而进行并行渲染。
在sort-first并行渲染中必须要考虑的就是负载均衡的问题,负载不均衡的情况会导致各结点完成渲染任务时所用的时间不同,使得渲染后画面不同步而导致画面不完整或者撕裂感。在展示过程中,也会需要和三维场景进行交互。因此需要设计一个并行渲染结点、移动终端和总控服务器同步场景和输出的机制。
本系统基于Unity3D,利用网络功能实现同步。在系统开始运行时,通过Network模块,在总控服务器创建Server,每个并行渲染结点和移动终端连接到Server。
本系统的网络同步机制如图7所示。并行渲染系统每一帧图像渲染的基本流程如下。
图7 系统网络同步机制
步骤1总控服务器接收用户输入,根据用户输入和系统时间更新场景信息。
步骤2将需要同步的对象和相机信息打包,通过网络发送给并行渲染结点和移动终端。
步骤3并行渲染结点接收到数据后,同步该场景信息,并根据该机器的配置,应该渲染哪一部分的场景,动态调整相机视视角(即调整相机投影矩阵),渲染指定场景并输出到多屏显示墙进行展示。
步骤4移动终端接收到数据后,同步该场景信息,在通过摄像头拍摄到的图像中跟踪标记,并把三维场景注册到画面中进行增强现实的显示。
Unity3D是当前最流行的跨平台游戏开发引擎,在本文搭建的系统中,选用Android系统的移动终端设备,通过WiFi接入系统网络,实现同步展示。Vuforia SDK是一个用于移动终端增强现实系统开发的工具包,它提供了人工标记、自然特征的平面图像注册等功能。
移动终端AR同步展示系统开发及展示过程如下:
步骤1设置标识物:移动增强现实系统是典型的视频透视增强现实系统,通常采用基于计算机视觉的三维注册方法。本文中,使用基于自然特征的三维注册方法实现虚拟物体的准确注册。
步骤2设置三维场景:在Unity3D环境中,导入与并行渲染相同的三维场景。将ARCamera与ImageTarget组件导入场景视图。ARCamera对应虚拟相机位姿状态,ImageTarget对应标识物与三维模型之间的位置关系,在场景视图中对两者进行调整。
步骤3同步处理:移动终端连接到总控服务器Server,接收总控服务器的信息,并同步三维场景信息。由于在增强现实中,是按照标识物为原点来构建三维坐标系的,在服务器传过来三维模型的位置、方向、角度等信息之后,需要按式(11)进行一次坐标变换,将场景整体平移到标识物位置。公式中A表示原先三维模型坐标,B表示平移矩阵,A′为平移后的坐标。
A′=A+B
(11)
步骤4同步AR展示:在移动终端系统运行时,通过摄像头拍摄显示世界在屏幕上显示,当识别到标识物时,会将虚拟现实场景注册到屏幕上进行显示。
并行渲染系统实验环境场地空间长10.6 m,宽6.2 m,高4.5 m。硬件平台采用6台联想普通商务机(搭配英伟达GTX650显卡),6台海信55寸4K电视机,以及1台Android手机,各设备通过千兆网络和WiFi相连。软件使用Unity3D+C#编程,多屏显示墙输出分辨率高达10 800×3 840。使用屏幕H=1.24 m,W=0.72 m,w′=0.015 m,相邻屏幕夹角α=30度,该参数用于计算各渲染结点的相机投影矩阵计算。
本文设计了一个地球自转,月球自转并绕地球公转的场景,来验证本系统。图8展示了这个场景,观察的视角是地球赤道的正上方,这里可以看到整个地球的全景,各屏幕显示的画面拼接到一起,形成了一幅整体画面。注意屏幕之间缝隙周围的画面,由于在弧形多屏显示墙投影矩阵计算时考虑了缝隙的因素,能够很好地解决因此带来的图像形变的问题。如图9所示,白色区域为圆形应该显示的效果,但如果不对缝隙做特殊处理,会导致圆形不再是一个圆,在图中为白色加上灰色区域,这样就对显示的效果造成了影响。
图8 虚拟现实场景
图9 显示器间缝隙对显示效果的影响
图8中,同时展示了使用手机作为移动终端连接到系统上,通过AR的方式展示三维场景。通过手机的摄像头拍摄内容,在桌子上注册三维场景并显示,从手机中就可以看到地球和月球仿佛出现在桌子上,并且会跟随着用户的移动动态跟踪显示场景,可以从不同的角度来观察整个场景。而且整个场景是通过网络和总控服务器保持同步,实现了跨平台的同步展示。
本文提出了一种弧形多屏显示墙投影矩阵计算方法,该方法能够有效去除由于多屏幕之间缝隙带来的图像变形,并且环形屏能带给人更好的视觉体验。本文实现的基于网络的并行渲染和跨平台同步展示系统,能够同时在PC机群、移动终端同步展示整个场景,并且拥有很好的扩展能力。该系统凭借其高性价比、高可扩展性和跨平台展示能力,可以应用于博物馆展览、工业设计展示、教学模拟等领域。
[1] 娄明,宋靖雁,张毅.基于Java3D技术的虚拟车辆仿真系统[J].计算机工程与应用,2004,40(7):198-202.
[2] 刘宏伟,翁益平,张云坤,等.计算机辅助设计及电子束熔融快速成型金属3D打印技术制备个性化股骨假体[J].中国修复重建外科杂志,2015(9):1088-1091.
[3] 马乐,宋嵘,刘燕,等.基于虚拟现实技术的康复训练系统设计与实验验证[J].计算机应用与软件,2013,30(7):94-97.
[4] 汪伟,范秀敏,武殿梁.虚拟现实应用中的并行渲染技术[J].计算机工程,2009,35(3):282-284.
[5] Molnar S,Cox M,Ellsworth D,et al.A Sorting Classification of Parallel Rendering[J].IEEE Computer Graphics & Applications,1994,14(4):23-32.
[6] Akeley K.Reality Engine graphics[C]//Conference on Computer Graphics and Interactive Techniques,SIGGRAPH,1993:109-116.
[7] Olano M,Lastra A.A shading language on graphics hardware:the pixelflow shading system[C]//Conference on Computer Graphics and Interactive Techniques,1998:159-168.
[8] 谢文斌,陈学适,姜忠鼎.并行绘制游戏系统中同步传输协议的设计与实现[J].计算机应用与软件,2014,31(10):99-103.
[9] 邵华,江南,胡斌,等.面向复杂城市场景的Sort-First并行绘制系统中负载平衡与性能分析[J].地球信息科学学报,2014,16(3):376-381.
[10] 王星捷,李春花.基于Unity3D平台的三维虚拟城市研究与应用[J].计算机技术与发展,2013(4):241-244.
[11] 上官大堰,黄心渊,孙望舒,等.基于Android平台的Unity3D网络功能的开发[J].计算机应用与软件,2015,32(8):72-75.
[12] 孙益辉,陈福民,王海峰.一种基于OGRE图形引擎的实时分布式渲染系统[J].计算机工程与应用,2008,44(31):102-103.
[13] 雷开彬,熊华.基于大屏幕投影的中国传统服饰3D展示系统[J].西南民族大学学报(自然科学版),2015,41(6):717-722.
[14] 刘劲松,戴拥民,孙建刚,等.CAVE系统中不规则多屏投影变换矩阵[J].计算机与现代化,2016(9):40-44.
AWEB-BASEDPARALLELRENDERINGANDCROSS-PLATFORMSYNCHRONIZATIONDEMONSTRATIONSYSTEM
Lü Shengqing1Chen Yimin1*Huang Chen1Gao Mingke1,2
1(SchoolofComputerEngineeringandScience,ShanghaiUniversity,Shanghai200444,China)2(SchoolofMathematicsandComputingScience,HunanUniversityofScienceandTechnology,Xiangtan411201,Hunan,China)
Real-time display and interactive application in virtual reality are widely used recently. Since common PC has the performance problem when rendering, it is not possible to render ultra-high resolution scenes and ensure frame rates. The parallel rendering system based on the network has features of high performance-to-price ratio and good expansibility, and can output ultra-high resolution images for large-scale virtual reality scene display. Our system uses Unity3D to support virtual reality rendering and cross-platform features. It uses the PC cluster to display arc-shaped super-high resolution scenes based on the real-time parallel rendering framework with sort-first structure. What’s more, it connects a mobile phone, tablet and PC cluster together to display the entire scene with the way of augmented reality. The system supports multi-machine display simultaneously and can be applied to many fields such as museums, teaching, and exhibitions.
Parallel rendering Sort-First Unity3D Cross-platform Synchronization
TP391
A
10.3969/j.issn.1000-386x.2017.10.019
2016-11-29。上海市科技创新行动计划项目(16511101200);上海市科委国际合作项目(12510708400)。吕圣卿,硕士生,主研领域:并行渲染,计算机图形学。陈一民,教授。黄晨,博士生。高明柯,讲师。