发明内容
为了克服现有技术中3D虚拟社区场景建模效率低、构建场景不具备现实世界的真实感,本发明的目的在于提供一种同时具备可以高效建立具有与现实世界一样真实感的虚拟社区场景的优点,和可以为用户在虚拟社区的生活提供良好交互性的特性,内容更加丰富的基于全景实景图像和地理信息的3D虚拟社区构建方法。
为了实现上述目的,本发明技术方案如下:
本发明一种基于全景实景和地理信息的3D虚拟社区构建方法包括以下步骤:
建立虚拟社区的架构,通过创建基于场景显示外幕的虚拟空间、创建虚拟地面、设定用户在虚拟地面上的漫游方式并在虚拟地面上添加3D实体以及将虚拟空间与现实世界的地理信息同步三个步骤建立一个虚拟社区显示平台,获得基于全景实景图像和地理信息的虚拟社区,使用户在所述虚拟社区中与环境交互以及当前用户与其他用户交互。
所述构建虚拟社区显示平台时全景实景图像数据和地理信息数据的准备步骤包括:
1)利用数据采集平台采集构建虚拟社区显示平台所需要的原始数据,将一帧的全景实景图像数据与该帧所对应的地理信息数据按照连续的方式在数据采集存储器中分别进行存储,并转存到服务器的数据存储单元中;
2)将在数据存储单元所存储的每一帧图像数据的存盘路径与该帧对应的地理信息数据建立关系表,将关系表存储于服务器的数据库单元中。
所述创建基于场景显示外幕的虚拟空间步骤是:采用3D图形程序接口创建虚拟空间的三维环境,并在虚拟空间的三维环境中绘制场景显示外幕;将采集到的全景实景图像数据从服务器传送到客户端中的3D显示平台,并纹理映射到场景显示外幕,获得基于场景显示外幕的虚拟空间。
所述虚拟地面的建立方法如下:
在已经构建好的场景显示外幕所在的虚拟空间中建立一个不可见面作为虚拟地面;
确定上述虚拟地面在虚拟空间中的位置,以保证在场景显示外幕上显示的图像与虚拟空间的透视关系相一致。
所述设定用户在虚拟地面上的漫游方式包括:
对虚拟地面上的距离与现实世界中的实际距离关系进行标定,即对在虚拟空间中从用户视点到虚拟地面距离以及全景实景图像采集设备的镜头主光轴到地面实际距离进行测量,这两个距离的比例作为虚拟空间距离到实际距离的转化标尺;
在用户不能观察到自身的3D人物实体的显示场景中进行第一视角漫游;或者在用户能够完整观察到其自身3D人物实体的显示场景中进行第三视角漫游。
所述第一视角漫游为连续式漫游,具体为:
开始执行第一视角连续式漫游程序;
在初始化过程中首先对虚拟地面位置以及虚拟地面距离和现实世界距离之间比例关系的标定;在虚拟空间中,视点中心的坐标按照已经标定好与虚拟地面间的距离高度的任意经纬度给定;
从服务器读取预选漫游路径的第一帧全景实景图像数据以及该全景实景图像数据所对应的地理信息数据;
在虚拟空间中将全景实景图像纹理映射到球形全景实景显示外幕,地理信息数据通过程序接口传送到地理信息平台更新地理位置,并重置用户视点位置;
用户判断是否到达结束帧,如到达结束帧,则结束程序;
如果没有到达结束帧,则客户端的3D显示平台向服务器请求下一帧全景实景图像数据及其对应的地理信息数据;将上述全景实景图像数据纹理映射到场景显示外幕,并计算当前帧与上一帧地理信息数据之间的距离以及全景图像采集设备的旋转角;利用已经标定好的现实世界距离与虚拟空间距离的对应关系,将视点连同场景显示外幕移动到当前帧地理信息数据所对应的虚拟空间位置,同时地理信息数据通过程序接口传送到地理信息平台更新地理位置;
转至“在虚拟空间中将全景实景图像纹理映射到球形全景实景显示外幕,地理信息数据通过程序接口传送到地理信息平台更新地理位置,并重置用户视点位置”步骤。
所述第一视角漫游为跳跃式漫游,具体为:
开始执行第一视角跳跃式漫游程序;
在初始化过程中首先要对虚拟地面位置以及虚拟地面距离和现实世界距离之间比例关系进行标定;
通过点选在场景显示外幕内部的虚拟地面或3D建筑物实体进行漫游,即通过点选方式获取目标位置的虚拟空间坐标,将该坐标投影到虚拟地面上得到点选位置在虚拟地面的坐标;
获取点选位置与初始位置之间在现实世界中的实际距离和全景图像采集设备的旋转角,并计算该位置的实际经纬度;
用户判断是否跳转至点选位置,如果跳转,则接续下一步骤;
将计算所得的点选位置所对应的现实世界地理位置通过网络传送回服务器,在数据库管理单元中查找与该地理位置最邻近的全景实景图像数据的URL;在数据存储单元将全景实景图像数据进行提取,并传输回客户端中的3D显示平台,在点选位置上绘制场景显示外幕,并在其上进行纹理贴图,同时在地理信息平台上更新用户当前的地理位置;
判断是否退出第一视角跳跃式漫游程序,如退出,则结束跳跃式漫游程序;
如果不退出第一视角跳跃式漫游程序否则返回“获取点选位置与初始位置之间在现实世界中的实际距离和全景图像采集设备的旋转角,并计算该位置的实际经纬度”步骤;
如果不跳转至点选位置,则返回“获取点选位置与初始位置之间在现实世界中的实际距离和全景图像采集设备的旋转角,并计算该位置的实际经纬度”步骤。
所述第三视角漫游具体为:
开始执行第三视角漫游程序;
在初始化过程中对用户3D人物实体在当前帧场景所在虚拟地面位置的漫游范围进行限定;
操纵该用户的3D人物实体在当前帧所处的虚拟地面上进行漫游;
当用户操纵3D人物实体远离初始位置时,计算3D人物实体当前所在位置与初始位置在虚拟空间中的距离以及相对于初始位置的全景图像采集设备的旋转角;将这个虚拟空间中的距离按照标定好的虚拟空间与现实世界距离的转换关系进行转换,得到在现实世界中3D人物实体所在位置与该初始位置的距离;
用户判断是否跳转至3D人物实体所在位置;如果跳转接续下一步骤;
将计算所得的3D人物实体在虚拟地面的位置对应的现实世界的位置传送回服务器,在数据库管理单元中查找与该现实世界位置最邻近的全景实景图像数据的URL;在数据存储单元中将全景实景图像数据进行提取,并传输回客户端中的3D显示平台;在当前3D人物实体所在虚拟地面的位置上绘制场景显示外幕,并在其上进行纹理贴图,同时在地理信息平台上更新用户当前的地理位置;
判断是否退出程序,如退出,则结束第三视角漫游程序;
如果不退出程序,则返回“当用户操纵3D人物实体远离初始位置时,计算3D人物实体当前所在位置与初始位置在虚拟空间中的距离以及相对于初始位置的全景图像采集设备的旋转角”步骤;
如果不跳转至3D人物实体所在位置,则返回“当用户操纵3D人物实体远离初始位置时,计算3D人物实体当前所在位置与初始位置在虚拟空间中的距离以及相对于初始位置的全景图像采集设备的旋转角”步骤。
所述在虚拟地面上添加3D实体为:
将在虚拟空间外部创建的3D实体模型导入到虚拟空间中的虚拟地面上,即在的虚拟地面上漫游之前,将利用3D建模工具建立好的3D实体模型文件进行数据存储,得到3D实体的原始数据,再将所述原始数据利用程序接口读入3D显示平台。
或者所述在虚拟地面上添加3D实体为:
在虚拟空间内部创建3D实体并添加到虚拟地面上,即在服务器的3D实体管理单元中先将准备在虚拟空间中绘制的3D实体的属性信息进行存储,当用户在虚拟空间中漫游到上述准备绘制的3D实体的位置时,服务器将3D实体管理单元中在当前地理位置的3D实体属性信息通过程序接口传输到3D显示平台,在3D显示平台中利用3D图形程序接口绘制3D实体。
所述将虚拟空间与现实世界的地理信息同步包括:
将场景显示外幕当前帧全景实景图像数据所对应的地理信息数据以及该用户在虚拟社区中所处地理位置的指定范围内的其他用户地理信息数据,通过3D显示平台与地理信息平台之间的程序接口实时传递给地理信息平台;在地理信息平台上标定并更新该用户及其指定范围内其他用户的当前位置。
所述用户在所述虚拟社区中与环境交互以及当前用户与其他用户交互的步骤为:
开始执行并初始化用户在虚拟社区交互的控制程序;
从服务器获取第一帧全景实景图像数据以及对应的地理信息数据,并从服务器中的用户管理单元将当前客户端位置指定范围内的其他用户信息传送到虚拟社区显示平台,该范围即球形全景实景显示外幕在虚拟空间中的半径长度换算成现实世界的实际距离;
对当前场景进行更新,利用获取的全景实景图像数据构建场景显示外幕,并在其内部显示可见的其他用户3D人物实体;将用户当前的地理信息数据传送到服务器的用户管理单元进行更新;
在虚拟社区中进行漫游,并从服务器获取当前用户在下一位置的全景实景图像数据、地理信息数据以及在该位置指定范围内的其他用户信息,并与其他用户进行交互或其他3D实体进行交互;
判断是否退出程序,如退出,则结束用户在虚拟社区交互的控制程序;
如果不退出用户在虚拟社区交互的控制程序,则返回“对当前场景进行更新,利用获取的全景实景图像数据构建场景显示外幕,并在其内部显示可见的其他用户3D人物实体;将用户当前的地理信息数据传送到服务器的用户管理单元进行更新”步骤;
所述全景实景图像数据以及地理信息数据传送的具体步骤为:当前用户的全景实景图像数据及其所对应的信息数据通过网络数据传输协议从服务器中的数据库管理单元以及数据存储单元直接传输到嵌有网络传输协议的3D显示平台,用于3D显示平台场景的实时更新;
同时3D显示平台通过其与地理信息平台在客户端的程序接口,将该用户当前的地理信息数据传递给地理信息平台,并在地理信息平台上实时更新该用户当前所在虚拟空间中对应的现实世界的地理位置。
所述其他用户信息传送的具体步骤为:通过网络数据传输协议从服务器的用户管理单元传输其他用户信息到客户端,将其他用户信息在地理信息平台上进行更新,并通过地理信息平台与3D显示平台在客户端的程序接口将其他用户信息传递到当前客户端的3D显示平台。
所述用户在虚拟社区中与其他用户交互步骤如下:
当前用户的3D人物实体在虚拟社区中漫游的同时,服务器通过基于数据传输协议的网络为当前用户的客户端传送其他用户信息;
上述其他用户信息通过浏览器网页程序与3D显示平台程序之间的数据接口传递到3D显示平台,通过3D图形程序接口利用已经得到的其他用户信息,在当前用户的虚拟社区场景中实时创建并显示其它用户的3D人物实体,并且根据其他用户的地理信息数据,在当前用户客户端的地理信息平台上更新其他用户的地理位置;
如果当前用户想同当前场景中的某个其他用户进行交互,则点击该用户3D人物实体,在虚拟社区交互的控制程序中查询被点击的其它用户信息并返回其IP地址;
采用网络连接方式将当前用户与其所选择的其他用户进行点对点连接,实现用户之间的文本交互、语音交互以及视频交互。
本发明具有以下有益效果及优点:
本发明提供一种基于全景实景和地理信息的3D虚拟社区构建方法,用户可以在现实场景的全景实景图像构建的虚拟社区中漫游,交互。由于虚拟社区的构建是利用了全景实景图像,并且全景实景图像与地理信息相关联,因此,进入本虚拟社区,更能给人一种身临其境的感觉,如同进入了一个真实的客观世界。同时又避免了大量的人工建模,提高了效率,适于大规模场景的构建,可以将一座城市甚至整个地球都纳入到本虚拟社区的环境中来。特别表现为:
1.虚拟社区场景构建效率高。本发明不仅采用基于图像绘制技术将全景实景图像纹理映射到场景显示外幕上,可以快速有效的建立现实场景模型。
2.虚拟社区场景内容丰富。本发明利用3D建模方法,通过在基于场景显示外幕的虚拟虚拟空间内部添加3D实体,建立了内容丰富的三维全景实景虚拟社区空间。
3.虚拟社区场景具有很强的真实感与现实世界的场景一致性。所构建的空间具有高仿真度,较强的层次感、立体感和沉浸感;用户能够以一种实体身份出现在虚拟社区中与环境交互、与在同一环境的其他用户进行交互,并这种以现实场景的全景实景图像为背景,结合在其中嵌入3D实体的方法可以有效的增强空间的沉浸感,层次感,立体感以及仿真度,这是目前所有现存的3D虚拟社区所不具备的特点。
4.本发明将现实世界的全景实景图像与电子地图(地理信息平台)相结合,使用户在基于场景显示外幕的虚拟空间中漫游的同时,也在现实世界的地图上漫游,并与其他用户在其中进行实时交互,实现了用户在虚拟空间中沉浸在现实世界的环境同时,还能够了解自己当前所处的地理位置,更增加了虚拟社区的真实感。
5.本发明将全景实景图像纹理映射到基于场景显示外幕的虚拟空间来创建现实世界场景的虚拟社区,并在上述虚拟空间内部添加3D建模实体,这种方法为3D虚拟社区技术提供一条新的技术路线,并且本发明用户界面简洁友好,易于操作,信息量大。
具体实施方式
本发明一种基于全景实景和地理信息的3D虚拟社区构建方法,包括以下步骤:首先建立虚拟社区的架构;然后通过创建场景显示外幕、创建虚拟地面、设定用户在虚拟地面上的漫游方式并在虚拟地面上添加3D实体以及将虚拟空间与现实世界的地理信息同步三个步骤建立一个虚拟社区显示平台;获得基于全景实景图像和地理信息的、使3D实体得以在其中与环境交互以及与其他用户交互的虚拟社区。
虚拟社区系统架构如图1所示,包括服务器、网络以及客户端,其中服务器由用户管理单元11、数据库管理单元12、数据存储单元13、3D实体管理单元14组成;网络由基于网络数据传输协议15(FTP或HTTP)构成;客户端(即虚拟社区显示平台)由3D显示平台16和地理信息平台17组成,通过网络浏览器实现。由客户端通过网络将用户信息传送到服务器,服务器中用户管理单元11把通过网络收集的其它用户所在地理位置和其它用户的当前信息传递给发送当前信息的客户端;客户端请求服务器的全景实景图像数据和地理信息数据,使用户可以在虚拟社区中自由漫游并与其他用户进行交互(信息的传递和数据请求可以通过现有技术中的程序控制手段得以实现),其中,虚拟社区架构中各个子模块功能如下:
用户管理单元11通过网络收集各客户端用户的当前信息,比如用户当前所处现实世界的地理位置、用户当前在虚拟环境中漫游的状态以及用户IP地址等信息,并通过网络将与当前用户地理位置指定范围内的其他用户信息传递给该用户。
数据存储单元13是在服务器中预留出的磁盘空间用于存储预先准备好的全景实景图像数据,本实施例中采用JPEG格式对全景实景图像数据进行保存。
数据库管理单元12可采用SQL Server、Oracle或Sybase等数据库将预先准备好的全景实景图像数据在服务器中的URL与该帧全景实景图像数据对应的地理信息数据一起存储。当客户端通过网络向服务器请求用户在虚拟社区中漫游时所需要的下一帧全景实景图像数据的URL与其对应的地理信息数据时,数据库管理单元12将通过该帧全景实景图像数据的URL在数据存储单元13找到对应的全景实景图像数据,以及该帧全景实景图像数据URL对应的地理信息数据通过网络一并传回客户端。
3D实体管理单元14用于存储用户在其客户端创建或添加的3D实体所在的经纬度、3D实体数据等数据信息。
3D显示平台16是将OpenGL、Direct3D等3D图形程序接口以控件程序的形式嵌入网络浏览器,在3D显示平台16中构建将全景实景图像与3D实体相结合的虚拟社区。通过在3D显示平台16控件程序中写入网络数据传输协议如FTP或HTTP等,客户端可利用控件程序中编写的网络协议,通过网络传输向服务器发送数据请求。
地理信息平台17以网页形式的电子地图嵌入虚拟社区显示平台(即嵌入网络浏览器)中。电子地图可通过浏览器网页程序与3D显示平台程序中的数据接口函数获取用户当前漫游位置的地理信息数据。
本实施例采用网络浏览器作为虚拟社区显示平台即客户端,在网络浏览器构建的虚拟社区显示平台中可显示3D显示平台16和地理信息平台17(本实施例采用电子地图)。
用于建立虚拟社区显示平台所需要的数据准备过程如下:
利用数据采集平台采集建立虚拟社区所需要的原始数据。数据采集平台由全景图像采集设备、地理信息采集设备、数据采集控制程序以及数据采集存储器组成。全景图像采集设备(如全景摄像机)负责采集全景实景图像数据;地理信息采集设备(本实施例采用GPS系统)对地理信息数据进行采集;数据采集控制程序使用两个线程分别控制全景图像采集设备与地理信息采集设备,并采用同一时钟频率信号对全景图像采集设备与地理信息采集设备进行同步触发,将一帧的全景实景图像数据与该帧所对应的地理信息数据按照连续的方式分别在数据采集存储器中进行存储。将每一帧全景实景图像数据进行单独保存,比如存为JPEG格式或BMP格式等,本实施例选用JPEG图像格式进行存储;最后将在数据采集存储器中存储的全景实景图像数据转存到服务器的数据存储单元13中;将每一帧图像在服务器数据存储单元13的统一资源定位符(Uniform Resource Locator,URL)与该帧对应的GPS数据建立关系表,将关系表存储于服务器数据库管理单元12中。于是,在数据库管理单元12中每帧全景实景图像的URL与该帧全景实景图像数据的GPS数据一一对应,通过每帧全景实景图像的URL可以获得该帧全景实景图像数据以及它所对应的GPS数据。
如图2所示,建立虚拟社区显示平台即客户端的具体步骤如下:
1.在客户端3D显示平台16中创建场景显示外幕
采用3D图形程序接口(例如OpenGL或Direct3D等)创建虚拟空间的三维环境,并在虚拟空间中绘制场景显示外幕(本实施例的场景显示外幕采用球形场景显示外幕,其中22为当前客户端场景显示外幕,25为其他客户端场景显示外幕。在当前用户的客户端3D显示平台16中,其他用户的场景显示外幕25不在当前用户的客户端进行显示);将采集到的全景实景图像数据从服务器的数据存储单元13传送到当前客户端的3D显示平台16。采用3D图形程序接口中的纹理映射方法将全景实景图像数据纹理映射到球形场景显示外幕,可以得球形全景实景显示外幕;
2.创建虚拟地面、设定用户在虚拟地面上的漫游方式并在虚拟地面上添加3D实体
上述虚拟地面在本实施例中的具体建立方法如图2所示:
在已经构建好的球形全景实景显示外幕所在的虚拟空间中建立虚拟地面21:虚拟地面21为一个不可见面,在整个虚拟社区中用于摆放3D建筑实体或3D人物实体等,其中23为当前客户端用户的3D人物实体,24为其他客户端用户的3D人物实体,其他客户端用户的3D人物实体24在虚拟社区中的地理位置与当前客户端3D人物实体23的地理位置在指定范围内时,则其他客户端用户的3D人物实体24在当前客户端进行显示。
为了保证从用户视点上观测3D实体与球形全景实景显示外幕上的图像景物的位置相对应,需要对虚拟地面在虚拟社区空间中的位置进行调节,使球形全景实景显示外幕上显示的图像与3D显示平台16中的虚拟空间的透视关系相一致。该透视关系由用户观察视点高度、虚拟地面位置以及球形全景实景显示外幕上图像透视关系共同决定。本实施例在虚拟地面绘制两条平行直线,与图像上公路两边直线相对应。通过调节视点与虚拟地面的高度,当虚拟地面上的两条平行直线与公路直线相重合时,则表明透视关系标定成功,从而虚拟地面的位置以及用户视点的位置由此可以确定。
设定用户在虚拟地面上的漫游方式:
首先要对虚拟地面上的距离与现实世界中的距离关系进行标定。在虚拟空间中对从用户视点到虚拟地面距离以及全景摄像机主光轴到地面实际距离进行测量。这两个距离的比例即可作为虚拟空间距离到现实世界的实际距离转化标尺,该过程在初始化中完成。于是,虚拟地面上的每一个位置都对应着现实世界上的一个实际的经纬度。27为用户在虚拟社区中的漫游轨迹。本发明提供了两种在虚拟社区中的进行漫游方式:第一视角漫游与第三视角漫游。第一视角和第三视角在本发明中做如下定义:第一视角指用户所看到的在客户端3D显示平台16中的场景即为用户在现实世界中用眼睛观察到的景象,用户无法看到自身的3D人物实体,但可以看到其他用户的3D人物实体;第三视角指用户可以在虚拟空间中完整的观察到该用户的自身的3D人物实体,也可以看见其他用户的3D人物实体,在用户3D人物实体移动时,用户视点跟随实体到达目标位置。
a.第一视角漫游
第一视角漫游分为两种漫游方法,一种是连续式漫游,另外一种是跳跃式漫游。
a)连续式漫游
该漫游方法是按照构建虚拟社区的图像拍摄路径进行连续漫游,程序流程如图3所示。具体漫游方法如下:
(31)开始执行第一视角连续式漫游程序;
(32)在初始化过程中首先要对虚拟地面位置以及虚拟地面距离和现实世界距离之间比例关系进行标定;其次在虚拟空间中,视点中心在虚拟空间的坐标按照已经标定好与虚拟地面间的距离高度的任意经纬度给定,本实施例选取虚拟空间原点作为视点中心的初始位置,初始位置与第一帧全景实景图像的实际经纬度坐标相对应。
(33)从服务器读取预选漫游路径的第一帧全景实景图像数据以及该全景实景图像数据所对应的GPS数据;
(34)在虚拟空间中将全景实景图像纹理映射到球形全景实景显示外幕,GPS数据通过程序接口传送到地理信息平台更新地理位置,并重置用户视点位置;
(35)用户判断是否到达结束帧,如到达结束帧,则结束程序(37),否则转至步骤(36);
(36)客户端的3D显示平台16开始向服务器请求下一帧全景实景图像数据以及该帧全景实景图像数据对应的GPS数据。将新请求到的全景实景图像数据纹理映射到球形全景实景显示外幕,并计算当前帧GPS数据与上一帧GPS数据之间的距离以及摄像机旋转角(摄像机旋转角可通过GPS数据,或者摄像机标定外参数获得,本实施例采用GPS数据获取摄像机旋转角);利用已经标定好的现实世界的距离与虚拟空间距离的对应关系,将视点连同球形全景实景显示外幕移动到当前帧GPS数据所对应的虚拟空间位置,同时GPS数据通过程序接口传送到地理信息平台17更新地理位置;转至步骤(34)。
b)跳跃式漫游
如图4所示,该漫游方式可使用户在当前帧的球形全景实景显示外幕所覆盖的虚拟空间范围内,从规定的路径上任意选取下一步到达的位置,并在该位置显示场景景象。具体实现方法如下:
(41)开始执行第一视角跳跃式漫游程序;
(42)在初始化过程中首先要对虚拟地面位置以及虚拟地面距离和现实世界距离之间比例关系进行标定;
(43)通过点选在球形全景实景显示外幕内部的虚拟地面或3D建筑物实体进行漫游,具体是通过点选方式获取目标位置的虚拟空间坐标,将该3维坐标投影到虚拟地面上(如果直接选在虚拟地面上,则不需要进行投影)得到点选位置在虚拟地面的坐标;
(44)获取点选位置与初始位置之间在现实世界中的实际距离和摄像机旋转角,并计算该位置的实际经纬度;
(45)用户判断是否跳转至点选位置,如果不跳转,则返回步骤(44),否则接续步骤(46)
(46)将所求的用户需要跳转的点选位置的实际经纬度通过网络传送回服务器,在数据库管理单元12中查找与该地理位置最邻近的全景实景图像数据的URL;在数据存储单元13中将全景实景图像数据进行提取,并传输回客户端中的3D显示平台16,在点选位置上绘制球形场景显示外幕,并在其上进行纹理贴图,同时,在地理信息平台17上更新用户当前的地理位置;
(47)判断是否退出程序,如退出,则结束跳跃式漫游程序,否则返回步骤(44)。
b.第三视角漫游
第三视角漫游的程序流程图如图5所示:
(51)开始执行第三视角漫游程序;
(52)在初始化过程中对用户的3D人物实体在当前帧场景所在虚拟地面位置的漫游范围进行限定;本发明对漫游范围的形状没有特别规定,可以为圆形或矩形等形状的区域;本实施例采用圆形区域,用户3D人物实体在当前帧漫游区域半径由球形场景外幕的半径决定(本实施例选择球形全景实景显示外幕半径的1/2左右,该区域可按具体要求对参数进行调整);
(53)操纵用户的3D人物实体在当前帧所处的虚拟地面上进行漫游(具体操纵方法属现有技术,在程序中体现);
(54)当用户操纵3D人物实体远离初始位置时,计算3D人物实体当前所在位置与初始位置在虚拟空间中的距离以及相对于初始位置的摄像机旋转角;将这个虚拟空间中的距离按照标定好的虚拟空间与现实世界距离的转换关系进行转换,得到3D人物实体所在位置与该初始位置在现实世界中的实际距离;
(55)用户判断是否跳转至3D人物实体所在位置;如果不跳转,则转至步骤(54),否则接续步骤(56);
(56)将计算所得的3D人物实体在虚拟地面上所在位置对应的实际地理位置传送回服务器,在数据库管理单元12中查找与该地理位置最邻近的全景实景图像数据的URL;在数据存储单元13中将全景实景图像数据进行提取,并传输回客户端中的3D显示平台16;在当前用户的3D人物实体所在位置上绘制球形场景外幕,并在其上进行纹理贴图,同时在地理信息平台17上更新用户当前的地理位置;
(57)判断是否退出程序,如退出,则结束第三视角漫游程序,否则返回步骤(54)。
在虚拟社区中添加3D实体:
本实施例将3D显示平台16外部的3D实体(包括人物及除人物以外的各种实体,如标识,建筑物等,下同)导入到虚拟社区场景中,具体导入方法如下:将利用3D建模工具(如MAYA或3DMax等3D建模软件)建立好的3D实体模型文件以.max、.ma或.3ds等文件格式进行存储,得到3D实体的原始数据,这些原始数据包括3D实体模型在空间中的点和线的位置,以及表面贴图数据;将这些点和线等的原始数据利用程序接口读入3D显示平台16,实现3D实体的导入;再通过3D图形程序接口中的函数来改变或调节3D实体在当前用户客户端虚拟地面上的初始显示位置。
3.虚拟社区与现实世界的地理信息同步
用户在虚拟社区中漫游时,随着漫游场景的改变,其地理位置也应当随之改变。将球形全景实景显示外幕当前帧图像数据所对应的GPS数据,以及该用户所处地理位置在指定范围(即球形全景实景显示外幕在混杂空间中的半径长度换算成现实世界的真实距离)内的其他用户地理信息通过3D显示平台16及地理信息平台17即电子地图之间的程序接口实时传递给事先准备好的电子地图28,在电子地图28上标定并更新该用户及其附近其他用户漫游的当前位置。
虚拟社区与电子地图同步的具体过程如下:
地理信息平台16以电子地图28形式嵌入客户端。电子地图28可通过网页形式的电子地图与3D显示平台16中的数据接口函数获取用户当前漫游位置的GPS数据。利用电子地图的API函数通过已经获取的用户当前漫游位置的GPS数据,在电子地图28上用图标标定出该用户的位置。上述过程中,网页形式的电子地图通过执行3D显示平台16的数据接口函数每隔500ms(该数值可以根据实时性需要改变)进行一次数据获取,更新用户在电子地图上的地理位置。
如图6所示,用户在虚拟社区交互的控制程序具体流程为:
(61、62)开始执行并初始化用户在虚拟社区交互的控制程序;
(63)从服务器获取第一帧全景实景图像数据以及对应的GPS数据,并从服务器中的用户管理单元11将当前客户端位置指定范围内的其他用户信息传送到虚拟社区显示平台,该范围即球形全景实景显示外幕在虚拟空间中的半径长度换算成现实世界的实际距离;
(64)对当前场景进行更新,利用获取的全景实景图像数据构建球形全景实景显示外幕,并在其内部显示可见的其他用户的3D人物实体;将用户当前的GPS数据传送到服务器的用户管理单元11进行更新;
(65)在虚拟社区中进行漫游,并从服务器获取当前用户在下一位置的全景实景图像数据、GPS数据以及在该位置指定范围内的其他用户信息,并与其他用户进行交互或其他3D实体进行交互;
(66)判断是否退出程序,如退出,则结束用户在虚拟社区交互的控制程序,否则返回步骤(64)。
在上述步骤(64)中全景实景图像数据以及GPS数据传送的具体步骤为:当前用户的全景实景图像数据及其所对应的GPS数据通过网络数据传输协议从服务器中的数据库管理单元12以及数据存储单元13直接传输到嵌有网络传输协议的3D显示平台16,用于3D显示平台16场景的实时更新;在3D显示平台16场景实时更新的同时,通过3D显示平台16与地理信息平台17在客户端的程序接口,3D显示平台16将该用户当前的GPS数据传递给地理信息平台16(即电子地图),并在电子地图上实时更新该用户当前所在虚拟空间中对应的现实世界的地理位置。
在上述步骤(65)中其他用户信息传送的具体步骤为:通过网络数据传输协议从服务器的用户管理单元11传输其他用户信息到客户端,将其他用户信息在地理信息平台17(地理信息平台是通过网页程序实现)上进行更新,并通过地理信息平台17与3D显示平台16在客户端的程序接口将其他用户信息传递到当前客户端的3D显示平台16;利用其他用户信息在3D显示平台16上显示其他用户的3D人物实体,并进行交互。
步骤(65)中用户在虚拟社区中与其他用户交互的具体实施例如下:
当前客户端用户的3D人物实体23在虚拟社区中漫游的同时,服务器通过基于数据传输协议的网络为当前用户的客户端传送其他用户信息,该其他用户在以当前用户球形全景实景显示外幕半径所代表的现实世界实际距离的范围内。其他用户信息包括其他用户的GPS数据、其他用户当前的漫游状态(正在行走,停止,跑动等状态)以及其他用户客户端的IP地址等。当其他用户信息传送到当前用户客户端时,上述信息通过浏览器网页程序与3D显示平台程序之间的数据接口传递到3D显示平台16,通过3D显示平台16的3D图形程序接口利用已经得到的其他用户信息,在当前用户的虚拟社区场景中实时创建并显示其它用户的3D人物实体,并且根据其他用户的GPS数据,在当前用户客户端的地理信息平台17上更新其他用户的地理位置。
当前用户可以与在该用户客户端的3D显示平台16中显示的其他用户进行实时交互。如图2所示,当前客户端用户的3D人物实体23与其他客户端用户的3D人物实体24处在当前客户端的球形全景实景显示外幕22中,如果当前用户想同当前场景中的某个其他用户进行交流,需要对该用户3D人物实体进行点击,在程序中查询被点击的其它用户信息,返回被点击的其它用户IP地址。采用Socket UDP连接方式将当前用户与其所选择的其他用户进行点对点连接,实现用户之间的文本交互、语音交互以及视频交互等。
如图7所示,为本实施例构建的3D虚拟社区客户端示意图。客户端采用网络浏览器实现,其中71为3D显示平台,用于显示3D虚拟社区中的场景;72为当前客户端用的3D人物实体,73为其他客户端用户3D实体,在3D虚拟社区中当前用户可通过3D人物实体与其他用户进行交流;74为地理信息平台,用于显示当前客户端用户所在场景的地理位置,75为当前用户所在的地理位置,76为其他用户所在的地理位置。
实施例2
与实施例1不同之处在于:所述场景显示外幕的形状为立方体空间(正六面体)。
在虚拟社区中添加3D实体的方法是利用3D图形程序接口在虚拟空间内部创建3D实体,具体如下:
用户在漫游的过程中会在立方体全景实景显示外幕中观察到一些建筑物或场所,而在现实场景中,许多建筑物、场所等并没有显著的识别标识。本实施例采用3D图形程序接口在立方体全景实景显示外幕中添加3D实体,本实施例以虚拟标识牌为例,为用户解决了在虚拟社区漫游的过程中景物识别的问题,具体实现方法为:
在服务器的3D实体管理单元14中预先将3D虚拟标识牌的属性信息(如在虚拟标识牌的所在现实世界经纬度,标识牌朝向角,标识牌的尺寸,样式,书写的文字,字体等信息)进行存储。当用户在虚拟社区中漫游到该地理位置时,服务器将3D实体管理单元14中在当前地理位置的3D虚拟标识牌等3D实体属性信息通过网络传输到该用户客户端,在该用户客户端的3D显示平台16中利用3D图形程序接口绘制虚拟标识牌,用于指示场景中特定的建筑物,或场所等。
在步骤(65)中用户在虚拟社区中与其他3D实体进行交互的过程,以在商店进行购物为例,具体实施方法如下:
当用户漫游在虚拟社区中某商店3D实体26的地理位置时,在立方体全景实景显示外幕内显示该商店的3D实体26,操纵当前用户人物实体23进入商店进行购物;进入商店后走到某品牌专柜前(例如某某运动服装专卖柜),用户可点击该专卖柜“招牌”(虚拟标识牌),该专卖柜虚拟标识牌对应了一个ID,而此ID则对应该运动服装店的官方网站,因此可弹出该服装店的网页,此时用户可以进行网上交易,实现在该商店的虚拟购物(这一系列动作可通过程序按照顺序执行,属现有技术)。其他购物形式可依据此方法进行。
在步骤(65)中用户在虚拟社区中可以在路边的长椅上坐下休息,其具体实施方法如下:
在创建3D人物实体时,采用Maya软件制作一系列人物动画的基本动作,例如站立、行走(包括正向行走,反向行走,向左侧步走,向右侧步走等)、跑步(快跑,慢跑)、招手、坐下等基本动作,因此,用户所操作的是具有人物动画的3D人物模型。将每一个动作都对应一个按键(该按键功能在程序中设置,具体操作在键盘上实现),当用户遇到一把椅子,希望坐到上面的时候需要点击椅子,按坐下键即可实现该动作(这一系列动作可通过程序按照顺序执行,属现有技术)。
实施例3
与实施例1不同之处在于:所述场景显示外幕的形状为圆柱体空间,本发明所述场景显示外幕结构还可以创建为其它封闭空间几何体。
在虚拟社区中添加3D实体的方法是利用3D图形程序接口在虚拟社区中创建3D实体,并将在3D显示平台16外部创建的3D实体模型导入虚拟社区的混杂现实空间。
以上实施例仅供说明本发明,而非对本发明的限制,有关技术领域人员在不脱离本发明的精神和范围的情况下,还可以做出各种变换和变形,因此所有等同变形的技术方案也应该属于本发明权利要求保护的范畴之内。