虚幻引擎和Three.js引擎交互一致的方法、装置、介质和设备转让专利

申请号 : CN202111242579.9

文献号 : CN113918863B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄正雨李鉴吴俊华何志强董伟井刚

申请人 : 北京优锘科技有限公司

摘要 :

本发明涉及一种虚幻引擎和Three.js引擎交互一致的方法,包括:将Unreal Engine中摄像机组件和场景组件封装成摄像机适配器类;在Unreal Engine中引入插件使其支持JavaScript脚本,并模拟一个HTML的Document节点对Unreal Engine事件进行封装;初始化摄像机组件;当Unreal Engine接收到传递过来的鼠标键盘消息,通过输入组件将Unreal Engine事件回调到JavaScript中;JavaScript中将Unreal Engine事件传递到摄像机组件中;摄像机组件处理和响应鼠标键盘事件;设置Unreal Engine中摄像机的位置和旋转角度。本发明可以使Unreal Engine和Three.js场景中鼠标和键盘的操作行为一致。本发明还涉及一种虚幻引擎和Three.js引擎交互一致的装置、介质和设备。

权利要求 :

1.一种虚幻引擎和Three.js引擎交互一致的方法,其特征在于,所述方法包括如下步骤:将Unreal Engine中摄像机组件OrbitControls和场景组件封装成摄像机适配器类;

在Unreal Engine中引入插件使其支持JavaScript脚本,在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装;

在JavaScript中通过所述摄像机适配器类初始化摄像机组件OrbitControls;

当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript中;

JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件OrbitControls中;

摄像机组件OrbitControls处理和响应鼠标键盘事件;

通过模拟的Document节点设置UnrealEngine中摄像机的位置和旋转角度;

所述当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript包括:通过鼠标键盘输入组件,监听Unreal Engine事件;

将UnrealEngine中事件的名称与JavaScript中事件的名称一一对应;

将Unreal Engine事件通知到模拟的Document节点中;

所述JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件OrbitControls中包括:通过模拟的Document节点接收Unreal Engine事件;

将Unreal Engine中的事件类型映射成为HTML中的事件类型;

将Unreal Engine事件通知到摄像机组件OrbitControls中。

2.根据权利要求1所述的虚幻引擎和Three.js引擎交互一致的方法,其特征在于,所述将Unreal Engine中摄像机组件OrbitControls和场景组件封装成摄像机适配器类包括:将Unreal Engine中摄像机组件OrbitControls和场景组件的接口封装成摄像机组件OrbitControls中的摄像机类。

3.根据权利要求1所述的虚幻引擎和Three.js引擎交互一致的方法,其特征在于,所述在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装包括:通过模拟的Document节点获取Unreal Engine的窗口大小;

通过模拟的Document节点设置监听事件接口。

4.根据权利要求1所述的虚幻引擎和Three.js引擎交互一致的方法,其特征在于,所述在JavaScript中通过所述摄像机适配器类初始化摄像机组件OrbitControls包括:将摄像机适配器类和Document节点作为参数初始化摄像机组件OrbitControls;

开启JavaScript中的计时器,定时调用摄像机组件OrbitControls中的更新接口。

5.根据权利要求1所述的虚幻引擎和Three.js引擎交互一致的方法,其特征在于,所述摄像机组件OrbitControls处理和响应鼠标键盘事件包括:通过模拟的Document节点 的接口监听UnrealEngine的鼠标键盘、更新事件;

接收并处理Document节点的UnrealEngine事件,计算得出摄像机的位置和朝向信息;

通过所述摄像机适配器类设置UnrealEngine中的摄像机的位置和朝向。

6.一种虚幻引擎和Three.js引擎交互一致的装置,其特征在于,所述装置包括:封装模块,用于将Unreal Engine中摄像机组件OrbitControls和场景组件封装成摄像机适配器类;

模拟节点模块,用于在Unreal Engine中引入插件使其支持JavaScript脚本,在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装;

初始化模块,用于在JavaScript中通过所述摄像机适配器类初始化摄像机组件OrbitControls;

交互模块,用于当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript中;

事件传递模块,用于在JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件OrbitControls中;

响应模块,用于摄像机组件OrbitControls处理和响应鼠标键盘事件;

设置模块,用于通过模拟的Document节点设置Unreal Engine中摄像机的位置和旋转角度;

所述交互模块具体用于:

通过鼠标键盘输入组件,监听Unreal Engine事件;

将UnrealEngine中事件的名称与JavaScript中事件的名称一一对应;

将Unreal Engine事件通知到模拟的Document节点中;

所述事件传递模块具体用于:

通过模拟的Document节点接收Unreal Engine事件;

将Unreal Engine中的事件类型映射成为HTML中的事件类型;

将Unreal Engine事件通知到摄像机组件OrbitControls中。

7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1‑5中任意一项所述的虚幻引擎和Three.js引擎交互一致的方法中的步骤。

8.一种虚幻引擎和Three.js引擎交互一致的设备,其特征在于,包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如权利要求1‑5中任意一项所述的虚幻引擎和Three.js引擎交互一致的方法中的步骤。

说明书 :

虚幻引擎和Three.js引擎交互一致的方法、装置、介质和设备

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种虚幻引擎和Three.js引擎交互一致的方法、装置、存储介质和设备。

背景技术

[0002] Unreal Engine虚幻引擎可以使用PixelStreaming(像素流)技术将场景投射到Web浏览器上,Three.js也可以在Web浏览器上进行渲染,所以有时页面上会同时存在Unreal Engine云渲染场景和Three.js的场景,这时就存在两个引擎鼠标键盘操作行为不一致的情况,给用户带来困惑。

发明内容

[0003] 本发明所要解决的技术问题是针对现有技术的不足,提供一种虚幻引擎和Three.js引擎交互一致的方法、装置、存储介质和设备。
[0004] 本发明解决上述技术问题的技术方案如下:
[0005] 一种虚幻引擎和Three.js引擎交互一致的方法,所述方法包括如下步骤:
[0006] 将Unreal Engine中摄像机组件和场景组件封装成摄像机适配器类;
[0007] 在Unreal Engine中引入插件使其支持JavaScript脚本,在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装;
[0008] 在JavaScript中通过所述摄像机适配器类初始化摄像机组件;
[0009] 当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript中;
[0010] JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件中;
[0011] 摄像机组件处理和响应鼠标键盘事件;
[0012] 通过模拟的Document节点设置UnrealEngine中摄像机的位置和旋转角度。
[0013] 进一步地,所述将Unreal Engine中摄像机组件和场景组件封装成摄像机适配器类包括:
[0014] 将Unreal Engine中摄像机组件和场景组件的接口封装成摄像机组件中的摄像机类。
[0015] 进一步地,所述在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装包括:
[0016] 通过模拟的Document节点获取Unreal Engine的窗口大小;
[0017] 通过模拟的Document节点设置监听Document事件的接口。
[0018] 进一步地,所述在JavaScript中通过所述摄像机适配器类初始化摄像机组件包括:
[0019] 将摄像机适配器类和Document节点作为参数初始化摄像机组件;
[0020] 开启JavaScript中的计时器,定时调用摄像机组件中的更新接口。
[0021] 进一步地,所述当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript中包括:
[0022] 通过鼠标键盘输入组件,监听Unreal Engine事件;
[0023] 将UnrealEngine中事件的名称与JavaScript中事件的名称一一对应;
[0024] 将Unreal Engine事件通知到模拟的Document节点中。
[0025] 进一步地,所述JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件中包括:
[0026] 通过模拟的Document节点接收Unreal Engine事件;
[0027] 将Unreal Engine中的事件类型映射成为HTML中的事件类型;
[0028] 将Unreal Engine事件通知到摄像机组件中。
[0029] 进一步地,所述摄像机组件处理和响应鼠标键盘事件包括:
[0030] 通过模拟的Document的接口监听UnrealEngine的鼠标键盘、更新事件;
[0031] 接收并处理Document节点的UnrealEngine事件,计算得出摄像机的位置和朝向信息;
[0032] 通过所述摄像机适配器类设置UnrealEngine中的摄像机的位置和朝向。
[0033] 本发明相对于现有技术具有如下有益效果:
[0034] 本发明提出了一种虚幻引擎和Three.js引擎交互一致的方法,能使虚幻引擎Unreal Engine引擎中使用摄像机组件OrbitControls进而使UnrealEngine和Three.js场景中鼠标和键盘的操作行为一致,在两个场景切换时,用户不会有明显的感觉,也省去了用户的学习成本。以及,几乎不修改摄像机组件OrbitControls的接口与代码,使以后升级OrbitControls变得容易。
[0035] 本发明还解决上述技术问题的另一种技术方案如下:
[0036] 一种虚幻引擎和Three.js引擎交互一致的装置,所述装置包括:
[0037] 封装模块,用于将Unreal Engine中摄像机组件和场景组件封装成摄像机适配器类;
[0038] 模拟节点模块,用于在Unreal Engine中引入插件使其支持JavaScript脚本,在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装;
[0039] 初始化模块,用于在JavaScript中通过所述摄像机适配器类初始化摄像机组件;
[0040] 交互模块,用于当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript中;
[0041] 事件传递模块,用于在JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件中;
[0042] 响应模块,用于摄像机组件处理和响应鼠标键盘事件;
[0043] 设置模块,用于通过模拟的Document节点设置UnrealEngine中摄像机的位置和旋转角度。
[0044] 此外,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述技术方案中任意一项所述的虚幻引擎和Three.js引擎交互一致的方法中的步骤。
[0045] 本发明还提供一种虚幻引擎和Three.js引擎交互一致的设备,包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如上述技术方案中任意一项所述的虚幻引擎和Three.js引擎交互一致的方法中的步骤。
[0046] 本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。

附图说明

[0047] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0048] 图1为本发明实施例所述的一种虚幻引擎和Three.js引擎交互一致的方法的流程示意图;
[0049] 图2为本发明另一实施例所述的一种虚幻引擎和Three.js引擎交互一致的装置的模块示意图。

具体实施方式

[0050] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0051] Three.js中用来响应鼠标和键盘事件的组件是摄像机组件(OrbitControls),通过响应鼠标键盘事件,来控制摄像机的移动。
[0052] 如图1所示,一种虚幻引擎(Unreal Engine)和Three.js引擎交互一致的方法包括以下步骤:
[0053] 110、将Unreal Engine中摄像机组件(OrbitControls)和场景组件封装成摄像机适配器类;
[0054] 120、在Unreal Engine中引入插件使其支持JavaScript脚本,在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装;
[0055] 130、在JavaScript中通过所述摄像机适配器类初始化摄像机组件(OrbitControls);
[0056] 140、当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript中;
[0057] 150、JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件(OrbitControls)中;
[0058] 160、摄像机组件(OrbitControls)处理和响应鼠标键盘事件;
[0059] 170、通过模拟的Document节点设置Unreal Engine中摄像机的位置和旋转角度。
[0060] 其中,修改OrbitControls中的update函数,具体将其中的设置摄像机位置的接口修改成通过摄像机适配器(CameraAdapter)接口设置摄像机的位置,最终达到设置Unreal Engine中摄像机位置和旋转角度的目的。
[0061] 上述Unreal Engine引擎引入插件使其支持JavaScript脚本。具体是将Unreal Engine引擎和Node.js引擎结合,并将接口导出给JavaScript,供JavaScript调用,该技术为现有技术,在专利(申请号:202110705239.9)中已经公开,在此不再详述。
[0062] 本发明中导出Unreal  Engine中的摄像机组件(OrbitControls)类(CameraComponent)和场景组件类(SceneComponent),并统一成摄像机类,用来控制Unreal Engine中的摄像机,包含以下接口:
[0063] FieldOfView:获取或设置当前摄像机的Field Of View(视角);
[0064] GetMatrixWithScale:获取摄像机所在空间位置信息的矩阵信息;
[0065] GetWorldLocation/SetWorldLocation: 获取设置摄像机的全局位置;
[0066] GetWorldRotation/SetWorldRotation: 获取设置摄像机的旋转信息;
[0067] GetUpVector: 获取摄像机向上的向量;
[0068] GetProjectionMode:当前是正交投影还是透视投影。
[0069] 其中,由于Unreal Engine和OrbitControls的坐标系统与单位不一样,所以和坐标相关的接口需要转换坐标系与参数单位。接口包括如下:GetMatrixWithScale、GetWorldLocation、SetWorldLocation、GetWorldRotation、SetWorldRotation、GetUpVector。
[0070] 基于上述实施例,进一步地,步骤110中将Unreal  Engine中摄像机组件(OrbitControls)和场景组件封装成摄像机适配器类包括:
[0071] 将Unreal Engine中摄像机组件(OrbitControls)和场景组件的接口封装成摄像机组件(OrbitControls)中的摄像机类,使摄像机组件(OrbitControls)能通过摄像机适配器类获取和设置Unreal Engine中摄像机的位置、旋转、视野等信息。
[0072] 基于上述实施例,进一步地,步骤120中所述在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装包括:
[0073] 121、通过模拟的Document节点获取Unreal Engine的窗口大小;
[0074] 122、通过模拟的Document节点设置监听事件接口,所述监听事件包括鼠标、键盘、窗口大小更新、渲染等事件。
[0075] 其中,Document接口:
[0076] clientHeight:获取渲染Unreal Engine窗口的高度;
[0077] clientWidth:获取渲染Unreal Engine窗口的宽度;
[0078] focus:设置焦点到Unreal Engine窗口;
[0079] ownerDocument:直接返回当前节点;
[0080] addEventListener:添加监听事件;
[0081] removeEventListener:移除监听事件。
[0082] Document事件:
[0083] resize Event:Unreal Engine窗口改变大小的时候触发;
[0084] update Event:Unreal Engine每次渲染的时候触发,用来支持摄像机组件(OrbitControls)的阻尼效果。
[0085] 基于上述实施例,进一步地,步骤130中所述在JavaScript中通过所述摄像机适配器类初始化摄像机组件(OrbitControls)包括:
[0086] 131、将摄像机适配器类和Document节点作为参数初始化摄像机组件(OrbitControls);
[0087] 132、开启JavaScript中的计时器,定时调用摄像机组件(OrbitControls)中的更新接口,使摄像机组件(OrbitControls)支持操作的阻尼效果。
[0088] 基于上述实施例,进一步地,步骤140中所述当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript中包括:
[0089] 141、通过鼠标键盘输入组件,监听Unreal Engine事件;
[0090] 142、将Unreal Engine中事件的名称与JavaScript中事件的名称一一对应;
[0091] 143、将Unreal Engine事件通知到模拟的Document节点中。
[0092] 基于上述实施例,进一步地,步骤150中所述JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件(OrbitControls)中包括:
[0093] 151、通过模拟的Document节点接收Unreal Engine事件;
[0094] 152、将Unreal Engine中的事件类型映射成为HTML中的事件类型;
[0095] 153、将Unreal Engine事件通知到摄像机组件(OrbitControls)中。
[0096] 基于上述实施例,进一步地,步骤160中所述摄像机组件(OrbitControls)处理和响应鼠标键盘事件包括:
[0097] 161、通过模拟的Document的接口监听Unreal Engine的鼠标键盘、更新事件;
[0098] 162、接收并处理Document节点的Unreal Engine事件,计算得出摄像机的位置和朝向信息;
[0099] 163、通过所述摄像机适配器类设置Unreal Engine中的摄像机的位置和朝向。
[0100] 鼠标键盘事件包括如下:
[0101] keydown:键盘按下事件;
[0102] keyup:键盘抬起事件;
[0103] wheel:鼠标滚轮滚动事件;
[0104] mousedown:鼠标按下事件;
[0105] mouseup:鼠标抬起事件;
[0106] click:鼠标左键点击事件;
[0107] dblclick:鼠标左键双击事件;
[0108] mousemove:鼠标移动事件;
[0109] mouseenter:鼠标进入Unreal Engine窗口事件;
[0110] mouseleave:鼠标移出Unreal Engine 窗口事件;
[0111] pointerdown:鼠标按下事件;
[0112] pointerup:鼠标抬起事件;
[0113] pointermove:鼠标移动事件。
[0114] 基于上述实施例,进一步地,步骤170中通过模拟的Document节点设置UnrealEngine中摄像机的位置和旋转角度具体包括:
[0115] 171、将摄像机组件(OrbitControls)OrbitControls中传递过来的数据类型Vector3转换成Unreal Engine中的Vector3;
[0116] 172、对参数坐标系进行转换,将OrbitControls中的右手坐标系转换成UnrealEngine的左手坐标系;
[0117] 173、对参数的单位进行转换。
[0118] 本发明中引入Three.js中OrbitControls.js相关的脚本文件:Vector2.js、Vector3.js、Vector4.js、Spherical.js、Quaternion.js、OrbitControls.js、Matrix4.js、MathUtils.js。将原有代码中import引入代码依赖的方式,修改成nodejs的require引入方式。
[0119] 上述步骤172中具体包括:
[0120] 摄像机组件(OrbitControls)中的右手坐标系与UnrealEngine的左手坐标系相互转换。
[0121] 其中,位置和朝向坐标系的转换:
[0122] OrbitControls坐标系转UnrealEngine坐标系:
[0123] X → Y Y → Z Z → ‑X
[0124] UnrealEngine坐标系转OribitControls坐标系:
[0125] X → ‑Z Y → X Z → Y
[0126] 上述步骤173中对参数的单位进行转换具体包括:
[0127] OrbitControls单位是米,Unreal Engine单位是厘米,所以OrbitControls单位转换成Unreal Engine单位需要乘以100,Unreal Engine单位转换成OrbitControls单位需要除以100。
[0128] 本发明相对于现有技术具有如下有益效果:
[0129] 本发明提出了一种虚幻引擎和Three.js引擎交互一致的方法,能使虚幻引擎Unreal Engine引擎中使用摄像机组件(OrbitControls)进而使Unreal Engine和Three.js场景中鼠标和键盘的操作行为一致,在两个场景切换时,用户不会有明显的感觉,也省去了用户的学习成本。以及,几乎不修改摄像机组件(OrbitControls)的接口与代码,使以后升级摄像机组件(OrbitControls)变得容易。
[0130] 如图2所示,一种虚幻引擎和Three.js引擎交互一致的装置包括:
[0131] 封装模块,用于将Unreal Engine中摄像机组件(OrbitControls)和场景组件封装成摄像机适配器类;
[0132] 模拟节点模块,用于在Unreal Engine中引入插件使其支持JavaScript脚本,在JavaScript中模拟一个HTML的Document节点对Unreal Engine事件进行封装;
[0133] 初始化模块,用于在JavaScript中通过所述摄像机适配器类初始化摄像机组件(OrbitControls);
[0134] 交互模块,用于当Unreal Engine接收到本地或者像素流插件传递过来的鼠标键盘消息,通过鼠标键盘输入组件,将Unreal Engine事件回调到JavaScript中;
[0135] 事件传递模块,用于在JavaScript中通过模拟的Document节点将Unreal Engine事件传递到摄像机组件(OrbitControls)中;
[0136] 响应模块,用于摄像机组件(OrbitControls)处理和响应鼠标键盘事件;
[0137] 设置模块,用于通过模拟的Document节点设置Unreal Engine中摄像机的位置和旋转角度。
[0138] 本发明中摄像机适配器(CameraAdapter):封装Unreal  Engine中CameraComponent(摄像机组件)与SceneComponent(场景组件)的接口,模拟OrbitControls需要的摄像机接口,供摄像机组件(OrbitControls)调用,具体包含以下接口:
[0139] position:对应Unreal  Engine的摄像机接口:GetWorldLocation或SetWorldLocation;
[0140] quaternion:对应Unreal Engine的摄像机接口:GetWorldRotation或SetWorldRotation;
[0141] up:对应Unreal Engine的接口GetUpVector;
[0142] matrix:对应UnrealEngine的接口GetMatrixWithScale;
[0143] fov:对应UnrealEngine的接口FieldOfView;
[0144] isPerspectiveCamera:对应UnrealEngine的接口GetProjectionMode;
[0145] lookAt:根据自身位置和目标位置,计算摄像机的旋转角度,然后通过UnrealEngine的接口SetWorldRotation,设置摄影机的朝向。
[0146] 本发明中OrbitControls适配器(OrbitControlsAdapter):用于封装OrbitControls.js以实现对OrbitControls的初始参数设置和运行时的控制,实现以下接口:
[0147] getZoomSpeed/setZoomSpeed:获取和设置ObritControls的缩放速度;
[0148] getRotateSpeed/setRotateSpeed:获取和设置OrbitControls的旋转速度;
[0149] getPanSpeed/setPanSpeed: 获取和设置OrbitControls的平移速度;
[0150] getTargetPosition/setTargetPosition:获取和设置OrbitControls中摄像机目标位置。
[0151] 本发明中可以修改OrbitControls中的update函数,将其中设置摄像机位置的接口修改成通过CameraAdapter(摄像机适配器)接口设置摄像机的位置,最终达到设置Unreal Engine中摄像机位置和旋转的目的。
[0152] 本发明能够实现Unreal Engine和Three.js交互操作行为的统一;便于扩展,同理Unreal Engine也能使用Three.js中其他的摄像机控制组件;几乎不修改摄像机组件(OrbitControls)的接口与代码,使以后升级摄像机组件(OrbitControls)变得容易。
[0153] 此外,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述技术方案中任意一项所述的虚幻引擎和Three.js引擎交互一致的方法中的步骤。
[0154] 本发明还提供一种虚幻引擎和Three.js引擎交互一致的设备,包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如上述技术方案中任意一项所述的虚幻引擎和Three.js引擎交互一致的方法中的步骤。
[0155] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0156] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0157] 在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0158] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0159] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0160] 所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0161] 基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM, Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
[0162] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
[0163] 以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。