适用于虚拟漫游系统的实际与虚拟空间的映射方法及系统与流程

文档序号:20033911发布日期:2020-02-28 10:49阅读:462来源:国知局
适用于虚拟漫游系统的实际与虚拟空间的映射方法及系统与流程

本公开属于虚拟现实技术领域,涉及一种适用于虚拟漫游系统的实际与虚拟空间的映射方法及系统。



背景技术:

本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。

虚拟现实技术(virtualreality,缩写为vr),是20世纪发展起来的一项全新的实用技术。该技术综合计算机、电子信息、仿真技术于一体,通过计算机模拟虚拟环境从而给人以环境沉浸感。随着社会生产力和科学技术的不断发展,各行各业对vr技术,尤其是沉浸式虚拟现实的需求日益旺盛,该技术在教育、数据可视化、房地产、旅游、医疗等领域有着广泛的应用。除了手持控制器(如鼠标、键盘、游戏手柄等)以外,自然移动是vr中最重要的交互形式之一,但其技术实现也是vr开发中最具挑战性的任务之一。运动技术有很多,如飞行、倾斜、跑步机、原地行走等,其中真实行走最接近人类在现实生活中的导航方式。在现实行走中,用户在虚拟空间中的运动完全对应于物理空间中的运动。例如,如果用户在真实空间中行走了10米,那么她也在虚拟空间中行走了10米。因此,真实行走最大的限制就是被跟踪的空间必须和虚拟空间一样大。这种限制可能会降低空间感知反馈对用户的保真度,可能需要大量的金融投资。为了解决这一局限性,近年来涌现出了大量的重定向技术(redirectedwalking,缩写为rdw)。

rdw通过交互和潜移默化地旋转周围的虚拟场景来实现用户的旋转。为了利用视觉影响人类的空间感知,传统的rdw包括三个基本部分:距离(或平移)增益、旋转增益和转向算法。特别是,平移获得缩放的运动,移动用户一个更大或更小的距离,在虚拟空间相比,他们的实际运动;旋转增益测量头部方向的差异,并缩放虚拟旋转,将用户导向所需的路径;转向算法是引导用户在跟踪区域内不断朝向区域的中心点或者某几个目标点行走,以避免碰撞墙壁。当用户触及边界/墙壁时,系统会通知用户暂停,并重置其方向。

但据发明人了解,上述解决方案仍然以下存在空白与缺陷:

1)当用户即将与墙壁碰撞时,系统会通知用户暂停,并指导用户原地旋转一定的角度,从面向墙壁转变为背向墙壁,然后用户可以继续沿着虚拟路线中的方向继续行走。通常情况下,人们会使用定速转弯或视觉干扰来处理这种重置,处理一次重置的平均时间为3秒种,这必然会带来的时间的浪费,且会令用户感到明显的停顿感,尤其当实际空间比较小时,用户需要经历大量的重置操作,将严重影响游览的连贯性和沉浸感。

2)在rdw中,其转向算法是引导用户在跟踪区域内不断朝向区域的中心点或者某几个目标点行走,这导致用户将高频率的出现在实际空间的某些点或者区域中,例如实际空间中的中心点。这导致该方法很难应用于多人同时游览的情况。当在有限的实际空间中,进行多人同时体验虚拟漫游时,在房间的中心点等人们会密集出现的地方,将会不可避免的发生用户间的碰撞。

3)在目前的rdw技术中,人们在游览虚拟场景时是随机行走的。这样的路径规划策略虽然带来了漫游的自由性,但当虚拟场景面积较大时(例如一个校园,一个自然公园,一个地理上的行政区),用户很难做到有效率的漫游,且沉浸式漫游系统目前最大的局限性之一就是:用户不能长时间处于该环境下,当超过20分钟时,大部分用户会感受到明显的眩晕感。因此随机行走的路径规划显然不适合用户游览较大的虚拟场景的需求。



技术实现要素:

本公开为了解决上述问题,提出了一种适用于虚拟漫游系统的实际与虚拟空间的映射方法及系统,本公开通过将虚拟空间中的直线段路径映射为实际空间中的弧线路径以有效利用实际空间的可用面积,并增加一个缓冲区以方便将即将碰触界限的用户提前转向而避免重置操作,可以有效引导用户远离跟踪区域的边界,大大减少系统重置用户的次数,减少停顿感,增强用户的沉浸感。

根据一些实施例,本公开采用如下技术方案:

一种适用于虚拟漫游系统的实际与虚拟空间的映射方法,包括以下步骤:

对给定的虚拟漫游场景,抽取其二维平面图,并为该二维平面图建立voronoi图;

根据建立的voronoi图,建立骨架路径;

根据输入的漫游路径的起始点,生成相应的骨架漫游路径,并进行路径的归并得到漫游路径;

将虚拟场景中的漫游路径映射为实际空间中的实际行走路径;

获取实时追踪的使用者沿实际行走路径行走过程中的在物理空间中的空间位置及方向,利用位置逆映射算法实时计算使用者在虚拟空间中相应的空间位置及方向进行画面渲染。

作为进一步的限定,所述建立骨架路径的过程为:

与多边形顶点直接相连的voronoi边不构成骨架路径,将其删除;

为所有剩余voronoi边建立邻接矩阵,并建立一颗搜索树。

作为进一步的限定,所述生成漫游路径过程为:

根据用户所选择的漫游路径的起点和终点,定位该点所在的voronoi区域,并定位与之相连的骨架;

在建立的搜索树中,进行深度优先遍历,得到漫游的骨架路径;

遍历骨架路径,若前后两条路径的夹角小于设定角度,则合并这两条路径,以简化骨架路径;用线段连接用户选择的起点和终点到骨架路径上,得到虚拟场景中的漫游路径。

作为进一步的限定,将虚拟场景中的漫游路径映射为实际空间中的实际行走路径的具体过程为:

在实际空间的边界内划一个虚拟边界,该虚拟边界到跟踪区域边界的距离为d,实际边界与虚拟边界间的空间为缓冲区;

用数组vpath[]存贮虚拟漫游路径,用数组rpath[]存放实际行走路径;

遍历vpath[]中的所有线段路径,每次取出前后相邻的两条路径curpath和nextpath,对于当前路径curpath,其长度为||curpath||;

遍历vpath[]中的所有路径,直到所有直线路径被映射为弧线并放入rpaht[]中。

作为进一步的限定,根据人在实际空间中的位置,有以下三种情况:

a.若使用者不在缓冲区边界或者内部,计算沿着该弧行走,用户在抵达缓冲区前可以前进的最大弧线距离||l||,如果||curpath||≤||l||,将该弧线放入rpath[];如果||curpath||>||l||,则当前路径curpath需要被分成两段,一段长度为||l||,一段为||curpath||-||l||,更新vpath[]并将该弧线放入rpath[];

b.若使用者在缓冲区边界,引导使用者沿着半径为rs的圆弧行走半圈,使得人从面向缓冲区,变成背向缓冲区;若||curpath||>||πrs||,则当前路径curpath需要被分成两段,一段长度为||πrs||,一段为||curpath||-||πrs||,更新vpath[]并将弧线放入rpath[];若||curpath||≤||πrs||,采用rdw技术中的重置方法,在rpath[]中增加一个长度为0,仅仅转向180度的实际路径;

c.若人在缓冲区内,引导使用者沿着半径为rm的圆弧行走1/4圈,快速离开缓冲区,若则当前路径curpath需要被分成两段,一段长度为||πrs||,一段为更新vpath[]并将弧线放入rpath[];若在rpath[]中增加一个长度为的弧线。

一种适用于虚拟漫游系统的实际与虚拟空间的映射系统,包括:

voronoi图构建模块,被配置为对给定的虚拟漫游场景,抽取其二维平面图,并为该二维平面图建立voronoi图;

骨架路径构建模块,被配置为根据建立的voronoi图,建立骨架路径;

漫游路径生成模块,被配置为根据输入的漫游路径的起始点,生成相应的骨架漫游路径,并进行路径的归并得到漫游路径;

映射模块,被配置为将虚拟场景中的漫游路径映射为实际空间中的实际行走路径;

虚拟现实设备,被配置为实时追踪使用者沿实际行走路径行走过程中的在物理空间中的空间位置及方向,利用位置逆映射算法实时计算使用者在虚拟空间中相应的空间位置及方向进行画面渲染。

作为进一步的限定,所述虚拟现实设备包括kinect设备或其他头戴式、内置有陀螺仪的智能设备,以及头戴式显示器。

一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行所述的一种适用于虚拟漫游系统的实际与虚拟空间的映射方法的步骤。

一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行所述的一种适用于虚拟漫游系统的实际与虚拟空间的映射方法的步骤。

本公开通过提取虚拟空间的二维平面图,通常该平面图是一个简单的多边形,为此简单多边形建立voronoi图,并建立骨架路径。当用户选定漫游的开始和终止点时,系统动态的为用户生成相应的虚拟漫游路径,并将该由线段组成的虚拟路径映射为由大大小小的弧线组成的实际路线。在用户进行漫游时,系统将以映射好的实际路线为基准引导用户行走。同时利用kinec和陀螺仪实时获取用户在物理空间中的位置及方向,通过位置逆映射算法实时更新用户在虚拟空间中对应的位置及方向;依据用户在虚拟空间中的视角,通过头戴式显示器为用户提供虚拟场景中的视角画面。

与现有技术相比,本公开的有益效果为:

(1)本公开解决了用户在小范围物理空间内通过真实行走漫游大范围虚拟空间的可能性;

(2)相比于rdw技术,本公开可以大大减少用户被重置的次数,缩短了漫游时间,大大降低了停顿感,增强了沉浸感。

(3)相比于rdw技术,实际物理空间被有效的利用,具有解决多用户同时漫游的潜力。本公开可以大大减少用户被重置的次数,缩短了漫游时间,大大降低了停顿感,增强了沉浸感。

附图说明

构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。

图1为本公开实施例提供的虚拟场景(3d迷宫)示意图。

图2为本公开实施例提供的二维平面图的voronoi图示意图。

图3为本公开实施例提供的骨架路径图示意图。

图4为本公开实施例提供的用户指定漫游起点终点的骨架路径图示意图。

图5为本公开实施例提供的经过合并处理后的虚拟漫游路径示意图。

图6为本公开实施例提供的当用户位于缓冲区边界时被引导转半圈的示意图。

图7为本公开实施例提供的当用户位于缓冲区内时被引导转1/4圈的示意图。

图8(a)-(b)为本公开实施例提供的将虚拟路径映射为实际路径的示意图。

图9(a)-(c)为本公开实施例提供的实际空间利用率的示意图。在此图中对比了本公开方法与rdw方法,其中(a)图为采用本公开方法时,用户在实际空间中的足迹跟踪图;(b)图为采用rdw方法时,用户在实际空间中的足迹跟踪图;(c)图为足迹图的统计数据(左图为本公开方法,右图为rdw方法)。在对比中,均采用相同的虚拟场景和虚拟漫游路径;

图10为本公开实施例提供的漫游时间对比图的示意图。在此图中对比了本公开方法与rdw方法(采用了rdw方法中最常用的s2c算法)在引导用户进行漫游时所花费的时间。在对比中,均采用相同的虚拟场景、虚拟漫游路径以及实际空间大小。

图11为本公开实施例提供的用户在漫游过程中的双目视觉的示意图。

具体实施方式:

下面结合附图与实施例对本公开作进一步说明。

应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

本实施例提供的一种适用于虚拟漫游系统的实际与虚拟空间的映射方法,包括:

步骤(1):给定一个虚拟漫游场景,在本实施例中,以迷宫为例进行说明,如图1所示,抽取其二维平面图(简单多边形),并为该简单多边形建立voronoi图,如图2所示;

在步骤(1)中,假定虚拟场景的二维平面图为简单多边形,若该平图面是复杂多边形,系统依然可以运行。

在步骤(1)中,可采用任意算法,例如增量插入法等计算voronoi图。

步骤(2):根据步骤(1)中的voronoi图,建立骨架路径;

在步骤(2)中,生成voronoi图的骨架路径。骨架路径又称为中轴线,该骨架上的每一点到两侧边界的距离都相等。根据骨架路径的定义,排除所有与顶点相连的voronoi边,为剩余的所有的voronoi边建立邻接矩阵,并组成一颗搜索树。

与多边形顶点直接相连的voronoi边不构成骨架路径,将其删除;

为所有剩余voronoi边建立邻接矩阵,并建立一颗搜索树。生成如图3所示的骨架路径。

步骤(3):用户可以在虚拟场景中任意选取两点,作为漫游的起始路径。根据用户的选择,生成相应的骨架漫游路径,并进行路径的归并得到漫游路径,如图4所示;

在步骤(3)中,若二维平面图不是简单多边形,则当用户选定漫游的起点和终点时,可能会有不止一条漫游路径,此时可以根据最短路径优先策略或者其它策略,选定其中的一条作为漫游路径。

根据用户所选择的漫游路径的起点和终点,定位该点所在的voronoi区域,并定位与之相连的骨架;

在所建立的搜索树中,进行深度优先遍历,得到漫游的骨架路径;

遍历骨架路径,若前后两条路径的夹角小于10度,则合并这两条路径,以简化骨架路径。用线段连接用户选择的起点和终点到骨架路径上,得到虚拟场景中的漫游路径,如图5所示。

步骤(4):将虚拟场景中的漫游路径映射为实际空间中的实际行走路径;

步骤(4-1):在实际空间(跟踪区域)的边界内划一个虚拟边界,该虚拟边界到跟踪区域边界的距离为d。实际边界与虚拟边界间的空间为缓冲区;

步骤(4-2):用数组vpath[]存贮虚拟漫游路径,用数组rpath[]存放实际行走路径。虚拟路径的起点为用户选择的起点,实际路径的起点为跟踪区域的任意一点(可以取用户当前站立的地点);

步骤(4-3):遍历vpath[]中的所有线段路径,每次取出前后相邻的两条路径curpath和nextpath。

在步骤(4-1)中,虚拟边界到实际边界的距离为d,两个边界中间的区域为缓冲区。考虑到实际空间通常都比较小,大约是一间或者半间屋子的大小,因此此处d的取值可以为0.5m或者1m。

在步骤(4-2)中,采用vpath[]和rpath[]存放虚拟路径和实际路径。因为虚拟路径会因为映射的需求而被拆分,因此在实际实现过程中,可以采用链表等数据结构存储虚拟路径。

可以让用户沿着半径为r的圆弧行走,以代替直线行走。根据人在实际空间中的位置,有以下三种情况:

a.若人不在缓冲区边界或者内部,计算沿着该弧行走,用户在抵达缓冲区前可以前进的最大弧线距离||l||。如果||curpath||≤||l||,将该弧线放入rpath[];如果||curpath||>||l||,则当前路径curpath需要被分成两段,一段长度为||l||,一段为||curpath||-||l||,更新vpath[]并将该弧线放入rpath[];

b.若人在缓冲区边界,引导用户沿着半径为rs的较小圆弧行走半圈,如图6所示,使得人从面向缓冲区,变成背向缓冲区。若||curpath||>||πrs||,则当前路径curpath需要被分成两段,一段长度为||πrs||,一段为||curpath||-||πrs||,更新vpath[]并将弧线放入rpath[];若||curpath||≤||πrs||,采用rdw技术中的重置方法,在rpath[]中增加一个长度为0,仅仅转向180度的实际路径;

c.若人在缓冲区内,引导用户沿着半径为rm的圆弧行走1/4圈,快速离开缓冲区,如图7所示。若则当前路径curpath需要被分成两段,一段长度为||πrs||,一段为更新vpath[]并将弧线放入rpath[];若在rpath[]中增加一个长度为均弧线;

遍历vpath[]中的所有路径,直到所有直线路径被映射为弧线并放入rpaht[]中。

在步骤(4-3)中,系统遍历vpath[],并将所有的直线路径映射为弧线,并将弧线作为实际的漫游路径放入rpath[]中。此处涉及了三种不同的圆弧半径r、rs和rm。其中r是7.5m,该数值来源于实验数据。当人蒙眼走直线时,他其实在按照一个半径一定的圆弧在不断的绕圈。该圆弧的半径,经过据不同研究者实验多年的数据为7.5m。在本实施例提供的方法中,采用了这个被广泛认可的实验数据。采用one-step-ahead的策略,每次只看当前和下一段的虚拟路径,如果可以将当前以及下一段路径都映射成虚拟路径,则不论整条虚拟路径多么复杂,都可以将整条路径映射完毕。当用户不会碰撞到虚拟边界中,用弧线代替直线;当用户抵达虚拟边界时,利用缓冲区,令用户沿着半径为rs的圆弧前进半个圆的长度,此处令当用户进入缓冲区后,希望可以尽快的将其从缓冲区内移出,因此当检测到用户位于缓冲区后,引导用户沿着半径为rm的圆弧行走1/4圈离开缓冲区,且此时用户为背向缓冲区,此处令rm=2rs。

步骤(5)中:系统引导用户沿着步骤(4)中映射得到的实际路径行走如图8(a)、(b)所示。系统采用一台高性能pc主机搭载核心处理模块,利用kinect2.0及头戴式显示器内置的陀螺仪实时追踪用户在物理空间中的空间位置及方向,采用wifi实现pc端与kinect和头戴式显示器的网络通信。其中kinect能够实时获取用户的骨骼数据,利用骨骼数据中人的中心点的位置来代表用户在实际空间中的位置;头戴显示器中的陀螺仪实时精确测量用户头部在x-y-z三轴的相应旋转角度,以此角度确定用户在实际空间中的朝向。系统利用位置逆映射算法,根据用户实时的位置和朝向信息计算用户在虚拟空间中相应的空间位置及方向,并在头戴显示器内进行画面渲染。而用户则依据视觉中的画面被系统引导着沿着虚拟路径在实际空间中进行行走。

通过图9(a)-图11的对比,可以看出,相比于rdw技术,本公开可以大大减少用户被重置的次数,缩短了漫游时间,大大降低了停顿感,增强了沉浸感。

相比于rdw技术,实际物理空间被有效的利用,具有解决多用户同时漫游的潜力。本公开可以大大减少用户被重置的次数,缩短了漫游时间,大大降低了停顿感,增强了沉浸感。

还提供以下的产品实施例:

一种适用于虚拟漫游系统的实际与虚拟空间的映射系统,包括:

voronoi图构建模块,被配置为对给定的虚拟漫游场景,抽取其二维平面图,并为该二维平面图建立voronoi图;

骨架路径构建模块,被配置为根据建立的voronoi图,建立骨架路径;

漫游路径生成模块,被配置为根据输入的漫游路径的起始点,生成相应的骨架漫游路径,并进行路径的归并得到漫游路径;

映射模块,被配置为将虚拟场景中的漫游路径映射为实际空间中的实际行走路径;

虚拟现实设备,被配置为实时追踪使用者沿实际行走路径行走过程中的在物理空间中的空间位置及方向,利用位置逆映射算法实时计算使用者在虚拟空间中相应的空间位置及方向进行画面渲染。

作为进一步的限定,所述虚拟现实设备包括kinect设备或其他头戴式、内置有陀螺仪的智能设备,以及头戴式显示器。

一种计算机可读存储介质,其中存储有多条指令,所述指令适于由终端设备的处理器加载并执行所述的一种适用于虚拟漫游系统的实际与虚拟空间的映射方法的步骤。

一种终端设备,包括处理器和计算机可读存储介质,处理器用于实现各指令;计算机可读存储介质用于存储多条指令,所述指令适于由处理器加载并执行所述的一种适用于虚拟漫游系统的实际与虚拟空间的映射方法的步骤。

本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

上述虽然结合附图对本公开的具体实施方式进行了描述,但并非对本公开保护范围的限制,所属领域技术人员应该明白,在本公开的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本公开的保护范围以内。

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