发明内容
基于此,有必要针对上述技术问题,提供一种能够提升场景跳转效率的虚拟现实页面的生成方法、装置、服务器及存储介质。
本发明提供了一种虚拟现实页面的生成方法,其包括:接收三维图像数据;对三维图像数据进行场景分离处理,根据分离出的相同场景的三维图像数据生成对应的场景文件;获取预设的公用文件、初始化文件及跳转组件,其中公用文件用于添加虚拟现实组件,初始化文件用于初始化虚拟现实组件,跳转组件用于实现场景跳转;获取公用文件、初始化文件、跳转组件及多个场景文件之间的预设的引用关系;根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包。
在一个实施例中,根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包的步骤,包括:对公用文件、初始化文件及跳转组件进行备份;根据引用关系对每个场景文件和备份的公用文件、初始化文件及跳转组件进行整合压缩,生成包括虚拟现实页面的数据包。
在其中一个实施例中,该虚拟现实页面的生成方法还包括:接收对虚拟现实页面的运行指令;响应运行指令,根据公用文件在虚拟现实页面添加虚拟现实组件;根据初始化文件初始化虚拟现实组件;根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件,其中,第一场景文件为多个场景文件中的一个。
在其中一个实施例中,根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件之后,该虚拟现实页面的生成方法还包括:接收场景跳转指令,场景跳转指令携带了第二场景文件的路径,其中第二场景文件为多个场景文件中与第一场景文件不同的一个;根据第二场景文件的路径,调用跳转组件获取第二场景文件;将虚拟现实页面加载的第一场景文件替换为第二场景文件。
在其中一个实施例中,虚拟现实组件包括虚拟相机、渲染器及分屏器。
本发明还提供了一种虚拟现实页面的生成装置,该装置包括第一接收模块、分离模块、获取模块及生成模块;其中,第一接收模块用于接收三维图像数据;分离模块用于对三维图像数据进行场景分离处理,根据分离出的相同场景的三维图像数据生成对应的场景文件;获取模块用于获取预设的公用文件、初始化文件及跳转组件,其中公用文件用于添加虚拟现实组件,初始化文件用于初始化虚拟现实组件,跳转组件用于实现场景跳转;获取模块还用于获取公用文件、初始化文件、跳转组件及多个场景文件之间的预设的引用关系;生成模块用于根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包。
在其中一个实施例中,生成模块包括备份单元和生成单元,其中,备份单元用于对公用文件、初始化文件及跳转组件进行备份;生成单元用于根据引用关系对每个场景文件和备份的公用文件、初始化文件及跳转组件进行整合压缩,生成包括虚拟现实页面的数据包。
在其中一个实施例中,该装置还包括第二接收模块、添加模块、初始化模块及加载模块,其中,第二接收模块用于接收对虚拟现实页面的运行指令;添加模块用于响应运行指令,根据公用文件在虚拟现实页面添加虚拟现实组件;初始化模块用于根据初始化文件初始化虚拟现实组件;加载模块用于根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件,其中,第一场景文件为多个场景文件中的一个。
在一个实施例中,该装置还包括第三接收模块和调用模块,其中第三接收模块用于接收场景跳转指令,场景跳转指令携带了第二场景文件的路径,其中第二场景文件为多个场景文件中与第一场景文件不同的一个;调用模块用于根据第二场景文件的路径,调用跳转组件获取第二场景文件;加载模块还拥有将虚拟现实页面加载的第一场景文件替换为第二场景文件。
在一个实施例中,虚拟现实组件包括虚拟相机、渲染器及分屏器。
本发明还提供了一种服务器,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述任一项所述的方法的步骤。
本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一项所述的方法的步骤。
本发明实施例通过对三维图像数据进行场景分离处理,并根据分离出的多个场景文件、预设的公用文件、初始化文件、跳转组件和引用关系,生成包括虚拟现实页面的数据包,当用户打开数据包中的虚拟现实页面时,能够根据公用文件和初始化文件添加并初始化所需的虚拟现实组件,通过初始化之后的虚拟现实组件在虚拟现实页面中加载三维场景并进行场景跳转。采用本发明实施例生成的虚拟现实页面,可在单个页面中实现场景跳转,无需退出当前页面重新访问新的页面,因此节省了带宽资源。而且执行场景跳转时无需重新添加虚拟现实组件并初始化,因此提升了场景跳转的速率。对于开发人员来说,只需上传三维图像数据即可自动生成虚拟现实页面,无需额外开发虚拟现实组件的添加及初始化代码,因此可以提高开发效率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例中所提供的虚拟现实页面的生成方法可应用于如图1所示的应用环境中。其中,用户终端102通过网络与服务器104进行连接,并向服务器104发送三维图像数据。服务器104接收用户终端102发送的三维图像数据,对三维图像数据进行场景分离处理,根据分离出的每个场景的三维图像数据生成对应的场景文件。此外,服务器104还获取预设的公用文件、初始化文件及跳转组件,并获取公用文件、初始化文件、跳转组件及多个场景文件之间的预设的引用关系,再根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包。其中,公用文件用于添加虚拟现实组件,初始化文件用于初始化虚拟现实组件,跳转组件用于实现场景跳转,从而实现在单个页面进行场景跳转。
在一个实施例中,如图2所示,提供了一种虚拟现实页面的生成方法,,以该方法应用于图1中的服务器为例进行说明,具体包括以下步骤:
S202,接收三维图像数据。
本实施例中,服务器104接收用户终端102通过网络发送的三维图像数据。具体的,三维图像数据包括三维模型数据和音频数据,其中三维模型数据包括三维模型的结构、材质、粗糙度、表面纹理及表面颜色等数据。
S204,对三维图像数据进行场景分离处理,根据分离出的相同场景的三维图像数据生成对应的场景文件。
具体地,先通过场景分离处理,按照场景对接收到的三维图像数据进行分离,分别得到每个场景的三维图像数据,再将相同场景的三维图像数据合并为对应的场景文件,从而得到每个场景各自对应的场景文件。其中,场景文件为可执行文件,例如脚本。
在一个实施例中,接收到的三维图像数据包括多个数据包,每个数据包携带有场景指示信息,根据各个数据包的场景指示信息确定其对应的场景,从而进行场景分离处理。
S206,获取预设的公用文件、初始化文件及跳转组件,其中,公用文件用于添加虚拟现实组件,初始化文件用于初始化虚拟现实组件,跳转组件用于实现场景跳转。
本实施例中,虚拟现实组件用于对三维图像数据进行可视化处理,使得根据三维图像数据能够生成对应的可显示的三维场景画面。具体地,虚拟现实组件包括虚拟相机、渲染器及分屏器。其中,虚拟相机至少有两个,其中两个虚拟相机分别用于模拟人的左眼和右眼。虚拟相机主要负责定义场景中物体的位置和朝向,并负责将三维场景中的物体投影到二维视口中。分屏器用于将图像数据划分为左眼的图像数据和右眼的图像数据,使得用户通过VR眼镜、VR头盔等虚拟现实显示设备进行观看时,由于左眼和右眼看到的画面存在一定的差异从而在脑中产生立体感。渲染器用于根据预先配置的光源参数,计算光源对虚拟相机视野内的三维场景中的物体的影响,从而确定三维场景中的物体的着色效果并将三维场景输出为人眼可视的图像。可选的,除了虚拟相机、渲染器和分屏器之外,上述虚拟现实组件还可包括VR控制器。VR控制器用于根据用户指令调整虚拟相机的位置和方向,从而调整三维场景的视野范围,并控制渲染器对调整后的视野范围内的三维场景的物体进行渲染。
其中,公用文件和初始化文件均为可执行文件,例如公用文件和初始化文件均为脚本。跳转组件为API(Application Program Interface,应用程序接口)组件。例如,服务器104预先将预设的跳转函数封装为API,从而生成跳转组件。通过跳转组件,可连接至待跳转的场景的入口,从而获取待跳转的场景的场景文件。
S208,获取公用文件、初始化文件、跳转组件及多个场景文件之间的预设的引用关系。
在本实施例中,该引用关系全部或部分由用户预先设置。可选地,服务器104接收用户发送的引用关系文件,引用关系文件中包含公用文件、初始化文件、跳转组件及多个场景文件之间的引用关系。或者,服务器104分析公用文件、初始化文件、跳转组件和每个场景文件中携带的其它文件的引用信息,从而获取公用文件、初始化文件、跳转组件及多个场景文件之间的引用关系。例如,公用文件中携带了对初始化文件的引用信息,初始化文件中携带了对其中一个特定场景文件的引用信息,该特定场景文件作为入口场景对应的场景文件,携带了对跳转组件及至少一个其他场景文件的引用信息,服务器104分析并整理这些文件中携带的引用信息,从而获取公用文件、初始化文件、跳转组件及多个场景文件之间的引用关系。可选的,服务器104还根据该引用关系生成引用关系图表或引用关系文件。
S210,根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包。
具体地,服务器104根据引用关系将公用文件、初始化文件、跳转组件及多个场景文件打包为多个模块,还添加一公用的HTML(Hyper Text Markup Language,超文本标记语言)页面文件,并根据该引用关系,在HTML页面文件中依序添加用于加载该至少一个模块的可执行文本,生成虚拟现实页面,使得运行该虚拟现实页面时能够加载该多个模块,在该虚拟现实页面内添加并初始化虚拟现实组件,从而加载三维场景并实现场景跳转。
其中,为了节省GPU(Graphics Processing Unit,图形处理器)资源,实现不同场景的按需加载,可将每个场景文件单独打包为一个模块。可选地,公用文件、初始化文件和跳转组件可以分别单独打包,或者合并打包为一个模块。将虚拟现实页面和打包生成的多个模块进行压缩,生成包括虚拟现实页面的数据包。
本发明实施例通过对三维图像数据进行场景分离处理,并根据分离出的多个场景文件、预设的公用文件、初始化文件、跳转组件和引用关系,生成包括虚拟现实页面的数据包,当用户打开数据包中的虚拟现实页面时,能够根据公用文件和初始化文件添加并初始化所需的虚拟现实组件,通过初始化之后的虚拟现实组件在虚拟现实页面中加载三维场景并进行场景跳转。采用本发明实施例生成的虚拟现实页面,可在单个页面中实现场景跳转,无需退出当前页面重新访问新的页面,因此节省了带宽资源。而且执行场景跳转时无需重新添加虚拟现实组件并初始化,因此提升了场景跳转的速率。对于开发人员来说,只需上传三维图像数据即可自动生成虚拟现实页面,无需额外开发虚拟现实组件的添加及初始化代码,因此可以提高开发效率。
在一个实施例中,采用webpack工具对三维图像数据进行场景分离处理,将公用文件、初始化文件、跳转组件及每个场景文件之间的引用关系导入webpack工具,再采用webpack工具对公用文件、初始化文件、跳转组件及每个场景文件之间的引用关系进行整合压缩,构建生成包括虚拟现实页面的数据包。
在一个实施例中,根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包的步骤包括:对公用文件、初始化文件及跳转组件进行备份;根据引用关系对每个场景文件和备份的公用文件、初始化文件及跳转组件进行整合压缩,生成包括虚拟现实页面的数据包。通过对公用文件、初始化文件及跳转组件进行备份处理,使得公用文件、初始化文件及跳转组件可用于下一次的虚拟现实页面的生成。
在一个实施例中,如图3所示,该虚拟现实页面的生成方法还包括如下步骤:
S212,接收对虚拟现实页面的运行指令。
具体地,接收用户终端102发送的对虚拟现实页面的运行指令。
S214,响应运行指令,根据公用文件在虚拟现实页面添加虚拟现实组件。
其中,虚拟现实组件包括虚拟相机、渲染器及分屏器。响应接收到的运行指令,在虚拟现实页面添加虚拟相机、渲染器及分屏器等组件。
在一个实施例中,虚拟现实组件还包括VR控制器,则在本实施例,响应接收到的运行指令,还在虚拟现实页面添加VR控制器。
S216,根据初始化文件初始化虚拟现实组件。
本实施例中,对虚拟相机、渲染器及分屏器等组件进行初始化。若虚拟现实组件包括VR控制器,还对VR控制器进行初始化。具体地,初始化指的是对各个虚拟现实组件中的变量赋予预设的默认值,从而把各个虚拟现实组件设置为默认状态。
S218,根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件。
其中,第一场景文件为多个场景文件中的一个。具体地,可根据各个场景文件之间的引用关系确定第一场景文件,并将第一场景文件设置为入口文件。这样,完成虚拟现实组件的初始化之后,可自动加载第一场景文件。可选的,服务器104还将加载了第一场景的虚拟现实页面发送至用户终端102,通过用户终端102的显示屏在虚拟现实页面中显示第一场景。
在一个实施例中,如图4所示,在步骤S218之后,该虚拟现实页面的生成方法还包括如下步骤:
S220,接收场景跳转指令,场景跳转指令携带了第二场景文件的路径。
其中,第二场景文件为上述多个场景文件中与第一场景文件不同的一个。具体地,获取用户通过对用户终端102或虚拟现实显示设备发送的场景跳转指令。例如,获取用户通过点击虚拟现实页面中的预设功能按钮发送的场景跳转指令;或者,获取用户通过按压虚拟现实显示设备的预设按键发送的场景跳转指令;或者,获取用户通过预设的头部运动带动虚拟现实显示设备或用户终端102移动而发送的场景跳转指令;或者,获取用户终端102发送的语音方式的场景跳转指令。其中,场景跳转指令携带了作为跳转目标的第二场景对应的第二场景文件的路径。
S222,根据第二场景文件的路径,调用跳转组件获取第二场景文件。
具体地,响应场景跳转指令,调用数据包中的跳转组件,将第二场景文件的路径信息作为参数传入跳转组件中的跳转函数,从而根据文件路径获取对应的第二场景文件。
S224,将虚拟现实页面加载的第一场景文件替换为第二场景文件。
具体地,获取第二场景文件之后,停止加载第一场景文件,转为加载第二场景文件。可选的,服务器104还将加载了第二场景的虚拟现实页面发送至用户终端102,通过用户终端102的显示屏在虚拟现实页面中显示第二场景。其中,在停止加载第一场景文件的同时,用户终端102控制渲染器暂停对第一场景进行渲染,在加载了第二场景文件之后,用户终端102根据第二场景文件对第二场景进行渲染,使第二场景得以显示。
在一个实施例中,在虚拟现实页面加载第二场景文件之后,还可重复执行步骤S220~S224,以在同一个虚拟现实页面跳转至其他场景。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例所述的流程。其中,该存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
在一个实施例中,如图5所示,提供了一种虚拟现实页面的生成装置,该装置包括第一接收模块502、分离模块504、获取模块506及生成模块508。其中,第一接收模块502用于接收三维图像数据;分离模块504用于对三维图像数据进行场景分离处理,根据分离出的相同场景的三维图像数据生成对应的场景文件;获取模块506用于获取预设的公用文件、初始化文件及跳转组件,其中公用文件用于添加虚拟现实组件,初始化文件用于初始化虚拟现实组件,跳转组件用于实现场景跳转;获取模块506还用于获取公用文件、初始化文件、跳转组件及多个场景文件之间的预设的引用关系;生成模块508用于根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包。
在一个实施例中,生成模块508包括备份单元和生成单元,其中,备份单元用于对公用文件、初始化文件及跳转组件进行备份;生成单元用于根据引用关系对每个场景文件和备份的公用文件、初始化文件及跳转组件进行整合压缩,生成包括虚拟现实页面的数据包。
在一个实施例中,如图6所示,该装置还包括第二接收模块510、添加模块512、初始化模块514及加载模块516,其中,第二接收模块510用于接收对虚拟现实页面的运行指令;添加模块512用于响应运行指令,根据公用文件在虚拟现实页面添加虚拟现实组件;初始化模块514用于根据初始化文件初始化虚拟现实组件;加载模块516用于根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件,其中,第一场景文件为多个场景文件中的一个。
在一个实施例中,该装置还包括第三接收模块和调用模块,其中第三接收模块用于接收场景跳转指令,场景跳转指令携带了第二场景文件的路径,其中第二场景文件为多个场景文件中与第一场景文件不同的一个;调用模块用于根据第二场景文件的路径,调用跳转组件获取第二场景文件;加载模块还拥有将虚拟现实页面加载的第一场景文件替换为第二场景文件。
在一个实施例中,虚拟现实组件包括虚拟相机、渲染器及分屏器。
上述虚拟现实页面的生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于服务器中的处理器中,也可以以软件形式存储于服务器中的存储器中,以便于处理器调用执行以上各个模块对应的操作。该处理器可以为中央处理单元(CPU)、微处理器、单片机等。
在一个实施例中,提供了一种服务器,如图7所示,该服务器包括通过系统总线连接的处理器、存储器和网络接口。其中,该处理器用于提供计算和控制能力,支撑整个计算机设备的运行。存储器用于存储数据、指令代码等。存储器上存储至少一个计算机可执行指令,该计算机可执行指令可被处理器执行,以实现本申请实施例中提供的适用于服务器的虚拟现实页面的生成方法。存储器可包括磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random-Access-Memory,RAM)等。例如,在一个实施例中,存储器包括非易失性存储介质及内存储器。该非易失性存储介质存储有操作系统、数据库和计算机可执行指令。该数据库中存储有用于实现以上各个实施例所提供的一种虚拟现实页面的生成方法相关的数据,比如可存储接收到的三维图像数据、运行指令及场景跳转指令等数据及用户行为数据。该计算机可执行指令可被处理器所执行,以用于实现以上各个实施例所提供的一种虚拟现实页面的生成方法。该内存储器为非易失性存储介质中的操作系统、数据库和计算机可执行指令提供高速缓存的运行环境。网络接口可以是以太网卡或无线网卡等,用于与外部的终端或计算机设备进行通信,如将生成包括虚拟现实页面的数据包发送至用户终端。该服务器可由独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,处理器执行计算机程序时实现以下步骤:接收三维图像数据;对三维图像数据进行场景分离处理,根据分离出的相同场景的三维图像数据生成对应的场景文件;获取预设的公用文件、初始化文件及跳转组件,其中公用文件用于添加虚拟现实组件,初始化文件用于初始化虚拟现实组件,跳转组件用于实现场景跳转;获取公用文件、初始化文件、跳转组件及多个场景文件之间的预设的引用关系;根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包。
在一个实施例中,根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包的步骤,包括:对公用文件、初始化文件及跳转组件进行备份;根据引用关系对每个场景文件和备份的公用文件、初始化文件及跳转组件进行整合压缩,生成包括虚拟现实页面的数据包。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收对虚拟现实页面的运行指令;响应运行指令,根据公用文件在虚拟现实页面添加虚拟现实组件;根据初始化文件初始化虚拟现实组件;根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件,其中,第一场景文件为多个场景文件中的一个。
在一个实施例中,根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件之后,处理器执行计算机程序时还实现以下步骤:接收场景跳转指令,场景跳转指令携带了第二场景文件的路径,其中第二场景文件为多个场景文件中与第一场景文件不同的一个;根据第二场景文件的路径,调用跳转组件获取第二场景文件;将虚拟现实页面加载的第一场景文件替换为第二场景文件。
在一个实施例中,虚拟现实组件包括虚拟相机、渲染器及分屏器。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收三维图像数据;对三维图像数据进行场景分离处理,根据分离出的相同场景的三维图像数据生成对应的场景文件;获取预设的公用文件、初始化文件及跳转组件,其中公用文件用于添加虚拟现实组件,初始化文件用于初始化虚拟现实组件,跳转组件用于实现场景跳转;获取公用文件、初始化文件、跳转组件及多个场景文件之间的预设的引用关系;根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包。
在一个实施例中,根据引用关系对公用文件、初始化文件、跳转组件及多个场景文件进行整合压缩,生成包括虚拟现实页面的数据包的步骤,包括:对公用文件、初始化文件及跳转组件进行备份;根据引用关系对每个场景文件和备份的公用文件、初始化文件及跳转组件进行整合压缩,生成包括虚拟现实页面的数据包。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收对虚拟现实页面的运行指令;响应运行指令,根据公用文件在虚拟现实页面添加虚拟现实组件;根据初始化文件初始化虚拟现实组件;根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件,其中,第一场景文件为多个场景文件中的一个。
在一个实施例中,根据初始化后的虚拟现实组件,在虚拟现实页面加载第一场景文件之后,计算机程序被处理器执行时还实现以下步骤:接收场景跳转指令,场景跳转指令携带了第二场景文件的路径,其中第二场景文件为多个场景文件中与第一场景文件不同的一个;根据第二场景文件的路径,调用跳转组件获取第二场景文件;将虚拟现实页面加载的第一场景文件替换为第二场景文件。
在一个实施例中,虚拟现实组件包括虚拟相机、渲染器及分屏器。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。