一种在三维客户端中嵌入浏览器的方法和系统的制作方法

文档序号:6331595阅读:103来源:国知局
专利名称:一种在三维客户端中嵌入浏览器的方法和系统的制作方法
技术领域
本发明涉及互联网和虚拟现实(VR,Virtual Reality)软件设计技术,尤其涉及一 种在三维(3D)客户端中嵌入浏览器的方法和系统。
背景技术
虚拟现实是利用计算机生成一种模拟环境,通过多种传感设备使用户“沉浸”到该 环境中,实现用户与该环境直接进行自然交互的技术。这里所谓模拟环境就是计算机生成 的具有色彩的立体图形,它可以是某特定现实世界的真实体现,也可以是纯粹的构想的虚 拟世界。同时,它还是一种全新的人机交互系统,它能对使用者(介入者)产生各种感官刺 激,如听觉、视觉、触觉等,给人以身临其境的感觉,使人能以自然的方式与计算机生成的环 境进行交互操作。随着互联网技术的发展,用户对网络体验的要求越来越高,而三维虚拟现实技术 以其高度逼真的仿真技术,能够给使用客户端的用户提供身临其境的沉浸式体验。由于目 前三维虚拟现实技术尚处于发展和应用的初级阶段,技术开发难度较大,因而离直接应用 还有很大一段距离,因此,虚拟现实技术作为当前互联网从二维(2D)向三维演进的主要载 体,以期其能够广泛应用于游戏娱乐、社交互动、虚拟城市、电子商务、国防军事等诸多领 域。由于目前三维虚拟现实技术尚处于发展和应用的初级阶段,技术开发难度较大, 因而现有三维虚拟现实的内容(场景、模型、贴图)与二维web的相比还是很缺乏的,在三 维环境下承载的应用也远远达不到现有二维web应用环境下的深度和广度。而如果利用三 维虚拟技术重新开发现有的二维web应用,必然会给相关企业带来昂贵的开发成本,也很 在短期难到达现有二维web环境下应用的成熟度。

发明内容
有鉴于此,本发明的主要目的在于提供一种在三维(3D)客户端中嵌入浏览器的 方法和系统,在三维虚拟现实环境中无缝地嵌入二维web应用,并使三维客户端环境兼容 二维web应用,使其作为发展三维虚拟现实的一种现实和有效的实现途径。本发明的另一个目的在于提供一种在三维(3D)客户端中嵌入浏览器的方法和系 统,以利用三维场景和二维web服务之间的通信机制,保证三维场景和二维web应用中数据 的交互性和一致性。为达到上述目的,本发明的技术方案是这样实现的一种在三维(3D)客户端中嵌入浏览器的方法,该方法包括如下步骤A、用户操作3D客户端进行互动或在与所述3D客户端中的场景物体互动时,触发 并打开嵌入式浏览器;B、所述嵌入式浏览器加载指定的统一资源定位符URL的页面;C、使用该浏览器的JavaScript脚本程序向所述3D客户端注册相关事件回调函数;D、然后利用所述JavaScript脚本程序调用3D客户端的各种功能;E、所述3D客户端发送事件到浏览器,然后复制该嵌入浏览器的渲染结果到3D纹
理并显示。其中,步骤A所述打开嵌入浏览器是通过点击3D场景中的物体、人物或3D客户端 中的按钮、菜单位置触发的。所述步骤B进一步包括将与所述3D应用紧密相关的2D web应用页面打包在所 述客户端中,并在该web应用页面进行防篡改设置和对HTTP请求进行访问限制。步骤C所述向所述3D客户端注册相关事件回调函数,具体为借助嵌入浏览器内核 状态参数变化的桥接方式,实现页面中JavaScript脚本程序与3D客户端C++接口的消息 通信和回调。所述借助嵌入浏览器内核状态参数变化的桥接方式实现页面中JavaScript脚本 程序与3D客户端C++接口的消息通信和回调,具体为在每次每次web页面JavaScript脚本与C++接口进行消息通信时,JavaScript 脚本根据不同的消息类型,改变嵌入浏览器内核状态status ;通过在3D客户端C++接口中 实现嵌入浏览器内核回调函数onStatusChange,然后根据不同的传入参数,分派到相应的 C++ 接口。其中,步骤D所述调用3D客户端的各种功能具体包括控制人物运动和做动作、控 制场景变化、控制模型变化、控制3D客户端窗口变化和消息转发。选用JSON字符串作为控制参数来实现JavaScript脚本程序到C++接口的消息传 递。一种在三维客户端中嵌入浏览器的系统,该系统主要包括嵌入式浏览器、浏览器 接口模块、图形用户接口模块和图形绘制模块;或者,嵌入式浏览器、浏览器接口模块、纹理 资源管理模块和纹理输出模块;其中嵌入式浏览器,用于在3D客户端场景中显示2D web内容;浏览器接口模块,用于所述浏览器中的状态参数发生变化时,回调客户端C++接 口函数;同时在客户端C++接口需要控制2D页面文档对象模型属性时,调用所述浏览器的 接口,完成与2D页面的通信和交互;图形用户接口模块,用于为三维客户端中包含的图形用户函数提供接口 ;图形绘制模块,用于在三维客户端中直接绘制2D页面并返回结果;纹理资源管理模块,用于为三维客户端中包含的纹理资源管理的函数提供接口 ;纹理输出模块,用于在三维客户端中以纹理的形式输出2D页面并返回结果。其中,所述嵌入式浏览器进一步包括交互控制脚本模块,具有JavaScript脚本接口,用于异步调用嵌入浏览器核心模 块,以实现与客户端C++接口通信的目的;嵌入浏览器核心模块,用于作为嵌入浏览器内核的功能模块,连接所述浏览器接 口模块与所述嵌入浏览器。所述嵌入式浏览器进一步包括2D页面内容模块,用以加快页面的加载速度。本发明所提供的在三维客户端中嵌入浏览器的方法和系统,具有以下优点
通过上述技术方案,本发明通过在三维客户端环境中嵌入浏览器,同时提供三维 场景和二维web服务之间的通信机制,保证三维场景和二维web应用数据交互和数据一致, 使得在三维环境中无缝的集成web应用成为现实,很好地丰富了三维客户端环境中的信息 源,提高了用户使用三维客户端的体验感。采用本发明所述的方法和系统,可以有效的使2D web应用无缝的嵌入到3D虚拟现实的客户端,丰富3D虚拟世界的应用范围,降低开发3D虚 拟现实应用的成本。


图1为本发明在三维客户端中嵌入浏览器的方法流程图;图2为本发明在三维客户端中的嵌入浏览器的应用场景示意图一;图3为本发明在三维客户端中的嵌入浏览器的应用场景示意图二 ;图4为在本发明图1所述的方法中实现2D web页面事件控制3D客户端场景中人 物移动的过程示意图;图5为在本发明图1所述的方法中实现3D客户端控制2D web页面DOM属性的过 程示意图;图6为本发明三维客户端中嵌入浏览器的系统的功能结构示意图。
具体实施例方式下面结合附图及本发明的实施例对本发明的方法作进一步详细的说明。图1为本发明在三维客户端中嵌入浏览器的方法流程图,如图1所示,该方法包 括步骤101、用户操作三维(3D)客户端进行互动时(或在与所述3D客户端中的3D 场景物体互动时),通过点击3D场景中的物体、人物或3D客户端窗口中的按钮、菜单等位 置,触发并打开嵌入浏览器的窗口。步骤102、使该浏览器加载指定的统一资源定位器符(URL)的页面。优选地,为加快2D web页面的加载速度,还可在该步骤中将与所述3D应用紧密相 关的2D web应用页面打包在客户端软件中;作为可选功能,还可以对放置在客户端软件的 相应的web页面进行防篡改设置和对超文本传输协议(HTTP)请求进行访问域限制,目的是 限制对后台服务器系统功能接口的非法访问以及恶意攻击。对于web页面进行防篡改设置 和对HTTP请求进行访问域限制与现有技术相同,这里不再详述。步骤103、使用该浏览器内的JavaScript脚本程序向所述3D客户端注册相关事件 回调函数。优选地,在该步骤中还可提供一种借助嵌入浏览器内核状态参数变化的桥接方 式,以实现页面中JavaScript脚本程序与3D客户端C++接口的消息通信和回调。这里,3D客户端中需要注册回调函数的事件,包括人物运动、动作、场景变化、模型 变化以及与3D窗口相关的属性变化,如窗口打开、关闭、显示、隐藏、最大化、最小化、窗口 标题、状态和消息等。步骤104、利用所述浏览器内的JavaScript脚本程序调用3D客户端的各种功能。所述的调用3D客户端的功能,包括控制人物运动和做动作、控制场景变化、控制模型变化、控制3D客户端窗口变化和消息转发等。优选地,在该步骤中,还可选用JSON字符串作为控制参数,以实现JavaScript脚 本程序到C++接口的消息传递。这里,所述的JSON (JavaScript Object Notation),是一种轻量级的资料交换语 言,其以文字为基础,易于让人阅读。JSON是JavaScript的一个子集,但JSON是独立于语 言的文本格式,并且采用了类似于C语言家族的一些习惯。步骤105、3D客户端发送事件到浏览器,并复制嵌入浏览器渲染结果到3D纹理并 显示(或者直接图形输出显示)。图2为本发明在三维客户端中的嵌入浏览器的应用场景示意图一、图3为本发明 在三维客户端中的嵌入浏览器的应用场景示意图二 ;其中所述图2和图3是本发明实施例 所提供的方法应用的一个场景的变化前后的状态图。下面结合图2和图3对本发明实施例 所提供的方法进行详细的描述如图2中所示的3D客户端场景中,包含人物(avatar) A和人物B以及一个物体C, 当用户通过2D web页面控制3D场景中人物A的移动时,向该场景中的人物B发送消息,以 及改变场景中的物体C的纹理贴图。当用户在3D客户端场景中,通过右键点击化身A,打开 功能菜单,选择打开嵌入浏览器窗口,由该窗口载入2D web页面。如图所示,其中web页面 中包括四个HTML按钮,分别是按钮“移动”,控制人物A从位置(1000,0,1000)移动到位置 (796,0,796);按钮“跳舞”,控制人物A执行跳舞动作;按钮“发送”,能把用户在输入框中输 入的内容发送给人物B ;按钮“换纹理”,控制场景中的物体C更换纹理贴图。这里,执行所述步骤103时,通过所述借助嵌入浏览器内核状态参数变化的桥接 方式,实现页面中JavaScript脚本与3D客户端C++接口的消息通信和回调。如图4所示, 在每次web页面JavaScript脚本与C++接口进行消息通信时,JavaScript脚本根据不同的 消息类型,改变嵌入浏览器内核状态status ;通过在3D客户端C++接口中实现嵌入浏览器
内核回调函数onStatusChange,然后根据不同的传入参数(status),分派到相应的C++接□。这里,在执行所述步骤104时(参考图2场景),通过点击2D web页面中的HTML 按钮“移动”,控制3D场景中的人物A从位置(1000,0,1000)移动到位置(796,0,796),实 现的过程如图4所示。2D web页面所包含的JavaScript脚本把控制3D场景中的人物从位置(1000,0, 1000)移动到位置(796,0,796)转化为JSON字符串,赋值给嵌入浏览器的内核状态参数 status,已经注册了状态变化回调函数的3D客户端接口函数会收到参数status发生变化 的通知,就会调用相应的C++接口,解析作为参数的JSON字符串,转为位置坐标,进而控制 3D场景中的人物A从位置(1000,0,1000)移动到位置(796,0,796)。优选地,本实施例所提供的方法中选用JSON字符串作为控制参数,实现 JavaScript脚本到C++接口的消息传递。图2所示场景中作为控制人物A从位置(1000, 0,1000)移动到位置(796,0,796)参数JSON字符串如下所示{" type" :4221,“ body" :{〃 χ" 〃 796",〃 y〃 〃 0" “ ζ" 〃 796" }}这里,执行所述步骤105时,3D客户端发送事件到浏览器,并复制嵌入浏览器渲染 结果到3D纹理并显示。
仍以图2中的场景为例,当3D客户端场景的人物A从位置(1000,0,1000)移动到 位置(796,0,796)后,3D客户端发送事件到浏览器,实现在浏览器的页面中显示文字“位移 成功”,如图3所示。其具体实现过程如图5所示。在图5中,3D客户端场景中的对象调用C++接口函数,而接口函数根据在步骤103 注册的回调函数(JavaScript函数),把需要回调的JavaScript函数连同待显示的字符 串“位移成功”作为参数,传递给其调用的嵌入浏览器的内核接口,再由内核接口解析执行 JavaScript脚本函数,实现对浏览器中的2D web页面的DOM对象(HTML标签SPAN)的属性 改变,进而在HTML标签SPAN上显示字符串“位移成功”。当用户在图2所示的场景中,通过点击2D web页面中的HTML按钮“跳舞”,由2D web页面所包含的JavaScript脚本将控制3D场景中的人物做“跳舞”动作转化为JSON字 符串,并赋值给嵌入浏览器的内核状态参数statUS,3D客户端接口函数会收到参数status 发生变化的通知,就会调用相应的C++接口,解析作为参数的JSON字符串,进而控制3D场 景中的人物A在原地做“跳舞”动作,如图3所示。这里,所述的图2场景中作为控制场景中人物A做“跳舞”动作参数JSON字符串 如下所示{〃 type" :4100,‘‘ body" :{〃 action" ‘‘ dancing" }}同样的流程,当用户在图2所示的场景中,在2D web页面中的输入框中输 入"Hello, How are you ?“,然后点击2D web页面中的HTML按钮“发送”,2D web页面 所包含的JavaScript脚本把在3D场景中向人物B转发消息的事件,转化为JSON字符串, 执行如图4所示的流程后,3D场景中的人物B会收到消息,然后再其旁边的浮云窗口显示消 息"Hello,How are you ?‘‘,同时会在2D web页面中HTML标签SPAN显示“消息发送成 功”,如图3所示。这里,图2所示场景中作为控制消息转发的参数JSON字符串如下所示{" type" :4310,〃 body" :{〃 from" 〃 00001",〃 to" 〃 00002",〃 mess age“ “ Hello, how are you ? “ }}同样的处理流程,如图3所示,可以控制3D场景中物体更换纹理贴图。作为控制 3D场景中物体更换纹理贴图的参数JSON字符串如下所示{" type“ :4402,“ body" :{〃 id" 〃 000000000000001",〃 mode" 〃 text ure",‘‘ src" ‘‘ asdfdafd.gif" }}由此可见,通过本发明的实施例提供的在3D客户端环境中嵌入浏览器的方法,还 能够提供一种3D客户端环境与2D web页面之间的通信机制,以实现了三维场景和二维web 应用数据交互和数据一致,从而能够把更多的2D web应用无缝的嵌入到3D虚拟世界客户 端,丰富了 3D虚拟现实技术的应用范围,降低了开发3D虚拟现实应用软件的成本。图6为本发明三维客户端中嵌入浏览器的系统的功能结构示意图,如图6所示,该 系统主要包括嵌入式浏览器60、浏览器接口模块61、图形用户接口模块62、纹理资源管理 模块63、图形绘制模块64和纹理输出模块65 ;其中嵌入浏览器60,用于在3D客户端场景中显示2D web内容。该嵌入式浏览器60 进一步包括可选的2D页面内容模块601,主要是HTML页面(里面可包括与3D环境的 交互控制的脚本代码),用以加快页面的加载速度;必选的交互控制脚本模块602,具有JavaScript脚本接口,用于异步调用嵌入浏览器核心模块603,以实现与客户端C++接口通 信的目的;嵌入浏览器核心模块603,连接所述浏览器接口模块与所述嵌入浏览器,用于作 为所述嵌入浏览器内核的功能模块。例如可以是Mozilla浏览器内核中的可扩展标记语 言用户接口 (XUL, XML User Interface Language)引擎,其作用在于扩展Mozilla浏览器 或者创建独立的应用程序。利用XUL可以极其轻松地构建跨平台浏览器扩展。客户端浏览器接口模块61,用于浏览器核心模块603状态参数发生变化时,回 调客户端C++接口函数;同时在客户端C++接口需要控制2D页面文档对象模型(D0M, Document Object Model)属性的时候,调用浏览器核心模块603的接口,完成与2D页面的 通信和交互。图形用户接口模块62,用于为三维客户端中包含的图形用户函数提供接口。纹理资源管理模块63,用于为三维客户端中包含的纹理资源管理的函数提供接 □。图形绘制模块64,用于在三维客户端中直接绘制2D页面并返回结果。纹理输出模块65,用于在三维客户端中以纹理的形式输出2D页面并返回结果。可选地,用户可以根据实际需求,选择以图形绘制形式还是以纹理输出的形式显 示2D页面返回结果,从而选择使用客户端图形用户接口模块62还是纹理资源管理接口模 块63。在实际应用中,所述的在3D客户端环境中嵌入浏览器的系统可以作为3D虚拟世 界客户端的与2D web应用的桥接的中间件模块。本发明的方法和系统,可以在由计算机执行的指令的一般上下文中描述,例如程 序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、 组件、数据结构等。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
一种在三维3D客户端中嵌入浏览器的方法,其特征在于,该方法包括如下步骤A、用户操作3D客户端进行互动或在与所述3D客户端中的场景物体互动时,触发并打开嵌入式浏览器;B、所述嵌入式浏览器加载指定的统一资源定位符URL的页面;C、使用该浏览器的JavaScript脚本程序向所述3D客户端注册相关事件回调函数;D、然后利用所述JavaScript脚本程序调用3D客户端的各种功能;E、所述3D客户端发送事件到浏览器,然后复制该嵌入浏览器的渲染结果到3D纹理并显示。
2.根据权利要求1所述的三维客户端中嵌入浏览器的方法,其特征在于,步骤A所述打 开嵌入浏览器是通过点击3D场景中的物体、人物或3D客户端中的按钮、菜单位置触发的。
3.根据权利要求1所述的三维客户端中嵌入浏览器的方法,其特征在于,所述步骤B进 一步包括将与所述3D应用紧密相关的2D web应用页面打包在所述客户端中,并在该web 应用页面进行防篡改设置和对HTTP请求进行访问限制。
4.根据权利要求1所述的三维客户端中嵌入浏览器的方法,其特征在于,步骤C所述向 所述3D客户端注册相关事件回调函数,具体为借助嵌入浏览器内核状态参数变化的桥接 方式,实现页面中JavaScript脚本程序与3D客户端C++接口的消息通信和回调。
5.根据权利要求4所述的三维客户端中嵌入浏览器的方法,其特征在于,所述借助嵌 入浏览器内核状态参数变化的桥接方式实现页面中JavaScript脚本程序与3D客户端C++ 接口的消息通信和回调,具体为在每次web页面JavaScript脚本与C++接口进行消息通信时,JavaScript脚本根据 不同的消息类型,改变嵌入浏览器内核状态status ;通过在3D客户端C++接口中实现嵌入 浏览器内核回调函数onStatusChange,然后根据不同的传入参数,分派到相应的C++接口。
6.根据权利要求1所述的三维客户端中嵌入浏览器的方法,其特征在于,步骤D所述调 用3D客户端的各种功能,具体包括控制人物运动和做动作、控制场景变化、控制模型变化、 控制3D客户端窗口变化和消息转发。
7.根据权利要求1或6所述的三维客户端中嵌入浏览器的方法,其特征在于,选用 JSON字符串作为控制参数来实现JavaScript脚本程序到C++接口的消息传递。
8.—种在三维客户端中嵌入浏览器的系统,其特征在于,该系统主要包括嵌入式浏览 器、浏览器接口模块、图形用户接口模块和图形绘制模块;或者,嵌入式浏览器、浏览器接口 模块、纹理资源管理模块和纹理输出模块;其中嵌入式浏览器,用于在3D客户端场景中显示2D web内容;浏览器接口模块,用于所述浏览器中的状态参数发生变化时,回调客户端C++接口函 数;同时在客户端C++接口需要控制2D页面文档对象模型属性时,调用所述浏览器的接口, 完成与2D页面的通信和交互;图形用户接口模块,用于为三维客户端中包含的图形用户函数提供接口 ;图形绘制模块,用于在三维客户端中直接绘制2D页面并返回结果;纹理资源管理模块,用于为三维客户端中包含的纹理资源管理的函数提供接口 ;纹理输出模块,用于在三维客户端中以纹理的形式输出2D页面并返回结果。
9.根据权利要求8所述的在三维客户端中嵌入浏览器的系统,其特征在于,所述嵌入式浏览器进一步包括交互控制脚本模块,具有JavaScript脚本接口,用于异步调用嵌入浏览器核心模块, 以实现与客户端C++接口通信的目的;嵌入浏览器核心模块,用于作为嵌入浏览器内核的功能模块,连接所述浏览器接口模 块与所述嵌入浏览器。
10.根据权利要求9所述的在三维客户端中嵌入浏览器的系统,其特征在于,所述嵌入 式浏览器进一步包括2D页面内容模块,用以加快页面的加载速度。
全文摘要
本发明公开一种三维客户端中嵌入浏览器的方法和系统,该方法包括A、用户操作三维客户端进行互动时,触发并打开嵌入式浏览器;B、浏览器加载指定的URL的页面;C、使用该浏览器的JaVaScript脚本程序向所述3D客户端注册相关事件回调函数;D、利用所述脚本程序调用3D客户端的各种功能;E、3D客户端发送事件到浏览器,再复制该浏览器渲染结果到3D纹理并显示。所述系统包括嵌入式浏览器、浏览器接口模块、图形用户接口模块/纹理资源管理接口模块以及图形绘制模块/纹理输出模块。采用本发明可有效地使2D web应用无缝嵌入到3D虚拟现实的客户端,丰富3D虚拟世界的应用范围,降低开发3D虚拟现实应用的成本。
文档编号G06T15/00GK101996077SQ20101027557
公开日2011年3月30日 申请日期2010年9月8日 优先权日2010年9月8日
发明者陶盛 申请人:海皮士(北京)网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1