CN108694073B - 虚拟场景的控制方法、装置、设备及存储介质 - Google Patents
虚拟场景的控制方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN108694073B CN108694073B CN201810448028.XA CN201810448028A CN108694073B CN 108694073 B CN108694073 B CN 108694073B CN 201810448028 A CN201810448028 A CN 201810448028A CN 108694073 B CN108694073 B CN 108694073B
- Authority
- CN
- China
- Prior art keywords
- event
- engine component
- operating system
- system simulator
- display window
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04847—Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0487—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
- G06F3/0488—Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种虚拟场景的控制方法,属于计算机应用技术领域。所述方法包括:引擎组件获取第一操作事件的操作坐标;当第一操作事件的操作坐标处于操作系统模拟器的显示窗口之外时,获取目标窗口对象;目标窗口对象是显示窗口中响应第二操作事件的窗口对象;第二操作事件是最近一次执行的,且对应的操作坐标处于显示窗口内的操作事件;根据目标窗口对象以及第一操作事件的操作类型生成场景控制事件并传递至应用逻辑层。在应用逻辑层和引擎组件基于操作系统模拟器生成并显示虚拟场景的过程中,即使用户操作超出了操作系统模拟器的显示窗口,也能够实现对虚拟场景的控制,从而提高通过操作系统模拟器的显示窗口展示的虚拟场景的交互效果。
Description
技术领域
本发明涉及计算机应用技术领域,特别涉及一种虚拟场景的控制方法、装置、设备及存储介质。
背景技术
手机等移动终端上采用引擎组件开发的应用程序,通常会发布模拟器版本,该模拟器版本的应用程序可以通过操作系统模拟器在其它平台的终端中运行。
以针对安卓系统,生成虚拟场景的应用程序在基于视窗(Windows)系统的终端中运行为例,在相关技术中,用户可以在终端中打开安卓模拟器,并通过安卓模拟器打开安卓应用程序,安卓应用程序生成的虚拟场景的场景画面在安卓模拟器的显示窗口中进行展示,用户可以通过鼠标或者触控板在模拟器的显示窗口内对虚拟场景进行控制,比如控制视角方向或者瞄准等。
然而,相关技术中的操作系统模拟器的显示窗口大小固定,且通常小于终端的显示屏幕,用户在虚拟场景中进行一系列的连续操作时,鼠标/触控板的光标位置可能会移出操作系统模拟器的显示窗口,此时应用程序不会响应鼠标/触控板的操作,影响用户与虚拟场景之间的交互的连贯性,导致虚拟场景的交互效果较差。
发明内容
为了解决相关技术中应用程序不会响应鼠标/触控板在操作系统模拟器的显示窗口之外的操作,导致虚拟场景的交互效果较差的问题,本发明实施例提供了一种虚拟场景的控制方法、装置、设备及存储介质。所述技术方案如下:
一方面,提供了一种虚拟场景的控制方法,应用于安装有应用程序以及操作系统模拟器的终端中,所述应用程序包括应用逻辑层和引擎组件,所述应用逻辑层基于所述引擎组件展示所述虚拟场景,所述操作系统模拟器用于在所述终端中模拟指定系统环境,并在模拟的所述指定系统环境中运行所述应用程序,所述方法包括:
所述引擎组件获取第一操作事件的操作坐标;
当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取目标窗口对象;所述目标窗口对象是所述显示窗口中响应第二操作事件的窗口对象;所述第二操作事件是最近一次执行的,且对应的操作坐标处于所述显示窗口内的操作事件;
所述引擎组件根据所述目标窗口对象以及所述第一操作事件的操作类型生成场景控制事件,所述场景控制事件用于指示所述应用逻辑层对所述虚拟场景执行相应的控制操作;
所述引擎组件将所述场景控制事件传递至所述应用逻辑层。
另一方面,提供了一种虚拟场景的控制装置,所述装置包括:操作系统模拟器模块、应用逻辑层模块和引擎组件模块;
所述操作系统模拟器模块用于在所述终端中模拟指定系统环境,并在模拟的所述指定系统环境中运行所述应用逻辑层模块和所述引擎组件模块;
所述应用逻辑层模块,用于基于所述引擎组件模块展示所述虚拟场景;
所述引擎组件模块,用于获取第一操作事件的操作坐标;
所述引擎组件模块,用于当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,获取目标窗口对象;所述目标窗口对象是所述显示窗口中响应第二操作事件的窗口对象;所述第二操作事件是最近一次执行的,且对应的操作坐标处于所述显示窗口内的操作事件;
所述引擎组件模块,用于根据所述目标窗口对象以及所述第一操作事件的操作类型生成场景控制事件,所述场景控制事件用于指示所述应用逻辑层模块对所述虚拟场景执行相应的控制操作;
所述引擎组件模块,用于将所述场景控制事件传递至所述应用逻辑层模块。
另一方面,提供了一种计算机设备,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述的虚拟场景的控制方法。
再一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述的虚拟场景的控制方法。
本发明实施例提供的技术方案带来的有益效果是:
当引擎组件接收到的操作事件的操作坐标处于操作系统模拟器的显示窗口之外时,引擎组件将最近一次响应在操作系统模拟器的显示窗口内执行的操作的窗口对象获取为本次操作事件的窗口对象,并基于获取到的窗口对象以及本次操作事件的操作类型生成控制事件并传递至应用逻辑层,以便应用逻辑层根据本次操作事件对虚拟场景进行控制;在应用逻辑层和引擎组件基于操作系统模拟器生成并显示虚拟场景的过程中,即使用户操作超出了操作系统模拟器的显示窗口,也能够实现对虚拟场景的控制,从而提高通过操作系统模拟器的显示窗口展示的虚拟场景的交互效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性的实施例提供的终端的结构示意图;
图2是本申请一个示例性的实施例提供的虚拟场景的场景画面示意图;
图3是本申请一示例性实施例提供的基于操作系统模拟器运行应用程序的系统结构图;
图4是本申请一个示例性实施例提供的虚拟场景的控制方法的流程图;
图5是图4所示实施例涉及的一种获取操作事件的窗口对象的流程示意图;
图6是本申请一个示例性实施例提供的虚拟场景的控制方法的流程图;
图7是本申请一个示例性实施例提供的实现虚拟场景控制的流程图;
图8是图7所示实施例涉及的一种人物角色控制示意图;
图9是图7所示实施例涉及的一种载具对象控制示意图;
图10是本申请一个示例性实施例提供的一种虚拟场景的控制装置的结构方框图;
图11是本申请一个示例性实施例提供的计算机设备的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
虚拟场景是指用计算机生成的一种虚拟的场景环境,它能够提供一个多媒体的虚拟世界,用户可通过操作设备或操作界面对虚拟场景中可操作的虚拟对象进行控制,以虚拟对象的视角观察虚拟场景中的物体、人物、风景等,或通过虚拟对象和虚拟场景中的物体、人物、风景或者其它虚拟对象等进行互动,例如,通过操作一个虚拟士兵对目标敌军进行攻击等。
虚拟场景通常由终端等计算机设备中的应用程序生成基于终端中的硬件(比如屏幕)进行展示。该终端可以是智能手机、平板电脑或者电子书阅读器等移动终端;或者,该终端也可以是笔记本电脑或者固定式计算机的个人计算机设备。
请参考图1,其示出了本申请一个示例性的实施例提供的终端的结构示意图。如图1所示,该终端包括主板110、输出/输入系统120、存储器130、外部接口140、以及电源150。
其中,主板110中集成有处理器和控制器等处理元件。
外部输出/输入系统120可以包括显示组件(比如显示屏)、声音播放组件(比如扬声器)、声音采集组件(比如麦克风)、鼠标、各类按键以及电容/电阻触控组件等。电容/电阻触控组件可以集成在外部输出/输入系统120的显示组件或者按键中,电容/电阻触控组件用于检测用户在显示组件或者按键上执行的触控操作。
存储器130中存储有程序代码和数据。
外部接口140可以包括耳机接口、充电接口以及数据接口等。
电源150用于对终端中的其它各个部件进行供电。
在本申请实施例中,主板110中的处理器可以通过执行或者调用存储器中存储的程序代码和数据生成虚拟场景,并将生成的虚拟场景通过外部输出/输入系统120进行展示。在展示虚拟场景的过程中,可以通过外部输出/输入系统120中的鼠标、各类按键以及电容/电阻触控组件检测用户与虚拟场景进行交互时执行的触控操作。
其中,虚拟场景可以是三维的虚拟场景,或者,虚拟场景也可以是二维的虚拟场景。以虚拟场景是三维的虚拟场景为例,请参考图2,其示出了本申请一个示例性的实施例提供的虚拟场景的场景画面示意图。如图1所示,虚拟场景的场景画面200包括虚拟对象210、三维的虚拟场景的环境画面220以及虚拟对象240。其中,虚拟对象210可以是终端对应用户的当前控制对象;而虚拟对象240可以是非用户控制对象,即虚拟对象240由应用程序自行控制,或者,虚拟对象240也可以是其它终端对应用户控制的虚拟对象,用户可以通过控制虚拟对象210与虚拟对象240进行交互,比如,控制虚拟对象210对虚拟对象240进行攻击。
在图2中,虚拟对象210与虚拟对象240是在三维的虚拟场景中的三维模型,在场景画面200中显示的三维的虚拟场景的环境画面为虚拟对象210的视角所观察到的物体,示例性的,如图2所示,在虚拟对象210的视角观察下,显示的三维虚拟场景的环境画面220为大地224、天空225、地平线223、小山221以及厂房222。
虚拟对象210可以在用户的控制下即时移动,比如,用户可以通过键盘、鼠标、游戏手柄等输入设备控制虚拟对象210在虚拟场景中移动(例如,以通过键盘和鼠标控制虚拟对象210移动为例,用户可以通过键盘中的W、A、S、D四个按键控制虚拟对象前后左右移动,并通过鼠标控制虚拟对象210面向的方向);或者,若终端的屏幕支持触控操作,且虚拟场景的场景画面200中包含虚拟控制按钮,则用户触控该虚拟控制按钮时,虚拟对象210可以在虚拟场景中,向触控点相对于虚拟控制按钮的中心的方向移动。
一个应用程序通常只在指定系统环境中运行。比如,基于Windows操作系统开发的应用程序只在Windows环境中运行,基于安卓(Android)系统开发的应用程序只在Android环境中运行,基于iOS系统开发的应用程序只在iOS环境中运行。当基于一种操作系统开发的应用程序在基于另一种操作系统的终端中运行时,需要在终端中安装对应的操作系统模拟器,通过操作系统模拟器在终端中模拟出应用程序所需要的系统环境,并在模拟出的系统环境中运行该应用程序。
虚拟场景对应的应用程序通常基于引擎组件进行开发。可选的,引擎组件是指已编写好的,用于交互式实时图像应用程序的核心组件。引擎组件可以为应用程序开发者提供各种编写程序所需的工具,其目的在于让应用程序开发者能够更容易和快速地做出应用程序而不用从零开始。引擎组件通常是一个由多个子系统共同构成的复杂系统,其通常包含渲染子系统、物理子系统、碰撞检测子系统、音效子系统、脚本子系统、电脑动画子系统、人工智能子系统、网络子系统以及场景管理子系统等,可以涵盖建模、动画、光影、粒子特效、物理系统、碰撞检测、文件管理、网络特性、专业的编辑工具和插件等各个方面。下面对引擎组件的一些关键子系统作一个简单的介绍。
光影效果子系统:光影效果是虚拟场景中的光源对处于其中的人和物的影响方式。虚拟场景的光影效果可以完全是由引擎组件控制,光线的折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都可以通过引擎组件的不同编程技术来实现。
动画子系统:虚拟场景所采用的动画子系统可以分为两种,一种是骨骼动画子系统,一种是模型动画子系统,前者通过内置的骨骼带动物体产生运动,后者则是在模型的基础上直接进行变形。引擎组件可以将这两种动画子系统预先植入虚拟场景,以方便开发者为角色设计丰富的动作造型。
物理子系统:物理子系统是可以使虚拟场景中的物体的运动遵循固定的规律的系统,例如,当角色跳起时,物理子系统内定的重力值将决定其能跳多高,以及下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式等也都是由物理子系统决定。
碰撞检测子系统:碰撞检测子系统是物理子系统的核心部分,其可以探测虚拟场景中各物体的物理边缘。当虚拟场景中的两个物体撞在一起的时候,碰撞检测子系统可以防止两个物体相互穿过。
渲染子系统:渲染子系统是引擎组件最重要的功能之一,当虚拟场景中的虚拟模型(比如三维模型)制作完毕之后,开发者可以按照不同的面将材质贴图赋予给模型,最后再通过渲染子系统将模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。
引擎组件还有一个重要的职责是负责用户与终端之间的沟通,处理来自键盘、鼠标、摇杆、触控组件以及其它外设的信号。当应用程序支持联网特性时,引擎组件中还会集成有网络代码,用于管理客户端与服务器之间的通信。
常见的引擎组件有虚幻引擎(Unreal Engine)、Unity引擎以及寒霜引擎等。
对于一个虚拟场景对应的应用程序来说,基于引擎组件开发的该应用程序中通常包含引擎组件以及应用逻辑层,该应用逻辑层可以基于该引擎组件展示虚拟场景。当一个基于第一操作系统的终端中安装有上述应用程序以及操作系统模拟器,且该操作系统模拟器用于模拟上述应用程序对应的第二操作系统时,该操作系统模拟器可以在模拟的第二操作系统中运行上述应用程序。当第一操作系统检测到用户在终端中的操作时,生成一个操作事件,并将生成的操作事件传递至操作系统模拟器中,由操作系统模拟器转化为应用程序中的引擎组件可识别的操作事件,比如,将鼠标点击事件转化为触屏事件,操作系统模拟器将转化获得的操作事件传递至引擎组件,引擎组件根据接收到的操作事件生成场景控制事件,并将生成场景控制事件传递给应用程序中的应用逻辑层,由应用逻辑层根据该场景控制事件对虚拟场景进行控制。
其中,上述操作事件是终端中的操作系统检测到用户操作时生成的,用于指示该用户操作的相关信息的事件,比如以在终端屏幕中执行的用户操作为例,该用户操作对应的操作事件可以指示该用户操作的操作类型以及操作点在屏幕坐标系中的坐标等。
请参考图3,其示出了本申请一示例性实施例提供的基于操作系统模拟器运行应用程序的系统结构图。如图3所示,终端中自下而上包含四个层,分别为操作系统层31、操作系统模拟器沙盒层32、引擎组件33以及应用逻辑层34,其中,引擎组件33以及应用逻辑层34由安装在终端中的应用程序提供。
其中,操作系统层31运行终端本身的操作系统。操作系统层31可以接收用户通过终端的输入组件(比如鼠标、按键以及电容/电阻触控组件等)执行的操作,生成该操作对应的操作事件(终端本身的操作系统中的操作事件1),并将生成的操作事件传递至操作系统模拟器沙盒层32。
系统模拟器沙盒层32运行操作系统模拟器,以沙盒的形式模拟出应用程序运行所需要的指定系统环境,并且,模拟出的指定系统环境与操作系统层31本身的系统环境不同。系统模拟器沙盒层32获取到操作系统层31传递过来的操作事件1之后,将该操作事件1转化为对应在指定系统环境中的操作事件(操作事件2)。比如,假设操作事件1指示的是一个用户按住鼠标左键并滑动的操作,该操作对应在指定系统环境中的操作是触摸滑动操作,则系统模拟器沙盒层32将该操作事件1转化为指示用户在屏幕中触摸滑动的操作事件2,并将转化获得的操作事件2传递至引擎组件33。
引擎组件33接收到操作事件2之后,生成操作事件2对应的控制事件,并将控制事件传递至应用逻辑层34。
在本申请实施例中,控制事件是用于指示应用程序执行对应的控制操作的事件,控制事件也可以称为控制指令、控制信号或者控制信息等。
应用逻辑层34运行时生成虚拟场景,并根据引擎组件33传递过来的控制事件执行对虚拟场景的控制操作,比如改变视角,或者控制某一虚拟对象执行某项操作等等。
在相关技术中,引擎组件33接收到操作事件2时,只在操作事件2对应的操作坐标处于操作系统模拟器的显示窗口内时,才生成操作事件2对应的控制事件。
而在本申请实施例中,可以对上述引擎组件进行改进,改进后的引擎组件(即上述引擎组件33)在接收到操作事件2后,即便该操作事件2对应的操作坐标处于操作系统模拟器的显示窗口外,也可以生成操作事件2对应的控制事件。其中,该操作事件的生成逻辑可以参考后续实施例。
请参考图4,其示出了本申请一个示例性实施例提供的虚拟场景的控制方法的流程图。本实施例以该应用程序的控制方法应用于安装有虚拟场景对应的应用程序(包含应用逻辑层和引擎组件)以及操作系统模拟器的终端中来举例说明,其中,操作系统模拟器用于在终端中模拟指定系统环境,并在模拟的指定系统环境中运行该应用程序。如图4所示,该虚拟场景的控制方法包括如下步骤:
步骤401,引擎组件获取第一操作事件的操作坐标。
步骤402,当该第一操作事件的操作坐标处于操作系统模拟器的显示窗口之外时,引擎组件获取目标窗口对象。
其中,该目标窗口对象是操作系统模拟器的显示窗口中响应第二操作事件的窗口对象;该第二操作事件是最近一次执行的,且对应的操作坐标处于该显示窗口内的操作事件。
在本申请实施例中,窗口对象是指操作系统模拟器的显示窗口中显示的对象,比如,该窗口对象可以是虚拟场景的场景画面或者在场景画面上层叠加的操作控件。比如在图2中,场景画面200,以及场景画面200上层叠加的至少一组虚拟控制按钮都可以称为窗口对象。
步骤403,引擎组件根据该目标窗口对象以及该第一操作事件的操作类型生成场景控制事件。
其中,该场景控制事件用于指示该应用程序中的应用逻辑层对该虚拟场景执行相应的控制操作。
步骤404,引擎组件将该场景控制事件传递至该应用逻辑层。
在本申请实施例中,当引擎组件获取到一个操作事件时,可以判断该操作事件的操作坐标是否超出操作系统模拟器的显示窗口,并根据判断结果来确定该操作事件对应的窗口对象。
比如,请参考图5,其示出了本申请实施例涉及的一种获取操作事件的窗口对象的流程示意图。如图5所述,引擎组件接收到一个操作事件A(即上述第一操作事件)后,首先获取该操作事件A的操作坐标,判断操作事件A的操作坐标是否处于操作系统模拟器的显示窗口之外。若操作事件A的操作坐标处于操作系统模拟器的显示窗口之外,则引擎组件将响应最近一次在操作系统模拟器的显示窗口内执行的操作(即上述第二操作事件对应的用户操作)的窗口对象(即目标窗口对象)获取为操作事件A对应的窗口对象,并根据获取到的窗口对象以及操作事件A的操作类型生成场景控制事件。反之,若操作事件A的操作坐标处于操作系统模拟器的显示窗口之内,则引擎组件将该操作事件A的操作坐标所对应的窗口对象获取为操作事件A的窗口对象并生成场景控制事件,同时记录该窗口对象,若下一次获取到操作事件B,且操作事件B的操作坐标处于操作系统模拟器的显示窗口之外时,该操作事件A的窗口对象将被获取为操作事件B的窗口对象。
通过本申请实施例所示的方案,当引擎组件接收到的操作事件的操作坐标处于操作系统模拟器的显示窗口时,引擎组件将最近一次响应在操作系统模拟器的显示窗口内执行的操作的窗口对象获取为本次操作事件的窗口对象,并基于获取到的窗口对象以及本次操作事件的操作类型生成控制事件并传递至应用逻辑层,以便应用逻辑层根据本次操作事件对虚拟场景进行控制;在应用逻辑层和引擎组件基于操作系统模拟器生成并显示虚拟场景的过程中,即使用户操作超出了操作系统模拟器的显示窗口,也能够实现对虚拟场景的控制,从而提高通过操作系统模拟器的显示窗口展示的虚拟场景的交互效果。
在本申请所示的方案中,引擎组件需要记录最近一次在操作系统模拟器的显示窗口内执行的用户操作所对应的窗口对象。而在实际应用中,若引擎组件和应用逻辑层不是基于操作系统模拟器来运行的,则引擎组件没有记录最近一次在操作系统模拟器的显示窗口内执行的用户操作所对应的窗口对象的必要。为了减少不必要的窗口对象记录操作,引擎组件可以判断当前运行环境是否是操作系统模拟器模拟出的系统环境,若是,则执行上述图4所示的方案。
基于图4所示的方案,请参考图6,其示出了本申请一个示例性实施例提供的虚拟场景的控制方法的流程图。本实施例以该应用程序的控制方法应用于安装有应用程序以及操作系统模拟器的终端中来举例说明。该方法包括:
步骤601,引擎组件判断当前运行环境是否为操作系统模拟器环境,若是,进入步骤602,否则,后续对操作坐标超出操作系统模拟器的显示窗口的操作事件不予响应。
在本申请实施例中,引擎组件可以检测是否存在操作系统模拟器标识,该操作系统模拟器标识是该操作系统模拟器启动时,由该操作系统模拟器传递至该引擎组件的标识。当引擎组件检测到存在操作系统模拟器标识时,可以认为当前的运行环境是操作系统模拟器环境,此时,进入续步骤602。
当引擎组件检测到不存在上述操作系统模拟器标识时,引擎组件后续接收到操作事件时,对于坐标超出操作系统模拟器的显示窗口的事件不予响应。
在步骤602中,引擎组件获取第一操作事件的操作坐标。
其中,上述第一操作事件是操作系统模拟器对终端的操作系统生成的操作事件进行转化后生成的操作事件。
比如,以终端对应的操作系统是Windows系统,应用程序对应的操作系统是Android系统为例,安卓系统通常运行在手机的移动终端中,对应的输入操作是触控操作,相应的操作事件也是各种类型的触控事件,比如触摸点击事件、触摸滑动事件等,而视窗系统则运行在个人计算中,对应的输入操作是实体按键操作和鼠标操作等,相应的操作事件是按键事件、鼠标点击事件以及鼠标拖动事件等。为了使得引擎组件能够根据鼠标或按键操作生成对应的控制事件,操作系统模拟器可以将Windows系统中生成的操作事件转化为对应安卓系统的操作事件(即上述第一操作事件),并将转化后的操作事件传递至引擎组件。
引擎组件接收到第一操作事件后,可以将该第一操作事件对应在该终端的显示屏幕中的坐标获取为该第一操作事件的操作坐标。
在相关技术中,引擎组件接收到操作系统模拟器传递过来的操作事件后,为了准确的确定操作事件对应在虚拟场景中的窗口对象,通常会对操作事件的坐标进行归一化处理,获得对应在操作系统模拟器的显示窗口中的坐标,而当操作事件的坐标处于操作系统模拟器的显示窗口之外时,归一化后的坐标会被丢弃。
而在本申请实施例中,当引擎组件判断出当前是操作系统模拟器环境时,直接获取第一操作事件对应在终端的显示屏幕中的坐标,不对其进行归一化处理。
步骤603,引擎组件判断第一操作事件的操作坐标是否处于操作系统模拟器的显示窗口之外;若是,进入步骤604,否则,进入步骤606。
在本申请实施例中,引擎组件获取到第一操作事件对应在终端的显示屏幕中的坐标后,可以结合操作系统模拟器的显示窗口在终端的显示屏幕中的坐标区域,判断该第一操作事件对应在终端的显示屏幕中的坐标是否处于操作系统模拟器的显示窗口之外。
步骤604,引擎组件获取目标窗口对象,该目标窗口对象是显示窗口中响应第二操作事件的窗口对象。
其中,该第二操作事件是最近一次执行的,且对应的操作坐标处于该显示窗口内的操作事件。
在本申请实施例中,当判断出该第一操作事件对应在终端的显示屏幕中的坐标处于操作系统模拟器的显示窗口之外时,引擎组件可以获取最近一次响应在操作系统模拟器的显示窗口中执行的操作的窗口对象,并将最近一次响应在操作系统模拟器的显示窗口中执行的操作的窗口对象确定为响应第一操作事件的窗口对象。
可选的,当该第一操作事件的操作坐标处于该操作系统模拟器的显示窗口之外时,该引擎组件可以从指定缓存位置读取该目标窗口对象的标识;该引擎组件根据该目标窗口对象的标识获取该目标窗口对象。
在本申请实施例中,引擎组件每次针对在操作系统模拟器的显示窗口执行的操作生成控制事件后,可以将该控制事件对应的窗口对象的标识缓存到某一个指定缓存位置,后续接收到超出操作系统模拟器的显示窗口的操作事件(即上述第一操作事件)时,可以从指定缓存位置读取最近一次缓存的窗口对象的标识,并根据读取到的标识获取对应的窗口对象(即上述目标窗口对象)。
可选的,当该第二操作事件的操作类型为第一操作类型,且该第一操作事件的操作坐标处于该操作系统模拟器的显示窗口之外时,该引擎组件获取该目标窗口对象。可选的,该第一操作类型为触摸滑动操作。
在本申请实施例中,引擎组件可以只在最近一次接收到的,在操作系统模拟器的显示窗口执行的操作是指定类型操作时,才响应在操作系统模拟器的显示窗口外执行的操作。
比如,以终端对应的操作系统是Windows系统,应用程序对应的操作系统是Android系统为例,用户在操作系统模拟器的显示窗口之外执行操作的情况,通常是由于在转换视角时鼠标滑动幅度过大导致的,在这种情况下,对应在移动出操作系统模拟器的显示窗口之前的用户操作是一段连续的触摸滑动操作。因此,在本申请实施例中,引擎组件在获取目标窗口对象之前,可以获取第二操作事件的操作类型,如果该操作类型是触摸滑动操作,则可以执行获取目标窗口对象的操作,否则不响应上述第一操作事件。
可选的,当该第一操作事件的操作类型为第二操作类型,且该第一操作事件的操作坐标处于该操作系统模拟器的显示窗口之外时,该引擎组件获取该目标窗口对象。相应的,该第二操作类型也可以是触摸滑动操作。
在本申请实施例中,为了减少误操作的可能,引擎组件可以只响应用户在操作系统模拟器的显示窗口之外执行的指定类型的操作。具体比如,假设引擎组件只需要响应用户在操作系统模拟器的显示窗口之外执行的鼠标点击并滑动的操作(经过操作系统模拟器转化后传递至引擎组件的操作事件的类型为触摸滑动操作)时,引擎组件在获取目标窗口对象之前,可以检测第一操作事件的操作类型的操作类型是否为触摸滑动操作,若是,则执行获取目标窗口对象的操作,否则不响应上述第一操作事件。
可选的,触发该第二操作事件的操作组件与触发该第一操作事件的操作组件是同一操作组件。
在实际应用中,用户可能通过不同的操作组件执行对虚拟场景的控制操作,比如,以某射击类游戏场景为例,用户可以通过鼠标或者触控板执行视角调整操作,并通过键盘控制虚拟对象在虚拟场景中执行移动、射击、拾取物品以及出入载具等操作,其中,通过鼠标或者触控板执行的操作的坐标可能会超出操作系统模拟器的显示窗口,而通过键盘执行的操作对应的坐标则是固定不变的,而通过鼠标或者触控板执行的操作与通过键盘执行的操作的先后顺序并不固定,当通过鼠标或者触控板执行的操作的坐标超出操作系统模拟器的显示窗口时,若无差别获取最近一次在显示窗口内执行的操作对应的窗口对象,则可能会获取到通过键盘执行的操作对应的窗口对象,从而产生错误的响应。因此,在本申请实施例中,若当前操作事件是通过鼠标或触控板执行的用户操作对应的事件,且当引擎组件判断出当前操作事件通过鼠标或触控板执行的操作时,只获取最近一次在显示窗口中,通过鼠标或触控板执行的用户操作对应的窗口对象。
步骤605,引擎组件根据该目标窗口对象以及该第一操作事件的操作类型生成场景控制事件,该场景控制事件用于指示该应用程序中的应用逻辑层对该虚拟场景执行相应的控制操作。
在本申请实施例中,引擎组件获取到目标窗口对象后,即可以根据目标窗口对象以及第一操作事件的操作类型,生成对应的场景控制事件。
比如,当目标窗口对象是场景画面,第一操作事件的操作类型是触摸滑动操作时,生成的场景控制事件可以指示应用程序按照触摸滑动操作的滑动方向调节视角;或者,当目标窗口对象是场景画面,第一操作事件的操作类型是点击操作时,生成的场景控制事件可以指示应用程序控制虚拟对象进行射击操作。
步骤606,引擎组件获取命中窗口对象,根据该命中窗口对象以及该第一操作事件的操作类型生成场景控制事件;该命中窗口对象是该第一操作事件的操作坐标对应在显示窗口中的窗口对象。
其中,当引擎组件判断出上述第一操作事件的操作坐标处于操作系统模拟器的显示窗口内时,引擎组件可以确定该操作坐标在显示窗口内的位置处的所有窗口对象,并将其中处于最上层的窗口对象获取为命中窗口对象,并根据命中窗口对象以及第一操作事件的操作类型生成场景控制事件。
步骤607,引擎组件记录该命中窗口对象。
在本申请实施例中,引擎组件可以将该命中窗口对象的标识缓存至上述的指定缓存位置。
可选的,当第一操作事件对应的操作类型为第一操作类型时,引擎组件记录该命中窗口对象。
比如,以终端对应的操作系统是Windows系统,应用程序对应的操作系统是Android系统为例,引擎组件在记录该命中窗口对象之前,可以获取第一操作事件的操作类型,如果该操作类型是触摸滑动操作,则可以执行记录该命中窗口对象的操作,否则对该命中窗口对象不予记录。
步骤608,引擎组件将该场景控制事件传递至该应用逻辑层。
在本申请实施例中,引擎组件生成上述场景控制事件后,即可以将该场景控制事件传递至应用逻辑层,由应用逻辑层对虚拟场景执行相应的控制操作。
综上所述,通过本申请实施例所示的方案,当应用程序中的引擎组件接收到的操作事件的操作坐标处于操作系统模拟器的显示窗口时,引擎组件将最近一次响应在操作系统模拟器的显示窗口内执行的操作的窗口对象获取为本次操作事件的窗口对象,并基于获取到的窗口对象以及本次操作事件的操作类型生成控制事件并传递至应用程序中的应用逻辑层,以便应用逻辑层根据本次操作事件对虚拟场景进行控制;在应用逻辑层和引擎组件基于操作系统模拟器生成并显示虚拟场景的过程中,即使用户操作超出了操作系统模拟器的显示窗口,也能够实现对虚拟场景的控制,从而提高通过操作系统模拟器的显示窗口展示的虚拟场景的交互效果。
上述图4或图6所示的方案可以应用于安装有安卓操作系统模拟器(对应上述操作系统模拟器)以及基于虚幻引擎(对应上述引擎组件)开发的应用程序的终端中。请参考图7,其示出了本申请一个示例性实施例提供的通过虚幻引擎实现虚拟场景控制的流程图。以第一操作事件是Windows系统中的鼠标事件为例,如图7所示,通过虚幻引擎实现上述方案的流程如下:
1)虚幻引擎中增加操作系统模拟器判断逻辑,该判断逻辑所需的安卓操作系统模拟器标识通过安卓入口函数设置到虚幻引擎的SlateApplication中。
在本申请实施例中,可以通过在虚幻引擎的LaunchAndroid.cpp中增加以下函数,以使得虚幻引擎可以判断当前系统环境是否是安卓操作系统模拟器模拟出的系统环境:
上述UDeviceProfileManager::AndroidSimulatorRenderLevel参数是安卓操作系统模拟器启动时设置的参数,属于操作系统模拟器助手的逻辑。
在本申请实施例中,还需要在虚幻引擎的LaunchAndroid.cpp的AndroidMain函数的GEngineLoop.Init()前增加以下代码:
FSlateApplication::Get().SetIsAndroidSimulated(IsAndroidSimulator());//在安卓模块设置操作系统模拟器标志到UE4的SlateApplication交互事件中心
由于虚幻引擎中的FSlateApplication模块无法调用UDeviceProfileManager模块,为了虚幻引擎能够判断是否是安卓操作系统模拟器,本申请实施例在FSlateApplication类中增加一个boolIsAndroidSimulated=false,以便安卓操作系统模拟器将上述操作系统模拟器标识传递至虚幻引擎。
2)在HandleInputCB事件回调函数中,如果事件坐标超出窗口,依然转发控制事件。
具体的,本申请可以在虚幻引擎的LaunchAndroid.cpp的HandleInputCB函数内增加逻辑为如果是操作系统模拟器且超出屏幕窗口,且之前是TouchMoved事件,那么也要产生TouchMoved事件的代码,这部分代码如下:
3)HandleInputCB中产生的超出屏幕窗口的操作的坐标不进行归一化处理。
在相关技术中,虚幻引擎会对获取到的操作坐标做归一化处理,代码如下:
x=FMath::Min<float>(AMotionEvent_getX(event,i)/Width,1.f);//获取点击x位置
y=FMath::Min<float>(AMotionEvent_getY(event,i)/Height,1.f);//获取点击y位置
而在本申请实施例中,在虚幻引擎的LaunchAndroid.cpp的HandleInputCB函数内设置逻辑为如果是操作系统模拟器,那么去掉事件坐标上限是1的限制的代码,该部分代码如下:
4)FSlateApplication中增加缓存最近响应鼠标事件的窗口对象的逻辑,代码如下:
TSharedPtr<FWidgetPath>PreMouseHitWidgePath;//最近命中的窗口路径对象
5)FSlateApplication的LocateWindowUnderMouse函数中调用LocateWidgetWindow获取的事件(即上述第一操作事件)命中窗口是否有效(对应上述第一操作事件的操作坐标是否处于显示窗口内),若是,则缓存最近使用的窗口对象,否则,使用缓存的最近的窗口对象作为获取到的事件的窗口对象。
其代码部分如下:
通过本申请上述方案,直接修改虚幻引擎底层代码,通过修改输入模块逻辑和缓存事件窗口,实现了鼠标超出屏幕窗口后依然响应游戏事件。使得虚幻引擎制作的游戏的操作系统模拟器玩家,可以用鼠标连贯的操作三维虚拟场景中角色或物件,获得很好的游戏交互体验,对使用虚幻引擎制作的游戏,在操作系统模拟器上用鼠标连续的操作角色和物件,提供了较好的解决方法。
通过本申请上述方案,可只需要对引擎组件的底层代码进行修改,即可以使用户在操作系统模拟器的显示窗口之外的操作可以控制操作系统模拟器的显示窗口内显示的虚拟场景中的不同虚拟对象。
比如,请参考图8,其示出了本申请实施例涉及的一种人物角色控制示意图。在图8中,鼠标对应的光标81处于操作系统模拟器的显示窗口82之外,此时,用户依然可以通过鼠标控制虚拟人物角色83进行旋转和瞄准,尤其是在隐藏鼠标的模式下,在玩家不知道鼠标是否超出系统模拟器的显示窗口82,也依然能够保证人物角色旋转的平滑度。
或者,请参考图9,其示出了本申请实施例涉及的一种载具对象控制示意图。在图9中,鼠标对应的光标91处于操作系统模拟器的显示窗口92之外,此时,用户依然可以通过鼠标控制载具93进行方向旋转,尤其是在隐藏鼠标的模式下,在玩家不知道鼠标是否超出系统模拟器的显示窗口92,也依然能够载具旋转的平滑度。
其中,本申请上述各个实施例所示的方案,均以通过引擎组件实现对超出操作系统模拟器的显示窗口之外的操作进行响应为例进行说明。在实际应用中,也可以通过其它引擎组件之外的其它程序产品来实现对超出操作系统模拟器的显示窗口之外的操作进行响应。
比如,在一种可能的实现方式中,可以在应用程序的应用逻辑层,针对每一种操作类型设置一套针对显示窗口外的用户操作的响应逻辑。比如,以鼠标操作为例,应用程序的应用逻辑层在判断出是操作系统模拟器模拟出的系统环境,且之前是连续的鼠标操作时,如果后续继续触发鼠标消息,但是没有实际发生鼠标事件处理,则直接调用预设的鼠标消息处理函数。
或者,在另一种可能的实现方式中,也可以在操作系统模拟器中设置一套坐标映射的逻辑,当操作码系统模拟器接收到终端的操作系统传递过来的操作事件1后,如果判断出该操作事件1的操作坐标超出了操作系统模拟器的显示窗口,则在转化为操作事件2时,将该操作事件1的操作坐标映射为对应在操作系统模拟器的显示窗口中的坐标,并将映射后的坐标添加在操作事件2中传递给引擎组件。
图10是根据本申请一个示例性实施例提供的一种虚拟场景的控制装置的结构方框图。该虚拟场景的控制装置可以用于终端中,以执行图4或图6对应实施例所示的方法中的全部或者部分步骤。其中,该虚拟场景的控制装置可以包括:操作系统模拟器模块1001、应用逻辑层模块1002和引擎组件模块1003;
所述操作系统模拟器模块1001,用于在所述终端中模拟指定系统环境,并在模拟的所述指定系统环境中运行所述应用逻辑层模块1002和所述引擎组件模块1003;
所述应用逻辑层模块1002,用于基于所述引擎组件模块1003展示所述虚拟场景;
所述引擎组件模块1003,用于获取第一操作事件的操作坐标;
所述引擎组件模块1003,用于当所述第一操作事件的操作坐标处于所述操作系统模拟器模块1001的显示窗口之外时,获取目标窗口对象;所述目标窗口对象是所述显示窗口中响应第二操作事件的窗口对象;所述第二操作事件是最近一次执行的,且对应的操作坐标处于所述显示窗口内的操作事件;
所述引擎组件模块1003,用于根据所述目标窗口对象以及所述第一操作事件的操作类型生成场景控制事件,所述场景控制事件用于指示所述应用逻辑层模块1002对所述虚拟场景执行相应的控制操作;
所述引擎组件模块1003,用于将所述场景控制事件传递至所述应用逻辑层模块1002。
可选的,在获取目标窗口对象时,所述引擎组件模块1003,具体用于,当所述第二操作事件的操作类型为第一操作类型,且所述第一操作事件的操作坐标处于所述操作系统模拟器模块1001的显示窗口之外时,获取所述目标窗口对象。
可选的,所述第一操作类型为触摸滑动操作。
可选的,在获取目标窗口对象时,所述引擎组件模块1003,具体用于,
当所述第一操作事件的操作类型为第二操作类型,且所述第一操作事件的操作坐标处于所述操作系统模拟器模块1001的显示窗口之外时,获取所述目标窗口对象。
可选的,所述当所述第一操作事件的操作坐标处于所述操作系统模拟器模块1001的显示窗口之外时,
所述引擎组件模块1003,还用于在获取所述目标窗口对象之前,检测是否存在操作系统模拟器标识,所述操作系统模拟器标识是所述引擎组件安装或者运行时,由所述操作系统模拟器模块传递至所述引擎组件的标识;
在获取所述目标窗口对象时,所述引擎组件模块1003,具体用于,若检测结果为存在所述操作系统模拟器标识,则当所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口之外时,执行获取所述目标窗口对象的步骤。
可选的,在获取第一操作事件的操作坐标时,所述引擎组件模块1003,具体用于,
将所述第一操作事件对应在所述终端的显示屏幕中的坐标获取为所述第一操作事件的操作坐标。
可选的,在获取目标窗口对象时,所述引擎组件模块1003,具体用于,
当所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口之外时,从指定缓存位置读取所述目标窗口对象的标识;
根据所述目标窗口对象的标识获取所述目标窗口对象。
可选的,所述引擎组件模块1003,还用于当所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口内时,将所述操作系统模拟器模块的显示窗口内响应所述第二操作事件的窗口对象的标识缓存至所述指定缓存位置。
图11是根据本申请一个示例性实施例提供的计算机设备1100的结构框图。该计算机设备1100可以是用户终端,比如智能手机、平板电脑、MP3播放器(Moving PictureExperts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(MovingPicture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,计算机设备1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本申请中方法实施例提供的虚拟场景的控制方法。
在一些实施例中,计算机设备1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、触摸显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(UserInterface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置计算机设备1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在计算机设备1100的不同表面或呈折叠设计;在再一些实施例中,显示屏1105可以是柔性显示屏,设置在计算机设备1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(OrganicLight-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在计算机设备1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
定位组件1108用于定位计算机设备1100的当前地理位置,以实现导航或LBS(Location Based Service,基于位置的服务)。定位组件1108可以是基于美国的GPS(Global Positioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源1109用于为计算机设备1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,计算机设备1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。
加速度传感器1111可以检测以计算机设备1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制触摸显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1112可以检测计算机设备1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对计算机设备1100的3D动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1113可以设置在计算机设备1100的侧边框和/或触摸显示屏1105的下层。当压力传感器1113设置在计算机设备1100的侧边框时,可以检测用户对计算机设备1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在触摸显示屏1105的下层时,由处理器1101根据用户对触摸显示屏1105的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1114采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置计算机设备1100的正面、背面或侧面。当计算机设备1100上设置有物理按键或厂商Logo时,指纹传感器1114可以与物理按键或厂商Logo集成在一起。
光学传感器1115用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1115采集的环境光强度,控制触摸显示屏1105的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1105的显示亮度;当环境光强度较低时,调低触摸显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1115采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1116,也称距离传感器,通常设置在计算机设备1100的前面板。接近传感器1116用于采集用户与计算机设备1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与计算机设备1100的正面之间的距离逐渐变小时,由处理器1101控制触摸显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与计算机设备1100的正面之间的距离逐渐变大时,由处理器1101控制触摸显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图11中示出的结构并不构成对计算机设备1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在一示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括至少一条指令、至少一段程序、代码集或指令集的存储器,上述至少一条指令、至少一段程序、代码集或指令集可由处理器执行以完成上述图3或图6对应实施例所示的方法的全部或者部分步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (18)
1.一种虚拟场景的控制方法,其特征在于,应用于安装有应用程序以及操作系统模拟器的终端中,所述应用程序包括应用逻辑层和引擎组件,所述应用逻辑层基于所述引擎组件展示所述虚拟场景,所述操作系统模拟器用于在所述终端中模拟指定系统环境,并在模拟的所述指定系统环境中运行所述应用程序,所述方法包括:
所述引擎组件获取第一操作事件的操作坐标;
当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取目标窗口对象;所述目标窗口对象是所述显示窗口中响应第二操作事件的窗口对象;所述第二操作事件是最近一次执行的,且对应的操作坐标处于所述显示窗口内的操作事件;
所述引擎组件根据所述目标窗口对象以及所述第一操作事件的操作类型生成场景控制事件,所述场景控制事件用于指示所述应用逻辑层对所述虚拟场景执行相应的控制操作;
所述引擎组件将所述场景控制事件传递至所述应用逻辑层。
2.根据权利要求1所述的方法,其特征在于,所述当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取目标窗口对象,包括:
当所述第二操作事件的操作类型为第一操作类型,且所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取所述目标窗口对象。
3.根据权利要求2所述的方法,其特征在于,所述第一操作类型为触摸滑动操作。
4.根据权利要求1所述的方法,其特征在于,所述当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取目标窗口对象,包括:
当所述第一操作事件的操作类型为第二操作类型,且所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取所述目标窗口对象。
5.根据权利要求1所述的方法,其特征在于,所述当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取目标窗口对象之前,还包括:
所述引擎组件检测是否存在操作系统模拟器标识,所述操作系统模拟器标识是所述操作系统模拟器启动时,由所述操作系统模拟器传递至所述引擎组件的标识;
所述当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取目标窗口对象,包括:
若检测结果为存在所述操作系统模拟器标识,则当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件执行获取所述目标窗口对象的步骤。
6.根据权利要求1至5任一所述的方法,其特征在于,所述引擎组件获取第一操作事件的操作坐标,包括:
所述引擎组件将所述第一操作事件对应在所述终端的显示屏幕中的坐标获取为所述第一操作事件的操作坐标。
7.根据权利要求1至5任一所述的方法,其特征在于,所述当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件获取目标窗口对象,包括:
当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口之外时,所述引擎组件从指定缓存位置读取所述目标窗口对象的标识;
所述引擎组件根据所述目标窗口对象的标识获取所述目标窗口对象。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
当所述第一操作事件的操作坐标处于所述操作系统模拟器的显示窗口内时,所述引擎组件将所述操作系统模拟器的显示窗口内响应所述第二操作事件的窗口对象的标识缓存至所述指定缓存位置。
9.一种虚拟场景的控制装置,其特征在于,所述装置包括:操作系统模拟器模块、应用逻辑层模块和引擎组件模块;
所述操作系统模拟器模块用于在终端中模拟指定系统环境,并在模拟的所述指定系统环境中运行所述应用逻辑层模块和所述引擎组件模块;
所述应用逻辑层模块,用于基于所述引擎组件模块展示所述虚拟场景;
所述引擎组件模块,用于获取第一操作事件的操作坐标;
所述引擎组件模块,用于当所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口之外时,获取目标窗口对象;所述目标窗口对象是所述显示窗口中响应第二操作事件的窗口对象;所述第二操作事件是最近一次执行的,且对应的操作坐标处于所述显示窗口内的操作事件;
所述引擎组件模块,用于根据所述目标窗口对象以及所述第一操作事件的操作类型生成场景控制事件,所述场景控制事件用于指示所述应用逻辑层模块对所述虚拟场景执行相应的控制操作;
所述引擎组件模块,用于将所述场景控制事件传递至所述应用逻辑层模块。
10.根据权利要求9所述的装置,其特征在于,在获取目标窗口对象时,所述引擎组件模块,具体用于,
当所述第二操作事件的操作类型为第一操作类型,且所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口之外时,获取所述目标窗口对象。
11.根据权利要求10所述的装置,其特征在于,所述第一操作类型为触摸滑动操作。
12.根据权利要求9所述的装置,其特征在于,在获取目标窗口对象时,所述引擎组件模块,具体用于,
当所述第一操作事件的操作类型为第二操作类型,且所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口之外时,获取所述目标窗口对象。
13.根据权利要求9所述的装置,其特征在于,所述当所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口之外时,
所述引擎组件模块,还用于在获取所述目标窗口对象之前,检测是否存在操作系统模拟器标识,所述操作系统模拟器标识是所述引擎组件安装或者运行时,由所述操作系统模拟器模块传递至所述引擎组件的标识;
在获取所述目标窗口对象时,所述引擎组件模块,具体用于若检测结果为存在所述操作系统模拟器标识,则当所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口之外时,执行获取所述目标窗口对象的步骤。
14.根据权利要求9至13任一所述的装置,其特征在于,在获取第一操作事件的操作坐标时,所述引擎组件模块,具体用于,
将所述第一操作事件对应在所述终端的显示屏幕中的坐标获取为所述第一操作事件的操作坐标。
15.根据权利要求9至13任一所述的装置,其特征在于,在获取目标窗口对象时,所述引擎组件模块,具体用于,
当所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口之外时,从指定缓存位置读取所述目标窗口对象的标识;
根据所述目标窗口对象的标识获取所述目标窗口对象。
16.根据权利要求15所述的装置,其特征在于,
所述引擎组件模块,还用于当所述第一操作事件的操作坐标处于所述操作系统模拟器模块的显示窗口内时,将所述操作系统模拟器模块的显示窗口内响应所述第二操作事件的窗口对象的标识缓存至所述指定缓存位置。
17.一种计算机设备,其特征在于,所述计算机设备包含处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一所述的虚拟场景的控制方法。
18.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至8任一所述的虚拟场景的控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810448028.XA CN108694073B (zh) | 2018-05-11 | 2018-05-11 | 虚拟场景的控制方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810448028.XA CN108694073B (zh) | 2018-05-11 | 2018-05-11 | 虚拟场景的控制方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108694073A CN108694073A (zh) | 2018-10-23 |
CN108694073B true CN108694073B (zh) | 2023-01-17 |
Family
ID=63846219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810448028.XA Active CN108694073B (zh) | 2018-05-11 | 2018-05-11 | 虚拟场景的控制方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108694073B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111399806B (zh) * | 2019-01-03 | 2023-09-01 | 百度在线网络技术(北京)有限公司 | 一种组件管理方法、装置、电子设备及存储介质 |
CN110865809B (zh) * | 2019-11-14 | 2023-05-09 | 珠海金山数字网络科技有限公司 | 一种数据导入虚幻引擎的方法和装置 |
CN111752538B (zh) * | 2020-06-23 | 2024-03-15 | 华人运通(上海)云计算科技有限公司 | 车端场景的生成方法、装置、云端、车端和存储介质 |
CN112486381B (zh) * | 2020-11-20 | 2021-11-30 | 完美世界(北京)软件科技发展有限公司 | 一种界面逻辑执行方法以及装置、电子设备、介质 |
CN112619142B (zh) * | 2020-12-29 | 2022-09-02 | 珠海金山数字网络科技有限公司 | 目标对象控制方法及装置 |
CN113238687B (zh) * | 2021-04-27 | 2021-11-16 | 北京麟卓信息科技有限公司 | 一种桌面平台上安卓应用按钮功能的实现方法及实现装置 |
US11816318B2 (en) * | 2021-07-28 | 2023-11-14 | Google Llc | Application compatibility on a computing device |
CN114168239B (zh) * | 2021-10-21 | 2024-04-30 | 北京字节跳动网络技术有限公司 | 窗口显示方法、装置、设备和存储介质 |
CN114327750B (zh) * | 2021-12-07 | 2024-08-20 | 成都鲁易科技有限公司 | 安卓模拟器的显示方法及安卓模拟器、存储介质 |
CN114185330B (zh) * | 2021-12-12 | 2024-06-11 | 深圳市集智创新信息技术有限公司 | 基于多场景交互的控制方法及控制装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346085A (zh) * | 2013-07-25 | 2015-02-11 | 北京三星通信技术研究有限公司 | 一种对控件对象的操作方法、装置及终端设备 |
CN106861186A (zh) * | 2017-01-24 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 游戏应用中的对象控制方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007139074A1 (ja) * | 2006-05-26 | 2007-12-06 | Camelot Co., Ltd. | 三次元ゲームの表示システム、表示方法及び表示プログラム |
-
2018
- 2018-05-11 CN CN201810448028.XA patent/CN108694073B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104346085A (zh) * | 2013-07-25 | 2015-02-11 | 北京三星通信技术研究有限公司 | 一种对控件对象的操作方法、装置及终端设备 |
CN106861186A (zh) * | 2017-01-24 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 游戏应用中的对象控制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108694073A (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694073B (zh) | 虚拟场景的控制方法、装置、设备及存储介质 | |
CN109091869B (zh) | 虚拟对象的动作控制方法、装置、计算机设备及存储介质 | |
CN110147231B (zh) | 组合特效生成方法、装置及存储介质 | |
WO2020253655A1 (zh) | 多虚拟角色的控制方法、装置、设备及存储介质 | |
CN110841285B (zh) | 界面元素的显示方法、装置、计算机设备及存储介质 | |
CN110427110B (zh) | 一种直播方法、装置以及直播服务器 | |
CN110971930A (zh) | 虚拟形象直播的方法、装置、终端及存储介质 | |
CN111701238A (zh) | 虚拟画卷的显示方法、装置、设备及存储介质 | |
CN112156464B (zh) | 虚拟对象的二维形象展示方法、装置、设备及存储介质 | |
CN109646944B (zh) | 控制信息处理方法、装置、电子设备及存储介质 | |
CN112044065B (zh) | 虚拟资源的显示方法、装置、设备及存储介质 | |
CN110917616A (zh) | 虚拟场景中的方位提示方法、装置、设备及存储介质 | |
WO2022095465A1 (zh) | 信息显示方法及装置 | |
CN111437600A (zh) | 剧情展示方法、装置、设备及存储介质 | |
US12061773B2 (en) | Method and apparatus for determining selected target, device, and storage medium | |
CN110517346B (zh) | 虚拟环境界面的展示方法、装置、计算机设备及存储介质 | |
CN110889060A (zh) | 网页显示方法、装置、计算机设备及存储介质 | |
CN113032590B (zh) | 特效展示方法、装置、计算机设备及计算机可读存储介质 | |
CN112612387B (zh) | 展示信息的方法、装置、设备及存储介质 | |
CN111589143B (zh) | 动画播放方法、装置、设备及存储介质 | |
CN112023403A (zh) | 基于图文信息的对战过程展示方法及装置 | |
CN113393608B (zh) | 业务处理方法、装置、终端及存储介质 | |
CN112637624B (zh) | 直播流处理方法、装置、设备及存储介质 | |
CN112188268B (zh) | 虚拟场景展示方法、虚拟场景的介绍视频生成方法及装置 | |
CN114595019A (zh) | 应用程序的主题设置方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |