应用切换处理方法和装置与流程

文档序号:11216055阅读:992来源:国知局
应用切换处理方法和装置与流程

本发明涉及互联网技术领域,尤其涉及一种应用切换处理方法和装置。



背景技术:

虚拟现实(virtualreality,简称vr)技术是一种可以创建和体验虚拟世界的计算机仿真系统,它利用计算机生成一种模拟环境,是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。目前,虚拟现实技术已经在很多应用领域中被使用。

实际应用中,往往会有这样的体验:用户在使用支持虚拟现实功能的游戏应用的过程中,因为某种原因需要切换到另一个应用程序中,比如接收到一封重要邮件需要处理,这时,需要临时退出该游戏应用。而当用户再次切换回该游戏应用时,在现有技术中,所有的视角信息,即摄像头在虚拟现实场景中的位置、角度信息都将被初始化,用户此时看到的场景画面将会对应于初始化时的场景画面,无法接续切换出该游戏应用时的场景画面,使得用户的沉浸体验严重损失,也使得该游戏应用的智能性降低。



技术实现要素:

有鉴于此,本发明提供一种应用切换处理方法和装置,用以实现在支持虚拟现实功能的应用程序再次被切换回使用时,接续退出时的视角,提高用户的沉浸体验以及应用程序的智能性。

第一方面,本发明实施例提供一种应用切换处理方法,包括:

在切换出应用程序时,记录摄像头在第一坐标系中的第一位置和第一角度,所述应用程序支持虚拟现实功能;

在切换回所述应用程序时,根据所述第一位置和所述第一角度建立第二坐标系;

获取摄像头当前的第二位置和第二角度,所述第二位置和所述第二角度对应于所述第二坐标系;

将所述第二位置从所述第二坐标系变换到所述第一坐标系,以获得第三位置;

以所述第一位置和所述第一角度为基准,根据所述第三位置和所述第二角度确定所述摄像头当前在所述第一坐标系中对应的位置和角度。

可选地,所述第一角度包括:第一俯仰角、第一航向角、第一翻滚角,其中,第一俯仰角和第一翻滚角被置为0;

所述根据所述第一位置和所述第一角度建立第二坐标系,包括:

将所述第一坐标系的坐标原点平移到所述第一位置处,对所述第一坐标系的z轴进行所述第一航向角的旋转,以建立所述第二坐标系。

可选地,所述将所述第二位置从所述第二坐标系变换到所述第一坐标系,以获得第三位置,包括:

对所述第二位置根据如下公式进行坐标变换:

x3=x2cos(α)+z2sin(α)

y3=y2

z3=-x2sin(α)+z2cos(α)

其中,x2、y2和z2分别为所述第二位置的三轴方向的坐标,α为所述第一航向角,x3、y3和z3分别为所述第三位置的三轴方向的坐标。

可选地,所述以所述第一位置和所述第一角度为基准,根据所述第三位置和所述第二角度确定所述摄像头当前在所述第一坐标系中对应的位置和角度,包括:

确定所述摄像头当前在所述第一坐标系中对应的位置和角度分别为:所述第三位置对应叠加到所述第一位置后的位置,所述第二角度对应叠加到所述第一角度后的角度。

可选地,所述以所述第一角度为基准,根据所述第二角度确定所述摄像头当前在所述第一坐标系中对应的角度,包括:

确定所述摄像头当前在所述第一坐标系中对应的角度为:所述第二角度对应叠加到所述第一角度后的角度与角航向角误差的差值;

其中,所述航向角误差为切换回所述应用程序后以预设时间间隔首次获得的摄像头的航向角。

第二方面,本发明实施例提供一种应用切换处理装置,包括:

记录模块,用于在切换出应用程序时,记录摄像头在第一坐标系中的第一位置和第一角度,所述应用程序支持虚拟现实功能;

建立模块,用于在切换回所述应用程序时,根据所述第一位置和所述第一角度建立第二坐标系;

获取模块,用于获取摄像头当前的第二位置和第二角度,所述第二位置和所述第二角度对应于所述第二坐标系;

变换模块,用于将所述第二位置从所述第二坐标系变换到所述第一坐标系,以获得第三位置;

确定模块,用于以所述第一位置和所述第一角度为基准,根据所述第三位置和所述第二角度确定所述摄像头当前在所述第一坐标系中对应的位置和角度。

本发明提供的应用切换处理方法和装置,在用户使用某个支持虚拟现实功能的应用程序的过程中,当切换出该应用程序时,记录摄像头在第一坐标系中的第一位置和第一角度。该第一坐标系为该应用程序中的虚拟现实场景建立时所采用的坐标系。当后续再次切换回该应用程序时,首先根据记录的切出时所对应的第一位置和第一角度来建立第二坐标系;之后,在从传感器获得摄像头当前在第二坐标系中的第二位置和第二角度后,将第二位置从第二坐标系变换到第一坐标系以获得第三位置;进而,以切出时对应的第一位置和第一角度为基准,根据变换后的第三位置以及第二角度确定摄像头当前在第一坐标系中对应的位置和角度,从而保证用户当前能够接续切出该应用程序时所观看到的场景画面继续使用该应用程序,提高用户的沉浸体验以及该应用程序的智能性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的应用切换处理方法实施例一的流程图;

图2为6自由度的示意图;

图3为坐标变换示意图;

图4为本发明实施例提供的应用切换处理装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述xxx,但这些xxx不应限于这些术语。这些术语仅用来将xxx区分开。例如,在不脱离本发明实施例范围的情况下,第一xxx也可以被称为第二xxx,类似地,第二xxx也可以被称为第一xxx。

取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

进一步值得说明的是,本发明各实施例中各步骤之间的顺序是可以调整的,不是必须按照以下举例的顺序执行。

图1为本发明实施例提供的应用切换处理方法实施例一的流程图,本实施例提供的该应用切换处理方法可以由一应用切换处理装置来执行,该应用切换处理装置可以实现为软件,或者实现为软件和硬件的组合,比如,该应用切换处理装置可以实现为支持虚拟现实功能的某应用程序中的功能模块。如图1所示,该方法包括如下步骤:

101、在切换出支持虚拟现实功能的应用程序时,记录摄像头在第一坐标系中的第一位置和第一角度。

102、在切换回应用程序时,根据第一位置和第一角度建立第二坐标系。

103、获取摄像头当前的第二位置和第二角度,第二位置和第二角度对应于第二坐标系。

104、将第二位置从第二坐标系变换到第一坐标系以获得第三位置。

105、以第一位置和第一角度为基准,根据第三位置和第二角度确定摄像头当前在第一坐标系中对应的位置和角度。

本实施例的核心思想为:当采用具有6自由度的vr设备比如摄像头在使用某个支持虚拟现实功能的应用程序时,当该应用程序被切出置于后台后,再度切换回该应用程序时先前切出的位置和角度信息若丢失,将导致切换回该应用程序时,用户将不能接续使用该应用程序。举例来说,假设用户初始使用该应用程序时,看到的场景画面为一个电视机,切换出该应用程序时看到的场景画面为咖啡机,那么,如果切换出该应用程序时的位置和角度信息丢失,再次切换回时,用户将还是看到初始使用该应用程序对应的电视机场景画面,对用户沉浸体验影响严重。

其中,上述6自由度如图2所示,具体是指3轴方向的旋转和3轴方向上的平移。以三维空间笛卡尔右手坐标系为例,3轴方向上的旋转分别对应俯仰角(绕x轴)、航向角(绕y轴)和翻滚角(绕z轴),3轴方向上的平移分别对应前后(z轴正向和负向)、右左(x轴正向和负向)和上下(y轴正向和负向)。

本实施例中,上述应用程序在运行的过程中,当被切换出以及当被再次切换回时,都会运行应用程序中相应的函数,因此,可以基于该函数的运行获知应用程序是否被用户执行切换出的操作或者被用户执行切换回的操作。比如,当应用程序被执行切换出操作时,会触发onpause()函数,当应用程序被执行切换回操作时,会触发onresume()函数。

因此,当onpause()函数被执行时,确定应用程序被切换出,从而记录在切换出时,摄像头在第一坐标系中的第一位置和第一角度。

其中,第一坐标系为构建应用程序中的虚拟现实场景时所采用的坐标系。第一位置包括3轴方向上的坐标值,第一角度包括第一俯仰角、第一航向角、第一翻滚角。可以理解的是,上述第一位置、第一角度的确定可以通过设置在vr设备比如摄像头中的传感器来采集相应的数据而计算获得。

当onresume()函数被执行时,确定应用程序被切换回再次使用,此时,为了实现能够接续切换出时的视角,首先,根据切换出时对应的第一位置和第一角度建立第二坐标系。在建立第二坐标系时,其实是对第一坐标系基于第一位置和第一角度进行了一定的平移、旋转,得到第二坐标系。界定一个坐标系可以基于坐标原点的位置以及坐标轴的方向实现,因此,可以将第一坐标系的坐标原点平移到第一位置处,并对第一坐标系的z轴进行第一航向角的旋转,从而得到第二坐标系。

其中,之所以仅考虑第一航向角的对视角接续的影响,而不考虑第一俯仰角、第一翻滚角,是因为:一般地,第一坐标系建立时,遵循右手定则,将正常观看时视线的水平方向即平视方向作为z轴方向,其右手方向为x轴方向,竖直的方向即头顶上方为y轴方向。那么,当用户再次切换回之前切出的应用程序时,应用程序中虚拟现实场景的坐标系不会因为切换而发生改变,只是用户当前进入该虚拟现实场景的姿势可能发生改变,而该改变一般体现为看向的方向发生改变,而看向方向发生改变主要是由第一航向角引起的,因此,在建立第二坐标系时,可以仅考虑第一航向角对第一坐标系中与视线看向方向对应的z轴方向的旋转影响。

由于不考虑第一俯仰角和第一翻滚角的接续,因此,可以将第一俯仰角和第一翻滚角置为0。因此,记录第一角度时,可以将第一俯仰角和第一翻滚角置为0,仅保留第一航向角。不考虑第一俯仰角和第一翻滚角的接续,意味着当应用程序切换回后,对于摄像头的角度信息的确定,第一俯仰角和第一翻滚角不会产生影响。

从而,假设切换出应用程序是摄像头在第一坐标系中对应的位置为(a,b,c),角度为(d,α,f),则记录的第一位置为(a,b,c),第一角度为(0,α,0),从而,第二坐标系与第一坐标系的对应关系如图3所示,图出仅示意了第一坐标系的xoz平面以及第二坐标系的x’o’z’平面,第二坐标系的坐标原点o’为(a,b,c)。

切换回应用程序时,可以先对摄像头中的传感器进行初始化处理,此时,传感器的计数将从0开始,此时,初始化后,摄像头在第二坐标系中的基准位置和基准角度为:(a,b,c)和(0,α,0)。

在切换回应用程序后,随着用户的不断移动,改变姿势,应用程序可以以预设时间间隔不断获取用户即摄像头的位置和角度信息,此时,获得的位置和角度信息是在第二坐标系下获得的。而对摄像头在不同位置和角度下应该显示什么场景画面是基于第一坐标系来控制的,也即是说,场景画面是在第一坐标系下建立的,因此,需要将从第二坐标系下获得的位置和角度变换到第一坐标系下。

假设当前获得的摄像头在第二坐标系中的角度和位置为第二角度和第二位置,为了确定摄像头当前在第一坐标系中对应的位置和角度,具体可以包括:针对角度来说,可以以第一角度为基准,将当前在第二坐标系中获得的第二角度对应叠加到第一角度后即可获得摄像头当前在第一坐标系中对应的角度。比如,假设第二角度为(d1,e1,f1),则叠加到第一角度(0,α,0)后为(d1,α+e1,f1),此时假设第一角度和第二角度均以欧拉角来表示。

而针对位置来说,摄像头当前在第一坐标系中对应的位置需要通过对摄像头在第二坐标系中的第二位置进行坐标变换处理才能得到。

具体地,假设第二位置为(x2,y2,z2),第一航向角为α,则将第二位置从第二坐标系变换到第一坐标系可以采用如下公式:

x3=x2cos(α)+z2sin(α)

y3=y2

z3=-x2sin(α)+z2cos(α)

其中,x2、y2和z2分别为第二位置的三轴方向的坐标,α为第一航向角,x3、y3和z3分别为第二位置变换后得到的第三位置中三轴方向的坐标。

进而,以第一位置为基准,第三位置对应叠加到第一位置后的位置即为摄像头当前在第一坐标系中对应的位置。假设第一位置为(a,b,c),则摄像头当前在第一坐标系中对应的位置为(a+x3,b+y3,c+z3)。

基于此,在确定出摄像头当前在第一坐标系中对应的位置和角度后,应用程序可以将对应的场景画面展示给用户观看,以实现用户接续切换出应用程序时的场景画面继续使用该应用程序。

另外,值得说明的是,摄像头当前在第一坐标系中对应的位置可以通过将第三位置对应叠加到第一位置上确定,但是,摄像头当前在第一坐标系中对应的角度,除了可以简单地通过将第二角度对应叠加到第一角度上确定外,还可以考虑航向角误差。之所以仅考虑航向角误差是因为针对角度接续来说,仅考虑了航向角接续,而之所以仅考虑航向角接续,前面已经做出说明。

具体来说,该航线角误差的产生是由于应用程序更新摄像头的角度信息的时间间隔与摄像头中传感器采集数据的时间间隔往往是不匹配的,一般地,应用程序更新摄像头的角度信息的时间间隔大于摄像头中传感器采集数据的时间间隔。因此,当应用程序在被再次切换回使用后,应用程序首次获取到的摄像头在第二坐标系中的航向角已经是传感器经过多个采集时间间隔累计采集到的航向角信息,并非是初始化的航向角,因此,可以将切换回应用程序后首次在第二坐标系中获得的航向角作为航向角误差,在首次以及后续每隔一定时间间隔更新摄像头在第一坐标系下对应的角度时,针对航向角的更新时,都将该航向角误差去除。

举例来说,假设上述第二角度即为首次获得的角度信息,并假设第二角度中的航向角为a,则此时确定的摄像头在第一坐标系下对应的角度中的航向角为:a+α-a,α为已经记录的第一航向角。假设首次之后,第二次获得的摄像头在第二坐标系下对应的角度中的航向角为b,则此时确定的摄像头在第一坐标系下对应的角度中的航向角为:b+α-a,以此类推。

综上,基于本实施例,在用户使用某个支持虚拟现实功能的应用程序的过程中,当切换出该应用程序时,记录摄像头在第一坐标系中的第一位置和第一角度。该第一坐标系为该应用程序中的虚拟现实场景建立时所采用的坐标系。当后续再次切换回该应用程序时,首先根据记录的切出时所对应的第一位置和第一角度来建立第二坐标系;之后,在从传感器获得摄像头当前在第二坐标系中的第二位置和第二角度后,将第二位置从第二坐标系变换到第一坐标系以获得第三位置;进而,以切出时对应的第一位置和第一角度为基准,根据变换后的第三位置以及第二角度确定摄像头当前在第一坐标系中对应的位置和角度,从而保证用户当前能够接续切出该应用程序时所观看到的场景画面继续使用该应用程序,提高用户的沉浸体验以及该应用程序的智能性。

图4为本发明实施例提供的应用切换处理装置的结构示意图,如图4所示,该装置包括:记录模块11、建立模块12、获取模块13、变换模块14、确定模块15。

记录模块11,用于在切换出应用程序时,记录摄像头在第一坐标系中的第一位置和第一角度,所述应用程序支持虚拟现实功能。

建立模块12,用于在切换回所述应用程序时,根据所述第一位置和所述第一角度建立第二坐标系。

获取模块13,用于获取摄像头当前的第二位置和第二角度,所述第二位置和所述第二角度对应于所述第二坐标系。

变换模块14,用于将所述第二位置从所述第二坐标系变换到所述第一坐标系,以获得第三位置。

确定模块15,用于以所述第一位置和所述第一角度为基准,根据所述第三位置和所述第二角度确定所述摄像头当前在所述第一坐标系中对应的位置和角度。

可选地,所述第一角度包括:第一俯仰角、第一航向角、第一翻滚角,其中,第一俯仰角和第一翻滚角被置为0;从而,所述建立模块12具体用于:

将所述第一坐标系的坐标原点平移到所述第一位置处,对所述第一坐标系的z轴进行所述第一航向角的旋转,以建立所述第二坐标系。

可选地,所述变换模块14具体用于:

对所述第二位置根据如下公式进行坐标变换:

x3=x2cos(α)+z2sin(α)

y3=y2

z3=-x2sin(α)+z2cos(α)

其中,x2、y2和z2分别为所述第二位置的三轴方向的坐标,α为所述第一航向角,x3、y3和z3分别为所述第三位置的三轴方向的坐标。

可选地,所述确定模块15具体用于:

确定所述摄像头当前在所述第一坐标系中对应的位置和角度分别为:所述第三位置对应叠加到所述第一位置后的位置,所述第二角度对应叠加到所述第一角度后的角度。

可选地,所述确定模块15具体用于:

确定所述摄像头当前在所述第一坐标系中对应的位置为:所述第三位置对应叠加到所述第一位置后的位置;

确定所述摄像头当前在所述第一坐标系中对应的角度为:所述第二角度对应叠加到所述第一角度后的角度与航向角误差的差值;

其中,所述航向角误差为切换回所述应用程序后以预设时间间隔首次获得的摄像头的航向角。

图4所示装置可以执行图1所示实施例的方法,本实施例未详细描述的部分,可参考对图1所示实施例的相关说明。该技术方案的执行过程和技术效果参见图1所示实施例中的描述,在此不再赘述。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1