邱 望,梁莉菁,徐远恒
基于WebGL的校园全景漫游系统的设计与实现
邱 望,梁莉菁,徐远恒
(萍乡学院 信息与计算机工程学院,江西 萍乡 337000)
3D全景漫游在场景展示方面有着传统图片无法比拟的优势,基于Web的全景漫游系统可以带来良好的用户体验。以萍乡学院为例,探讨了校园全景漫游系统的特点、实现方法和关键技术。从数据采集、图像处理和拼接合成等方面介绍了全景图像的制作过程,以浏览器为平台,采用WebGL技术设计和实现校园全景漫游系统,具有实现简单、性能优良和可移植性强等优点,这些方法也适用于类似场景的漫游系统的设计与实现。
全景漫游;WebGL;虚拟校园;系统开发
虚拟现实(VR)技术能够将现实中的各种场景和物体通过计算机技术转换为模拟的图像和模型并构建虚拟场景,用户可以从虚拟场景中获得较真实的感官体验,具有用户体验好、交互性强等优点。近年来,随着计算机软、硬件技术和图像采集技术的迅速发展,越来越多的企业开始使用VR技术来展示和宣传自身的形象或产品,但这种方式存在很多限制因素,如设备昂贵、制作困难、平台受限等。而成本低、实现简单和传播快的平面全景漫游就成了更好的替代技术,其中最常用的一种方式就是基于Web浏览器的全景漫游系统[1]。
在学校校园的宣传展示中,传统的方式不够生动和直观,局限性较大,同时缺乏真实性和交互性,相比之下全景漫游的展现方式具有更好的效果,用户能够体验到更加真实的场景和环境,能够有效地吸引用户的注意力[2]。很多高校都在其官网或公众号中加入了校园漫游的功能,该模块作为一种特色的宣传方式,成为学校的一个亮点。为了更好地提升学校的社会形象,完善学校的宣传功能,本文将以萍乡学院实景作为案例,采用无人机航拍、图像合成优化和WebGL(Web Graphics Library)等技术来设计并实现校园全景漫游系统。
一般的图像是使用相机从某个固定点拍摄的一张图片,单反相机的视角通常会小于120°,用户通过普通图像只能看到场景中的一部分。为了使用户看到360°环绕的全部场景,需要制作指定场景的全景图像[3]。全景图像的制作原理就是将多个部分场景拼接成完整场景,即利用相机在指定场景中的固定点拍摄多张普通图像,然后使用专业的图像处理软件将这组图像进行拼接合成。全景图像可以通过鼠标拖拽进行视角的切换,也可以集成在VR场景中,通过VR设备进行环视体验,具有较强烈的真实感[4]。
全景图像的制作通常包括3个步骤:图像采集、图像拼接、后期合成及优化。
图像采集是获取原始数据的关键步骤,通常是采用高像素、短焦距、大广角的专业相机,在指定地点拍摄一组相片,这组相片要包括该点的所有视角。
由于校园场景较大,涉及多个场景的全景图制作,不同的场景有不同的特点,制作的要求和方法也不同,本文选取“若水广场”和“升旗广场”两个场景来进行说明。
在制作“若水广场”场景的全景图时,考虑到本场景应该注重表现全貌,因此采用航拍视角,使用了无人机进行拍摄。无人机航拍摄影是以无人飞机为空中平台,搭载高性能遥感设备,通过计算机对图像信息进行处理,并按照一定精度要求制作成图像,具有控制灵活、拍摄稳定,视角选择多等优点,常用于开阔场景的拍摄[5]。使用无人机拍摄时,首先需要确定拍摄位置。本文所选拍摄位置在若水广场中心点,无人机飞行高度距离地面30米。然后使用手机App连接无人机,起飞至指定高度,固定不动,控制镜头的旋转进行拍摄。采集到的部分图像如图1所示。
图1 若水广场图像素材
而在制作“升旗广场”时,考虑到该场景应该重在展示地面的物体,因此拍摄点更接近地面,即普通人眼所处的高度的视角。在地面架设三脚架,相机高度约为1.6 m,采用鱼眼镜头进行拍摄。鱼眼相机最大的优点是视角范围大,视角一般可达到180°,这为近距离拍摄大范围景物创造了条件,也使全景图的合成更方便。由于超大广角的特点,使用鱼眼镜头采集到的图像在平面显示时会出现扭曲的现象,本场景采集到的图像如图2所示:
图2 升旗广场图像素材
通过这种方式即可完成地面场景原始图像数据的采集。这种方式的好处在于,鱼眼镜头拍摄出来的相片包含了更多的场景信息,因此用更少的相片就可以合成全景图片,同时采用这种相片合成之后的全景图所占用的存储空间更小,便于后期的处理和浏览器中的展示。对图片进行筛选时,选取特定数量的一组相片,要求相片之间的场景重合率>30%,保证合成的瑕疵更少,效果更好。在本场景的全景图像制作中,仅需8张相片即可完成拼接与合成。
图像拼接的目的是将采集到的一组场景图像转换为全景图片,通常采用专业软件进行制作。目前关于全景图像的拼接技术已经比较发展得成熟,很多软件都能得到较好的效果,如 Kolor Autopano Giga、PTGui、Panorama Studio Pro、Ulead360、720云等,本文在全景图像的拼接和处理阶段所采用软件的是PTGui。在PTGui软件中,将图片导入即可自动合成全景图像,但是生成的图像中会存在一些瑕疵,包括噪点、错位和扭曲等,因此需要人工对这些问题进行后期的处理[6]。PTGui软件同样提供了手动修复和优化的功能,在完成自动拼接之后需要手动进行处理。
在获取到场景的图像数据后,就可以对图像进行拼接与合成。PTGui软件的使用比较简单,只需要将某个场景的一组图像导入,进行自动对准和拼接即可。完成拼接之后,再对图片添加控制点,进行手动优化调整,最终合成的升旗广场全景图如图3所示:
图3 升旗广场合成全景图
为了达到更好的浏览和体验效果,本系统应该具有以下的主要功能[7]:
(1)全景展示
这是系统最核心的功能,系统应该能完美展示各个场景的360°环绕效果。其中包括,能够通过鼠标拖动视角的旋转、控制放大缩小、移动等基本图形操作。
(2)校园漫游
由于全景系统是由若干个场景构成,系统应该具有交互功能,因此需要在场景的道路上加入热点,即前进或者移动到下个场景,使得用户能够选择感兴趣的路线,提升用户体验。
(3)场景选择
用户在系统中进行切换时可能会出现场景的混乱,因此需要配备完整的场景选择功能,使用户能随时切换到指定的场景。
其他方面,由于系统是基于Web浏览器,还应该考虑兼容性,使主流浏览器都能够兼容。
全景漫游系统属于单一功能的展示型网站,其功能主要体现在前端部分,应强化Web页面的显示效果。本系统主要提供了场景展示、场景切换和导航功能,系统的前端采用HTML5和CSS3来进行页面布局,其中的一些新特性和功能,比如HTML多媒体、Canvas标签、CSS3动画,能使页面有很好的呈现效果。在图形渲染方面,系统采用了WebGL技术。这种技术允许在HTML页面中,使用JavaScript增加OpenGL绑定,为指定的Canvas提供硬件3D加速渲染,借助系统的显卡来渲染3D场景和模型。使用WebGL可以免去开发网页专用渲染插件,借助硬件加快浏览器的图像渲染速度,更高效地创建复杂的显示效果[8]。全景功能的实现则采用基于WebGL的JavaScript开放组件three.js,利用three.js能够完成全景图片的360°环绕展示,支持使用鼠标进行拖拽、放大、缩小和旋转等功能。
由于本系统不需要提供用户的数据请求功能,所以后台的功能较简单,主要包括处理客户端的请求服务和数据库的访问。服务器组件采用Apache Tomcat,数据层则采用MySQL数据库。系统的总体结构如图4所示。
图4 全景漫游系统框架图
系统建设完成后,用户使用Chrome、FireFox或IE等主流浏览器即可访问网站,访问时客户端向后台发送HTTP和Ajax请求,Tomcat根据请求从MySQL数据库中获取数据,经过处理返回给客户端。客户端的Web页面就可以根据返回的数据在Canvas中加载渲染场景,调用基于WebGL的three.js中的方法来完成各种用户操作。
(1)系统界面
前端页面中场景展示组件使用
为了使系统在移动端也能正常显示,为该
if ( /(iPad|iPhone|Android)/g.test( navigator.userAgent ) )
{
viewer.style.width = getComputedStyle( viewer ).width;
viewer.style.height = getComputedStyle( viewer ).height;
viewer.setAttribute( 'scrolling', 'no' );
}
(2)场景页面
当用户点击某个场景时,
container = document.getElementById( 'container' );
camera = new THREE.PerspectiveCamera( 75, width/height, 1, 1100 );
camera.target = new THREE.Vector3( 0, 0, 0 );
scene = new THREE.Scene();
var material = new THREE.MeshBasicMaterial( {
map: new THREE.TextureLoader().load( '/img.jpg' )
} );
mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
...
代码片段中,camera表示three.js创建的透视投影渲染对象,material中加载了目标场景的全景图像('img.jpg'),mesh和renderer中调用three.js的页面渲染方法实现3D图像渲染,再配合three.js中封装好的各种鼠标操作方法,即可实现场景的360°全景展示功能。
(3)场景切换
场景切换采用水平排列图片的形式,是常规的HTML+CSS列表实现[9]。其中每张图片对应一个场景,点击时加载新的场景,调用的方法:
function loadFile( file )
{
selectFile( file );
viewer.src = file + '.html';
}
本系统实现了包括萍乡学院西大门、若水广场、田径场、文廷式广场等14个场景的全景漫游,其中西大门的展示效果如图5所示。
图5 萍乡学院西大门全景展示
使用全景图和WebGL来实现全景漫游系统是一种操作简单、复用性强、效果好的场景立体展示方法。本文介绍了不同场景下全景图的制作方式,采用无人机航拍和鱼眼相机摄影技术能够快速采集到所需的数据,利用PTGui软件完成全景图的拼接和优化。本研究结合HTML5和WebGL技术,根据功能需求搭建了完整的系统平台,引入three.js插件进行快速开发,同时借助GPU硬件加速保证图形渲染的效果。本文的方法也可用于其他类似场景的全景展示系统的实现。未来的工作将在本研究的基础上再加入一些新的功能,例如平面地图、语音介绍、分享、留言等。
[1] 王静, 司占军, 候冕. 全景漫游技术在泰达校区的应用展示研究[J]. 电脑知识与技术, 2018, 14(36): 211~212.
[2] 周昌权. 基于HTML5 WebGL技术的校园全景漫游系统研究[J]. 电脑知识与技术, 2016(35): 86~88.
[3] 史庆通, 李吉英. VR实景沉浸式校园漫游系统的设计与实现[J]. 测绘与空间地理信息, 2019, 42(10): 93~95+99+103.
[4] 罗雅丹, 罗琪斯. 基于WebGL的全景技术智慧旅游系统[J]. 计算机系统应用, 2020, 29(1): 86~92.
[5] 范香香. 无人机倾斜摄影技术在蚌埠市规划核实中的应用[J]. 城市勘测, 2018(1): 24~26.
[6] 陈真, 蔡浩, 张飞. 基于全景图像的漫游系统技术实现[J].汕头大学学报(自然科学版), 2018, 33(4): 54~61.
[7] 乔国臻, 张茹涵, 赵国梁. 基于HTML5的虚拟校园三维漫游系统研究[J]. 测绘技术装备, 2018, 20(1): 33~36.
[8] 韩昕熠, 陈晓宁, 李俊燕, 等. 基于实景模型与全景的导览系统设计与开发[J]. 测绘与空间地理信息, 2019, 42(10): 90~92.
[9] 吴勇, 罗腾元. 全景三维虚拟系统构建方法研究[J]. 计算机工程与设计, 2014, 35(5): 1858~1861.
Design and Implementation of Campus Panoramic Roaming System Based on WebGL
QIU Wang, LIANG Li-jing, XU Yuan-heng
(School of Information and Computer Engineering, Pingxiang University, Pingxiang Jiangxi 337000, China)
In terms of scene display, 3D panoramic roaming has incomparable advantage over traditional methods, and a web-based panoramic roaming system can bring good user experience. Taking Pingxiang University as an example, the characteristics, implementation methods, and key technologies of the campus panoramic roaming system were discussed. The production of panoramic images was introduced from the aspects of data acquisition, image processing and synthesis. With WebGL technology and the browser as platform, the design and implementation of the campus panoramic roaming system has excellent implementation, performance and transferability, and these methods are also applicable to the design and implementation of the roaming system for similar scenes.
panoramic roaming; WebGL; virtual campus; system development
2020-02-10
萍乡学院2018青年科学基金项目(2018D0223)
邱望(1994—),男,江西萍乡人,助教,硕士,研究方向:计算机应用技术,虚拟现实。
TP311
A
2095-9249(2020)03-0057-06
〔责任编校:吴侃民〕