动态触觉重定目标的制作方法

文档序号:16366054发布日期:2018-12-22 08:26阅读:185来源:国知局
动态触觉重定目标的制作方法

虚拟现实系统正变得越发流行,并且消费水平头戴式显示器和运动跟踪设备导致创建大量的沉浸式体验。许多虚拟现实系统中的主要目标是建立用于用户的存在的感觉。虽然光学、绘出(rendering)和音频技术已经充分地改进,这导致通过其用户可以由现实的错觉确信真实感绘出,但是当伸出并且抓取虚拟对象时期望的接触的感觉仍然是缺少的。

触觉是被用于表示用户的接触的感觉的各方面的术语。用于使得用户能够当与虚拟对象交互时体验接触的感觉的一个方法在本文被称为被动触觉。当伸出并且接触虚拟对象时,将相应的物理对象映射到用户期望交互的每个虚拟对象可能导致引入注目的触感。然而,该错觉要求每个虚拟对象具有相同大小和形状并且在相同位置中的对应的物理性能。这可能导致非常复杂的物理环境,并且保持物理环境与虚拟环境同步可能困难或者甚至不可能。



技术实现要素:

本公开描述了用于动态触觉重定目标的技术。单个物理对象可以被映射到多个虚拟对象,使得当用户伸出以接触虚拟对象中的任一个时,动态触觉重定目标技术导致用户的物理运动的重定向,使得对于用户看起来其正接触虚拟对象时,其实际上正接触物理对象。各种技术可以被用于实现动态触觉重定目标,包括但不限于世界扭曲(warping)、身体扭曲以及世界扭曲和身体扭曲的组合。

根据示例世界扭曲技术,虚拟环境关于物理环境移动(例如,通过平移或者旋转)。根据示例身体扭曲技术,用户的手的虚拟表示被操纵以在伸手去拿虚拟对象时,被动地重定向用户的物理运动。

在至少一些场景中,通过应用世界扭曲和身体扭曲的组合和/或通过实施用于之一或者两者的最大扭曲,可以减少负面影响,诸如可检测的世界扭曲、运动病和/或虚拟身体未对准。

提供本发明内容以引入以在详细描述中下文进一步描述的简化形式的概念的选择。本发明内容不旨在标识要求保护的主题的关键特征或基本特征,其也不旨在被用作辅助确定要求保护的主题的范围。术语“技术”例如可以指代如由上文所描述的上下文并且贯穿文档许可的(一个或多个)系统、(一个或多个)方法、计算机可读指令、(一个或多个)模块、算法、硬件逻辑和/或(一个或多个)操作。

附图说明

参考附图描述详细描述。在附图中,附图标记中的最左边的(一个或多个)数字标识附图标记首次出现的附图。不同的附图中的相同附图标记指示类似或者相同项。

图1是图示在其中可以实现动态触觉重定目标的示例环境的示意图。

图2是图示虚拟环境到物理环境的示例映射的示意图。

图3是图示世界扭曲的示例的示意图。

图4是图示身体扭曲的示例的示意图。

图5是图示世界扭曲和身体扭曲的组合的示例的示意图。

图6是图示触觉重定目标系统的选择部件的块图。

图7是用于执行动态触觉重定目标的示例方法的流程图。

图8是用于应用世界扭曲以执行动态触觉重定目标的示例方法的流程图。

图9是用于基于用户的头部位置中的改变而确定最大世界扭曲的示例方法的流程图。

图10是用于应用身体扭曲以执行动态触觉重定目标的示例方法的流程图。

图11是图示示例增量身体扭曲的示意图。

图12是用于应用增量身体扭曲的示例方法的流程图。

图13是用于应用身体友好的身体扭曲的示例方法的流程图。

具体实施方式

概述

在本文描述了用于动态触觉重定目标的技术。当用户与虚拟现实或者混合现实环境交互时,重新目的化单个物理对象以提供用于各种虚拟对象的被动触感可以增加环境内的用户的存在的感觉并且可以增加体验的总体质量。作为示例,用户可以与包括多个类似对象的虚拟现实环境相互作用。如在虚拟现实环境内定义的,虚拟对象可以拾起并且其位置可以由用户操纵。使用在本文所描述的动态触觉重定目标技术,具有与在虚拟现实中表示的虚拟对象类似的大小和形状的单个物理对象可以被用于当用户接触虚拟对象中的任一个时向用户提供被动触觉反馈。

通过改变相对于虚拟环境的用户的物理位置的用户的感知,动态触觉重定目标使得单个物理对象能够被映射到多个虚拟对象。例如,如果存在两个虚拟对象并且两者被映射到单个物理对象,则当用户伸手去取虚拟对象中的任一个时,用户的物理运动被动态地重定向到单个物理对象,同时视觉上用户看到用户的手的虚拟表示向用户已经选择的虚拟对象伸手。

如在本文所描述的,动态触觉重定目标技术包括世界扭曲、身体扭曲和两者的组合。根据世界扭曲技术,当用户伸手去取虚拟对象时,与用户交互的虚拟环境被旋转以将虚拟对象的位置与物理对象的位置对齐。根据身体扭曲技术,当用户伸手去取虚拟对象时,虚拟环境内的用户的手和手臂的虚拟表示的位置改变,使得用户调节其运动的方向,从而当用户的手的虚拟表示到达虚拟对象时,用户的手到达物理对象。

世界扭曲技术和身体扭曲技术二者具有缺点。例如,如果过度地应用,则世界扭曲可以使得用户感觉运动病。而且,更少量的世界扭曲(例如,不足以引起运动病)可以明显地由用户检测,这可以导致用户意识到物理对象与虚拟对象不相同。作为另一示例,如果过度地应用,则身体扭曲可以导致看起来不与用户的身体的剩余部分对齐的用户的手臂或手的虚拟表示,或者用户的手臂的虚拟表示可以显得不自然地变形。

当用户与虚拟环境交互时,有效触觉重定目标可以通过动态地应用世界扭曲、身体扭曲或者世界扭曲和身体扭曲的组合实现。

说明性环境

图1图示了在其中可以实现动态触觉重定目标的示例环境100。在所图示的示例中,用户102在物理环境中,物理环境包括桌104和物理对象106。虚拟环境被映射到物理环境,并且包括虚拟对象108和虚拟对象110。

示例环境100还包括任何数目的设备以使得用户102能够与虚拟环境交互。例如,示例环境100包括设备112,设备112被实现为头戴式显示器、照相机114和手跟踪设备116。

虽然设备112被图示为头戴式显示器,但是其代表使得用户能够与虚拟环境中的虚拟对象交互的任何设备。在所图示的示例中,设备112包括处理器118、一个或多个传感器120、输入接口122和存储器124,每个可操作地连接到其他,诸如经由总线125。总线125可以包括例如以下各项中的一项或多项:系统总线、数据总线、地址总线、pci总线、mini-pci总线和任何各种本地、外围和/或独立总线。

处理器118可以表示例如cpu类型处理单元、gpu类型处理单元、现场可编程门阵列(fpga)、另一类数字信号处理器(dsp)或者在一些实例中可以由cpu驱动的其他硬件逻辑部件。例如,并且非限制性地,可以使用的说明性类型的硬件逻辑部件包括(专用集成电路(asic)、专用标准产品(assp)、片上系统系统(soc)、复杂可编程逻辑器件(cpld)等。

传感器120可以包括例如深度图传感器、照相机、光场传感器、陀螺仪、声纳传感器、红外传感器、指南针、加速度计、和/或用于检测设备112和/或其他对象的位置或者运动的任何其他部件。传感器120还可以使能表征与设备112的交互(诸如手势)的数据的生成。

i/o(输入/输出)接口122被配置为使得设备112能够接收输入或者发送输出。例如,输入可以经由触摸屏、接收手势的照相机、麦克风、键盘、鼠标或者任何其他类型的输入设备接收。类似地,例如,输出可以经由显示器、扬声器或者任何其他输出设备呈现。

存储器124可以存储由处理器118可执行的指令。例如,存储器124可以存储虚拟现实系统126,虚拟现实系统126能够被执行以使能与虚拟环境内的虚拟对象的用户交互。而且,存储器124可以存储触觉重定目标系统128,触觉重定目标系统128可以被执行以通过使用动态触觉重定目标支持与虚拟环境的用户交互。

照相机114可以被实现为采集用户的运动。由照相机114生成的数据可以然后例如被用于生成虚拟环境内的用户的手的虚拟表示。在示例实现中,来自照相机114的数据经由例如网络130被传递到触觉重定目标系统128。

示例环境100还可以包括服务器计算机系统132。示例服务器132包括处理器134和存储器136,处理器134和存储器136可操作地连接到彼此,诸如经由总线137。总线137可以包括例如以下各项中的一项或多项:系统总线、数据总线、地址总线、pci总线、mini-pci总线和任何各种本地、外围和/或独立总线。操作系统138和虚拟现实系统126的全部或部分和/或触觉重定目标系统128可以被存储在存储器136中并且在处理器134上执行。

存储器124和存储器136是计算机可读介质的示例。如上文所描述的,存储器124和存储器136可以存储由处理器118和134可执行的指令。计算机可读介质(例如,存储器124和/或存储器136)还可以存储由外部处理单元(诸如由外部cpu、外部gpu)可执行和/或由外部加速器(诸如fpga类型加速器、dsp类型加速器或者任何其他内部或者外部加速器)可执行的指令。在各种示例中,cpu、gpu和/或加速器中的至少一个被包含在设备112中,而在一些示例中,cpu、gpu和/或加速器中的一个或多个在设备112外部。

计算机可读介质可以包括计算机存储介质和/或通信介质。计算机存储介质可以包括易失性存储器、非易失性存储器、和/或其他持久和/或辅助计算机存储介质、在用于信息(诸如计算机可读指令、数据结构、程序模块或者其他数据)的存储的任何方法或者技术中实现的可移除和不可移除计算机存储介质。存储器124和存储器136可以是计算机存储介质的示例。因此,存储器124和存储器136包括包括在设备和/或作为设备的一部分或者在设备外部的硬件部件中的介质的有形和/或物理形式,包括但不限于随机存取存储器(ram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、相变存储器(pram)、只读存储器(rom)、可擦可编程只读存储器(eprom)、电可擦可编程只读存储器(eeprom)、闪存、光盘只读存储器(cd-rom)、数字通用光盘(dvd)、光卡或者其他光存储介质、磁带盒、磁带、磁盘存储、磁卡或者其他磁性存储设备或者介质、固态存储器设备、存储阵列、网络附加存储、存储区域网络、主计算机存储或者任何其他存储存储器、存储设备和/或可以被用于存储并且维持用于由计算设备访问的信息的存储介质。

与计算机存储介质相反,通信介质可以体现调制数据信号(诸如载波或者其他传输机制)中的计算机可读指令、数据结构、程序模块或者其他数据。如在本文所定义的,计算机存储介质不包括通信介质。即,计算机存储介质不包括仅包括调制数据信号、载波或者传播信号本身的通信介质。

设备112和/或服务器130可以属于各种类别或者种类的设备,诸如传统的服务器类型设备、台式计算机类型设备、移动类型设备、专用类型设备、嵌入式类型设备和/或可穿戴类型设备。因此,虽然被图示为单个类型的设备,设备112和服务器130可以包括不同的各种设备类型并且不限于特定类型的设备。设备112和服务器130可以表示但不限于台式计算机、服务器计算机、网络服务器计算机、个人计算机、移动计算机、膝上型计算机、平板计算机、可穿戴计算机、植入计算设备、电信设备、瘦客户端、终端、个人数据助理(pda)、游戏控制台、游戏设备、工作站、媒体播放器、个人视频记录器(pvr)、机顶盒、照相机、用于包含在计算设备中的集成部件、电器或者任何其他种类的计算设备。

网络128可以包括例如公共网络(诸如因特网)、私有网络(诸如机构和/或个人内联网)或者私有网络和公共网络的某种组合。网络128还可以包括任何类型的有线和/或无线网络,包括但不限于局域网(lan)、广域网(wan)、卫星网络、电缆网络、wi-fi网络、wimax网络、移动通信网络(例如,3g、4g等)或其任何组合。网络128可以利用通信协议,包括基于分组和/或基于数据报的协议,诸如网际协议(ip)、传输控制协议(tcp)、用户数据报协议(udp)或者其他类型的协议。而且,网络128还可以包括若干设备,其促进网络通信和/或形成用于网络的硬件基础,诸如交换机、路由器、网关、接入点、防火墙、基站、中继器、骨干设备等。

在一些示例中,网络128还可以包括使能对无线网络的连接(诸如无线接入点(wap))的设备。示例通过在各种电磁频率(例如,射频)上发送和接收数据的wap支持连接性,包括支持电气和电子工程师协会(ieee)802.11标准(例如,802.11g、802.11n等)和其他标准的wap。

图2图示了虚拟环境202到物理环境204的示例映射。如上文参考图1所讨论的,物理环境204包括被图示为块或者立方体的桌104和物理对象106。类似地,虚拟环境202包括虚拟桌206、虚拟对象108和虚拟对象110。视图208图示了被映射到物理环境204上的虚拟环境202,使得桌104和虚拟桌206对齐,并且物理对象106和虚拟对象108和虚拟对象110中的每一个看起来静止在桌上。

虽然未图示,但是设备112、照相机114和服务器132可以每个还包括网络接口以经由网络130促进通信。

世界扭曲和身体扭曲

图3图示了当用户向虚拟对象伸手时动态世界扭曲的示例。视图302对应于图2的视图208,视图208图示了被映射到物理环境上的虚拟环境。而且,当用户向虚拟对象108伸手时,视图302包括用户的手304的虚拟表示。由于物理对象106和虚拟对象108彼此未对齐,如果伸手去取虚拟对象108,则用户将不与物理对象106物理地接触。世界扭曲是可以被用于通过将虚拟环境202与物理环境204重新对齐来使能动态触觉重定目标的技术,使得伸手去取的虚拟对象108与物理对象106对齐。视图306图示了应用世界扭曲以相对于物理环境204移动虚拟环境202以将虚拟对象108与物理对象106对齐的结果。

图4图示了当用户向虚拟对象伸手时动态身体扭曲的示例。视图402对应于图2的视图208,视图208图示了被映射到物理环境上的虚拟环境。而且,当用户向虚拟对象108伸手时,视图402包括用户的手404的虚拟表示。如在上文参考图3所描述的场景中,由于物理对象106与虚拟对象108彼此未对齐,如果用户伸手去取虚拟对象108,则用户将不与物理对象106物理地接触。身体扭曲是可以被用于通过改变用户的手404的虚拟表示的位置以使得用户改变其物理运动来使能动态触觉重定目标的另一技术,使得当用户的手404的虚拟表示与虚拟对象108接触时,用户的物理手将与物理对象106接触。

视图406图示了示例身体扭曲,在其中用户的手404的虚拟表示被向左408移动到新位置404'。基于该调节,用户将向右物理地移动他的手,从而物理地伸手去取物理对象106,同时看起来用户的手404'的虚拟表示正伸手去取虚拟对象108。

图5图示了使用世界扭曲和身体扭曲的动态触觉重定目标的示例。视图502对应于图2的视图208,视图208图示了被映射到物理环境上的虚拟环境。而且,当用户向虚拟对象108伸手时,视图502包括用户的手504的虚拟表示。如在上文参考图2和图3所描述的场景中,由于物理对象106和虚拟对象108彼此未对齐,如果伸手去取虚拟对象108,则用户将不与物理对象106物理地接触。视图506图示了导致虚拟对象108更接近于物理对象106的动态世界扭曲的结果。视图508图示了在视图506中所示的动态世界扭曲之后应用的动态身体扭曲的结果。通过应用世界扭曲和身体扭曲的组合,每个可以比在仅一个被应用的情况下在更少的程度上应用。

示例触觉重定目标系统

图6图示了示例触觉重定目标系统128的选择部件,触觉重定目标系统128包括虚拟目标检测模块602、物理目标选择模块604和扭曲控制模块606。如上文参考图1所描述的,触觉重定目标系统128的一个或多个单独部件或者单独部件的部分可以被实现为设备112和/或服务器132的部分、或者通信地连接到设备112的任何其他设备。

目标检测模块602确定用户将伸向的虚拟对象。任何数目的技术可以被用于检测目标虚拟对象。例如,用户可以经由用户接口选择或者经由语音命令指示目标。作为另一示例,设备112可以包括传感器以促进注视检测,并且目标虚拟对象可以基于所确定的注视方向而检测。作为另一示例,向量可以基于用户的伸手而生成,并且与向量的交点最近的虚拟对象可以被检测作为目标虚拟对象。

物理目标选择模块604选择待映射到检测到的目标虚拟对象的物理对象。任何数目的技术可以被用于选择目标物理对象。作为示例,如果多个物理对象在物理环境中,则可以选择最接近于目标虚拟对象的物理对象。作为另一示例,如果多个物理对象在物理环境中,则可以选择最接近地类似目标虚拟对象的物理对象。在另一示例中,类似目标虚拟对象的最近物理对象可以被选择作为目标物理对象。在又一示例中,以上准则中的任一个可以结合确定用户的物理手与物理对象之间的路径不和任何其他物理或者虚拟对象相交的物理对象来使用。

扭曲控制模块606控制世界扭曲和/或身体扭曲的应用以促进动态触觉重定目标。扭曲控制模块606包括世界扭曲模块608和身体扭曲模块610。世界扭曲模块608动态地应用世界扭曲以当用户向虚拟对象伸手时增量地改变虚拟环境与物理环境的对齐。身体扭曲模块610动态地应用身体扭曲以当用户向虚拟对象伸手时增量地修改用户的手的虚拟表示的位置。

用于动态触觉重定目标的方法

图7至图12图示了用于执行动态触觉重定目标的示例方法。示例过程被图示为逻辑流程图中的块的集合,该集合表示可以以硬件、软件或其组合实现的操作的序列。块由数字引用。在软件的上下文中,块表示在一个或多个计算机可读介质上存储的计算机可执行指令,当由一个或多个处理单元(诸如硬件微处理器)执行时,执行记载的操作。通常,计算机可执行指令包括执行特定功能或者实现特定抽象数据类型的例程、程序、对象、部件、数据结构等。描述操作的次序不旨在被解释为限制,并且任何数目的所描述的块可以以任何次序和/或并行组合以实现过程。

图7图示了用于执行动态触觉重定目标的示例方法700。在块702处,虚拟环境与物理环境对齐。例如,如上文参考图1和图2所描述的,虚拟现实系统125将虚拟环境202与物理环境204对齐。

在块704处,在虚拟环境内检测目标虚拟对象。例如,虚拟目标检测模块602检测虚拟对象,即,用户的伸手的目标。例如,如上文参考图6所描述的,虚拟目标检测模块可以使用任何数目的技术检测目标虚拟对象,包括但不限于通过用户接口或者语音命令的用户选择、注视检测或者用户的手的运动的分析。

在块706处,确定目标虚拟对象的虚拟位置。例如,虚拟现实系统125跟踪每个虚拟对象的位置。

在块708处,在物理环境内选择目标物理对象。例如,物理目标选择模块604选择待映射到目标虚拟对象的物理对象。例如,如上文参考图6所描述的,任何数目的技术可以被用于选择目标物理对象。例如,如果多个物理对象是候选,则最接近于目标虚拟对象的物理对象可以被选择,最接近地类似目标虚拟对象的物理对象可以被选择,或者具有由目标虚拟对象表示的纹理的物理对象可以被选择。

在块710处,确定目标物理对象的物理位置。例如,虚拟现实系统126可以被配置为维持与虚拟环境被映射到的物理环境中的每个物理对象相关联的位置数据。

在块712处,确定目标虚拟对象的虚拟位置是否与目标物理对象的物理位置对齐。例如,扭曲控制模块606将目标虚拟对象的位置与目标物理对象的位置相比较。如果位置在彼此的阈值距离内,那么确定目标虚拟对象和目标物理对象对齐。

如果目标虚拟对象的虚拟位置与目标物理对象的物理位置对齐(来自块712的“是”分支),那么在块714处,当不需要执行世界扭曲或者身体扭曲时,方法结束。

另一方面,如果目标虚拟对象的虚拟位置不与目标物理对象的物理位置对齐(来自块712的“否”分支),那么在块716处,当用户向虚拟对象伸手时,动态地应用世界扭曲。

在块718处,扭曲控制模块606确定目标虚拟对象的虚拟位置是否与目标物理对象的物理位置对齐。例如,扭曲控制模块606将目标虚拟对象的位置(在世界扭曲已经应用之后)与目标物理对象的位置相比较。如果位置在彼此的阈值距离内,那么确定目标虚拟对象和目标物理对象对齐。

如果目标虚拟对象的虚拟位置与目标物理对象的物理位置对齐(来自块718的“是”分支),那么在块714处,当不需要执行身体扭曲或者附加的世界扭曲时,方法结束。

另一方面,如果目标虚拟对象的虚拟位置不与目标物理对象的物理位置对齐(来自块718的“否”分支),那么在块720处,当用户向虚拟对象伸手时,动态地应用身体扭曲。

处理如上文参考块712所描述地继续。在示例实现中,当用户向目标虚拟对象伸手时,反复地执行块712-720。这些步骤可以基于预定义时间间隔周期性地执行。例如,可以针对由传感器120采集的数据的每个帧执行由块712-720表示的步骤。

图8图示了用于当用户向虚拟对象伸手时动态地应用世界扭曲的示例方法716。在块802处,计算目标物理对象的物理位置与目标虚拟对象的虚拟位置之间的位置差异。例如,虚拟现实系统126维持用于目标虚拟对象和目标物理对象的位置数据。在示例实现中,世界扭曲模块计算目标虚拟对象的位置与目标物理对象的位置之间的差异。差异可以被表示为向量、旋转度、或者旋转度和向量的组合,当差异应用到相对于物理环境的虚拟环境,将导致目标虚拟对象与目标物理对象对齐。

在块804处,期望的世界扭曲基于位置差异而确定。例如,如果位置差异被表示为旋转度,则期望的世界扭曲被确定为等于位置差异。换句话说,期望的世界扭曲是如果被应用到相对于物理环境的虚拟环境则将导致目标虚拟对象与物理对象对齐的世界扭曲。

然而,如本领域中众所周知,应用过度的世界扭曲可以明显地由用户检测和/或可以引起针对用户的运动病的感觉。先前的研究已经显示当用户移动他的头部时,平移和/或旋转可以被应用到虚拟环境,其对于用户感觉不到或者最小地感觉不到。例如,如果用户向右旋转他的头部90度,则向左或右旋转虚拟环境10度可能对于用户感觉不到。因此,基于用户的头部位置(例如,平移和/或旋转)中的改变的阈值因子可以被应用以确定可能对于用户感觉不到的最大世界扭曲。与旋转相比,平移的阈值因子可以不同。而且,阈值因子可以不是对称的。即,当用户向右旋转他的头部时,用于应用右旋转世界扭曲的阈值可以大于用于应用左旋转世界扭曲的阈值。类似地,用于应用竖直平移或者旋转的阈值可以与用于应用水平平移或者旋转的阈值不同。

在块806处,确定用户的头部的第一位置。例如,基于从照相机114和/或传感器120接收到的数据,确定在第一时间点处用户的头部的位置。

在块808处,稍后,确定用户的头部的第二位置。例如,基于从照相机114和/或传感器120接收到的数据,确定在第二稍后时间点处用户的头部的位置。在示例中,第一时间点与第二时间点之间的差异是零点几秒。

在块810处,计算用户的头部的第一位置与第二位置之间的位置差异。例如,世界扭曲模块608将用户的头部的第一位置与用户的头部的第二位置相比较。位置差异可以表示以下各项中的任何一项或多项:水平平移、竖直平移、水平旋转或者竖直旋转。在示例实现中,所计算的位置差异是表示三维位置差异的单个值。在另一示例中,所计算的位置差异可以具有表示例如水平平移、竖直平移、水平旋转或者竖直旋转的多个分量。

在块812,最大世界扭曲基于计算的位置差异而确定。例如,世界扭曲模块608将阈值扭曲因子应用到计算的位置差异以确定最大世界扭曲。在示例实现中,最大世界扭曲可以被表示为表示三维空间中的位置改变的单个值。在另一示例实现中,最大世界扭曲可以是多个值的组合。例如,第一最大扭曲值可以基于用户的头部的水平平移,第二最大扭曲值可以基于用户的头部的水平旋转,并且第三最大扭曲值可以基于用户的头部的竖直旋转。

在块814处,确定期望的世界扭曲是否小于或等于最大世界扭曲。例如,如上文所描述的,最大世界扭曲表示当可能对于用户感觉不到时虚拟环境可以扭曲的程度。在块814处,确定在阈值最大世界扭曲内是否应用足以将目标虚拟对象与目标物理对象对齐的世界扭曲。

如果期望的世界扭曲小于或等于最大世界扭曲(来自块814的“是”分支),那么在块816处,应用期望的世界扭曲。例如,世界扭曲模块608基于先前地经计算的期望的世界扭曲,相对于物理环境旋转和/或平移虚拟环境,这导致目标虚拟对象和目标物理对象的对齐。

另一方面,如果期望的世界扭曲大于最大世界扭曲(来自块814的“否”分支),那么在块818处,应用最大世界扭曲。例如,如果确定将目标虚拟对象与目标物理对象对齐的必要的世界扭曲对于用户将可能是可感觉到的,那么应用最大世界扭曲(其可能对于用户感觉不到)。例如,世界扭曲模块608基于先前地经计算的最大世界扭曲,相对于物理环境旋转和/或平移虚拟环境。因此,目标虚拟对象与目标物理对象之间的位置差异将小于在世界扭曲之前的位置差异,但是目标虚拟对象和目标物理对象将仍然未对齐。

图9图示了用于基于水平和竖直头部旋转而计算最大世界扭曲的示例方法900。在块902处,确定位置差异的水平分量和竖直分量。例如,如果虚拟对象和物理对象二者静止在相同表面上,则位置差异的水平分量表示沿着桌面的平面的虚拟对象与物理对象之间的差异。如果虚拟对象例如被堆叠在另一虚拟对象上,则并且位置差异的竖直分量表示虚拟对象与物理对象之间的竖直距离。如果虚拟对象和物理对象二者静止在相同表面上,则位置差异的竖直分量是零。

在块904处,确定第一头部位置。例如,第一头部位置由面部906表示。块904可以对应于图8中的块806。

在块908处,确定第二头部位置。例如,第二头部位置由面部910表示。块908可以对应于图8中的块808。

在块912处,确定第一头部位置与第二头部位置之间的水平线旋转差异。例如,面部906与面部914之间的差异表示水平旋转差异,水平旋转差异归因于左/右头部旋转。

在块916处,确定第一头部位置与第二头部位置之间的竖直旋转差异。例如,面部906与面部918之间的差异表示竖直旋转差异,竖直旋转差异归因于上/下头部点头。

块912和916可以对应于图8中的块810。

在块920处,计算最大水平世界扭曲。例如,世界扭曲模块608确定由第一头部位置与第二头部位置之间的差异表示的水平旋转度。最大世界扭曲缩放因子然后被应用到水平旋转度以计算最大水平世界扭曲。如上文所描述的,基于水平头部旋转,两个值可以被计算用于最大世界扭曲(即,用于右旋转扭曲的一个和用于左旋转扭曲的一个)。例如,如果用户的头部向右旋转,则可以计算将允许虚拟环境进一步向右旋转49%的第一最大水平世界扭曲,并且可以计算将允许虚拟环境较少地旋转20%(有效地使虚拟环境向左旋转)的第二最大水平世界扭曲。

在块922处,计算最大竖直世界扭曲。例如,世界扭曲模块608确定由第一头部位置与第二头部位置之间的差异表示的竖直旋转度。最大世界扭曲缩放因子然后被应用到竖直旋转度以计算最大竖直世界扭曲。如上文所描述的,基于竖直头部旋转,两个值可以被计算用于最大世界扭曲(即,用于向上旋转扭曲的一个和用于向下旋转扭曲的一个)。

块920和922可以对应于图8中的块812。

图10图示了用于当用户伸手去取虚拟对象时动态地应用身体扭曲的示例方法1000。在块1002处,确定用户的手的物理位置。例如,虚拟现实系统126可以基于手跟踪设备116和/或来自照相机114的数据跟踪用户的手的物理位置。

在块1004处,确定用户的手的虚拟表示的虚拟位置。例如,虚拟现实系统126维持表示用户的手的虚拟表示的当前位置的数据。

在块1006处,确定物理对象的物理位置。例如,物理目标选择模块604选择并且标识用户伸手去取的目标虚拟108被映射到的目标物理对象106。物理对象的物理位置可以例如由虚拟现实系统126跟踪。

在块1008处,确定虚拟对象的虚拟位置。例如,虚拟现实系统126维持对应于用户伸手去取的虚拟对象108的虚拟位置的位置数据。

在块1010处,身体扭曲通过计算物理对象的物理位置与虚拟对象的虚拟位置之间的位置差异来确定。例如,身体扭曲模块610计算物理对象106的物理位置与虚拟对象108的虚拟位置之间的差异。

在块1012处,身体扭曲被应用到用户的手的虚拟表示。例如,身体扭曲模块610平移虚拟环境内的用户的手的虚拟表示,使得描述用户的物理手的物理位置与物理对象的物理位置之间的路径的向量具有与描述用户的手的虚拟表示的平移的虚拟位置与虚拟对象的虚拟位置之间的路径的向量相同的距离和方向。

图11图示了示例增量身体扭曲。根据参考图10所描述的技术,当用户首先开始伸手去取虚拟对象时,最初应用身体扭曲。相反,图11图示了在其中增量地应用身体扭曲使得当用户的手更接近于伸出的目标时应用较大的身体扭曲的场景。

例如,如在图11中所图示的,po表示当用户开始伸手去取虚拟对象1104时用户的物理手的初始位置1102。vt表示虚拟对象1104的虚拟位置。pt表示物理对象1106的物理位置,物理对象1106被映射到虚拟对象1104。物理对象1106的物理位置与虚拟对象1104的虚拟位置之间的向量1108表示总身体扭曲被应用以确保当用户的手的虚拟表示到达虚拟对象时,用户的物理手到达物理对象。

当用户伸手去取虚拟对象1104时,ph表示用户的物理手的当前位置1110并且vh表示用户的手的虚拟表示的对应的当前位置1112。用户的手的当前位置与用户的手的虚拟表示的当前位置之间的向量1114表示基于当前位置1110和1112在当前位置处待应用的增量扭曲。

图12图示了用于当用户伸手去取虚拟对象时动态地应用增量身体扭曲的示例方法1200。图12中所图示的方法可以对应于图7的块720。

在块1002处,确定用户的手的初始物理位置。例如,如在图11中所图示的并且上文参考图11所描述的,当用户开始伸手去取虚拟对象时,初始手位置可以被指示为po1102。如在图7中所图示的并且上文参考图7所描述的,当用户伸手去取虚拟对象时,反复步骤712-720。在示例实现中,第一次步骤720针对特定目标虚拟对象被执行时,po被确定为用户的物理手的位置。用户的手的初始物理位置可以由例如虚拟现实系统126跟踪,并且由身体扭曲模块610维持。

在块1204处,确定目标虚拟对象的虚拟位置。例如,虚拟现实系统126可以维持与虚拟对象相关联的位置信息。如在图11中所图示的,目标虚拟对象的虚拟位置可以被表示为vt1104。

在块1206处,确定目标物理对象的物理位置。例如,物理目标选择模块604选择并且标识用户伸手去取的目标虚拟对象1104被映射到的目标物理对象1106。身体扭曲模块610例如基于由虚拟现实系统126维持的位置数据,确定位置pt。

在块1208处,确定总身体扭曲。例如,身体扭曲模块610计算目标虚拟对象1104的虚拟位置vt与目标物理对象1106的物理位置pt之间的差异。

在块1210处,确定用户的手的当前物理位置。例如,如上文参考块1202所描述的,当用户伸手去取虚拟对象时,增量身体扭曲可以应用多次。因此,第一次身体扭曲被应用时,用户的手的当前物理位置ph等于用户的手的初始物理位置po。然而,当用户移动其手时,po保持恒定,同时ph改变以反映用户的手1110的当前位置。

在块1212处,在用户的手的当前物理位置与用户的手的初始物理位置之间确定第一向量。例如,参考图11,身体扭曲模块610确定ph与po之间的方向和距离。

在块1214处,在目标物理对象的物理位置与用户的手的初始物理位置之间确定第二向量。例如,参考图11,身体扭曲模块610确定pt与po之间的方向和距离。

在块1216处,扭曲比率基于第一向量与第二向量之间的差异来计算。例如,身体扭曲模块610计算扭曲比率α,使得:

在块1218处,增量身体扭曲基于总身体扭曲(参见块1208)和扭曲比率来确定。例如,身体扭曲模块610可以将总身体扭曲乘以扭曲比率以计算增量身体扭曲。

在块1220处,增量身体扭曲被应用到用户的手的虚拟表示。例如,用户的手1112的虚拟表示的虚拟位置平移增量身体翘曲值。

图13图示了用于应用身体友好的身体扭曲的示例方法1300。如上文参考图4所描述的,平移用户的手的虚拟表示可以导致看起来与身体断开或者以其他方式与身体未对准的手的虚拟表示。方法1300利用旋转调节以维持用户的手的虚拟表示与用户的身体之间的更现实的对齐。

在块1302处,确定初始虚拟手位置。例如,当用户开始伸手去取目标虚拟对象时身体扭曲模块610确定用户的手的虚拟表示的位置。在示例实现中,当多个身体扭曲随时间应用时,该值可以保持恒定。

在块1304处,确定当前虚拟手位置。例如,身体扭曲模块610确定用户的手的虚拟表示的当前位置。在示例实现中,当用户伸手去取目标虚拟对象时,用户的手的虚拟表示的位置改变。

在块1306处,虚拟位置差异被计算作为初始虚拟手位置与当前虚拟手位置之间的差异。例如,身体扭曲模块610确定表示初始虚拟手位置与当前虚拟手位置之间的方向和距离的向量。

在块1308处,确定虚拟位置差异是否大于阈值。例如,用户的身体与用户的手的虚拟表示之间的未对准的容许量可以由阈值表示。在示例实现中,阈值可以包括方向分量和距离分量。例如,较大的距离阈值可以结合较小的角度差异被容许。

如果虚拟位置差异大于阈值(来自块1308的“是”分支),那么在块1310处,通过向用户的手的虚拟表示应用平移和旋转来应用扭曲比率。例如,身体扭曲模块610可以平移用户的手的虚拟表示,并且然后绕着与用户的手腕重合的点旋转用户的手的虚拟表示,以更好地对齐最接近于用户的身体的用户的手的虚拟表示的部分。

另一方面,如果虚拟位置差异不大于阈值(来自块1308的“否”分支),那么在块1312处,通过向用户的手的虚拟表示应用平移来应用扭曲比率。

示例条款

a.一种方法,包括:将虚拟环境映射到物理环境以在虚拟环境与物理环境之间建立对齐;在物理环境内确定物理对象的物理位置;在虚拟环境内确定虚拟对象的虚拟位置;确定用户正向虚拟对象伸手;在用户正向虚拟对象伸手时,在虚拟环境内绘出表示用户的手的至少一部分的虚拟手;以及至少部分地基于物理位置与虚拟位置之间的差异:动态地调节虚拟环境与物理环境之间的对齐以减少物理位置与虚拟位置之间的差异;动态地调节用户的手的虚拟表示以使得用户物理地伸手去取物理对象,同时看起来用户的手的虚拟表示正伸手去取虚拟对象。

b.根据段落a所述的方法,还包括:在用户正向虚拟对象伸手时确定用户的头部的第一位置;在用户正向虚拟对象伸手时确定用户的头部的第二位置;计算用户的头部的第一位置与用户的头部的第二位置之间的差异,其中差异指示竖直旋转;以及动态地调节虚拟环境与物理环境之间的对齐以减少物理位置与虚拟位置之间的竖直距离。

c.根据段落a或段落b所述的方法,还包括:在用户正向虚拟对象伸手时确定用户的物理手的位置和虚拟手的对应的位置;确定表示虚拟手的位置与虚拟对象的虚拟位置之间的距离和方向的虚拟向量;确定表示用户的物理手的位置与物理对象的物理位置之间的距离和方向的物理向量;以及至少部分地基于虚拟向量与物理向量之间的差异,动态地应用身体扭曲以调节虚拟环境内的虚拟手的位置。

d.根据段落c所述的方法,其中应用身体扭曲包括:基于物理对象的物理位置、用户的物理手的初始位置和用户的物理手的当前位置,计算扭曲比率;以及至少部分地基于扭曲比率,调节虚拟环境内的虚拟手的位置。

e.根据段落c或者段落e所述的方法,其中应用身体扭曲包括:向虚拟手应用平移以调节虚拟环境内的虚拟手的位置;并且向虚拟手应用旋转。

f.根据段落a-e中的任一项所述的方法,还包括:当用户向虚拟对象伸手时,反复地应用世界扭曲。

g.根据段落a-f中的任一项所述的方法,还包括:当用户向虚拟对象伸手时,反复地应用身体扭曲,使得基本上在用户的物理手与物理位置相交的同时,虚拟手的位置与虚拟位置相交。

h.一种方法,包括:将虚拟环境映射到物理环境以在虚拟环境与物理环境之间建立对齐;在物理环境内确定物理对象的虚拟环境和用户的物理手的物理位置;在虚拟环境内确定虚拟对象的虚拟位置和用户的手的虚拟表示的虚拟位置;确定用户正向虚拟对象伸手;确定虚拟对象和物理对象未对齐,使得,基于当前轨迹,当用户的手的虚拟表示到达虚拟对象时,用户的物理手将不到达物理对象;以及动态地调节用户的手的虚拟表示的虚拟位置以减少物理对象的物理位置与用户的物理手的物理位置之间的向量与虚拟对象的虚拟位置与用户的手的虚拟表示的虚拟位置之间的向量之间的差异。

i.根据段落h所述的方法,还包括:当用户向虚拟象伸手时反复地调节用户的手的虚拟表示的虚拟位置,使得基本上在用户的手的物理位置与物理对象的物理位置相交的同时,用户的手的虚拟表示的虚拟位置与虚拟对象的虚拟位置相交。

j.根据段落h或段落i所述的方法,其中动态地调节用户的手的虚拟表示的虚拟位置包括:

向用户的手的虚拟表示应用平移以调节虚拟环境内的用户的手的虚拟表示的虚拟位置;以及

向用户的手的虚拟表示应用旋转。

k.根据段落h-j中的任一项所述的方法,其中动态地调节用户的手的虚拟表示的虚拟位置包括:

基于物理对象的物理位置、用户的手的初始物理位置和用户的手的当前物理位置,计算扭曲比率;以及

至少部分地基于扭曲比率,调节虚拟环境内的虚拟手的虚拟位置。

l.根据段落k所述的方法,还包括:反复地计算扭曲比率并且当用户向虚拟对象伸手时,至少部分地基于扭曲比率,调节用户的手的虚拟表示的虚拟位置,使得基本上在用户的手的物理位置与物理对象的物理位置相交的同时,用户的手的虚拟表示的虚拟位置与虚拟对象的虚拟位置相交。

m.一个或多个计算机可读介质,其具有被存储在其上的计算机可执行指令,当计算机可执行指令由计算设备执行时,使得计算设备执行操作,操作包括:将虚拟环境映射到物理环境以在虚拟环境与物理环境之间建立对齐;在物理环境内确定物理对象的物理位置;在虚拟环境内确定虚拟对象的虚拟位置;确定用户正向虚拟对象伸手;动态地调节虚拟环境与物理环境之间的对齐以减少物理对象的物理位置与虚拟对象的虚拟位置之间的差异;以及动态地调节用户的手的虚拟表示的虚拟位置以增加基本上在用户的手的虚拟表示将到达虚拟对象的虚拟位置的同时用户的物理手将到达物理对象的物理位置的可能性。

n.根据段落m所述的一个或多个计算机可读介质,其中动态地调节用户的手的虚拟表示的虚拟位置以增加基本上在用户的手的虚拟表示将到达虚拟对象的虚拟位置的同时用户的物理手将到达物理对象的物理位置的可能性包括:动态地调节用户的手的虚拟表示的虚拟位置以减少物理对象的物理位置与用户的物理手的物理位置之间的向量与虚拟对象的虚拟位置与用户的手的虚拟表示的虚拟位置之间的向量之间的差异。

o.根据段落m或段落n所述的一个或多个计算机可读介质,其中动态地调节用户的手的虚拟表示的虚拟位置包括:平移虚拟环境内的用户的手的虚拟表示;以及旋转虚拟环境内的用户的手的虚拟表示。

p.根据段落m-o中的任一项所述的一个或多个计算机可读介质,其中动态地调节虚拟环境与物理环境之间的对齐以减少物理对象的物理位置与虚拟对象的虚拟位置之间的差异包括:确定用户的头部的位置中的改变;以及至少部分地基于用户的头部的位置中的确定的改变,动态地调节虚拟环境与物理环境之间的对齐。

q.根据段落p所述的一个或多个计算机可读介质,其中动态地调节虚拟环境与物理环境之间的对齐以减少物理对象的物理位置与虚拟对象的虚拟位置之间的差异还包括:计算物理对象的物理位置与虚拟对象的虚拟位置之间的距离;以及至少部分地还基于物理对象的物理位置与虚拟对象的虚拟位置之间的距离,动态地调节虚拟环境与物理环境之间的对齐。

r.根据段落m-q中的任一项所述的一个或多个计算机可读介质,其中动态地调节虚拟环境与物理环境之间的对齐以减少物理对象的物理位置与虚拟对象的虚拟位置之间的差异包括:确定用户的头部的位置中的改变;至少部分地基于用户的头部的位置中的改变,计算最大调节值;以及至少部分地基于最大调节值,调节虚拟环境与物理环境之间的对齐。

s.根据段落r所述的一个或多个计算机可读介质,其中动态地调节虚拟环境与物理环境之间的对齐以减少物理对象的物理位置与虚拟对象的虚拟位置之间的差异还包括:计算物理对象的物理位置与虚拟对象的虚拟位置之间的距离;并且至少部分地还基于物理对象的物理位置与虚拟对象的虚拟位置之间的距离,动态地调节虚拟环境与物理环境之间的对齐。

t.根据段落m-q中的任一项所述的一个或多个计算机可读介质,其中动态地调节虚拟环境与物理环境之间的对齐以减少物理对象的物理位置与虚拟对象的虚拟位置之间的差异包括:计算物理对象的物理位置与虚拟对象的虚拟位置之间的竖直距离;确定用户的头部的竖直旋转;基于用户的头部的竖直旋转,计算最大调节值;并且至少部分地基于最大调节值和物理对象的物理位置与虚拟对象的虚拟位置之间的竖直距离,动态地调节虚拟环境与物理环境之间的竖直对齐。

结论

虽然已经以特定于结构特征和/或方法动作的语言描述技术,但是将理解到,随附的权利要求中本不必限于所描述的特征或动作。而是,特征和动作被描述为这样的技术的示例实现。

示例过程的操作在单独块中图示并且参考那些块概述。过程被图示为块的逻辑流,其中的每个块可以表示可以以硬件、软件或其组合实现的一个或多个操作。在软件的上下文中,操作表示在一个或多个计算机可读介质上存储的计算机可执行指令,当由一个或多个处理器执行时,使得一个或多个处理器能够执行记载的操作。通常,计算机可执行指令包括执行特定功能或者实现特定抽象数据类型的例程、程序、对象、模块、部件、数据结构等。描述操作的次序不旨在被解释为限制,并且任何数目的描述的操作可以以任何次序执行、以任何次序组合、再分成多个子操作和/或并行执行以实现所描述的过程。所描述的过程可以通过与一个或多个设备112和/或服务器130(诸如一个或多个内部或者外部cpu或gpu)和/或一个或多个硬件逻辑(诸如fpga、dsp或者其他类型的加速器)相关联的资源执行。

上文所描述的所有方法和过程可以在专业计算机硬件中体现并且经由专业计算机硬件充分地自动化。方法中的一些或全部可以备选地在由一个或多个通用计算机或者处理器执行的软件代码模块中体现。代码模块可以被存储在任何类型的计算机可读存储介质或其他计算机存储设备中。

除非另外特别说明,否则条件语言(诸如尤其“可以(can)”、“可以(could)”、“可以(may)”、“可以(might)”)在上下文内被理解为呈现某些实例而其他示例不包括某些特征、元件和/或步骤。因此,这样的条件语言通常不旨在隐含某些特征、元件和/或步骤以对于一个或多个示例所要求的任何方式或者一个或多个示例必然地包括用于在有或没有用户输入或者提示的情况下决定某些特征、元件和/或步骤是被包括还是将在任何特定示例中执行的逻辑。除非另外特别说明,否则连接性语言(诸如短语“x、y或z中的至少一个”)将被理解为呈现项、术语等可以是或者x、y或z或者其组合。

在本文所描述和/或在附图中所描绘的流程图中的任何例程描述、元件或块应当被理解为潜在地表示包括用于实现例程中的特定逻辑功能或元件的一个或多个可执行指令的代码的模块、段或部分。备选实现被包括在本文所描述的示例的范围内,其中元件或功能可以删除或者以脱离来自所示或所讨论的次序执行,包括基本上同步地或以相反的次序,这取决于所涉及的功能,如将由本领域的技术人员所理解的。应当强调,可以对上文所描述的示例做出许多变型和修改,其元件将被理解为在其他可接受的示例中间。所有这样的修改和变型旨在在本文被包括在本公开的范围内并且由所附权利要求保护。

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