CN114175103A - 使用表面跟踪的虚拟现实模拟 - Google Patents

使用表面跟踪的虚拟现实模拟 Download PDF

Info

Publication number
CN114175103A
CN114175103A CN202080054536.5A CN202080054536A CN114175103A CN 114175103 A CN114175103 A CN 114175103A CN 202080054536 A CN202080054536 A CN 202080054536A CN 114175103 A CN114175103 A CN 114175103A
Authority
CN
China
Prior art keywords
pose
follower
obstacle
leader
algorithm
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.)
Pending
Application number
CN202080054536.5A
Other languages
English (en)
Inventor
G·约曼
M·索特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN114175103A publication Critical patent/CN114175103A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本公开提供一种用于渲染虚拟现实(VR)场景的系统,以及用于在模拟步骤期间在VR模拟器中确定跟随者姿态的方法和计算机程序产品。在一个示例中,该方法包括:(1)利用输入参数计算一个或更多个当前候选姿态,其中当前候选姿态中的每一个是跟随者姿态沿着朝向前导者姿态的相应的扫动方向的时间投影,并且其中障碍物位于所述跟随者姿态和所述前导者姿态之间;(2)从所述一个或更多个当前候选姿态中选择目标姿态;(3)利用基于物理的约束和所述输入参数来细化所述目标姿态,其中所述基于物理的约束使用所述障碍物的表面;以及(4)基于所述细化的目标姿态来渲染新的跟随者姿态。

Description

使用表面跟踪的虚拟现实模拟
相关申请的交叉引用
本申请要求由戈登·约曼等人在2020年5月29日提交的名称为“使用表面跟踪的虚拟现实模拟”的美国非临时申请序号16/888,408的权益,该美国非临时申请要求由戈登·约曼等人于2019年5月30日提交的名称为“使用表面跟踪的虚拟现实模拟”的美国临时申请序号62/854,850的权益,其与本申请共同转让并且通过引用并入本文。
技术领域
本申请总体上涉及虚拟现实模拟,并且更具体地涉及当对象与障碍物相互作用时模拟对象在虚拟现实环境中的移动。
背景技术
在虚拟现实(VR)系统中,采用传感器来跟踪用户的运动以便使得该运动能够在模拟环境内复制。由VR模拟器在模拟的环境中显示的物体、人物、动物、植物和其他障碍物通常不存在于用户的物理空间中,例如,用户周围的物理区域。因此,用户可在其物理空间中做出可打破模拟环境的错觉的运动或移动。例如,用户可以在他们的物理空间中向前推动他们的手但不会遇到障碍物,而在模拟的环境中,他们的手穿透他们前面的墙壁。在模拟环境中的这种不现实的情况会使用户的虚拟体验降级。
发明内容
在一个方面,本公开提供了一种用于在模拟步骤期间在虚拟现实(VR)模拟器中确定跟随者姿态的方法。在一个示例中,该方法包括:(1)利用输入参数计算一个或更多个当前候选姿态,其中当前候选姿态中的每一个是跟随者姿态沿着朝向前导者姿态的相应的扫动方向的时间投影,并且其中障碍物位于所述跟随者姿态和所述前导者姿态之间;(2)从所述一个或更多个当前候选姿态中选择目标姿态;(3)利用基于物理的约束和所述输入参数来细化所述目标姿态,其中所述基于物理的约束使用所述障碍物的表面;以及(4)基于细化的目标姿态来渲染新的跟随者姿态。
在另一方面中,本公开提供了一种计算机程序产品,该计算机程序产品具有存储在非暂时性计算机可读介质上的一系列操作指令,该一系列操作指令在被执行时引导数据处理装置由此执行操作以在模拟步骤期间在VR模拟器中确定跟随者姿态。在一个示例中,所述操作包括:(1)计算一个或更多个候选姿态,其中候选姿态中的每一个是跟随者姿态沿着朝向前导者姿态的相应的扫动方向的时间投影,并且其中障碍物位于跟随者姿态与前导者姿态之间;(2)从一个或更多个候选姿态中选择目标姿态;(3)利用基于物理的约束来细化目标姿态;以及(4)基于细化的目标姿态来渲染新的跟随者姿态。
再一方面,本公开提供了一种用于渲染VR场景的系统。在一个示例中,该系统包括:(1)VR控制器,其可操作以发送与用户的移动相对应的用户参数;以及(2)VR模拟器,其可操作以接收并使用用户参数和应用参数,以基于前导者姿态与障碍物的相互作用而利用一个或更多个移动算法来渲染模拟环境的场景,其中前导者姿态表示用户在模拟环境中的移动,并且障碍物至少部分地位于模拟环境中的跟随者姿态和前导者姿态之间。
附图说明
现在参考结合附图进行的以下描述,其中:
图1A是2D环境中的示例候选姿态分析的图示;
图1B是3D环境中的示例候选姿态分析的图示;
图2是视觉地表示用于确定最终姿态的示例方法的图示;
图3是视觉地表示分析最终姿态重影的方法的图示;
图4是视觉地表示细化目标姿态的图示;
图5是用于确定用于在模拟环境中移动对象的移动算法的类型的方法的示例的流程图的图示;
图6是用于在跟随者姿态与前导者姿态之间存在障碍物时确定目标姿态的方法的示例的流程图的图示;以及
图7是展示示例虚拟现实表面跟踪系统的框图的图示。
具体实施方式
VR模拟器可以描绘经由VR显示器提供给用户的各个类型的设置、位置、场景等的VR环境(即,模拟环境),并且允许用户在物理空间中执行在模拟环境中复制的各种各样的动作和运动(即,移动)。VR显示器可以是VR头戴设备、眼镜或能够示出二维(2D)或三维(3D)模拟环境的另一类型的显示器。用户做出的移动可由一个或更多个VR控制器(诸如跟踪眼睛移动和头部移动的耳机、手持控制器、相机、触觉设备以及其他类型的身体和传感器控制器)捕获。
由于VR模拟器可以创建与用户的物理环境(例如,用户周围的物理空间)不同的模拟环境,所以用户可以在模拟环境中发起物理环境中不真实的移动,如在模拟环境中移动他们的手通过障碍物。障碍物可以是物体、人物、动物、植物、流体或可以防止或改变另一物体的运动的其他类型的基于物理学的物体。如上所述的墙是可存在于模拟环境内的障碍物的示例。
虽然模拟不真实的移动(例如,显示用户的手移动通过实心墙)可能中断用户的VR体验,但阻止用户在模拟的环境中完成移动也会因引起迷惑而负面地影响VR体验。例如,当用户的手在其物理空间中被向前推动时,模拟的环境可模拟用户的手停在用户前方一英寸的墙处。另一个令人不满意的解决方案是允许用户的手在模拟环境内移动穿过障碍物,而用户可能握持或携带的物体被障碍物停止。这种类型的移动处理可以被描述为具有穿透避免的联合拾取(jointed picking)。因此,用户的虚拟体验可通过改进模拟环境中对象和障碍物的相互作用来改进。
本公开提供了能够控制对象在虚拟环境中的运动以阻止该对象穿透虚拟环境中的障碍物的系统和方法。代替穿透障碍物,本文公开的特征沿着障碍物的表面移动对象,其对于用户而言看起来是可信的和似乎是可信的。本文公开了使用刚体算法和几何查询的组合来计算近似用户的移动(由传感器跟踪)的潜在移动,同时在模拟环境内维持障碍物的基于物理的约束的方法。约束是控制对象在模拟环境中的移动的因素。类似于公路上的护栏,约束可控制沿指定路径的移动。基于物理的约束可包括运动对象或人物的约束(例如,速度、速率和动量)、与障碍物的表面相互作用的约束(例如,表面刚性、反弹和纹理)、外部约束、刚体约束(例如,强固体在较小的力下不会弯曲)和VR模拟器内可用的其他基于物理的约束。外部约束的示例可以是,手在撞击障碍物时不能被迫以不自然的方式弯曲。连接到手臂的模拟手可符合由手指、手腕和手臂定位、扭矩和柔性参数施加的约束。约束可以遵循由用户、由应用或由VR模拟器建立的规则。约束不必遵循现实生活中所经历的;基于物理的约束可由运行模拟环境的应用建立。应用可以是视频游戏应用。
当创建模拟环境时,VR模拟器平衡来自用户的请求移动和由障碍物施加的约束,例如,满足用户移动的力和阻止移动的障碍物的接触力,诸如将手推向墙壁。跟随者-前导者姿态结构是可以根据本公开的原理使用的一种技术。跟随者姿态是对象在起始点处的位置、定位和取向。前导者姿态是对象在通过用户的移动请求的点处的位置、定位和取向。例如,在模拟内的一点处,人物的手被保持在桌面上方。手的该位置和取向是跟随者姿态。用户向下移动他们的手。在模拟环境内,前导者姿态是现在位于和定向在桌面下方(例如,移动的目的地)的模拟手。跟随者姿态是被呈现给用户在VR显示器上观看的对象的位置、定位和取向。前导者姿态用于跟踪对象的移动,并且通常不为用户呈现。
VR模拟器可以移动跟随者姿态,直到它碰到(例如,相交)障碍物(在这种情况下是桌面)。跟随者姿态移动的方向是扫动方向(sweep direction)。结果是跟随者姿态现在被定位成抵靠障碍物,例如被称为阻挡姿态。这种类型的解决方案可以是限制性的。例如,如果用户的模拟手靠近桌面的边缘,则用户的更好的视觉体验是使模拟手稍微向一侧移动并绕着桌面的角滑动,例如,称为轻抚姿态-其中移动轻抚障碍物的表面。表面轻抚是跟随者姿态的移动,恰好在障碍物的表面的外部,沿着障碍物的表面移动,而前导者姿态可以恰好在障碍物的表面的上方、处于障碍物的表面或恰好在障碍物的表面的下方。例如,用户在汽车的表面上跟踪他们的手。这可为用户带来更流畅的视觉体验。
阻挡姿态和轻抚姿态的组合允许跟随者姿态在模拟环境内以物理上似乎合理的方式跟随前导者姿态。使用阻挡算法实现的阻挡姿态可使跟随者姿态停留在障碍物的初始阻挡点处。仅仅使用阻挡算法可能无法跟随前导者姿态的横向、侧向移动。使用轻抚算法实现的轻抚姿态可使跟随者姿态跟踪前导者姿态的横向移动,同时不维持障碍物的表面边界。因此,移动可满足阻挡算法和轻抚算法的约束。
在一些方面,使用阻挡算法而不使用轻抚算法可以是有益的,如在障碍物的大小等于或小于跟随者姿态的情况下。例如,在小的控制旋钮处停止(阻挡)移动的手而不是试图绕着(轻抚)控制旋钮移动它可能是更有效的。这可通过使用移动对象(诸如手)的尺寸与障碍物(诸如控制旋钮)的尺寸的扫动模式比率来确定。技术上,扫动模式比率可定义为可被比较的障碍物的边界球的半径(放在比率的顶部)与跟随者几何形状的边界球的半径。如果扫动模式比率大于扫动模式参数,例如1.0或另一实数,那么可利用阻挡算法和轻抚算法。如果扫动模式比率等于或小于扫动模式参数,那么可在不利用轻抚算法的情况下利用阻挡算法。这个方面可以降低被模拟的移动的计算复杂度。
VR模拟器可以被配置成用于执行所公开的用于在模拟的环境中移动对象的方法的各个步骤。当用户移动时,VR模拟器可以在被称为模拟步骤的小步骤中在模拟环境中生成视觉表示。模拟步骤的数量可以取决于若干因素,诸如可用的计算系统资源的量(可用的资源越多,可以在一时间段内生成的步骤就越多)、由应用设置的视觉质量(视觉质量越高,将被使用的计算资源就越多)、以及在如由应用或用户请求的持续时间(例如,秒)内对视觉表示进行的更新的数量(更新的数量越高,可能被使用的计算资源就越多)。
VR模拟器可以使用参数(诸如每秒帧数(FPS))来指示每秒将生成多少视觉表示(即,场景)以用于输出至VR显示器。FPS的典型范围可以是60FPS至120FPS,并且一些VR模拟器可以使用更低或更高的FPS。这意味着VR模拟器每秒可输出60至120个之间的场景更新。VR模拟器在一持续时间(例如,秒)期间使用的模拟步骤的数量可以默认为FPS。诸如VR模拟器优化和可用计算资源之类的其他因素可以将模拟步骤的数量调整得更高或更低。在VR模拟器增加模拟步骤时,可以使用用户的当前请求的移动来计算新信息,并且新场景可以被输出至VR显示器。
VR模拟器可以生成场景,即,渲染场景,或使用单独的渲染系统。渲染器根据表示2D或3D模拟环境的场景数据生成图像或场景,并且可以将渲染的场景输出到显示设备或存储设备。渲染器可被实现为软件应用、处理器、接收指令并输出场景的计算系统或其组合。处理器可以是并行处理器(诸如图形处理单元(GPU))或串行处理器(诸如中央处理单元(CPU))。还可使用一个或更多个处理器的组合。
例如,可以在通用CPU与图形处理子系统之间划分渲染过程,在架构上以GPU为中心。CPU可执行高级操作,例如确定给定场景中的对象和障碍物的位置、运动和碰撞。根据这些高级操作,CPU生成定义期望的渲染图像的一组渲染命令和数据。渲染命令和数据可定义场景的场景几何形状、照明、阴影、纹理化、运动和/或相机参数。根据该组渲染命令和数据,图形处理子系统可创建一个或更多个渲染的场景。
渲染器可以采用光线追踪渲染技术来进行渲染。光线追踪是用于在渲染管线中渲染场景的技术的示例;尤其当场景包含复杂照明时。光线追踪描述用于有效地解决沿着场景中的任两个任意点之间的直线的可见性的任何数量的技术,其中可见性信息用于解决场景中的光传输和与材料的光相互作用。例如,光线追踪可将线(即,光线)从用户的视角延伸到场景内的对象,且接着确定从该对象到光源或到场景的另一对象的第二光线。这些光线随后可被用来确定照射到对象的光量(包括间接照明和反射)、光与用户的视角的角度以及如何向用户表示对象和障碍物的颜色、纹理和其他特性。
用于光线追踪渲染的光线的处理可以由单个处理器或由多个处理器(如不同的GPU)并行执行,并且可适用于本地和远程计算两者。因此,渲染可由为远程用户提供渲染的帧的基于云的渲染器来执行。如本文所使用的并行方式包括至少部分地并行方式,且指示处理正在并行路径中发生,但不必同时发生。
基于云的渲染器可在包括一个或更多个处理器和附加组件(如存储器和通信接口)的云计算平台的一个服务器或多个服务器上实现。图像处理器可以从基于云的渲染器接收渲染的场景,并且将场景编码成一个或更多个视频流,该一个或更多个视频流被提供给视频发送器以通过通信网络传输到诸如VR显示器之类的计算设备。通过这种基于云的技术,用户可以接收视频流并且在他们的计算设备上享受虚拟图形体验。例如,视频游戏应用可向基于云的渲染器提供输入,以用于将游戏渲染和流式传输到一个或更多个用户的计算设备。还可以从VR控制器接收输入以用于渲染和游戏流传输。游戏流允许用户控制和玩远离他们的输入设备(诸如VR控制器)被渲染的游戏。基于云的渲染平台和游戏流传输可允许用户通过通信网络与视频游戏中的其他人远程竞争。
无论使用基于云的渲染器或位于VR显示器或控制器附近的渲染器来执行模拟,对象的移动都可以由模拟环境中的两个独立的姿态来表示。跟随者姿态通常保持在障碍物表面的外侧上,并且对于当前模拟步骤是移动对象的原始位置和取向。前导者姿态表示无约束时运动的结果。此外,本公开利用候选姿态,候选姿态是通过几何查询(诸如扫动)确定的潜在姿态。候选姿态被用来计算近似目标姿态,该近似目标姿态随后通过刚体物理模拟被细化,从而产生细化的目标姿态。与候选姿态一样,使用几何查询来计算近似目标姿态。跟随者姿态向细化目标姿态的移动通过刚体物理模拟来实现。刚体物理模拟可以在其算法中利用力因素、关节驱动因素和速度因素来将跟随者姿态移动到细化的目标姿态。物理引擎(诸如图7的物理引擎740)可用于提供刚体物理模拟。
在由VR模拟器执行的单个模拟步骤中,跟随者姿态朝向目标姿态移动。取决于模拟步骤的大小、移动的速度以及所使用的不同约束,跟随者姿态可能无法实现目标姿态且因此停止朝向目标姿态的过程的一部分。跟随者姿态可追赶前导者姿态,诸如当移动在模拟环境的约束内足够快时,使得跟随者姿态未到达前导者姿态。在随后的模拟步骤中,可确定新的前导者姿态以及对应的新的候选姿态,并因此选择新的目标姿态。例如,用户非常快速地移动他们的拳头可以看见场景更新,该方式的拳头部分朝向用户已经移动他们的拳头的地方。在随后的模拟步骤中,可利用拳头的当时当前位置来选择新的目标姿态。
在模拟步骤中,VR模拟器可以根据四个计算阶段通过前导者姿态的移动来驱动跟随者姿态。第一阶段可以是扫动从跟随者姿态到前导者姿态的移动,且记录阻挡扫动的任何障碍物的交点和几何法线(即,相交法线)。这可接近与前导者姿态靠近的候选姿态,同时保持障碍物的表面阻挡约束。
通过选择在前导者姿态附近的候选姿态而不是最靠近前导者姿态的候选姿态,第一阶段可以更有效。目标是从候选姿态池中识别和选择在较少扫动次数内足以满足各种约束的目标姿态。仅从候选姿态中选择最靠近前导者姿态的目标姿态可导致视觉伪像,诸如在另一候选姿态被选择或者如果两个或更多个类似靠近的候选姿态之间的循环翻转发生的情况下。创建候选姿态的加权平均值也可导致视觉伪像,诸如抖动。抖动可以通过应用附加的时间平滑技术来减少。
在第一阶段中,可以计算出一个或更多个候选姿态,其中每个候选姿态是跟随者姿态沿着相应的扫动方向的时间投影。首先选择扫动方向来计算候选姿态。
通过从多个方向朝向前导者姿态扫动,可以从原始扫动(从跟随者姿态)的相交法线和方向中选择围绕前导者姿态的障碍物表面的采样。为了增加时间相干性,可以将法线与先前模拟步骤的法线混合,其中可以通过第二阶段算法、模拟的环境、应用或用户来确定要查看的先前模拟步骤的数量,例如过去的两个或五个模拟步骤。这些采样扫动可揭示多个候选姿态,这些候选姿态将跟随者姿态置于靠近障碍物的外表面。每一次扫动可提供一个候选姿态。选定的扫动方向可包含沿着原始扫动方向的方向(阻挡算法)、垂直于相交法线的方向和围绕法线的其他混合或平均方向(轻抚算法)。一个选定的扫动方向可沿着相交法线。在选择扫动方向之后,通过沿着选定的扫动方向扫动来计算候选姿态。计算候选姿态可包括使从跟随者姿态向候选姿态的过渡平滑的处理。图1A和图1B提供了示出不同扫动方向的示例的视觉表示。
在第二阶段中,确定近似目标姿态。为了计算近似目标姿态,可针对候选姿态中的每一个计算到前导者姿态的距离。这些距离可用作权重以混合候选姿态的采样扫动方向。近似目标姿态可用距离最小化换取时间相干性。为了增加时间相干性,混合扫动方向可以与先前模拟步骤的对应扫动方向混合,其中可以指定要查看的模拟步骤的数目。混合扫动方向可接着用作用于计算最终候选姿态(称为近似目标姿态)的最终扫动方向。
在第三阶段中,近似目标姿态被修改以提供细化的目标姿态。刚体算法可用于细化近似目标姿态(诸如图4中所表示的),使得其被放置成靠近障碍物的表面或位于障碍物的表面处。这可以通过引入关节式刚体的系统来表示跟随者姿态的几何形状,并且用刚体算法在时间上向前模拟该系统直到实现稳定状态来实现。更具体地,可以利用阻止相对于表面法线的横向移动(例如,轻抚移动)的关节驱动来抵靠表面法线驱动关节式刚体整体(jointed rigid body ensemble)。
跟随者姿态到目标姿态分析可以表示2D或3D中的移动。另外,近似目标姿态可沿着维度轴中的一个或更多个旋转,例如在所施加的旋转力下,以减小近似目标姿态与前导者姿态之间的距离。所施加的旋转力的旋转方面可通过使用刚体物理来建模,以用线性力推动近似目标姿态,该线性力在与障碍物接触时可产生旋转力以改变近似目标姿态相对于障碍物的表面的取向。旋转的近似目标姿态变为细化的目标姿态。刚体的线性移动可被限制为沿着旋转力方向移动。通过一个或更多个模拟步骤将刚体投射到未来中,可计算细化目标姿态的平衡,就好像其已经被推到障碍物的表面。例如,其指尖伸向障碍物的伸出的手可以通过一系列模拟步骤旋转,使得手掌抵靠障碍物的表面,而不是指尖。这可提供更真实的移动以改善用户体验的视觉质量。
模拟的环境可能想要在细化的目标姿态中保持前导者姿态的取向。角驱动力可用于朝向前导者姿态的取向来推动或旋转细化的目标姿态。模拟的环境可使用应用提供的参数来平衡细化目标姿态上的线性/旋转力和角驱动力。例如,在模拟环境内触摸触摸屏可导致角驱动占主导以保持前导者姿态取向,因为用户可能想要用他们的指尖触摸屏幕,而旋转力在模拟门被推开时可能占主导,其中用户可能想要手掌去推门。在一些方面中,取向还可受外部约束的约束。例如,由于与手相连的手指、手腕、手臂和身体的定位、扭矩和柔性参数,手可以旋转或不能够旋转以将手掌朝向门。
在第四阶段中,所计算的稳定状态的经细化的目标姿态可以用于跟随者姿态。在一些方面中,在过冲(overshoot)使跟随者姿态能够更容易地经过障碍物(诸如边缘)时,第四阶段算法可允许横向移动过冲细化的目标姿态(过冲移动),例如,防止跟随者姿态卡在障碍物上。在另一方面,障碍物的表面与跟随者姿态之间的接触摩擦可被减小,诸如减小到零,以消除来自滚动、粘滞、或可影响细化目标姿态的其他摩擦相关力的副作用。在其他方面中,当细化的目标姿态与障碍物相互作用时,可减小接触恢复以避免接触反弹。可以将摩擦系数参数和接触恢复系数参数调节到不同值以实现模拟环境所预期的结果。
对于单个模拟步骤,第四阶段可以利用刚体关节驱动来在时间上向前推进表示跟随者姿态的关节式整体。更具体来说,跟随者姿态可从其当前状态朝向细化目标姿态被驱动,且可作为新跟随者姿态向前传递到下一模拟步骤。
当前导者姿态从阻塞位置移动到非阻塞位置时,可以使用直接跟踪移动算法来最小化计算资源。为了利用直接跟踪算法,跟随者姿态可处于前导者姿态的近似取向。可使用过渡算法来提供从当前跟随者姿态到当前前导者姿态的平滑过渡。此算法可使用直接跟踪值(例如,时间参数),使得跟随者姿态将继续使用本文中所描述的阻挡算法和轻抚算法(例如,第一阶段算法到第四阶段算法)来跟踪前导者姿态,直到已过去特定时间为止,且接着跟随者姿态可切换到直接跟踪算法。在另一方面中,直接跟踪值可包含恒定速度参数,其可用于使跟随者姿态朝向前导者姿态移动。这可防止跟随者姿态的突然跳跃。
还可以利用重影阈值(ghosting threshold)。在前导者姿态已经移动穿过障碍物、当前不在障碍物内,并且跟随者姿态和前导者姿态在它们之间具有障碍物的情况下,则重影阈值可以指示跟随者姿态是将以快动算法直接移动到前导者姿态(例如,瞬时移动),还是跟随者姿态将在障碍物的表面处停止。图3提供了采用重影阈值的示例。
重影阈值定义了跟随者姿态可以行进穿过障碍物以快动到前导者姿态的厚度或距离。重影厚度是指行进通过障碍物的距离,该距离可能与跟随者姿态和引导者姿态之间的距离不同。当穿过障碍物的重影厚度等于或小于重影阈值时,则允许跟随者姿态快动到前导者姿态,例如,忽略障碍物。其他因素可能防止这种快动式移动,诸如外部约束。当穿过障碍物的重影厚度大于重影阈值时,则跟随者姿态被阻止朝向前导者姿态移动。
该方法在其各个方面可以使用参数的一个或更多个或组合作为输入来确定最终细化的目标姿态。可以通过描述可以用于计算候选姿态的扫动的一组参数对参数进行分组,例如,候选姿态的数量、要利用的混合扫动角度以及在时间平滑中使用的先前模拟步骤的数量。第二组参数可描述刚体算法,该刚体算法可用于计算细化的目标姿态,例如,要使用的物理值和参数,诸如重力的值和磁场的值。第三组参数可描述刚体算法,其可将跟随者姿态从当前位置驱动到细化的目标姿态,例如,在模拟步骤内移动跟随者姿态的距离可取决于FPS参数。
现在转向附图,图1A是在视觉上表示用于在包括障碍物110的2D环境中分析候选姿态的方法的示例的被称为候选姿态分析100的图示。候选姿态分析100除了示出前导者姿态115和原始跟随者姿态120之间的原始扫动方向之外,还示出了三个扫动方向。在诸如图1B所示的3D环境中,可分析附加的扫动方向。例如,对于3D环境可以使用十次扫动。执行大量扫动在计算上是不切实际的。因此,要分析的扫动方向的数目可基于历史数据且提供结果与处理时间之间的平衡。不管障碍物100的形状如何,可使用相同数量的扫动方向。例如,相同数量的扫动方向可用于凸形障碍物和凹形障碍物。可替代地,要使用的扫动数量可以基于障碍物的形状而变化。
通过沿着从原始跟随者姿态120到前导者姿态115的向量在其当前取向上投影原始跟随者姿态120的形状或几何结构来执行扫动。前导者姿态115是人物或对象的所请求的位置,诸如用户向前推动他们的手穿过障碍物110。原始跟随者姿态120是正被操纵或移动的人物或对象(诸如化身的手)的位置。
前导者姿态115位于障碍物110的表面约束内并且原始跟随者姿态120位于障碍物110上方。原始跟随者姿态120可能不被直接移动到前导者姿态115的位置,因为这将违反障碍物110的基于物理的约束并且将降低用户的视觉体验,例如,打破VR幻觉。因此,使用临时跟随者姿态和扫动方向来计算可从中选择目标姿态的候选姿态。
用于沿着选择的扫动方向生成候选姿态的临时跟随者姿态122、124、126,可以通过从相交法线142沿着垂直方向移动前导者姿态115直到前导者姿态115完全在障碍物110的表面之外来确定。相交法线142是在障碍物110的与原始跟随者姿态120相同的一侧上的法线。可以通过计算障碍物110周围的边界球和原始跟随者姿态120周围的边界球、将两个边界球的半径相加并且将临时跟随者姿态122、124、126放置在半径之和之外,在障碍物110的几何形状之外计算所产生的临时跟随者姿态122、124、126。
可以通过沿着垂直于相交法线142的所选择的扫动方向,将临时跟随者姿态122、124、126朝前导者姿态115往回扫动直到相应的临时跟随者姿态与障碍物110的表面相交,来计算候选姿态。可以从相交表面确定表面法线144和146。通过扫动,临时跟随者姿态122可产生与相交法线142相关联的所计算的候选姿态132,临时跟随者姿态124可产生与表面法线144相关联的所计算的候选姿态134,并且跟随者姿态126可产生与表面法线146相关联的所计算的候选姿态136。忽略由表面法线148表示的负扫动方向,因为原始跟随者姿态120接近表面法线142,并且相对于表面法线148的候选姿态将导致该候选姿态通过障碍物重影。在图3中进一步描述重影场景。
因此,所产生的候选姿态是计算的候选姿态132、计算的候选姿态134和计算的候选姿态136。通过附加分析,所计算的候选姿态132、134和136中的一个被选择为目标姿态。目标姿态可被用作其当前取向中的近似目标姿态或进一步被细化,并被用作用于原始跟随者姿态120的移动的目标。
图1B是在视觉上表示用于在3D环境中分析候选姿态的方法的示例的被称为候选姿态分析160的图示。候选姿态分析160包括被示出为实心长方体的障碍物162、在障碍物162内示出的前导者姿态164、以及跟随者姿态166。利用前导者姿态164的当前位置,可针对十个候选姿态确定十个扫动方向。扫动170示出从跟随者姿态166到前导者姿态164的主扫动的方向,并被用作第一候选扫动方向。扫动172是障碍物162在扫动170与障碍物162相交的交点处的表面法线。扫动172用作第二候选扫动方向。
扫动174、扫动176、扫动178和扫动180形成具有扫动172作为其法线的平面。这五个扫动方向还可用于定义笛卡尔坐标系以用于其余分析。扫动174和扫动178垂直于由扫动172、176和180形成的平面,相应的向量在相反方向上。同样地,扫动180和扫动176垂直于由扫动172、174和178形成的平面,相应的向量在相反方向上。
通过对扫动172、扫动174和扫动180的扫动方向求平均值来计算扫动182。这有效地将扫动182定位在与笛卡尔扫动方向成45度角处。这允许候选姿态对由障碍物162和扫动172限定的近似半球进行采样,其中可以使用障碍物162的表面形状来修改半球。使用其他相应的笛卡尔扫动来类似地计算扫动184、扫动186和扫动188。根据扫动172、扫动174和扫动176的平均值计算扫动184。根据扫动172、扫动176和扫动178的平均值计算扫动186。根据扫动172、扫动178和扫动180的平均值计算扫动188。
图2是在视觉上表示用于确定最终姿态的方法的四个图(统称为最终姿态分析200)的图示。四个图示出了经过时间的四步模拟。图201表示原始跟随者姿态230,图202表示具有跟随者姿态232的第一中间模拟步骤,图203表示具有跟随者姿态234的第二中间模拟步骤,以及图204表示具有跟随者姿态236的最后模拟步骤。图201、202、203、204表示具有定位在障碍物212的表面边界内的前导者姿态210和已经通过本文描述的过程被计算的细化的目标姿态220的相同模拟环境。
图201表示原始跟随者姿态230和从先前确定的候选姿态中选择的细化的目标姿态220。图202表示使用例如阻挡算法和轻抚算法将跟随者姿态232朝向细化的目标姿态220移动。跟随者姿态232不侵犯障碍物212的表面。此外,跟随者姿态232已经通过由例如刚体相互作用施加的旋转力而旋转。
图203表示旋转回到细化的目标姿态220的取向的跟随者姿态234。由于障碍物212不再处于跟随者姿态234和细化的目标姿态220之间,因此角驱动力现在大于在图202中施加的旋转力。图204表示跟随者姿态236与细化的目标姿态220会合。物理引擎的操作(诸如姿态的驱动)可被用于最终姿态分析200。
对于最终姿态分析200,跟随者姿态和目标姿态可作为单个对象被处理或作为创建复杂形状的受约束体或部件整体的系统被处理。例如,跟随者姿态可表示由各自具有其自己的目标姿态的多个部分组成的手。所需的目标姿态的数量取决于表示手的部分的数量。拇指可以由两个部分表示,每个手指可以由三个部分表示,并且手掌是手的单个部分。因此,将使用15个跟随者姿态和目标姿态来确定最终姿态并真实地定义手的手指将如何在障碍物212的表面上做出反应。
图3是在视觉上表示分析最终姿态重影的方法的两个图(统称为重影最终姿态分析300)的图示。图310示出了跟随者姿态312、前导者姿态314、以及位于它们之间的障碍物316。障碍物316具有由虚线318表示的重影厚度。
图320示出了跟随者姿态312、前导者姿态314、以及位于它们之间的障碍物315。障碍物315具有由虚线319表示的重影厚度。利用与由虚线318和319表示的重影厚度相比的重影阈值,可以在图310或320中做出是将跟随者姿态312快动到前导者姿态314还是利用阻挡算法和轻抚算法来移动跟随者姿态312的确定。在图310和320中,跟随者姿态312和引导者姿态314之间的距离是相同的,并且通常不用于重影分析。例如,虚线318的值可以小于重影阈值,并且在图310中可以使用快动算法。相比之下,虚线319的值可以大于重影阈值并且不采用快动算法。在重影分析指示可以利用快动算法(即,重影距离小于重影阈值)的方面中,其他约束(诸如外部约束)可以用于阻止使用快动算法。
图4是统称为细化的目标姿态分析400的两个图的图示,在视觉上表示在目标姿态上施加旋转力,诸如手从指尖到手掌旋转抵靠桌面。图410图示了针对障碍物430内所示出的前导者姿态426的沿着扫动方向424的近似目标姿态420。图440图示了因对近似目标姿态420施加旋转力而产生的细化的目标姿态450。在此示例中,旋转力大于角驱动力,以保持细化的目标姿态450处于与前导者姿态426相同的取向。当确定细化的目标姿态450时可考虑其他约束,例如表面摩擦(由摩擦系数测量)、接触恢复(由恢复系数测量)、外部约束(诸如跟随者姿态的铰接连接)、刚体约束和其他环境约束(诸如外部空间、水和其他环境的模拟环境)。
对于细化的目标姿态分析400,目标姿态可作为单个对象被处理或作为如以上关于最终姿态分析200所讨论的受约束体的系统被处理。因此,近似目标姿态420和细化的目标姿态450可由约束在一起的多个系统来表示以真实地定义手的手指将如何搁置在障碍物430的表面上。
图5是用于确定用于在模拟环境中移动对象的移动算法的类型的方法500的示例的流程图的图示。该对象例如可以是用户在他们的物理空间中正移动的用户的手。方法500确定用于跟随者姿态到前导者姿态移动的一个或更多个移动算法的类型,以便在模拟环境中复制实际的手移动。移动算法的类型可以是直接的、阻挡的、轻抚的、快动的、过渡的或者这些移动算法中的一个或更多个的组合。方法500可由能够在采用基于物理的约束的同时分析模拟环境内的对象移动的计算系统来执行,例如,如图7中所示的计算系统。方法500在步骤505开始。
在判定步骤510中,进行跟随者姿态到前导者姿态移动是否被障碍物阻挡的确定。当确定步骤的结果为否时,即,移动未被阻挡,则方法500前进到步骤520,在步骤520中,使用直接移动算法。当从另一类型的移动算法切换到直接移动算法时,可使用参数来确定是否应将额外移动算法用于过渡。例如,当从阻挡/轻抚移动算法切换到直接移动算法时,时间延迟、距离参数或两者可以用于确定过渡算法是有益的。时间延迟参数可以指定时间值、模拟步骤的数量、帧的数量,以及在进行移动算法切换时可以用来延迟的其他值,以便提供更平滑的视觉移动过渡。距离参数可用于指示对象在从阻挡/轻抚移动算法切换到直接移动算法之前可行进多远。
当判定步骤510结果为是(即,存在障碍物)时,方法500前进至判定步骤530。在判定步骤530中,确定是否需要轻抚移动算法。该确定可以基于障碍物的尺寸和正在移动的对象的尺寸。扫动模式比率与扫动模式参数之间的比较可用于尺寸分析。扫动模式比率是障碍物的尺寸与移动对象的尺寸(或相应对象和障碍物的边界球的尺寸)的比率,即,移动对象的尺寸与障碍物的尺寸相比的分析。扫动模式比率可指示是可利用阻挡算法还是阻挡算法与轻抚算法的组合来确定跟随者姿态朝向前导者姿态的移动。
当确定需要轻抚移动算法时,方法500继续到步骤540,在步骤540中使用阻挡算法和轻抚算法。当扫动模式比率“大于”扫动模式参数时,判定步骤530的结果可以是“是”。因此,与移动对象相比,障碍物具有足够的尺寸以保证利用阻挡算法和轻抚算法,例如手触摸桌面。
当确定不需要轻抚移动算法时,方法500继续到步骤550,在步骤550中使用阻挡算法。当扫动模式比率‘小于或等于’扫动模式参数时,判定步骤530的结果可以是“否”。因此,与移动对象相比,障碍物不具有足够的尺寸,并且阻挡算法本身被利用。例如,手触摸控制旋钮。在步骤520、540和550结束时,方法500前进到步骤560并结束。
当创建模拟环境时,标准跟踪算法(如直接移动算法)可以用于当两个姿态之间没有障碍物时将跟随者姿态移动到前导者姿态。在其中跟随者姿态与前导者姿态之间存在障碍物或障碍物的一部分的情形中,不能使用标准直接跟踪算法。图6是用于在跟随者姿态与前导者姿态之间存在障碍物时确定目标姿态的方法600的示例的流程图的图示。方法600计算多个候选姿态,选择目标姿态,并且利用环境约束来细化目标姿态。方法600可以由能够在采用基于物理的约束的同时分析模拟环境内的对象移动的计算系统来执行,例如,如图7中所示的计算系统。方法600在步骤605开始。
在步骤610中,计算一个或更多个扫动方向。可使用障碍物的表面法线作为指导,计算从跟随者姿态到前导者姿态的扫动方向。图1A和图1B提供了用于2D和3D模拟环境的计算扫动方向的示例。
在步骤620中,使用扫动方向确定候选姿态。扫动方向可用于将候选姿态放置成靠近障碍物的表面而不违反表面的基于物理的约束。在一些方面,候选姿态可利用混合和平均算法。例如,混合和平均算法可用于其中由于障碍物的不规则形状表面而将若干候选姿态放置成彼此靠近或重叠的场景中。混合和平均算法可产生改善视觉体验的候选姿态。此外,候选姿态可以混合来自过去的模拟步骤的类似定位的候选姿态,以提供模拟步骤之间的时间一致性。时间一致性可以改善当对象移动时视觉体验的流畅度。
在步骤630中,从候选姿态中选择近似目标姿态。近似目标姿态选择可利用来自先前模拟步骤的信息以及其他因素来确定最佳拟合的候选姿态。时间相干性(例如,VR场景中的对象的抖动或跳跃的减少)是当选择近似目标姿态以便维持用户的VR视觉体验时可使用的一个因素。时间相干性可通过将来自先前模拟步骤的候选姿态的扫动方向与当前模拟步骤期间所计算的候选姿态的扫动方向混合来增强。在分析中还可使用一个或更多个附加因素来选择近似目标姿态。例如,可混合扫动方向中的一个或更多个以用于计算候选姿态,可从其选择近似目标姿态。附加混合可以提供被用户感知的更平滑的移动。还可以利用扫动方向进行进一步的混合。两个或更多个扫动方向可混合在一起以确定最终扫动方向。当前导者姿态快速移动时,这可能是有用的,并且随着跟随者姿态继续追赶前导者姿态,这两个姿态之间的方向上的小改变可在模拟步骤中被混合和平滑。
在步骤640中,近似目标姿态被细化成细化的目标姿态。近似目标姿态可通过施加旋转力、角驱动力和其他约束来细化。经细化的目标姿态可产生被调整的位置和被调整的取向。细化的目标姿态可被定向以模仿前导者姿态,除非另一力或约束阻止此取向。
细化可以包括添加横向移动以获得细化的目标姿态。横向移动可以提供弹簧或阻尼器类型的调整逻辑,其可以允许移动中的一些柔性,例如,围绕障碍物上的小边缘。横向移动还可通过提供时间相干性来帮助跨多个模拟步骤提供更平滑的视觉体验。横向移动可包括过冲移动,使得目标姿态由于障碍物和环境约束而过冲(例如,移动经过)候选姿态。
可以调整移动对象和障碍物的摩擦系数和接触恢复系数。例如,当移动对象触摸障碍物的表面时,相应系数可以减小到零以消除额外的复杂性。或者,可部分地减小系数以减小那些约束对整个过程的影响。
近似目标姿态还可在其抵靠障碍物的表面推动时通过旋转力来旋转和定向,诸如手从指尖到手掌旋转靠着门。近似目标姿态还可具有施加的角驱动力,该角驱动力可倾向于迫使近似目标姿态更好地近似前导者姿态的取向,诸如保持以指尖抵靠障碍物的手取向。旋转力和角驱动力由VR模拟器平衡。随着每个力占主导,近似目标姿态可改变其取向。外部约束是可被应用于近似目标姿态的细化的另一示例。外部约束可以是与物体的铰接连接、流体动力学和其他模拟环境因素。
近似目标姿态可被表示为单个刚性图或关节式刚体的多部分表示。在多部分表示中,近似目标姿态可充当柔性的对象且作为顺应手做出反应,其中指关节在手压下障碍物的表面时移动。
在步骤650中,跟随者姿态被移动到细化的目标姿态。跟随者姿态展现到细化的目标姿态的移动量可取决于用户的移动的速度以及模拟步骤的大小(例如,以FPS测量)。其他模拟的环境约束(诸如如果跟随者姿态正在空中或水下移动)也可以影响移动量。跟随者姿态可部分或全部移动到细化的目标姿态。跟随者姿态和目标姿态可被表示为具有受约束体的系统的刚性对象或柔性对象。可以基于细化的目标姿态来渲染新的跟随者姿态。例如,细化的目标姿态或先前跟随者姿态与细化的目标姿态之间的某个状态可被渲染为新的跟随者姿态。方法600继续到步骤660并结束。
图7是示出了示例VR表面跟踪系统700的框图的图示。VR表面跟踪系统700可以用作VR模拟器的一部分,以跟踪对象在模拟环境中的移动,并且当对象在模拟环境内遇到障碍物时调整对象的移动。VR表面跟踪系统700包括VR控制器710、VR显示器715和VR模拟器720。VR控制器710、VR显示器715和VR模拟器720可以是通过有线或无线连接通信地耦合的单独的设备。例如,VR模拟器720或其至少一部分可在基于云的平台上实现并用于提供游戏流。VR模拟器720还可以与VR显示器715和VR控制器710组合成能够执行所描述的过程和功能的单个集成式VR设备。
VR控制器710能够检测用户移动并且将该移动传达至VR模拟器720。VR控制器710可以是VR显示器715的一部分,诸如可以检测眼睛和头部移动的VR头戴设备。VR控制器710也可以是一个或更多个单独的控制器,例如,手持传感器、一个或更多个相机、运动检测器和其他触觉和身体传感器设备。因此,VR控制器710表示一个或更多个VR控制器。
VR显示器715能够接收并显示来自VR模拟器720的模拟场景。VR显示器715可以是各种显示器、监视器和能够示出2D或3D场景的其他设备中的一个或更多个。VR显示器715可以与数据存储设备相关联,诸如硬盘驱动器、云存储、服务器、USB存储器和其他存储介质。
VR模拟器720可以被实现为硬件、软件或其组合。VR模拟器720可以是在GPU、CPU或其他处理器上执行或者嵌入在计算系统的电路中的软件应用。VR模拟器720可以利用零个、一个或更多个这样的处理器。VR模拟器720还可以被封装为软件应用,例如,在应用库、动态链接库(DLL)、应用函数、应用模块、图形库或驱动器、ROM模块和代码段中。
VR模拟器720可以位于服务器、数据中心、云环境或其他计算系统(例如,膝上型计算机、平板计算机和智能电话)中。VR模拟器720可以位于VR控制器710和VR显示器715附近,位于一定距离处,是VR控制器710或VR显示器715的一部分,或其组合。VR模拟器720、VR控制器710和VR显示器715之间的通信可以通过各种常规传输标准并且可以是有线、无线或其他常规传输手段。
VR模拟器720包括姿态分析器730、物理引擎740以及渲染器750。VR模拟器可以从VR控制器710接收输入参数,诸如与用户移动有关的参数,以及来自应用的输入参数,诸如阻挡阈值、FPS、横向过冲参数、重影阈值和其他参数。应用可以是视频游戏应用。在一些方面中,应用在VR控制器710上执行,并且从VR控制器710接收应用参数。在其他方面,应用可以在VR模拟器上执行,并且从应用接收应用参数。在其他方面,应用可以在另一个计算系统上执行,并且可以从另一个计算系统接收应用参数。例如,VR模拟器720可以从适当的应用源接收模拟的环境参数、刚体物理值、场景几何结构、重影阈值、横向移动值、目标FPS、时间延迟、距离参数以及其他输入值和参数。
姿态分析器730可以利用场景几何结构、连同模拟的环境和用户的移动来确定当前模拟步骤的跟随者姿态和前导者姿态。分析VR几何结构可以检测障碍物是否正在阻挡跟随者姿态利用直接跟踪算法移动到前导者姿态。姿态分析器730随后可利用一个或更多个移动算法(诸如阻挡算法、轻抚算法、快动算法、过渡算法和直接跟踪算法)来计算对于所请求的移动的候选姿态。姿态分析器730可选择一候选姿态作为近似目标姿态并通过对近似目标姿态施加零个、一个或更多个约束和力来细化目标姿态。结果是可被提供给渲染器750以用于跟随者姿态的细化的目标姿态。姿态分析器730可根据本文所公开的方法(诸如图5和图6中所表示的)来提供细化的目标姿态。姿态分析器730可与物理引擎740协作以计算细化的目标姿态。物理引擎740可以是在VR模拟器中采用的常规物理引擎。
渲染器750可从姿态分析器730接收细化的目标姿态信息以及其他支持信息,并渲染用于当前模拟步骤的场景。渲染器750可以确定跟随者姿态在当前模拟步骤中经历了多少移动。利用移动的速度、模拟的环境因素和其他移动因素,跟随者姿态可被部分地朝向前导者姿态渲染或完全地在前导者姿态渲染。然后,渲染器750可以将场景输出到VR显示器715用于观看。
渲染器750可以是向VR显示器715提供游戏流式传输的基于云的渲染器。VR模拟器720的一个或更多个组件也可以是基于云的。例如,姿态分析器730、物理引擎740以及渲染器750可以实现在一个或更多个基于云的服务器上。
上述装置、系统或方法的一部分可以被体现在不同数字数据处理器或计算机中或由其执行,其中这些计算机被编程或存储软件指令序列的可执行程序以便执行这些方法的步骤中的一个或更多个。这样的程序的软件指令可以表示算法,并且以机器可执行的形式编码在非暂时性数字数据存储介质(例如,磁盘或光盘、随机存取存储器(RAM)、磁硬盘、闪存和/或只读存储器(ROM))上,以使各种类型的数字数据处理器或计算机能够执行本文描述的上述方法或功能、系统或装置的一个或更多个的一个、多个或所有步骤。
数字数据处理器或计算机可以包括一个或更多个GPU、一个或更多个CPU、一个或更多个其他处理器类型或其组合。数字数据处理器和计算机可以彼此靠近、靠近用户、在云环境中、数据中心或位于它们的组合中。例如,一些组件可以位于用户附近,并且一些组件可以位于云环境或数据中心中。
GPU可以被实施在单个半导体基片上,被包括在具有一个或更多个其他设备(如附加GPU、存储器和CPU)的系统中。GPU可以被包括在图形卡上,所述图形卡包括一个或更多个存储器设备并且被配置为与计算机的母板接口连接。GPU可以是与单个芯片上的CPU位于同一地点的集成GPU(iGPU)。处理器或计算机可以是位于数据中心中的GPU机架的一部分。GPU机架可以是包括高性能GPU计算节点和存储节点的高密度(HD)GPU机架。
所公开的实施例的多个部分可以涉及具有非暂时性计算机可读介质的计算机存储产品,该非暂时性计算机可读介质在其上具有用于执行不同计算机实现的操作的程序代码,这些计算机实现的操作体现了装置、设备的一部分或执行在此阐述的方法的步骤。本文中所使用的非暂时性指代除了暂时性传播信号之外的所有计算机可读介质。非暂时性计算机可读介质的示例包括但不限于:诸如硬盘、软盘和磁带的磁介质;诸如CD-ROM盘的光学介质;磁光介质,诸如软光盘;以及专门配置为存储和执行程序代码的硬件设备,诸如ROM和RAM设备。程序代码的示例包括诸如由编译器产生的机器代码和包含可由计算机使用解释器执行的更高级代码的文件两者。
在解释本公开时,应以与上下文一致的最广泛的可能方式来解释所有术语。特别地,术语“包括(comprises)”和“包括(comprising)”应被解释为以非排他的方式表示元件、组件或步骤,表示所提及的元件、不件或步骤可以存在、或利用、或与未明确提及的其他元件、组件或步骤组合。
本申请涉及的本领域的技术人员将了解,可以对所描述的实施例进行其他和进一步的添加、删除、替换和修改。还应理解的是,本文中使用的术语仅用于描述特定实施例的目的,而并非旨在进行限制,因为本公开的范围将仅由权利要求限制。除非另外定义,在此使用的所有技术和科学术语具有与本公开所属领域的普通技术人员通常理解的相同的含义。尽管与本文描述的那些类似或等效的任何方法和材料也可用于实践或测试本公开,但在本文中描述了有限数量的示例性方法和材料。
应指出,如在此和所附权利要求书中所使用的,单数形式“一个”、“一种”和“该”包括复数指示物,除非上下文另外清楚地指示。

Claims (23)

1.一种用于在模拟步骤期间在虚拟现实(VR)模拟器中确定跟随者姿态的方法,包括:
利用输入参数计算一个或更多个当前候选姿态,其中所述当前候选姿态中的每一个是跟随者姿态沿着朝向前导者姿态的相应扫动方向的时间投影,并且其中障碍物位于所述跟随者姿态和所述前导者姿态之间;
从所述一个或更多个当前候选姿态中选择目标姿态;
利用基于物理的约束和所述输入参数来细化所述目标姿态,其中所述基于物理的约束使用所述障碍物的表面;以及
基于细化的目标姿态来渲染新的跟随者姿态。
2.根据权利要求1所述的方法,其中利用对应于所述跟随者姿态的相交法线和垂直于所述相交法线的方向来确定所述相应扫动方向。
3.根据权利要求1所述的方法,其中所述前导者姿态位于所述障碍物的所述表面的边界内。
4.根据权利要求1所述的方法,其中所述VR模拟器至少部分地在一个或更多个图形处理单元(GPU)上执行。
5.根据权利要求1所述的方法,其中从VR控制器和软件应用接收所述输入参数。
6.根据权利要求1所述的方法,其中所述输入参数包括以下项中的一项或更多项:所述跟随者姿态、所述前导者姿态、所述障碍物、所述表面的摩擦系数、所述表面的接触恢复系数、外部约束、刚体算法的值、或直接跟踪值。
7.根据权利要求1所述的方法,其中当扫动模式比例等于或小于扫动模式参数时,所述计算利用阻挡算法,并且当所述扫动模式比例大于所述扫动模式参数时,所述计算利用所述阻挡算法和轻抚算法。
8.根据权利要求1所述的方法,其中所述选择还包括:
将在先前模拟步骤中计算的先前候选姿态与所述一个或更多个当前候选姿态混合。
9.根据权利要求1所述的方法,其中所述选择还包括:
混合来自所述一个或更多个候选姿态中的每个候选姿态的所述相应扫动方向,并且包括利用所混合的相应扫动方向的候选姿态作为所述一个或更多个候选姿态中的一个。
10.根据权利要求1所述的方法,其中所述细化还包括:
当所述目标姿态接近所述障碍物的表面时,在被施加的旋转力下旋转所述目标姿态。
11.根据权利要求10所述的方法,其中所述细化还包括:
通过所述目标姿态的角驱动力来减小所述被施加的旋转力。
12.根据权利要求1所述的方法,其中所述细化利用以下项中的一项或更多项:外部约束、横向移动、所述障碍物的表面的摩擦系数或所述障碍物的表面的接触恢复系数。
13.根据权利要求1所述的方法,其中所述渲染还包括:
当所述障碍物不再在所述跟随者姿态与所述前导者姿态之间时,切换到直接跟踪算法。
14.根据权利要求1所述的方法,其中所述目标姿态和所述细化的目标姿态表示多个受约束体的柔性对象。
15.根据权利要求14所述的方法,其中所述多个受约束体中的每一个具有唯一的目标姿态和唯一的细化的目标姿态。
16.一种计算机程序产品,具有存储在非暂时性计算机可读介质上的一系列操作指令,所述一系列操作指令在被执行时引导数据处理装置由此执行操作以在模拟步骤期间在虚拟现实(VR)模拟器中确定跟随者姿态,所述操作包括:
计算一个或更多个候选姿态,其中所述候选姿态中的每一个是跟随者姿态沿着朝向前导者姿态的相应扫动方向的时间投影,并且其中障碍物位于所述跟随者姿态和所述前导者姿态之间;
从所述一个或更多个候选姿态中选择目标姿态;
利用基于物理的约束细化所述目标姿态;以及
基于细化的目标姿态渲染新的跟随者姿态。
17.一种用于渲染虚拟现实(VR)场景的系统,包括:
VR控制器,其可操作以发送与用户的移动对应的用户参数;以及
VR模拟器,其可操作以接收并使用所述用户参数和应用参数,以基于前导者姿态与障碍物的相互作用而利用一个或更多个移动算法来渲染模拟环境的场景,其中所述前导者姿态表示所述用户在所述模拟环境中的所述移动,并且所述障碍物至少部分地位于所述模拟环境中的跟随者姿态和所述前导者姿态之间。
18.根据权利要求17所述的系统,其中所述VR模拟器利用图形处理单元(GPU)或中央处理单元(CPU)中的一个或更多个。
19.根据权利要求17所述的系统,其中所述VR模拟器的操作被封装为应用库、动态链接库(DLL)、函数、模块、图形库、ROM模块以及代码段中的一个或更多个。
20.根据权利要求17所述的系统,还包括:
VR显示器,其可操作以从所述VR模拟器接收所述场景。
21.根据权利要求17所述的系统,其中所述VR模拟器还包括:
姿态分析器,其可操作以利用所述跟随者姿态、所述前导者姿态、先前计算的候选姿态、所述用户参数和所述应用参数来计算候选姿态;以及
渲染器,其可操作以利用所述姿态分析器的输出来生成所述场景。
22.根据权利要求17所述的系统,其中所述VR模拟器位于云环境中。
23.根据权利要求17所述的系统,其中所述移动算法包括阻挡算法、轻抚算法、直接算法、过渡算法和快动算法。
CN202080054536.5A 2019-05-30 2020-05-29 使用表面跟踪的虚拟现实模拟 Pending CN114175103A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962854850P 2019-05-30 2019-05-30
US62/854,850 2019-05-30
PCT/US2020/035405 WO2020243629A1 (en) 2019-05-30 2020-05-29 Virtual reality simulations using surface tracking

Publications (1)

Publication Number Publication Date
CN114175103A true CN114175103A (zh) 2022-03-11

Family

ID=73551334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080054536.5A Pending CN114175103A (zh) 2019-05-30 2020-05-29 使用表面跟踪的虚拟现实模拟

Country Status (4)

Country Link
US (1) US11398047B2 (zh)
CN (1) CN114175103A (zh)
DE (1) DE112020002550T5 (zh)
WO (1) WO2020243629A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114116081B (zh) * 2020-08-10 2023-10-27 抖音视界有限公司 交互式动态流体效果处理方法、装置及电子设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040104935A1 (en) * 2001-01-26 2004-06-03 Todd Williamson Virtual reality immersion system
US7381152B2 (en) 2001-07-23 2008-06-03 Southwest Research Institute Virtual reality system locomotion interface utilizing a pressure-sensing mat
US7620202B2 (en) 2003-06-12 2009-11-17 Honda Motor Co., Ltd. Target orientation estimation using depth sensing
US9600067B2 (en) 2008-10-27 2017-03-21 Sri International System and method for generating a mixed reality environment
US9069164B2 (en) * 2011-07-12 2015-06-30 Google Inc. Methods and systems for a virtual input device
US20140273715A1 (en) * 2013-03-15 2014-09-18 Crayola Llc Panoramic Coloring Kit
KR102560629B1 (ko) 2013-03-15 2023-07-26 매직 립, 인코포레이티드 디스플레이 시스템 및 방법
US10019843B2 (en) * 2013-08-08 2018-07-10 Facebook, Inc. Controlling a near eye display
JP5850970B2 (ja) * 2014-04-09 2016-02-03 株式会社東芝 情報処理装置、映像投影装置、情報処理方法及びプログラム
US10684485B2 (en) 2015-03-06 2020-06-16 Sony Interactive Entertainment Inc. Tracking system for head mounted display
US9911219B2 (en) * 2015-05-13 2018-03-06 Intel Corporation Detection, tracking, and pose estimation of an articulated body
EP3678572A4 (en) * 2017-09-05 2021-09-29 Covidien LP COLLISION HANDLING ALGORITHMS FOR SURGICAL ROBOTIC SYSTEMS
US11354459B2 (en) * 2018-05-08 2022-06-07 Microsoft Technology Licensing, Llc Computer vision and speech algorithm design service
US11007642B2 (en) * 2018-10-23 2021-05-18 X Development Llc Machine learning methods and apparatus for automated robotic placement of secured object in appropriate location

Also Published As

Publication number Publication date
WO2020243629A1 (en) 2020-12-03
DE112020002550T5 (de) 2022-02-24
US11398047B2 (en) 2022-07-26
US20200380714A1 (en) 2020-12-03

Similar Documents

Publication Publication Date Title
JP7209041B2 (ja) 姿勢および複数のdofコントローラを用いた3d仮想オブジェクトとの相互作用
US9927870B2 (en) Virtual reality system with control command gestures
US6529210B1 (en) Indirect object manipulation in a simulation
RU2745828C1 (ru) Способ и система для автоматизированного предохранения от столкновений и сохранения композиции камеры
EP3040807B1 (en) Virtual sensor in a virtual environment
JP2023037626A (ja) Hmd環境での高速中心窩レンダリングのための予測及びgpuに対する最新の更新を伴う視線追跡
US8351651B2 (en) Hand-location post-process refinement in a tracking system
US8405656B2 (en) Method and system for three dimensional interaction of a subject
US8451278B2 (en) Determine intended motions
JP5639646B2 (ja) スケルトン・データーのゲーム・アバターへのリアル・タイム・リターゲティング
US20160350973A1 (en) Shared tactile interaction and user safety in shared space multi-person immersive virtual reality
Galvane et al. Camera-on-rails: automated computation of constrained camera paths
US11398047B2 (en) Virtual reality simulations using surface tracking
Garcia et al. Modifying a game interface to take advantage of advanced I/O devices
US11645797B1 (en) Motion control for an object
i Capó et al. Automatic human body modeling for vision-based motion capture
Sin et al. illumotion: An Optical-illusion-based VR Locomotion Technique for Long-Distance 3D Movement
Cui Mid-air hand interaction with optical tracking for 3D modelling
Dorfmueller-Ulhaas et al. An immersive game–augsburg cityrun
WO2024072595A1 (en) Translating interactions on a two-dimensional interface to an artificial reality experience
Liu Modeling three-dimensional interaction tasks for desktop virtual reality
Schmalstieg et al. Constructing a highly immersive virtual environment: a case study
Goncalves Automatic observation and synthesis of human motion

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