虚拟角色的姿势空间变形的姿势空间维度减小

文档序号:602786 发布日期:2021-05-04 浏览:5次 >En<

阅读说明:本技术 虚拟角色的姿势空间变形的姿势空间维度减小 (Gesture space dimension reduction for gesture space deformation of virtual characters ) 是由 S·M·科默 G·韦迪希 于 2019-07-25 设计创作,主要内容包括:用于减小姿势空间维度的系统和方法。多个示例姿势可以定义输入姿势空间。每个示例姿势可以包括虚拟角色的一组关节旋转。关节旋转可以利用无奇异点数学表示来表达。然后可以将多个示例姿势聚类成一个或多个聚类。可以针对每个聚类确定代表性姿势。然后可以提供与输入姿势空间相比维度减小的输出姿势空间。(Systems and methods for reducing gesture space dimensions. A plurality of example gestures may define an input gesture space. Each example gesture may include a set of joint rotations of the virtual character. Joint rotation may be expressed using a singular point-free mathematical representation. The plurality of example gestures may then be clustered into one or more clusters. A representative gesture may be determined for each cluster. An output gesture space of reduced dimensions compared to the input gesture space may then be provided.)

具体实施方式

概述

虚拟化身可以是真实或虚构的人(或生物或拟人化的物体)在AR/VR/MR环境中的虚拟表示。例如,在两个AR/VR/MR用户彼此交互的呈现会话期间,观看者可以在观看者的环境中感知到另一用户的化身,从而在观看者的环境中创造出另一用户存在的有形感觉。化身还可以为用户提供彼此交互并在共享的虚拟环境中一起做事情的方式。例如,参加在线课程的学生可以感知虚拟教室里其他学生或老师的化身,并与之互动。再例如,在AR/VR/MR环境中玩游戏的用户可以看到游戏中其他玩家的化身并与之交互。

所公开的系统和方法的实施例可提供改进的化身以及可穿戴系统的用户与用户的环境中的化身之间更真实的交互。尽管本公开中的示例描述了使人形化身动画化,类似的技术也可以应用于动物、虚构的生物、物体等。

可穿戴系统的3D显示的示例

可穿戴系统(在此也称为增强现实(AR)系统)可以被配置为向用户呈现2D或3D虚拟图像。图像可以是静止图像、视频的帧或视频的组合等。可穿戴系统的至少一部分可以在可穿戴设备上实现,该可穿戴设备可以针对用于交互单独或组合地呈现VR、AR或MR环境。可穿戴设备可以作为AR设备(ARD)被互换地使用。此外,出于本公开的目的,术语“AR”与术语“MR”可被互换地使用。

图1描绘了具有某些虚拟现实对象以及由人观看的某些物理对象的混合现实场景的图示。在图1中,描绘了MR场景100,其中MR技术的用户看到了真实世界的公园状设置110,其以人、树、背景中的建筑物以及混凝土平台120为特征。除了这些项目之外,MR技术的用户还可以感知到他“看到”了站在真实世界平台120上的机器人雕像130,以及似乎是大黄蜂的拟人化的飞行着的卡通般化身角色140,尽管这些元素在真实世界中不存在。

为了使3D显示器产生真实的深度感,且更具体地,产生表面深度的模拟感,可能希望显示器视野中的每个点都生成与其虚拟深度相对应的调节响应。如果对显示点的调节响应不符合该点的虚拟深度(如由会聚和立体视觉的双目深度提示确定),则人眼可能会遇到调节冲突,从而导致成像不稳定,有害的眼睛疲劳,头痛,以及在缺乏调节信息的情况下的几乎完全的表面深度缺失。

VR、AR和MR体验可以通过具有显示器的显示系统来提供,在该显示器中,与多个深度平面相对应的图像被提供给观看者。对于每个深度平面,图像可能不同(例如,提供场景或对象的稍微不同的呈现),并且可能由观看者的眼睛分别聚焦,从而基于使位于不同深度平面上的场景的不同图像特征聚焦所需的眼睛调节,或基于观察在不同深度平面上失焦的不同图像特征,为用户提供深度提示。如在此其它地方所讨论的,这种深度提示提供了可靠的深度感知。

图2示出可被配置为提供AR/VR/MR场景的可穿戴系统200的示例。可穿戴系统200还可称为AR系统200。可穿戴系统200包括显示器220以及支持显示器220的功能的各种机械和电子模块和系统。显示器220可以耦合至框架230,该框架230可以由用户、佩戴者或观看者210佩戴。显示器220可以放置于用户210的眼睛前面。显示器220可以向用户呈现AR/VR/MR内容。显示器220可以包括戴在用户的头上的头戴式显示器(HMD)。

在一些实施例中,扬声器240被耦合至框架230并且邻近用户的耳道放置(在一些实施例中,未示出的另一个扬声器邻近用户的另一耳道放置以提供立体声/可塑的声音控制)。显示器220可包括用于检测来自环境的音频流并捕获环境声音的音频传感器(例如,麦克风)232。在一些实施例中,未示出的一个或多个其它音频传感器被放置以提供立体声接收。立体声接收可以用来确定声源的位置。可穿戴系统200可以对音频流执行声音或语音识别。

可穿戴系统200可以包括面向外成像系统464(图4中所示),该面向外成像系统464观察用户周围环境中的世界。可穿戴系统200还可以包括可以跟踪用户的眼睛运动的面向内成像系统462(图4中所示)。面向内成像系统可以跟踪一只眼睛的运动或两只眼睛的运动。面向内成像系统462可以附接至框架230,并且可以与处理模块260或270电通信,该处理模块260或270可以处理由面向内成像系统获取的图像信息以确定用户210的例如眼睛的瞳孔直径或取向的眼睛运动或眼睛姿势。面向内成像系统462可以包括一个或多个相机。例如,至少一个相机可以用于对每只眼睛成像。由相机获取的图像可用于分别确定每只眼睛的瞳孔大小或眼睛姿势,从而允许将图像信息呈现给每只眼睛以针对该只眼睛动态地调整。

作为示例,可穿戴系统200可使用面向外成像系统464或面向内成像系统462来获取用户的姿势的图像。图像可以是静止图像、视频的帧,或视频。

显示器220可以诸如通过有线引线或无线连接可操作地耦合250到本地数据处理模块260,该本地数据处理模块260可以以各种配置安装,诸如固定地附接至框架230,固定地附接至由用户佩戴的头盔或帽子,嵌入耳机中或以其它方式可移除地附接至用户210(例如,以背包式配置、皮带耦合式配置)。

本地处理和数据模块260可以包括硬件处理器以及数字存储器,诸如非易失性存储器(例如,闪存),二者都可以用于辅助数据的处理、缓存和存储。数据可以包括如下数据:a)从传感器(其可以例如可操作地耦合至框架230或以其它方式附接至用户210)捕获,诸如图像捕获设备(例如,面向内成像系统或面向外成像系统中的相机)、音频传感器(例如,麦克风)、惯性测量单元(IMU)、加速度计、罗盘、全球定位系统(GPS)单元、无线电设备或陀螺仪;或b)使用远程处理模块270或远程数据存储库280获取或处理,可能在这种处理或取得之后传递给显示器220。本地处理和数据模块260可以通过通信链路262或264(诸如经由有线或无线通信链路)可操作地耦合至远程处理模块270或远程数据存储库280,使得这些远程模块可用作本地处理和数据模块260的资源。此外,远程处理模块280和远程数据存储库280可以可操作地彼此耦合。

在一些实施例中,远程处理模块270可以包括被配置为分析和处理数据或图像信息的一个或多个处理器。在一些实施例中,远程数据存储库280可以包括数字数据存储设施,其可以通过互联网或以“云”资源配置的其它联网配置来使用。在一些实施例中,所有数据被存储并且所有计算在本地处理和数据模块中执行,从而允许来自远程模块的完全自主的使用。

可穿戴系统的示例组件

图3示意性地示出可穿戴系统的示例组件。图3示出可穿戴系统200,其可包括显示器220和框架230。放大视图202示意性地示出可穿戴系统200的各个组件。在某些实现方式中,图3中所示的一个或多个组件可以是显示器220的一部分。单独或组合的各种组件可以收集与可穿戴系统200的用户或用户的环境相关联的各种数据(诸如例如,音频或视觉数据)。应当理解,取决于可穿戴系统所用于的应用,其它实施例可以具有更多或更少的组件。尽管如此,图3提供了可以通过可穿戴系统收集、分析和存储的数据的各种成分和类型中的一些的基本思想。

图3示出示例可穿戴系统200,该示例可穿戴系统200可以包括显示器220。显示器220可以包括可以安装到用户的头部或与框架230相对应的壳体或框架230上的显示透镜226。显示透镜226可以包括一个或多个透明镜,该透明镜由壳体230定位在用户的眼睛302、304的前面,并且可以被配置为将投射的光338弹射(bounce)到眼睛302、304中并有助于光束成形,同时也允许来自本地环境的至少一些光的透射。投射光束338的波前可以被弯曲或聚焦以与投射光的期望焦距一致。如图所示,两个广视场机器视觉相机316(也称为世界相机)可以被耦合到壳体230以对用户周围的环境成像。这些相机316可以是双重捕获可见光/不可见(例如,红外)光相机。相机316可以是图4中所示的面向外成像系统464的一部分。由世界相机316获取的图像可以由姿势处理器336处理。例如,姿势处理器336可以实现一个或多个对象识别器708(例如,图7所示)以识别用户或在该用户环境中另一人的姿势,或识别该用户环境中的物理对象。

继续参考图3,示出了一对具有显示镜和光学器件的扫描激光成形波前(例如,用于深度)光投影仪模块,其配置为将光338投射到眼睛302、304中。所描绘的视图还示出了与红外光(诸如发光二极管“LED”)配对的两个微型红外相机324,其被配置为能够跟踪用户的眼睛302、304以支持渲染和用户输入。相机324可以是图4中所示的面向内成像系统462的一部分。可穿戴系统200可进一步具有传感器组件339,该传感器组件可包括X、Y和Z轴加速度计功能以及磁罗盘以及X、Y和Z轴陀螺仪功能,优选以相对较高的频率(诸如200Hz)提供数据。传感器组件339可以是参考图2A描述的IMU的一部分。所描绘的系统200还可以包括头部姿势处理器336,诸如ASIC(专用集成电路)、FPGA(现场可编程门阵列)或ARM处理器(先进的精简指令集机器),该头部姿势处理器可被配置为根据从捕获设备316输出的宽视场图像信息来计算实时或接近实时的用户头部姿势。头部姿势处理器336可以是硬件处理器,并且可以实现为图2A中所示的本地处理和数据模块260的一部分。

可穿戴系统还可包括一个或多个深度传感器234。深度传感器234可被配置为测量环境中的对象到可穿戴设备之间的距离。深度传感器234可包括激光扫描仪(例如,激光雷达)、超声深度传感器或深度感测相机。在某些实现方式中,在相机316具有深度感测能力的情况下,相机316也可以被认为是深度传感器234。

还示出了处理器332,其被配置为执行数字或模拟处理以从来自传感器组件339的陀螺仪、罗盘或加速度计数据中得出姿势。处理器332可以是图2中所示的本地处理和数据模块260的一部分。如图3中所示的可穿戴系统200还可包括诸如例如GPS 337(全球定位系统)的定位系统,以辅助姿势和定位分析。另外,GPS可以进一步提供关于用户环境的基于远程(例如,基于云)的信息。该信息可用于识别用户环境中的对象或信息。

可穿戴系统可以将由GPS 337获取的数据与可以提供有关用户环境的更多信息的远程计算系统(诸如例如,远程处理模块270、另一个用户的ARD等)相结合。作为一个示例,可穿戴系统可以基于GPS数据确定用户的位置并取得世界地图(例如,通过与远程处理模块270通信),该世界地图包括与用户的位置相关联的虚拟对象。作为另一个示例,可穿戴系统200可以使用世界相机316(其可以是图4中所示的面向外成像系统464的一部分)来监测环境。基于由世界相机316获取的图像,可穿戴系统200可以检测环境中的对象(例如,通过使用图7中所示的一个或多个对象识别器708)。可穿戴系统可以进一步使用由GPS 337获取的数据来解释特征。

可穿戴系统200还可以包括渲染引擎334,该渲染引擎334可以被配置为提供用户本地的渲染信息,以促进扫描仪的操作和成像到用户的眼睛中,以便用户观看世界。渲染引擎334可以由硬件处理器(诸如例如,中央处理单元或图形处理单元)实现。在一些实施例中,渲染引擎是本地处理和数据模块260的一部分。渲染引擎334可以通信地耦合(例如,经由有线或无线链路)到可穿戴系统200的其它组件。例如,渲染引擎334可以经由通信链路274耦合到眼睛相机324,并且经由通信链路272耦合到投影子系统318(其可以以类似于视网膜扫描显示器的方式经由扫描的激光装置将光投射到用户的眼睛302、304中)。渲染引擎334还可以分别经由链路276和294与其它处理单元(诸如例如传感器姿势处理器332和图像姿势处理器336)通信。

相机324(例如,微型红外相机)可用于跟踪眼睛姿势以支持渲染和用户输入。一些示例眼睛姿势可以包括用户正在看的地方或他或她正在聚焦的深度(这可以通过眼睛的聚散来估计)。GPS 337、陀螺仪、罗盘和加速度计339可用于提供粗略或快速的姿势估计。相机316中的一个或多个可以获取图像和姿势,该图像和姿势可以与来自关联的云计算资源的数据一起被用来映射本地环境并与其他人共享用户视图。

图3中描绘的示例组件仅用于说明目的。为了便于说明和描述,一起示出了多个传感器和其它功能模块。一些实施例可以仅包括这些传感器或模块中的一个或子集。此外,这些组件的位置不限于图3中所示的位置。一些组件可以安装到其它组件或容纳在其它组件(诸如皮带安装组件、手持组件或头盔组件)内。作为一个示例,图像姿势处理器336、传感器姿势处理器332和渲染引擎334可以放置在腰带包中,并被配置为经由无线通信(诸如超宽带、Wi-Fi、蓝牙等)或经由有线通信与可穿戴系统的其它组件通信。所描绘的壳体230优选地是用户可头戴的和可穿戴的。然而,可穿戴系统200的一些组件可能会穿戴到用户身体的其它部分。例如,扬声器240可以被插入用户的耳朵中以向用户提供声音。

关于光338到用户的眼睛302、304中的投影,在一些实施例中,相机324可以被用来测量用户的眼睛的中心在几何上趋向的位置,该位置通常与眼睛的焦点位置或“焦点深度”重合。眼睛趋向的所有点的三维表面可以称为“两眼视界(horopter)”。焦距可以采取一定数量的深度,或者可以无限变化。从聚散距离投射的光似乎聚焦到主体眼睛302、304,而在聚散距离之前或之后的光则是模糊的。在美国专利公开No.2016/0270656中也描述了本公开的可穿戴设备和其它显示系统的示例,其全部内容通过引用合并于此。

人的视觉系统是复杂的,并且提供对深度的真实感是具有挑战性的。由于聚散和调节的组合,对象的观看者可以将对象感知为三维的。两只眼睛相对于彼此的聚散运动(例如,用于会聚眼睛的视线以固定在对象上的瞳孔朝向或远离彼此的转动运动)与眼睛晶状体的聚焦(或“调节”)密切相关。在正常情况下,改变眼睛晶状体的焦点或调节眼睛,以在被称为“调节-聚散反射”的关系下将焦点从一个对象改变为在另一距离处的另一对象来自动将聚散变化匹配到相同距离。同样,在正常情况下,聚散的变化将触发调节的匹配变化。在调节和聚散之间提供更好匹配的显示系统可以形成更逼真的和更舒适的三维图像模拟。

此外,人眼可以正确地分辨束直径小于约0.7毫米的空间相干光,而不管眼睛聚焦在哪里。因此,为了产生适当的焦深的错觉,可以用相机324跟踪眼睛的聚散,并且渲染引擎334和投影子系统318可用于渲染处于聚焦的双眼单视界(horopter)上或附近的所有对象,以及处于变化的散焦度(例如,使用故意创建的模糊)的所有其它对象。优选地,系统220以大约每秒60帧或更高的帧速率向用户渲染。如上所述,优选地,相机324可以用于眼睛跟踪,并且软件可以被配置为不仅拾取聚散几何形状而且拾取焦点位置提示以用作用户输入。优选地,此类显示系统配置有适合白天或晚上使用的亮度和对比度。

在一些实施例中,显示系统优选地对于视觉对象对准具有小于约20毫秒的延迟,小于约0.1度的角度对准和约1弧分的分辨率,不受理论的限制,据信这大约是人眼的极限。显示系统220可以与定位系统集成在一起,该定位系统可以涉及GPS元件、光学跟踪、罗盘、加速度计或其它数据源,以帮助位置和姿势确定;定位信息可用于促进用户观看相关世界时的准确渲染(例如,此类信息将有助于眼镜了解它们关于真实世界的位置)。

在一些实施例中,可穿戴系统200被配置为基于用户的眼睛的调节来显示一个或多个虚拟图像。在一些实施例中,不同于迫使用户聚焦在图像被投影的地方的现有3D显示方法,可穿戴系统被配置为自动改变所投影虚拟内容的焦点,以允许更舒适地观看被呈现给用户的一个或多个图像。例如,如果用户的眼睛具有1m的当前焦点,则图像可以被投影为与用户的焦点重合。如果用户将焦点移至3m,则图像被投影为与新焦点重合。因此,一些实施例的可穿戴系统200允许用户的眼睛以更自然的方式起作用而不是迫使用户达到预定的焦点。

这样的可穿戴系统200可以消除或减少通常关于虚拟现实设备观察到的眼睛疲劳、头痛和其它生理症状的发生。为了实现这一点,可穿戴系统200的各种实施例被配置为通过一个或多个可变聚焦元件(VFE)以变化的焦距投影虚拟图像。在一个或多个实施例中,可通过多平面聚焦系统来实现3D感知,该多平面聚焦系统在远离用户的固定焦平面处投影图像。其它实施例采用可变平面焦点,其中,焦平面在z方向前后移动,以与用户当前的焦点状态一致。

在多平面聚焦系统和可变平面聚焦系统二者中,可穿戴系统200可以采用眼睛跟踪来确定用户的眼睛的聚散,确定用户的当前焦点以及将虚拟图像投影在所确定的焦点处。在其它实施例中,可穿戴系统200包括光调制器,该光调制器通过光纤扫描仪或其它光发生源将可变焦点的光束以光栅图案可变地投射到整个视网膜上。因此,如在美国专利No.2016/0270656(其全部内容通过引用合并于此)中进一步描述的,可穿戴系统200的显示器以变化的焦距投影图像的能力不仅减轻了用户观看3D对象的调焦,而且还可以用于补偿用户的眼部异常。在一些其它实施例中,空间光调制器可以通过各种光学组件将图像投影到用户。例如,如下文进一步所述,空间光调制器可将图像投影到一个或多个波导上,然后将图像传输给用户。

波导堆叠组件

图4示出用于向用户输出图像信息的波导堆叠的示例。可穿戴系统400包括波导的堆叠,或堆叠的波导组件480,其可以用于使用多个波导432b、434b、436b、438b、4400b向眼睛/大脑提供三维感知。在一些实施例中,可穿戴系统400可以对应于图2的可穿戴系统200,图4示意性地更详细地示出该可穿戴系统200的一些部分。例如,在一些实施例中,波导组件480可以被集成到图2的显示器220中。

继续参考图4,波导组件480还可在波导之间包括多个特征458、456、454、452。在一些实施例中,特征458、456、454、452可以是透镜。在其它实施例中,特征458、456、454、452可以不是透镜。而是,它们可以仅仅是间隔物(例如,覆盖层或用于形成气隙的结构)。

波导432b、434b、436b、438b、440b或多个透镜458、456、454、452可以被配置为以各种水平的波前曲率或光线发散将图像信息发送到眼睛。每个波导级可以与特定的深度平面相关联,并且可以被配置为输出与该深度平面相对应的图像信息。图像注入设备420、422、424、426、428可以被用来将图像信息注入波导440b、438b、436b、434b、432b,波导中的每个波导可以被配置为将入射光横跨每个相应的波导分布,用于朝向眼睛410输出。光离开图像注入设备420、422、424、426、428的输出表面,并且被注入到波导440b、438b、436b、434b、432b的对应输入边缘中。在一些实施例中,单个光束(例如,准直光束)可以被注入到每个波导中,以输出克隆准直光束的整个场,该样本出射光瞳束以对应于与特定波导相关联的深度平面的特定角度(和发散量)导向眼睛410。

在一些实施例中,图像注入设备420、422、424、426、428是分立的显示器,其各自产生图像信息以分别注入到对应的波导440b、438b、436b、434b、432b中。在一些其它实施例中,图像注入设备420、422、424、426、428是单个多路复用显示器的输出端,该显示器可以例如经由一个或多个光导管(诸如光缆)将图像信息传送到图像注入设备420、422、424、426、428中的每一个。

控制器460控制堆叠的波导组件480和图像注入设备420、422、424、426、428的操作。控制器460包括调节定时和向波导440b、438b、436b、434b、432b提供图像信息的编程(例如,非暂态计算机可读介质中的指令)。在一些实施例中,控制器460可以是单个集成设备,或者是通过有线或无线通信信道连接的分布式系统。在一些实施例中,控制器460可以是处理模块260或270(在图2中示出)的一部分。

波导440b、438b、436b、434b、432b可以被配置为通过全内反射(TIR)在每个相应波导内传播光。波导440b、438b、436b、434b、432b可各自是平面的或具有另一种形状(例如,弯曲的),具有主要的顶部表面和底部表面以及在那些主要的顶部表面和底部表面之间延伸的边缘。在所示的配置中,波导440b、438b、436b、434b、432b可各自包括光提取光学元件440a、438a、436a、434a、432a,其被配置为通过将在每个相应波导内传播的光重定向而从波导中提取出光,以将图像信息输出到眼睛410。所提取的光也可以称为出耦合光,并且光提取光学元件也可以称为出耦合光学元件。在波导中传播的光撞击光重定向元件的位置处,由波导输出所提取的光束。光提取光学元件(440a、438a、436a、434a、432a)可以例如是反射或衍射光学特征。尽管为了便于描述和清楚起见而示出设置在波导440b、438b、436b、434b、432b的底部主表面上,但是在一些实施例中,光提取光学元件440a、438a、436a、434a、432a可以设置在顶部主表面或底部主表面,或者可以直接设置在波导440b、438b、436b、434b、432b的体积中。在一些实施例中,光提取光学元件440a、438a、436a、434a、432a可以形成为材料层,该材料层附接至透明基板上以形成波导440b、438b、436b、434b、432b。在一些其它实施例中,波导440b、438b、436b、434b、432b可以是单片材料,并且光提取光学元件440a、438a、436a、434a、432a可以形成在该片材料的表面上或内部中。

继续参考图4,如在此讨论的,每个波导440b、438b、436b、434b、432b被配置为输出光以形成与特定深度平面相对应的图像。例如,最靠近眼睛的波导432b可以被配置为将注入到这种波导432b中的准直光传送到眼睛410。准直光可以代表光学无限远焦平面。下一个波导向上434b可以被配置为在通过第一透镜452(例如,负透镜)的准直光到达眼睛410之前发出该准直光。第一透镜452可以被配置为产生轻微的凸波前曲率,使得眼睛/大脑将来自下一个波导向上434b的光解释为来自光学无限远朝内更加靠近眼睛410的第一焦平面。类似地,第三向上波导436b在到达眼睛410之前将其输出光通过第一透镜452和第二透镜454二者。第一透镜452和第二透镜454的组合光焦度可以配置为产生另一增量的波前曲率,使得眼睛/大脑将来自第三波导436b的光解释为来自第二焦平面,该第二焦平面比来自下一个波导向上434b的光从光学无限远朝内更加靠近人。

其它波导层(例如,波导438b、440b)和透镜(例如,透镜456、458)被类似地配置,堆叠中的最高波导440b通过其与眼睛之间的所有透镜发送其输出,以用于代表相对于人的最接近焦平面的聚合光焦度。为了在观看/解释来自堆叠波导组件480另一侧上的世界470的光时补偿透镜458、456、454、452的堆叠,可以在堆叠的顶部处设置补偿透镜层430,以补偿下面的透镜堆叠458、456、454、452的总焦度。此类配置提供与可用的波导/透镜对一样多的感知焦平面。波导的光提取光学元件和透镜的聚焦方面二者都可以是静态的(例如,不是动态的或电激励的)。在一些替代实施例中,其一者或二者可以动态使用电激活特征。

继续参考图4,光提取光学元件440a、438a、436a、434a、432a可被配置为既将光重定向到其相应的波导之外,又针对与波导相关联的特定深度平面以适当的发散或准直量输出该光。结果,具有不同相关联的深度平面的波导可以具有光提取光学元件的不同配置,该光提取光学元件取决于相关联的深度平面输出具有不同发散量的光。在一些实施例中,如在此所讨论的,光提取光学元件440a、438a、436a、434a、432a可以是体积或表面特征,该体积或表面特征可以被配置为以特定角度输出光。例如,光提取光学元件440a、438a、436a、434a、432a可以是体积全息图、表面全息图和/或衍射光栅。在2015年6月25日公开的美国专利公开号2015/0178939中描述了诸如衍射光栅的光提取光学元件,其通过引用整体并入在此。

在一些实施例中,光提取光学元件440a、438a、436a、434a、432a是形成衍射图案的衍射特征,或“衍射光学元件”(在此也称为“DOE”)。优选地,DOE具有相对较低的衍射效率,使得光束的光的仅一部分在DOE的每个相交处朝向眼睛410偏转离开,而其余的光经由全内反射继续移动通过波导。承载图像信息的光因此可被分成多个相关的出射束,该出射束在多个位置处离开波导,并且结果是针对在波导内到处弹跳的该特定的准直光束而朝向眼睛304的相当均匀的出射发射的图案。

在一些实施例中,一个或多个DOE可以在它们主动衍射的“开”状态与它们不明显衍射的“关”状态之间切换。例如,可切换的DOE可以包含聚合物分散液晶层,其中微滴在主体介质中包含衍射图案,并且微滴的折射率可以切换为与主体材料的折射率基本上匹配(在这种情况下,该图案不会明显衍射入射光),或者微滴可以切换到与主体介质的折射率不匹配的折射率(在这种情况下,该图案主动衍射入射光)。

在一些实施例中,可以基于观看者的眼睛的瞳孔大小或取向来动态地改变深度平面或景深的数量和分布。景深可能与观看者的瞳孔大小成反比。结果,随着观看者眼睛的瞳孔的大小减小,景深增加,使得因为该平面的位置超出了眼睛的焦点深度而无法辨别的一个平面可能会变得可辨别,并且随着瞳孔大小的减小和景深的相应增加而显得越来越集中。同样地,可以随着瞳孔大小的减小而减少用于向观看者呈现不同图像的间隔开的深度平面的数量。例如,观看者可能在不将眼睛的调节从一个深度平面调节到另一个深度平面的情况下无法在一个瞳孔大小下清楚地感知第一深度平面和第二深度平面二者的细节。然而,这两个深度平面可以同时在不改变调节的情况下以另一个瞳孔大小对用户充分聚焦。

在一些实施例中,显示系统可以基于对瞳孔大小或取向的确定,或者基于接收指示特定瞳孔大小或取向的电信号,来改变接收图像信息的波导的数量。例如,如果用户的眼睛无法区分与两个波导相关联的两个深度平面,则控制器460(其可以是本地处理和数据模块260的实施例)可以被配置或编程以停止向这些波导中的一个波导提供图像信息。有利地,这可以减少系统上的处理负担,从而增加系统的响应性。在波导的DOE可在开和关状态之间切换的实施例中,当波导确实接收到图像信息时,DOE可被切换到关状态。

在一些实施例中,可能希望使出射束满足直径小于观看者的眼睛直径的条件。然而,鉴于观看者瞳孔大小的可变性,满足该条件可能是一个挑战。在一些实施例中,通过响应于观看者的瞳孔大小的确定而改变出射束的大小,在宽范围的瞳孔大小上满足该条件。例如,随着瞳孔大小减小,出射束的大小也可以减小。在一些实施例中,可以使用可变孔径来改变出射束的大小。

可穿戴系统400可以包括对世界470的一部分进行成像的面向外成像系统464(例如,数码相机)。世界470的该部分可以被称为世界相机的视场(FOV),并且成像系统464有时被称为FOV相机。世界相机的FOV可以与观看者210的FOV相同或可以不相同,该观看者210的FOV涵盖观看者210在给定时间感知的世界470的一部分。例如,在一些情况下,世界相机的FOV可以大于可穿戴系统400的观看者210的观看者210。观看者可用于观看或成像的整个区域可以被称为关注场(FOR)。FOR可以包括围绕可穿戴系统400的立体角为4π的弧度,因为佩戴者可以移动他的身体、头部或眼睛以感知空间中的基本上任何方向。在其它上下文中,佩戴者的动作可能会更受限制,并且因此佩戴者的FOR可能会产生更小的立体角。从面向外成像系统464获得的图像可以用于跟踪用户做出的手势(例如,手或手指的手势),检测用户前面的世界470中的对象等。

可穿戴系统400可以包括音频传感器232,例如麦克风,以捕获环境声音。如上所述,在一些实施例中,可以放置一个或多个其它音频传感器以提供用于确定语音源的位置的立体声接收。作为另一示例,音频传感器232可以包括定向麦克风,该定向麦克风还可以提供关于音频源位于何处的这样的有用的定向信息。可穿戴系统400可以在定位语音源时使用来自面向外成像系统464和音频传感器230二者的信息,或者在特定时刻确定活动说话者等。例如,可穿戴系统400可以单独或者与说话者的反射图像(例如,如在镜子中看到)结合使用语音识别以确定说话者的身份。作为另一示例,可穿戴系统400可以基于从定向麦克风获取的声音来确定说话者在环境中的位置。可穿戴系统400可以采用语音识别算法来解析来自说话者位置的声音,以确定语音的内容,并使用语音识别技术来确定说话者的身份(例如,姓名或其他人口统计信息)。

可穿戴系统400还可以包括面向内成像系统466(例如,数码相机),其观察用户的运动,诸如眼睛运动和面部运动。面向内成像系统466可以用于捕获眼睛410的图像以确定眼睛304的瞳孔的大小和/或取向。面向内成像系统466可以用于获得图像以用于确定用户正在看的方向(例如,眼睛姿势)或用户的生物度量识别(例如,经由虹膜识别)。在一些实施例中,可以为每只眼睛使用至少一个相机,以独立地确定每只眼睛单独的瞳孔大小或眼睛姿势,从而允许向每只眼睛呈现图像信息以针对该只眼睛被动态地调整。在一些其它实施例中,仅单只眼睛410的瞳孔直径或取向被确定(例如,每双眼仅使用单个相机),并且假定对于用户的两只眼睛是相似的。可以分析由面向内成像系统466获得的图像以确定用户的眼睛姿势或心情,可穿戴系统400可以使用该眼睛姿势或心情来确定应该向用户呈现哪些音频或视觉内容。可穿戴系统400还可以使用诸如IMU、加速度计、陀螺仪等的传感器来确定头部姿势(例如,头部位置或头部取向)。

可穿戴系统400可以包括用户输入设备466,用户可以通过该用户输入设备466向控制器460输入命令以与可穿戴系统400交互。例如,用户输入设备466可以包括触控板、触摸屏、游戏杆、多自由度(DOF)控制器、电容感测设备、游戏控制器、键盘、鼠标、方向垫(D-pad)、棒、触觉设备、图腾(例如,充当虚拟用户输入设备)等。多DOF控制器可以以控制器的一些或所有可能的平移(例如,向左/向右、向前/向后或向上/向下)或旋转(例如,偏航、俯仰或滚动)来感测用户输入。支持平移运动的多DOF控制器可以称为3DOF,而支持平移和旋转的多自由度控制器可以称为6DOF。在一些情况下,用户可以使用手指(例如,拇指)在触敏输入设备上按下或滑动以向可穿戴系统400提供输入(例如,向由可穿戴系统400提供的用户界面提供用户输入)。用户输入设备466可以在可穿戴系统400的使用期间被用户的手握住。用户输入设备466可以与可穿戴系统400进行有线或无线通信。

可穿戴系统的其它组件

在许多实现方式中,除了上述可穿戴系统的组件之外或作为其替代,可穿戴系统可包括其它组件。可穿戴系统可以例如包括一个或多个触觉设备或组件。触觉设备或触觉组件可以可操作以向用户提供触感。例如,当触摸虚拟内容(例如,虚拟物体、虚拟工具、其它虚拟构造)时,触觉设备或组件可以提供压力或纹理的触感。触感可以复制虚拟对象所代表的物理对象的感觉,或者可以复制虚拟内容所代表的想象的对象或角色(例如,龙)的感觉。在一些实现方式中,触觉设备或组件可以由用户佩戴(例如,用户可佩戴的手套)。在一些实现方式中,触觉设备或组件可以由用户握持。

可穿戴系统可以例如包括可由用户操纵以允许输入可穿戴系统或与可穿戴系统交互的一个或多个物理对象。这些物理对象在此可以称为图腾。一些图腾可能采取无生命物体的形式,诸如例如一块金属或塑料、墙壁、桌子表面。在一些实现方式中,图腾实际上可能没有任何物理输入结构(例如,键、触发器、操纵杆、轨迹球、摇杆开关)。取而代之的是,图腾可以简单地提供物理表面,并且可穿戴系统可以渲染用户界面,以使用户看起来在图腾的一个或多个表面上。例如,可穿戴系统可以将计算机键盘和触控板的图像渲染为看起来驻留在图腾的一个或多个表面上。例如,可穿戴系统可以将虚拟计算机键盘和虚拟触控板渲染为出现在用作图腾的铝制矩形薄板的表面上。矩形板本身没有任何物理键、触控板或传感器。然而,可穿戴系统可以将用户采用矩形板操纵或交互或触摸检测为经由虚拟键盘或虚拟触控板进行的选择或输入。用户输入设备466(图4中所示)可以是图腾的实施例,其可以包括触控板、触摸板、触发器、操纵杆、跟踪球、摇杆或虚拟开关、鼠标、键盘、多自由度控制器或另一物理输入设备。用户可以单独或与姿势结合使用图腾与可穿戴系统或其他用户进行交互。

可与本公开的可穿戴设备、HMD和显示系统一起使用的触觉设备和图腾的示例在美国专利公开No.2015/0016777中进行了描述,其全部内容通过引用合并于此。

用户与可穿戴系统交互的示例过程

图5是用于与虚拟用户界面进行交互的方法500的示例的过程流程图。方法500可以由在此描述的可穿戴系统执行。方法500的实施例可以由可穿戴系统用来检测可穿戴系统的FOV中的人或文档。

在框510处,可穿戴系统可以识别特定的UI。UI的类型可以由用户预先确定。可穿戴系统可以识别特定的UI需要基于用户输入(例如,手势、视觉数据、音频数据、感觉数据、直接命令等)来填充。UI可以特定于安全场景,在该安全场景中,系统的佩戴者正在观察向佩戴者(例如,在旅行检查站)呈现文档的用户。在框520处,可穿戴系统可以生成用于虚拟UI的数据。例如,可以生成与UI的边界、总体结构、形状等相关联的数据。另外,可穿戴系统可以确定用户的物理位置的地图坐标,使得可穿戴系统可以显示与用户的物理位置有关的UI。例如,如果UI以身体为中心,则可穿戴系统可以确定用户的身体姿势、头部姿势或眼睛姿势的坐标,使得可以在用户周围显示环形UI,或者可以在墙上或在用户前面显示平面UI。在此所述的安全性上下文中,可以将UI显示为好像UI围绕正在向系统的佩戴者呈现文档的旅行者一样,使得佩戴者可以在观看旅行者和旅行者的文档时轻松观看UI。如果UI以手为中心,则可以确定用户的手的地图坐标。这些地图点可以通过FOV相机接收的数据、感官输入或任何其它类型的收集数据得出。

在框530处,可穿戴系统可以将数据从云发送到显示器,或者可以将数据从本地数据库发送到显示器组件。在框540处,基于所发送的数据向用户显示UI。例如,光场显示器可以将虚拟UI投射到用户的一只或两只眼睛中。一旦已经创建了虚拟UI,则在框550处,可穿戴系统可以简单地等待来自用户的命令以在虚拟UI上生成更多虚拟内容。例如,UI可以是围绕用户的身体或用户环境中的人(例如旅行者)的身体的以身体为中心的环。然后,可穿戴系统可以等待命令(手势、头部或眼睛的运动、语音命令、来自用户输入设备的输入等),并且如果识别出该命令(框560),则可以与该命令相关联的虚拟内容向用户显示(框570)。

混合现实中的化身渲染的示例

可穿戴系统可以采用各种映射相关技术,以便在渲染的光场中实现高景深。在映射出虚拟世界时,了解真实世界中的所有特征和点以相对于真实世界准确地描绘虚拟对象是有利的。为此,可以通过包含传达有关真实世界的各个点和特征的信息的新图片,将从可穿戴系统用户捕获的FOV图像添加到世界模型。例如,可穿戴系统可以收集一组地图点(例如2D点或3D点)并找到新的地图点以渲染世界模型的更准确版本。可以将第一用户的世界模型(例如,通过诸如云网络的网络)传送给第二用户,使得第二用户可以体验围绕第一用户的世界。

图6A是可穿戴系统的另一示例的框图,该可穿戴系统可包括混合现实环境中的化身处理和渲染系统690。可穿戴系统600可以是图2中所示的可穿戴系统200的一部分。在该示例中,可穿戴系统600可以包括地图620,该地图620可以包括地图数据库710(图7中所示)中的数据的至少一部分。该地图可以部分地驻留在可穿戴系统本地上,并且可以部分地驻留在可通过有线或无线网络访问的联网存储位置(例如,在云系统中)。姿势过程610可以在可穿戴计算架构(例如,处理模块260或控制器460)上执行,并利用来自地图620的数据来确定可穿戴计算硬件或用户的位置和取向。当用户正在体验系统并在世界范围内操作时,可以根据飞行中收集的数据计算姿势数据。数据可以包括图像、来自传感器的数据(诸如惯性测量单元,其通常包括加速度计和陀螺仪组件)以及与真实或虚拟环境中的对象有关的表面信息。

稀疏点表示可以是同时定位和映射(例如,SLAM或vSLAM,是指其中输入仅是图像/视觉的配置)过程的输出。该系统可以配置为不仅找出各个组件在世界中的位置,而且找出世界的构成。姿势可以是实现许多目标的构建块,包括填充地图和使用来自地图的数据。

在一个实施例中,稀疏点位置本身可能并不完全足够,并且可能需要进一步的信息来产生多焦点AR、VR或MR体验。通常指代深度图信息的密集表示可以被用来至少部分地填充该间隙。可以从称为“立体”640的过程中计算此类信息,其中,使用诸如三角测量或飞行时间感测的技术来确定深度信息。图像信息和活动图案(诸如使用活动投影仪创建的红外图案)、从图像相机获取的图像或手势/图腾650可用作立体处理640的输入。大量深度图信息可以被融合在一起,并且其中的一些可以采用表面表示来概括。例如,在数学上可定义的表面可能是其它处理设备(如游戏引擎)的有效(例如,相对于大的点云而言)且可理解的输入。因此,立体过程(例如,深度图)640的输出可以在融合过程630中被组合。姿势610也可以是该融合过程630的输入,并且融合630的输出变成填充地图过程620的输入。诸如在地形图绘制中,子表面可以彼此连接以形成较大的表面,并且该地图变成点和表面的大型混合体。

为了解决混合现实过程660中的各个方面,可以利用各种输入。例如,在图6A中所示的实施例中,可以输入游戏参数来确定系统的用户正在与各个位置处的一个或多个怪物、在各个位置处的墙壁或其它物体等玩怪物战斗游戏,怪物在各种条件下死亡或逃跑(诸如,如果用户射击了怪物)。世界地图可以包括关于对象的位置的信息或对象的语义信息(例如,诸如对象是平坦还是圆形,水平还是竖直,桌子还是灯等的分类),并且世界地图可以是对于混合现实的另一个有价值的输入。相对于世界的姿势也变成输入,并且在几乎所有交互系统中都扮演着关键角色。

来自用户的控制或输入是可穿戴系统600的另一输入。如在此所述,用户输入可包括视觉输入、手势、图腾、音频输入、感官输入等。为了四处移动或玩游戏,例如,用户可能需要指示可穿戴系统600有关他或她想做什么。除了在空间中移动自身外,还存在可以利用的各种形式的用户控件。在一个实施例中,图腾(例如用户输入设备)或诸如玩具枪的对象可以由用户握持并由系统跟踪。该系统优选地将被配置为了解用户正在握持该物品并了解用户正在与该物品进行什么类型的交互(例如,如果图腾或对象是枪,则系统可以被配置为了解位置和取向,以及用户是否点击了触发器或可能配备有传感器(诸如IMU)的其它感应按钮或元件,即使当这种活动不在任何相机的视野之内时,该传感器也可以辅助确定发生了什么)。

手势跟踪或识别也可以提供输入信息。可穿戴系统600可以被配置为跟踪和解释用于按钮按压、用于手势向左或向右、停止、抓握、握持等的手势。例如,在一种配置中,用户可能想要在非游戏环境中翻阅电子邮件或日历,或者与另一个人或玩家进行“拳头碰撞”。可穿戴系统600可以被配置为利用最小量的手势,该最小量的手势可以是动态的或可以不是动态的。例如,手势可以是简单的静态手势,如张开手表示停止,上竖大拇指表示可以,下竖大拇指表示不可以;或手向右或向左或向上/向下翻转以表示方向命令。

眼睛跟踪是另一种输入(例如,跟踪用户正在看向控制显示技术以在特定深度或范围进行渲染的位置)。在一个实施例中,可以使用三角测量确定眼睛的聚散,并且然后使用针对该特定人开发的聚散/调节模型来确定调节。眼睛跟踪可由眼睛相机执行,以确定眼睛注视(例如,一只眼睛或两只眼睛的方向或取向)。其它技术可以被用于眼睛跟踪,诸如例如,通过放置在眼睛附近的电极(例如,眼电位计)来测量电势。

语音跟踪可以是另一种输入,并且可以单独使用或与其它输入(例如,图腾跟踪、眼睛跟踪、手势跟踪等)组合使用。语音跟踪可以包括单独或组合的语音识别、声音识别。系统600可以包括从环境接收音频流的音频传感器(例如,麦克风)。系统600可以结合声音识别技术来确定谁正在说话(例如,语音是来自ARD的佩戴者还是另一个人或语音(例如,语音是来自ARD佩戴者还是其他人还是语音(例如,环境中扬声器发送的录制语音))以及语音识别技术来确定在说什么。本地数据和处理模块260或远程处理模块270可以处理来自麦克风的音频数据(或诸如例如用户正在观看的视频流的另一个流中的音频数据),以通过应用各种语音识别算法,诸如例如隐马尔可夫模型、基于动态时间规整(DTW)的语音识别、神经网络、深度学习算法(诸如深度前馈和递归神经网络)、端到端自动语音识别、机器学习算法(参考图7进行描述),或使用声学建模或语言建模的其它算法等,来识别语音内容。

本地数据和处理模块260或远程处理模块270也可以应用语音识别算法,该算法可以识别说话者的身份,诸如说话者是可穿戴系统600的用户210还是用户正在交流的其他人。一些示例语音识别算法可以包括频率估计、隐马尔可夫模型、高斯混合模型、模式匹配算法、神经网络、矩阵表示、矢量量化、说话者二叉化、决策树和动态时间规整(DTW)技术。语音识别技术还可以包括反说话者技术,诸如同类群组模型和世界模型。频谱特征可用于表示说话者特征。本地数据和处理模块或远程数据处理模块270可以使用参考图7描述的各种机器学习算法来执行语音识别。

可穿戴系统的实现方式可以经由UI使用这些用户控件或输入。UI元素(例如,控件、弹出窗口、气泡、数据输入字段等)可以用于例如关闭信息(例如对象的图形或语义信息)的显示。

关于相机系统,图6A中所示的示例可穿戴系统600可以包括三对相机:布置在用户面部两侧的相对较宽的FOV或被动SLAM相机对;取向为用户前方的不同对的相机,其用于处理立体成像过程640并捕获在用户面部前方跟踪的手势和图腾/对象。FOV相机和用于立体过程640的相机对可以是面向外成像系统464(图4中所示)的一部分。可穿戴系统600可以包括朝向用户的眼睛取向的眼睛跟踪相机(其可以是图4中所示的面向内成像系统462的一部分),以便对眼睛矢量和其它信息进行三角测量。可穿戴系统600还可包括一个或多个纹理光投影仪(诸如红外(IR)投影仪)以将纹理注入场景。

可穿戴系统600可以包括化身处理和渲染系统690。化身处理和渲染系统690可以被配置为基于上下文信息生成、更新、动画化和渲染化身。化身处理和渲染系统690中的一些或全部可以单独地或组合地实现为本地处理和数据模块260或远程处理模块262、264的一部分。在各个实施例中,多个化身处理和渲染系统690(例如,如在不同的可穿戴设备上实现)可以用于渲染虚拟化身670。例如,第一用户的可穿戴设备可以用于确定第一用户的意图,而第二用户的可穿戴设备可以基于从第一用户的可穿戴设备接收的意图来确定化身的特征并渲染第一用户的化身。如将参考图9A和9B所描述的,第一用户的可穿戴设备和第二用户的可穿戴设备(或其它此类可穿戴设备)可以例如经由网络进行通信。

图6B示出示例化身处理和渲染系统690。示例化身处理和渲染系统690可以单独或组合地包括3D模型处理系统680、上下文信息分析系统688、化身自动缩放器692、意图映射系统694、解剖结构调节系统698、刺激响应系统696。系统690旨在示出用于化身处理和渲染的功能,而并非旨在进行限制。例如,在某些实现方式中,这些系统中的一个或多个系统可以是另一系统的一部分。例如,上下文信息分析系统688的部分单独地或组合地可以是化身自动缩放器692、意图映射系统694、刺激响应系统696或解剖结构调节系统698的一部分。

上下文信息分析系统688可以被配置为基于参考图2和图3描述的一个或多个设备传感器来确定环境和对象信息。例如,上下文信息分析系统688可以使用由用户或用户化身的观看者的面向外成像系统464获取的图像,分析环境和用户环境或渲染用户化身的环境的对象(包括物理或虚拟对象)。上下文信息分析系统688可以单独或者与从位置数据或世界地图(例如,地图620、710、910)获取的数据组合来分析此类图像,以确定环境中对象的位置和布局。上下文信息分析系统688通常还可以访问用户或人类的生物学特征,以现实地对虚拟化身670制作动画。例如,上下文信息分析系统688可以生成不适感曲线,该不适感曲线可以应用于化身,使得用户的化身身体的一部分(例如头部)关于用户的身体的其它部分没有处于不舒适(或不现实)的位置(例如,化身的头部未转动270度)。在某些实现方式中,一个或多个对象识别器708(图7中所示)可以被实现为上下文信息分析系统688的一部分。

化身自动缩放器692、意图映射系统694和刺激响应系统696以及解剖结构调节系统698可以被配置为基于上下文信息来确定化身的特征。化身的一些示例特征可以包括大小、外观、位置、取向、运动、姿势、表情等。化身自动缩放器692可以被配置为自动缩放化身,使得用户不必以不舒服的姿势看化身。例如,化身自动缩放器692可以增加或减小化身的大小以将化身放到用户的视线高度,使得用户不需要分别向下看化身或向上看化身。意图映射系统694可以确定用户交互的意图,并基于渲染化身所在的环境将意图映射到化身(而不是确切的用户交互)。例如,第一用户的意图可以是在远程呈现会话中与第二用户通信(例如,参见图9B)。通常,两个人在交流时会面对面。第一用户的可穿戴系统的意图映射系统694可以确定在远程呈现会话期间存在此类面对面的意图,并且可以使第一用户的可穿戴系统将第二用户的化身渲染为面对第一用户。如果第二用户要在物理上转身,而不是将第二用户的化身渲染到转身的位置(这将导致第二用户的化身的背面被渲染给第一用户),则第一用户的意图映射系统694可以继续将第二化身的面部渲染给第一用户,这是远程呈现会话的推断意图(例如,在该示例中的面对面意图)。

刺激响应系统696可以识别环境中的关注对象,并确定化身对关注对象的响应。例如,刺激响应系统696可以识别化身的环境中的声源,并自动转动化身以看着声源。刺激响应系统696还可以确定阈值终止条件。例如,刺激响应系统696可以在声源消失之后或者经过一段时间之后,使化身回到其原始姿势。

解剖结构调节系统698可以被配置为基于生物学特征来调节用户的姿势。例如,解剖结构调节系统698可以被配置为基于不舒适曲线来调节用户的头部与用户的躯干之间或用户的上半身与下半身之间的相对位置。

3D模型处理系统680可以被配置为对显示器220制作动画并使其渲染虚拟化身670。3D模型处理系统680可以包括虚拟角色处理系统682和运动处理系统684。虚拟角色处理系统682可以被配置为生成和更新用户的3D模型(用于创建虚拟化身并对其制作动画)。运动处理系统684可以被配置为对化身制作动画,诸如例如通过改变化身的姿势,通过在用户的环境中四处移动化身或对化身的面部表情制作动画等。如将在此进一步描述的,可以使用装配技术对虚拟化身制作动画。在一些实施例中,化身以两个部分表示:用于渲染虚拟化身的外部外观的表面表示(例如,可变形的网格)和用于对网格制作动画的互连关节(例如,核心骨架)的分层集合。在一些实现方式中,虚拟角色处理系统682可以被配置为编辑或生成表面表示,而运动处理系统684可以用于通过移动化身,使网格变形等来对化身制作动画。

映射用户环境的示例

图7是MR环境700的示例的框图。MR环境700可以被配置为从一个或多个用户可穿戴系统(例如,可穿戴系统200或显示系统220)或固定房间系统(例如,房间相机等)接收输入(例如,来自用户的可穿戴系统的视觉输入702,诸如室内相机的固定输入704,来自各种传感器的感官输入706,手势,图腾,眼睛跟踪,来自用户输入设备466的用户输入等)。可穿戴系统可以使用各种传感器(例如,加速度计、陀螺仪、温度传感器、运动传感器、深度传感器、GPS传感器、面向内成像系统、面向外成像系统等)来确定用户环境的位置和各种其它属性。该信息可以进一步补充有来自房间中固定相机的信息,该固定相机可以从不同的视角提供图像或各种提示。由相机(诸如房间相机和/或面向外成像系统的相机)获取的图像数据可以减少到一组映射点。

一个或多个对象识别器708可以爬行通过所接收的数据(例如,点的集合)并且识别或映射点、标签图像,借助于地图数据库710将语义信息附加到对象。地图数据库710可以包括随时间推移收集的各种点及其对应的对象。各种设备和地图数据库可以通过网络(例如,LAN、WAN等)彼此连接以访问云。

基于该信息和地图数据库中的点的集合,对象识别器708a至708n可以识别环境中的对象。例如,对象识别器可以识别面部、人物、窗户、墙壁、用户输入设备、电视、文档(例如,本安全示例中在此所述的旅行机票、驾照、护照)、用户环境中的其它对象等。一个或多个对象识别器可以专门用于具有某些特征的对象。例如,对象识别器708a可用于识别面部,而另一对象识别器可用于识别文档。

可以使用多种计算机视觉技术来执行对象识别。例如,可穿戴系统可以分析由面向外成像系统464(图4中所示)获取的图像以执行场景重构、事件检测、视频跟踪、对象识别(例如人或文档)、对象姿势估计、面部识别(例如,来自环境中的人或文档上的图像)、学习、索引、运动估计或图像分析(例如,在文档中识别标记,诸如照片、签名、标识信息、旅行信息等)等。可以使用一种或多种计算机视觉算法来执行这些任务。计算机视觉算法的非限制性示例包括:尺度不变特征变换(SIFT)、加速鲁棒特征(SURF)、定向FAST和旋转的BRIEF(ORB)、二进制鲁棒不变可扩展关键点(BRISK)、快速视网膜关键点(FREAK)、Viola-Jones算法、Eigenfaces方法、Lucas-Kanade算法、Horn-Schunk算法、均值漂移算法、视觉同时定位和映射(vSLAM)技术、顺序贝叶斯估计器(例如,卡尔曼过滤器、扩展卡尔曼过滤器等)、束调节、自适应阈值(和其它阈值技术)、迭代最近点(ICP)、半全局匹配(SGM)、半全局块匹配(SGBM)、特征点直方图、各种机器学习算法(诸如例如支持矢量机、k最近邻算法、朴素贝叶斯、神经网络(包括卷积或深度神经网络)或其它监督/无监督模型等)等。

对象识别可以另外地或可替代地通过各种机器学习算法来执行。训练后,机器学习算法可以由HMD存储。机器学习算法的一些示例可以包括有监督或无监督的机器学习算法,包括回归算法(诸如例如普通最小二乘回归)、基于实例的算法(诸如例如学习矢量量化)、决策树算法(诸如例如分类和回归树)、贝叶斯算法(诸如例如朴素贝叶斯)、聚类算法(诸如例如k均值聚类)、关联规则学习算法(诸如例如先验算法)、人工神经网络算法(诸如例如Perceptron)、深度学习算法(诸如例如Deep Boltzmann Machine或深度神经网络)、降维算法(诸如例如,主要成分分析)、整体算法(例如,Stacked Generalization)和/或其它机器学习算法。在一些实施例中,可以为各个数据集定制单独的模型。例如,可穿戴设备可以生成或存储基本模型。基本模型可以用作生成特定于数据类型(例如,远程呈现会话中的特定用户)、数据集(例如,用户在远程呈现会话中获得的一组附加图像的集合)、有条件的情况或其它变化的附加模型的起点。在一些实施例中,可穿戴HMD可以被配置为利用多种技术来生成用于分析聚合数据的模型。其它技术可以包括使用预定义的阈值或数据值。

基于该信息和地图数据库中的点的集合,对象识别器708a至708n可以识别对象并向对象补充语义信息以赋予对象生命。例如,如果对象识别器将一组点识别为门,则系统可以附加一些语义信息(例如,门具有铰链并且围绕铰链具有90度的运动)。如果对象识别器将一组点识别为镜子,则系统可以附加该镜子具有可以反射房间中对象图像的反射表面的语义信息。语义信息可以包括在此所述的对象的功能可见性。例如,语义信息可以包括对象的法线。系统可以分配矢量,其方向指示对象的法线。随着时间推移,地图数据库会随着系统(其可驻留在本地或可通过无线网络访问)从世界收集更多数据而增长。一旦对象被识别,信息就可以被传输到一个或多个可穿戴系统。例如,MR环境700可以包括关于在加利福尼亚州发生的场景的信息。环境700可被传输给纽约的一个或多个用户。基于从FOV相机和其它输入接收的数据,对象识别器和其它软件组件可以映射从各种图像收集的点,识别对象等,使得可以将场景准确地“传递”给第二用户,该第二用户可能在世界的不同部分。环境700也可以将拓扑图用于定位目的。

图8是关于所识别的对象渲染虚拟内容的方法800的示例的过程流程图。方法800描述了可以如何向可穿戴系统的用户呈现虚拟场景。用户可以在地理位置上远离场景。例如,用户可能在纽约,但可能想要观看当前在加利福尼亚州发生的场景,或者可能想与居住在加利福尼亚州的朋友一起散步。

在框810处,可穿戴系统可以从用户和其他用户接收关于用户的环境的输入。这可以通过各种输入设备以及地图数据库中已经拥有的知识来实现。在框810处,用户的FOV相机、传感器、GPS、眼睛跟踪等将信息传达到系统。在框820处,系统可以基于该信息来确定稀疏点。稀疏点可以用于确定姿势数据(例如,头部姿势、眼睛姿势、身体姿势或手势),该姿势数据可以用于显示和理解用户周围环境中的各种对象的取向和位置。在框830处,对象识别器708a-708n可爬行通过这些收集的点并使用地图数据库识别一个或多个对象。然后,在框840处,该信息可以被传达到用户的单独的可穿戴系统,并且在框850处,所需的虚拟场景可以因此被显示给用户。例如,所需的虚拟场景(例如,加利福尼亚州的用户)可以相对于纽约的用户的各种对象和其它周围环境以适当的取向、位置等显示。

多个可穿戴系统之间的示例通信

图9A示意性地示出描绘彼此交互的多个用户设备的整体系统视图。计算环境900包括用户设备930a、930b、930c。用户设备930a、930b和930c可以通过网络990彼此通信。用户设备930a-930c可以各自包括网络接口,以经由网络990与远程计算系统920(也可以包括网络接口971)通信。网络990可以是LAN、WAN、对等网络、无线电、蓝牙或任何其它网络。计算环境900也可以包括一个或多个远程计算系统920。远程计算系统920可以包括集群的并且位于不同地理位置的服务器计算机系统。用户设备930a、930b和930c可以经由网络990与远程计算系统920通信。

远程计算系统920可以包括远程数据仓库980,该远程数据仓库980可以维护关于特定用户的物理和/或虚拟世界的信息。数据存储器980可以存储与用户、用户的环境(例如,用户环境的世界地图)或用户的化身的配置有关的信息。远程数据存储库可以是图2中所示的远程数据存储库280的实施例。远程计算系统920还可以包括远程处理模块970。远程处理模块970可以是图2中所示的远程处理模块270的实施例。远程处理模块970可以包括一个或多个处理器,该处理器可以与用户设备(930a、930b、930c)和远程数据仓库980通信。处理器可以处理从用户设备和其它来源获得的信息。在一些实现方式中,处理或存储的至少一部分可以由本地处理和数据模块260(如图2中所示)提供。远程计算系统920可以使给定用户能够与另一用户共享关于特定用户自己的物理和/或虚拟世界的信息。

用户设备可以是单独或组合的可穿戴设备(诸如HMD或ARD)、计算机、移动设备或任何其它设备。例如,用户设备930b和930c可以是可以被配置为呈现AR/VR/MR内容的图2中所示的可穿戴系统200(或图4中所示的可穿戴系统400)的实施例。

一个或多个用户设备可以与图4中所示的用户输入设备466一起使用。用户设备可以获得关于用户和用户的环境的信息(例如,使用图4中所示的面向外成像系统464)。用户设备和/或远程计算系统1220可以使用从用户设备获得的信息来构造、更新和构建图像、点和其它信息的集合。例如,用户设备可以处理获取的原始信息,并将处理的信息发送到远程计算系统1220以进行进一步处理。用户设备还可以将原始信息发送到远程计算系统1220以进行处理。用户设备可以从远程计算系统1220接收处理的信息,并在投影到用户之前提供最终处理。用户设备还可以处理获得的信息,并将处理的信息传递给其他用户设备。用户设备可以在处理获取的信息的同时与远程数据存储库1280通信。多个用户设备和/或多个服务器计算机系统可以参与所获取图像的构造和/或处理。

关于物理世界的信息可以随时间推移发展,并且可以基于由不同用户设备收集的信息。虚拟世界的模型也可随时间推移而发展,并基于不同用户的输入。此类信息和模型有时在此可以被称为世界地图或世界模型。如参考图6和图7所述,由用户设备获取的信息可以用于构造世界地图910。世界地图910可以包括图6A中描述的地图620的至少一部分。各种对象识别器(例如708a,708b,708c…708n)可用于识别对象和标记图像,以及将语义信息附加到对象。这些对象识别器也在图7中描述。

远程数据存储库980可以用于存储数据并且促进世界地图910的构造。用户设备可以不断更新关于用户环境的信息并接收关于世界地图910的信息。世界地图910可以由用户或其他人创建。如在此所讨论的,用户设备(例如930a、930b、930c)和远程计算系统920可以单独或组合地构造和/或更新世界地图910。例如,用户设备可以与远程处理模块970和远程数据仓库980通信。用户设备可以获取和/或处理关于用户和用户环境的信息。远程处理模块970可以与远程数据存储库980和用户设备(例如,930a、930b、930c)通信,以处理关于用户和用户的环境的信息。远程计算系统920可以修改由用户设备(例如,930a、930b、930c)获取的信息,诸如例如,选择性地裁剪用户的图像,修改用户的背景,将虚拟对象添加到用户的环境,采用辅助信息注释用户的语音等。远程计算系统920可以将处理的信息发送到相同和/或不同的用户设备。

远程呈现会话的示例

图9B描绘了其中相应可穿戴系统的两个用户正在进行远程呈现会话的示例。该图中示出两个用户(在该示例中分别名为Alice 912和Bob 914)。两个用户正在佩戴他们相应的可穿戴设备902和904,该可穿戴设备902和904可以包括参考图2描述的HMD(例如,系统200的显示设备220),用于表示远程呈现会话中的另一用户的虚拟化身。两个用户可以使用可穿戴设备进行远程呈现会话。注意,图9B中将两个用户分开的竖直线旨在示出当Alice912和Bob 914经由远程呈现进行通信的同时(例如,Alice可能在她位于亚特兰大的办公室内而Bob在波士顿户外时)可能(但是不是必须)位于两个不同的位置。

如参考图9A所描述的,可穿戴设备902和904可以彼此通信或者与其他用户设备和计算机系统通信。例如,Alice的可穿戴设备902可以例如经由网络990(在图9A中示出)与Bob的可穿戴设备904通信。可穿戴设备902和904可以跟踪用户的环境以及环境中的运动(例如,经由相应的面向外成像系统464,或者一个或多个位置传感器)和语音(例如,经由相应的音频传感器232)。可穿戴设备902和904还可以基于由面向内成像系统462获取的数据来跟踪用户的眼睛运动或注视。在一些情况下,可穿戴设备还可以捕获或跟踪用户的面部表情或其它身体运动(例如手臂或腿部运动),其中用户靠近反射表面,并且面向外成像系统464可以获得用户的反射图像,以观察用户的面部表情或其它身体运动。

可穿戴设备可以使用从第一用户和环境中获取的信息来对虚拟化身制作动画,该虚拟化身将由第二用户的可穿戴设备渲染,以在第二用户环境中产生第一用户的有形的存在感。例如,可穿戴设备902和904、远程计算系统920可以单独或组合地处理由Bob的可穿戴设备904呈现的Alice的图像或运动,或者可以处理由Alice的可穿戴设备902呈现的Bob的图像或运动。如在此进一步描述,可以基于诸如例如用户的意图、用户的环境或其中渲染化身的环境或人的其它生物学特征的上下文信息来渲染化身。

尽管示例仅涉及两个用户,但是在此描述的技术不应限于两个用户。使用可穿戴设备(或其它远程呈现设备)的多个用户(例如,两个、三个、四个、五个、六个或更多)可以参加远程呈现会话。在远程呈现会话期间,特定用户的可穿戴设备可以向该特定用户呈现其他用户的化身。此外,虽然该图中的示例将用户示出为站在环境中,但是不需要用户站立。在远程呈现会话期间,任何用户都可以站立、坐着、跪着、躺下、步行或奔跑,或者处于任何位置或运动。除了在此示例中所述,用户还可能处于物理环境中。在进行远程呈现会话的同时,用户可以处于单独的环境中,或可以处于相同的环境中。并非所有用户都需要在远程呈现会话中佩戴其相应的HMD。例如,在Bob 914佩戴可穿戴设备904的同时,Alice 912可以使用其它图像采集和显示设备,诸如网络摄像头和计算机屏幕。

虚拟化身的示例

图10示出可穿戴系统的用户所感知的化身的示例。图10中所示的示例化身1000可以是站在房间中的物理植物后面的Alice 912(图9B中所示)的化身。化身可包括各种特征,诸如例如大小、外观(例如肤色、面色、发型、衣服、面部特征,诸如皱纹、痣、斑点、粉刺、酒窝等)、位置、取向、运动、姿势、表情等。这些特征可以基于与化身相关联的用户(例如,Alice的化身1000可以具有实际人Alice 912的一些或全部特征)。如在此进一步描述的,化身1000可以基于上下文信息被动画化,其可以包括对化身1000的一个或多个特征的调节。尽管在此通常被描述为表示人(例如Alice)的身体外观,但这是为了说明而不是限制。Alice的化身可以表示除了Alice、拟人化的对象、生物或任何其它真实或虚拟的表示之外的另一个真实或虚构的人的外观。此外,图10中的植物不必是物理的,而可以是由可穿戴系统向用户呈现的植物的虚拟表示。此外,与图10中所示的内容相比,附加的或不同的虚拟内容也可以呈现给用户。

用于虚拟角色的装配(rigging)系统的示例

诸如人类化身的动画虚拟角色可以在计算机图形中被全部或部分地表示为多边形网格。多边形网格或简称为“网格”,是在所建模的三维空间中的点的集合。网格可以形成多面体对象,其表面定义虚拟角色(或其一部分)的主体或形状。尽管网格可以包括任何数量的点(在可用计算能力可能会施加的实际限制内),但具有更多点的更精细的网格通常能够描绘出具有可以更接近现实生活中的人、动物、物体等的更精细细节的更逼真的虚拟角色。图10示出化身1000的眼睛周围的网格1010的示例。化身

网格中的每个点都可以通过所建模的三维空间中的坐标定义。所建模的三维空间可以是例如由(x,y,z)坐标寻址的笛卡尔空间。网格中的点是构成多面体对象的多边形的顶点。每个多边形表示多面体对象的表面或面,并由有序的一组顶点定义,每个多边形的边是连接有序的一组顶点的直线边缘。在一些情况下,网格中的多边形顶点可与几何多边形不同,其中它们在3D图形中不一定共面。另外,网格中多边形的顶点可以是共线的,在这种情况下,多边形具有零面积(被称为退化多边形)。

在一些实施例中,网格由三顶点多边形(即,三角形或简称为“tris”)或四顶点多边形(即,四边形或称为“quad”)组成。然而,也可以在一些网格中使用高阶多边形。在直接内容创建(DCC)应用(例如,诸如Maya(可从Autodesk,Inc.获得)或Houdini(可从SideEffects Software Inc.获得)的应用)中,网格通常基于四边形,其主要设计用于创建和操纵3D计算机图形),而网格在实时应用中通常是基于三角形的。

为了对虚拟角色制作动画,可以通过在各个时刻将虚拟角色的一些或全部顶点移动到空间中的新位置来变形虚拟角色的网格。变形既可以表示大规模运动(例如,四肢运动)又可以表示精细运动(例如,面部运动)。这些变形和其它变形可以基于真实世界的模型(例如,对执行身体运动,关节、面部扭曲,表情等的真实人类进行摄影测量扫描)、艺术指导的开发(其可基于真实世界的采样)、相同或其它技术的组合。在计算机图形学的早期,可以通过独立设定顶点的新位置来手动完成网格变形,但是鉴于现代网格的大小和复杂性,通常期望使用自动化系统和过程来产生变形。用于产生这些变形的控制系统、过程和技术称为装配,或简称为“装配(the rig)”。图6B的示例化身处理和渲染系统690包括可实现装配的3D模型处理系统680。

用于虚拟角色的装配可以使用骨架系统来辅助网格变形。骨架系统包括关节的集合,其对应于网格的关节的点。在装配的上下文中,关节有时被称为“骨骼”而不管在解剖学意义上使用时的这些术语之间的差异。骨架系统中的关节可以根据可以被应用于关节的变换彼此相对移动或以其它方式改变。变换可以包括空间的平移或旋转以及其它操作。可以为关节分配彼此之间的层次关系(例如,父子关系)。这些层次关系可以允许一个关节从另一个关节继承变换或其它特征。例如,骨架系统中的子关节可以继承被分配给其父关节的变换,以使子关节与父关节一起运动。

可以采用适当位置处的关节以及采用适当的局部旋转轴、自由度等来定义虚拟角色的骨架系统,以允许要被执行的期望的一组网格变形。一旦为虚拟角色定义了骨架系统,就可以在被称为“蒙皮”的过程中为每个关节分配对网格中各个顶点的影响量。这可以通过为骨架系统中每个关节的每个顶点分配权重值来完成。当将变换应用于任何给定关节时,可以根据该关节变换对受该关节影响的顶点自动地移动或以其它方式改变可取决于它们相应的权重值的量。

装配可以包括多个骨架系统。一种类型的骨架系统是核心骨架(也被称为低阶骨架),其可用于控制虚拟角色的大规模运动。例如,在人类化身的情况下,核心骨架可能类似于人的解剖骨架。尽管用于装配目的的核心骨架可能无法精确地映射到在解剖学上正确的骨架,但它可能在相似位置中具有带有类似取向和运动特性的关节子集。

如上所述,关节的骨架系统可以是分层的,例如,关节之间具有父子关系。当将变换(例如,位置和/或取向的变化)应用于骨架系统中的特定关节时,可以将相同的变换应用于相同层次结构内的所有其它较低级别的关节。例如,在用于人类化身的装配的情况下,核心骨架可包括用于化身的肩部、肘部和腕部的单独关节。其中,可以将肩关节分配给层次结构中的最高级别,而可以将肘关节分配为肩关节的子级,并且可以将腕关节分配为肘关节的子级。因此,当将特定的平移和/或旋转变换被应用于肩关节时,相同的变换也可以被应用于肘关节和腕关节,使得它们以与肩膀相同的方式被平移和/或旋转。

尽管其名称具有含义,但是装配中的骨架系统不必表示解剖骨架。在装配中,骨架系统可以表示用于控制网格变形的各种层次结构。例如,头发可以被表示为层次链中的一系列关节;由于化身的面部扭曲(其可表示诸如微笑、皱眉、笑、说话、眨眼等的表情)引起的皮肤运动可以由一系列由面部装配控制的面部关节来表示;肌肉变形可以由关节建模;以及衣服的运动可以由关节网格来表示。

虚拟角色的索装可以包括多个骨架系统,其中的一些可以驱动其它骨架的运动。低阶骨架系统是驱动一个或多个高阶骨架系统的系统。相反,高阶骨架系统是由低阶骨架系统驱动或控制的系统。例如,虽然角色的核心骨架的运动可能由动画师手动控制,但核心骨架可以进而驱动或控制高阶骨架系统的运动。例如,更高阶的辅助关节(在物理骨架中可能没有解剖类似物)可以被提供以改进由核心骨架的运动引起的网格变形。可以从被应用于低阶骨架的变换中,在算法上得出被应用于高阶骨架系统中的这些关节和其它关节的变换。高阶骨架可以表示例如肌肉、皮肤、脂肪、衣服、头发或不需要直接动画控制的任何其它骨架系统。

如已经讨论的那样,可以将变换应用于骨架系统中的关节,以便执行网格变形。在装配的上下文中,变换包括接受3D空间中的一个或多个给定点并产生一个或多个新3D点的输出的函数。例如,变换可以接受定义关节的一个或多个3D点,并可以输出指定变换的关节的一个或多个新3D点。关节变换可以包括例如平移分量、旋转分量和缩放分量。

平移是如下变换,该变换将所建模的3D空间中的一组一个或多个指定点移动指定量,而该点集的取向或大小不变。旋转是将所建模的3D空间中的一组一个或多个指定点围绕指定轴旋转指定量(例如,将网格中的每个点围绕z轴旋转45度)的变换。仿射变换(或6自由度(DOF)变换)是仅包括平移和旋转的一种变换。仿射变换的应用可以被认为是移动一组一个或多个空间点而不改变其大小,但是取向可以改变。

同时,缩放变换是一种通过以指定值缩放所建模的3D空间中的一个或多个指定点的相应坐标来修改该指定点的变换。这将改变所变换的一组点的大小和/或形状。均匀缩放变换可以将每个坐标缩放相同的量,而非均匀缩放变换可以独立缩放指定点的(x,y,z)坐标。例如,可以使用非均匀缩放变换来提供挤压和拉伸效果,诸如可能由肌肉动作产生的效果。另一类型的变换是剪切变换。剪切变换是通过基于该坐标距轴的距离将点的坐标平移不同量来修改建模3D空间中一组一个或多个指定点的变换。

当将变换被应用于关节以使其移动时,在该关节的影响下的顶点也会被移动。这导致网格变形。如上所述,分配权重以量化每个关节对每个顶点的影响的过程称为蒙皮(或有时称为“权重绘画”或“蒙皮加权”)。权重通常是介于0(表示无影响)和1(表示完全影响)之间的值。网格中的一些顶点可能仅受单个关节影响。在那种情况下,这些顶点针对该关节被分配1的权重值,并且它们的位置基于被分配给该特定关节而不是其它关节的变换而改变。网格中的其它顶点可受到多个关节影响。在该情况下,将为所有影响关节的那些顶点分配单独的权重,每个顶点的权重之和等于1。基于被分配给所有的那些影响关节的变换来改变这些顶点的位置。

对网格中的所有顶点进行权重分配可能会非常费力,特别是当关节数量增加时。对于即使是训练有素的艺术家来说,响应于被应用于关节的变换来平衡权重以实现期望的网格变形也可能非常困难。在实时应用的情况下,许多实时系统还对可被加权到特定顶点的关节数量(通常为8个或更少)施加了限制的事实可使任务进一步复杂化。通常出于图形处理单元(GPU)的效率施加这种限制。

术语蒙皮还指基于应用于骨架系统中关节的变换,使用所分配的权重而实际使网格变形的过程。例如,动画师可以指定一系列核心骨架关节变换,以生成期望的角色运动(例如,跑步运动或舞步)。将变换应用于一个或多个关节时,在变换的关节的影响下为顶点计算新位置。通常,将任何给定顶点的新位置计算为影响该特定顶点的所有关节变换的加权平均值。存在用于计算该加权平均值的许多算法,但是最常见的并且由于其简单易用且易于控制而在大多数实时应用中使用的算法是线性混合蒙皮(LBS)。在线性混合蒙皮中,使用针对其的顶点具有非零权重的每个关节变换来计算每个顶点的新位置。然后,将这些关节变换中的每个关节变换产生的新顶点坐标与被分配给关节中的每个关节的其顶点的相应权重成比例地平均。在实践中,存在着对于LBS众所周知的限制,而制作高质量装配的许多工作都致力于发现并克服这些限制。为此专门设计了许多辅助关节系统。

除了骨架系统,“混合形状”也可以用在装配中以产生网格变形。混合形状(有时也称为“变形目标”或简称为“形状”)是一种应用于网格中一组顶点的变形,其中,该一组顶点中的每个顶点都基于权重在指定方向中移动指定量。对于特定的混合形状,集合中的每个顶点可能具有其自己的自定义运动,并且同时移动集合中的顶点将生成期望的形状。可以由“增量(delta)”指定混合形状中每个顶点的自定义运动,该“增量”是表示施加到该顶点的XYZ运动的量和方向的矢量。仅举几种可能性,混合形状可用于产生例如使眼睛、嘴唇、眉毛、鼻子、酒窝等移动的面部变形。

混合形状可用于以一种艺术指导的方式使网格变形。它们可以提供很大的控制力,因为可以通过扫描模型来雕刻或捕获精确的形状。但是,混合形状的益处是以必须存储混合形状中所有顶点的增量为代价的。对于具有精细网格和许多混合形状的动画角色,增量数据量可能很大。

通过使用混合形状权重,可以将每个混合形状应用到指定程度。这些权重通常在0(根本没有应用混合形状)到1(其中混合形状完全激活)的范围内。例如,移动角色眼睛的混合形状可以以较小的权重被施加以少量移动眼睛,或者可以施加较大的权重以产生较大的眼睛运动。

装配可以彼此组合地施加多个混合形状以实现期望的复杂变形。例如,为了产生微笑,装配可能会应用混合形状以拉动唇角,抬高上唇和降低下唇,以及移动眼睛、眉毛、鼻子和酒窝。从两个或多个混合形状组合而成的期望形状称为组合形状(或简称为“组合”)。

组合应用两个混合形状可能导致的一个问题是,混合形状可能在一些相同的顶点上操作。当两个混合形状都激活时,结果称为双重变换或“脱离模型”。该问题的解决方案通常是校正混合形状。校正混合形状是一种特殊的混合形状,其关于当前施加的变形表示期望的变形,而不是关于中性表示期望的变形。可以基于他们正在校正的混合形状的权重来应用校正混合形状(或仅称为“校正”)。例如,可以使校正混合形状的权重与触发混合校正形状的应用的基础混合形状的权重成比例。

校正混合形状也可以被用于校正蒙皮异常或改进变形的质量。例如,关节可以表示特定肌肉的运动,但作为单个变换,它不能表示皮肤、脂肪和肌肉的所有非线性行为。在肌肉激活时应用一种校正或一系列校正可以导致更令人愉悦和令人信服的变形。

装配内置于层中,较低较简单的层通常驱动较高阶的层。这适用于骨架系统和混合形状变形两者。例如,如已经提到的,用于动画虚拟角色的装配可以包括由低阶骨架系统控制的高阶骨架系统。存在基于低阶骨架控制高阶骨架或混合形状的许多方法,包括约束、逻辑系统和基于姿势的变形。

约束通常是一种系统,其中特定对象或关节变换控制应用于另一个关节或对象的变换的一个或多个分量。存在许多不同类型的约束。例如,目标约束将目标变换的旋转改变为指向特定方向或特定对象。父约束充当变换对之间的虚拟父子关系。位置约束将变换约束到特定点或特定对象。取向约束将变换限制为对象的特定旋转。

逻辑系统是数学方程式的系统,其在给定一组输入的情况下产生一些输出。这些是指定的而不是学习的。例如,混合形状值可能被定义为其它两个混合形状的乘积(这是称为组合或组合形状的校正形状的示例)。

基于姿势的变形也可以用于控制高阶骨架系统或混合形状。骨架系统的姿势由该骨架系统中所有关节的变换(例如旋转和平移)集合定义。也可以为骨架系统中关节的子集定义姿势。例如,可以通过应用于肩部、肘部和腕部的关节的变换来定义手臂姿势。姿势空间变形器(PSD)是一种系统,该系统用于基于该姿势与定义的姿势之间的一个或多个“距离”来确定特定姿势的变形输出。这些距离可以是表征一个姿势与另一个姿势如何不同的度量。PSD可以包括姿势插值节点,例如,该姿势插值节点接受一组关节旋转(定义姿势)作为输入参数,并且进而输出归一化的每姿势权重以驱动变形器,诸如混合形状。姿势插值节点可以以多种方式实现,包括采用径向基函数(RBF)。RBF可以执行机器学习的函数数学近似。可以使用一组输入及其关联的预期输出来训练RBF。训练数据可以是例如多组关节变换(其定义特定姿势)和响应于这些姿势而应用的对应混合形状。一旦学习了该函数,就可以给出新的输入(例如姿势),并且可以有效地计算它们的预期输出。RBF是人工神经网络的子类型。RBF可用于基于较低级别组件的状态来驱动装配的较高级别组件。例如,核心骨架的姿势可以以较高级别驱动辅助关节和校正。

这些控制系统可以被链接在一起以执行复杂的行为。例如,眼睛装配可以包含两个“环视”值以进行水平和竖直旋转。这些值可以通过一些逻辑传递,以确定眼睛关节变换的精确旋转,然后可以将其用作RBF的输入,该RBF控制改变眼睑的形状以匹配眼睛的位置的混合形状。这些形状的激活值可用于使用附加逻辑来驱动面部表情的其它组件,依此类推。

装配系统的目标通常是提供一种基于简单的人类可理解的控制系统产生令人愉悦的高保真变形的机制。在实时应用的情况下,目标通常是提供足够简单以在例如VR/AR/MR系统200上实时运行的装配系统,同时尽可能对最终质量做出很少的妥协。在一些实施例中,3D模型处理系统680执行装配系统以实时地在混合现实环境100中对化身制作动画以(与VR/AR/MR系统的用户)交互,并在用户的环境中提供适当的上下文化身行为(例如,基于意图的行为)。

虚拟角色的姿势空间变形的姿势空间维度减小

如本文中所讨论的,可以使用诸如可变形网格和一个或多个底层骨架系统的装配元件来使虚拟角色动画化。例如,可以将核心骨架系统的关节变换到各种位置和/或取向(例如,使用平移和/或旋转变换),以将虚拟角色放置在各种不同的姿势中。图11示出了虚拟角色的几种手臂姿势,在这种情况下,虚拟角色是人类的化身。图11中的每个姿势由施加到相应手臂关节的一组旋转变换来定义。化身的核心骨架中的每个手臂关节各自可以在三维空间中旋转到所选的角度,以将手臂从第一姿势(例如基本姿势)过渡到第二姿势。以类似的方式,用于化身的核心骨架中所有相应关节的一组旋转变换可以定义其他姿势,而每个唯一的一组旋转变换都定义唯一的姿势。

欧拉角可用于针对虚拟角色的骨架系统的不同姿势而指定相应关节的旋转。每个关节可以与局部坐标系XYZ相关联。一组欧拉角可用于指定给定关节的局部坐标系XYZ相对于参考坐标系xyz(例如,世界坐标系或在虚拟角色处于基本姿势时与关节相关联的坐标系)的旋转。关节在三维空间中的角度取向可以通过一组的三个欧拉角来指定。在一些实施例中,第一欧拉角α表示使用所谓的x约定(convention)时的x轴和N轴之间的角度(或使用y约定时的y轴和N轴之间的角度),其中,N轴是由xy和XY平面的相交所定义的节点(node)的线;第二个欧拉角β可以表示z轴和Z轴之间的角度;以及第三个欧拉角γ可以表示使用x约定时的N轴与X轴之间的角度(或使用y约定时的N轴与Y轴之间的角度)。诸如此类的欧拉角可用于指定关节相对于参考坐标系的任何所需角度取向。

可以将关节的欧拉角(α,β,γ)的向量映射到3×3旋转矩阵。旋转矩阵的元素可以对应于关节的局部坐标系XYZ的轴与参考坐标系xyz的轴之间的角度的余弦。因此,旋转矩阵可以被称为方向余弦矩阵。

多组欧拉角可用于描述虚拟角色的骨架系统的不同姿势。例如,如果骨架系统包括M个关节,并且如果姿势中每个关节的角度取向由三个欧拉角(α,β,γ)定义,则可以通过向量x=[α1,β1,γ1…αM,βM,γM]来指定姿势。

各个由唯一的向量x所指定的各种示例姿势可以使用在称为姿势空间变形的装配技术中,以便确定虚拟角色的网格变形。姿势空间变形是一种基于以下假设的装配技术:虚拟角色的网格的变形是角色姿势的函数。因此,姿势空间变形可用于基于角色姿势的输入来计算虚拟角色网格的变形。

可以使用机器学习技术来训练姿势空间变形器。训练数据可以包括网格变形(例如,皮肤、肌肉、衣服等的变形),这些网格变形是针对虚拟角色的基本骨架系统(例如,角色的核心骨架)的多个示例姿势所指定的。例如,可以通过扫描虚拟角色的姿势物理模型来获得与示例姿势相关联的网格变形。该示例姿势共同构成姿势空间。一旦使用示例姿势训练了姿势空间变形器,就可以通过内插(例如,使用径向基函数)来计算(可以由例如动画序列所指定的)其他姿势的变形。特别是,姿势空间变形器可以提供与虚拟角色的基本骨架系统的关节的相应旋转状态对应的输入。基于这些输入,姿势空间变形器可以基于姿势空间中的示例姿势针对输入姿势来计算内插的网格变形。

姿势空间可以由N个姿势(x1,x2…xN)组成,其中N是任何正整数,被称为姿势空间的维度。姿势空间的维度是用于训练姿势空间变形器的示例姿势的数量。高维姿势空间可能是有利的,因为它们可用于实现逼真的、高保真度的网格变形。然而,高维姿势空间可能不利地需要大量的计算资源,例如计算机内存和/或存储。通过简单地在姿势空间中包括较少的示例姿势,可以减小姿势空间的维度以节省计算资源。但是,此方法可能会对由姿势空间变形器计算出的网格变形的保真度产生负面影响。因此,如果可以减小姿势空间的维度而又仍然允许姿势空间变形器产生逼真的网格变形,则将是有利的。

本申请描述了用于以减小较低维度对经由姿势空间变形所计算的网格变形的保真度的影响的方式来减小输入姿势空间的维度的技术。在一些实施例中,可以将作为输入姿势空间的一部分的多个示例姿势聚类在一起,并且可以在输出姿势空间中使用整个聚类的单个代表性姿势。可以使用例如k均值聚类技术来实现该聚类。k均值聚类是一种可以将构成输入姿势空间的示例姿势划分为k个聚类的技术。k个聚类中的每个可以用均值来表征。根据所选度量,可以将输入姿势空间中的每个示例姿势视为属于其均值与该特定示例姿势最相似的聚类。确定聚类均值并将每个示例姿势分配给聚类的过程可以迭代地重复进行。

k个聚类中的每个的均值可以对应于如下的姿势,该姿势可以被视为代表整个聚类的姿势。因此,可以在输出姿势空间中替换每个聚类的平均姿势,以代替属于该特定聚类的所有示例姿势。

作为聚类处理的一部分,可以将输入姿势空间中的每个示例姿势映射到多维空间中的点。如已经讨论的,每个姿势可以由欧拉角的向量表示,x=[α1,β1,γ1…αM,βM,γM]。该向量x中的元素可以视为多维空间中的坐标。因此,输入姿势空间中的N个示例姿势的向量x1…xN可以各自用于定义相应示例姿势的空间中的点。可以使用指示每个点与各个聚类相似度的度量将这些点分组为聚类。例如,该度量可以是从点(对应于特定姿势)到多维空间中特定聚类的中心的距离。可以将聚类的中心计算为例如聚类的均值点或质心。

其他度量也可以用于确定特定示例姿势与特定聚类的相似性。例如,在一些实施例中,可以使用加权距离度量。在这样的实施例中,骨架系统中的一些关节可以被加权为更大程度地影响距离度量,而其他关节可以被加权为更少程度地影响距离度量。

由于聚类在一起的姿势彼此相似,如所选度量所确定的,因此可以在输出姿势空间中使用每个聚类的代表姿势来代替属于该特定聚类的所有姿势。当一组N个示例姿势被划分为k个聚类时,输入姿势空间的维度可以从N减少到k,其中k是小于N的正整数。

然而,当基于欧拉角的对应向量将示例姿势映射到多维空间中的点时会发生复杂情况。例如,当给定关节的第二欧拉角β为90°时,可能会发生数学上的奇异点。这种奇异点导致表示关节的相同角度旋转的多个可能的一组3值欧拉角(3-value sets of Eulerangles)(例如,无限数量的一组3值欧拉角)。例如,一组欧拉角(45°,90°,45°)表示与一组欧拉角(90°,90°,90°)相同的旋转。

因此,当将欧拉角用作空间中的坐标时,可以将包括受这种数学奇异点影响的关节旋转的姿势映射到该空间中的多个不同点中的任何一个。由于这种姿势可以映射到空间中的多个不同点中的任何一个,因此可以根据碰巧被指定的特定一组欧拉角(包括多种等效可能性)将其分成不同的聚类。这意味着可能将不同的姿势聚类在一起,或者相反,可以将相似的姿势分组到单独的聚类中。因此,在使用欧拉角表示角度旋转时可能出现的奇点会破坏聚类过程,进而会负面影响由姿势空间变形器计算出的网格变形的保真度。

为了避免由使用欧拉角表示关节旋转时可能发生的数学奇异点引起的聚类复杂性,在构成输入姿势空间的各种示例姿势中可以替代地使用关节的角度旋转的无奇异点表示。四元数是这种无奇异点表示的示例。因此,在一些实施例中,出于聚类目的而使用四元数来指定输入姿势空间中的示例姿势的关节旋转。

四元数可以由向量q=[x,y,z,w]表示,其中向量v=[x,y,z]定义关节的旋转轴,而θ=acos(w)定义围绕该轴的旋转角度。影响欧拉角表示的数学奇异点类型不影响四元数表示。因此,与使用欧拉角表示示例姿势时相比,构成输入姿势空间的各种示例姿势在被表示为四元数时可以被更准确地聚类。

图12A示出了用于使用k均值聚类来减小姿势空间变形器的输入姿势空间的维度的方法1200。方法1200可以由硬件计算机处理器执行,该硬件计算机处理器执行存储在非暂时性存储介质中的指令。图12B示出了使用图12A的方法形成的一组示例聚类。

根据方法1200,使用四元数来表示用于虚拟角色的骨架系统中关节的角度旋转。因此,其关节旋转初始地使用欧拉角进行表示的任何示例姿势都可以转换为替代地使用四元数表示,如框1205所示。在此转换之后,每个关节旋转可以用形式为q=[x,y,z,w]的向量表示,并且每个姿势可以由M个关节旋转组成,并可以由向量x=[x1,y1,z1,w1,…xM,yM,zM,wM]表示,其中M是骨架系统中关节的数量,可以是任何正整数。

一旦将关节旋转的欧拉角转换为四元数,则在框1210,可以将输入姿势空间中的每个示例姿势映射到多维空间中的点。每个示例姿势可以由形式为x=[x1,y1,z1,w1,…xM,yM,zM,wM]的向量表示。每个姿势的向量的元素可以用作坐标,以将姿势映射到多维空间中的点以进行聚类。输入姿势空间可以包括N个示例姿势,并且向量x1…xN中的每个可以用于针对相应的示例姿势而定义空间中的一个点。图12B示出了映射到空间中的点的一组示例姿势,其中每个点1201表示示例姿势。

在框1215,硬件计算机处理器可以确定k个聚类的多维空间中的初始均值点或质心,其中k是任何正整数。(k的值可以使用下面参考图13描述的技术来确定。)在一些实施例中,在多维空间中的不同随机位置处选择k个质心的初始位置。但是,也可以使用其他技术来确定k个质心的初始位置。例如,k个聚类中的每个可以具有基于输入姿势空间中的示例姿势中的一个示例姿势的初始质心位置。在这种情况下,可以选择一个示例姿势(无论是随机还是以预定方式)并将其分配给k个聚类中的每个。每个聚类的初始质心的坐标可以通过针对该聚类所选择的示例姿势的一组四元数来确定。

在框1220处,可以将共同构成输入姿势空间的每个示例姿势分配给k个聚类中的一个。在一些实施例中,分配可以基于聚类质心和与示例姿势对应的点之间的几何距离。例如,硬件计算机处理器可以计算每个聚类质心和与示例姿势对应的每个点之间的几何距离。然后,硬件计算机处理器可以将每个示例姿势分配给质心最近的聚类。

一旦已经将姿势空间中的每个示例姿势分配给k个聚类中的一个,则在框1225,硬件计算机处理器可以重新计算每个聚类的质心。可以通过找到当前分配给该聚类的四元数qi=[xi,yi,zi,wi]的均值来计算k个不同聚类中的每个聚类的更新后的质心。根据四元数算法,n个四元数q1,q2,…,qn的均值m可以通过以下表达式计算:其中v=[xi,yi,zi],并且θ=acos(wi)。

可以重复向聚类分配示例姿势的过程(框1220)和更新聚类质心的过程(框1225),直到如框1230所示迭代次数超过阈值为止,或直到如框1235所示满足收敛条件为止。例如,如果各个示例姿势对k个聚类的分配从一个迭代到下一迭代不变,则可以认为满足收敛条件。

图12B示出了在k=3的情况下该聚类处理的示例结果。每个示例姿势由点1201表示。每个示例姿势已分配给聚类A、聚类B或聚类C。聚类之间的边界由线描绘。每个聚类的质心由星形1202a至1202c表示,其中聚类A的质心是1202a,聚类B的质心是1202b,聚类C的质心是1202c。

一旦最终将输入姿势空间中的每个示例姿势分配给了k个聚类中的一个,则硬件计算机处理器可以指定一个示例姿势来表示输出姿势空间中的每个聚类。在一些实施例中,用于特定聚类的代表性姿势可以是分配给该聚类的示例姿势中的一个。例如,可以将其在多维空间中的对应点最靠近该聚类的质心的示例姿势指定为整个聚类的代表性姿势。在其他实施例中,聚类的质心的坐标可以被指定为该代表性姿势的关节旋转。

以这种方式,可以将输入姿势空间的维度从N个示例姿势减少为k个示例姿势,其中k是聚类数量。此外,由于聚类的示例姿势彼此相似,所以与(例如,通过从输入姿势空间中随机选择示例姿势的子集)以不太复杂的方式减小姿势空间的维度相比,姿势空间的维度减小对通过姿势空间变形器计算出的网格变形的保真度的影响可以较小。输出姿势空间的维度减小可以实现响应于虚拟角色姿势变化的网格变形的高保真度且实时的计算。

然而,图12A中所示的方法1200的有效性可能对于示例姿势从输入姿势空间被分组到的聚类数量敏感。如果将共同构成输入姿势空间的示例姿势被聚类成相对大数量的聚类,则姿势空间变形的保真度将降低相对较小的量。然而,输入姿势空间的维度将同样仅降低相对较小的量。相反,如果示例姿势被聚类成相对小数量的聚类,则输入姿势空间的维度将降低相对较大的量,但是姿势空间变形的保真度也可以降低相对较大的量。由于输入姿势空间维度的减小取决于聚类数量(即k的值),因此选择在输入姿势空间的维度减小与产生的姿势空间变形的保真度之间达到有效平衡的聚类数量可能是有利。

各种因素可使聚类数量的选择复杂化。这些因素之一是示例姿势在输入姿势空间中的分布。例如,如果输入姿势空间中的各个示例姿势分布广泛,使得各种示例姿势彼此相对不同,则可能需要较大数量的聚类来划分不同的示例姿势,同时仍保持虚拟角色网格的计算变形中可接受的保真程度。但是,如果各种示例姿势在输入姿势空间中的分布很窄,使得各种示例姿势相对相似,则可能需要较少数量的聚类来划分不同的示例姿势,同时仍保持网格变形中所需的保真程度。

当适当地选择聚类数量时,可以减小输入姿势空间的维度,同时保持由姿势空间变形器计算出的网格变形中所需的保真程度。实际上,在一些实施例中,利用减小维度的输出姿势空间计算出的网格变形的保真度可以与使用较高维输入姿势空间可以实现的保真度相当。

一种用于选择聚类数量的技术是对于多个不同候选值k执行图12A中所示的方法1200,以计算与每个候选值k相关联的误差度量,然后基于与候选值相关联的误差度量来选择k的值。在一些实施例中,对于在输入姿势空间中的所有示例姿势,误差度量是与每个示例姿势对应的点与其被分配的聚类的质心之间的平方距离的总和。该误差度量可以被称为平方误差的总和。但是,也可以使用其他误差度量。

图13是示出用于选择聚类数量以用于减小输入姿势空间维度的示例技术的曲线。图13绘制平方误差总和作为k值的函数的示例曲线1300。为了产生示例曲线1300所示的数据,硬件计算机处理器可以对于多个候选值k中的每个执行图12A所示的方法1200。在示出的示例中,候选值是k=1至k=12。取决于特定应用,可以在其他实施例中使用候选值的其他范围。然后,硬件计算机处理器可以计算每个候选值的平方误差的总和。

当聚类数量k相对较小时,平方误差的总和相对较大。随着k的值增加,平方误差的总和减小并开始接近零。通常情况是,平方误差的总和最初会随着聚类数量的增加而迅速降低。对于较低的候选值k,曲线1300的陡峭斜率示出了这一点。下降速度通常会在一些点处变慢。对于较高的候选值k,曲线1300的斜率的减小是明显的。一旦候选值k等于输入姿势空间中示例姿势的数量,平方误差的总和最终将变为零,因为在这种情况下,每个输入姿势样本都构成了自己的聚类。相反,最大平方误差的总和通常是在k=1时,这意味着所有示例姿势都放置在单个聚类中。

在一些实施例中,可以基于其误差度量满足所选标准来选择用于生成输出姿势空间的k值。例如,该标准可以是误差度量的变化率超过指定阈值。参考图13,可以通过分析曲线1300的斜率来确定误差度量的变化率。可以计算在成对的相邻候选值k对之间的曲线1300的斜率,并且将斜率超过指定阈值所处于的候选值k选择作为k的值。参照图13,可以在k=1与k=2之间,在k=2与k=3之间,在k=3与k=4之间,在k=4与k=5之间等等计算曲线1300的斜率。可以将曲线的斜率超过指定阈值的k值(在这种情况下为k=4,如线1305所示)选择作为聚类数量的值。在一些实施例中,阈值变化率的大小可以是从大约0到大约1(即,从大约0°到45°),但是也可以使用其他阈值。

表1示出了通过图12A所示的示例方法生成的几个减小维度的姿势空间的示例。

表1

如表1所示,用于计算人类化身的三角肌和胸肌的基于姿势的变形的输入姿势空间的示例包括1944个姿势。使用本文描述的技术,可以将其减少到输出姿势空间中的1189个姿势。类似地,用于计算股四头肌变形的示例输入姿势空间最初包括1296个姿势,但现在减少到757个姿势。对于化身虚拟角色的其他各种肌肉和身体部位(例如斜方肌、背阔肌、肱二头肌和小腿肌肉以及臀部)也获得了可比较的结果。但是,肩胛骨、胸锁乳突肌和斜角肌以及腱肌的输入姿势空间除外。这些姿势空间的维度没有减小,因为相应的输入姿势空间仅包括相对较少的示例姿势,因此使聚类的效率降低。总体而言,对于表1中所示的姿势空间,输入姿势的数量从6891减少到4193。在一些实施例中,通过使用本文所述的技术,输入姿势空间的维度可以减少30%或更多,或减少40%或更多,或减少50%或更多。此外,输出姿势空间仍可以表示输入姿势空间中信息的70%或更多,或80%或更多,或90%或更多。

使用主成分分析的混合形状的压缩

在一些实施例中,姿势空间变形器可以控制用于使虚拟角色的网格变形的一个或多个混合形状的权重。混合形状可以表示为N×M变形矩阵A,其中包括用于使网格变形的增量(delta)值。变形矩阵的M列中的每列可以对应于网格中的特定顶点,而N行中的每行可以对应于组成混合形状的一组顶点。对于具有高分辨率网格和许多混合形状的虚拟角色,变形矩阵可能会变得很大,并且会消耗大量的计算资源。因此,降低变形矩阵的尺寸同时仍提供高保真度的网格变形将是有利的。

本文描述了用于使用主成分分析(PCA)减小输入变形矩阵的维度(即,降低变形矩阵中的混合形状的数量)的技术。PCA可用于实现此目标,而不会损失输入变形矩阵中包含的指定量以上的变化或信息。

输入变形矩阵中对于网格中每个顶点的增量值的列可用于定义N维空间中的点,其中N等于输入变形矩阵中的混合形状的数量。PCA可以用于针对输入变形矩阵计算一组基向量,这意味着N维空间中的每个点都可以表示为基向量的线性组合。这些基向量是输入变形矩阵的主成分,并具有以下性质:第一主成分具有最大变化(variance)的可能,而每个随后主成分具有下一个最大变化的可能,但要遵守与所有先前主成分正交的约束。例如,如果在N维空间中绘制了由输入变形矩阵指定的所有点,则第一主成分是指向这些点之间最大变化方向的向量。第二主成分与第一主成分正交,并且在输入变形矩阵指定的点中指向最大变化方向,遵守与第一主成分正交的约束。第三主成分与第一主成分和第二主成分均正交。第三主成分指向最大变化的方向,遵守与第一和第二主成分的正交约束。对于输入变形矩阵的N个主成分中的每个,依此类推。每个主成分还具有相关联的特征值,该特征值指示在相关联的特征向量方向上发生的输入数据的变化量。

图14示出了具有N个混合形状的输入变形矩阵的一组绘制点的示例。正如刚刚讨论的那样,每个点是N维空间中的点。尽管变形矩阵可以包括许多混合形状(例如,N等于几十、数百或数千个混合形状),但是为了便于说明,图14示出了在前两个主成分的平面上投影的点。如图14所示,第一主成分PC1指向所绘制的点之间最大变化的方向。第二主成分PC2指向下一个最大变化的方向,服从正交于第一主成分PC1的约束。尽管未示出,但是随后的主成分也是如此。图14中的每个点可以表示为主成分的线性组合。第一主成分可用于定义新的混合形状,该混合形状可解决输入变形矩阵中的大部分变化。第二主成分可用于定义另一新的混合形状,该另一新的混合形状可解决输入变形矩阵中的下一个最大变化量。其余的主成分依此类推。

对于N维输入变形矩阵,N个主成分中的每个可以用于定义新的混合形状。这些新的混合形状可以组织在输出变形矩阵A'中。每个依次的新混合形状在输入变形矩阵中所占的变化均小于前一个。这在图15中示出,图15是由30个混合形状组成的输入变形矩阵的30个主成分中的每个所占的变化比例的示例曲线。从图中可以明显看出,随着主成分数量的增加,每个主成分所占变化的比例减小。最后几个主成分在输入变形矩阵中所占的变化相对较小。由于主成分N包括来自输入变形矩阵的最少信息量,因此在一些实施例中,可以从输出变形矩阵中省略它及其对应的混合形状。以类似的方式,取决于希望保留来自输入变形矩阵的信息量,也可以从输出变形矩阵中省略主成分(N-1)、(N-2)等以及它们对应的混合形状。省略与最后主成分对应的混合形状的该过程减小了输出变形矩阵的维度,同时保留了来自输入变形矩阵的至少指定量的信息。

输入变形矩阵的主成分可以以多种不同方式来计算。在一些实施例中,可以计算输入变形矩阵A的协方差矩阵或相关矩阵。然后可以对协方差矩阵或相关矩阵执行特征分解。协方差矩阵或相关矩阵的特征分解给出了一组线性独立的特征向量。这些特征向量(可以归一化为单位长度)是主成分。主成分也可以使用其他技术来计算,例如奇异值分解(SVD)。除主成分外,SVD还会生成一组称为奇异值的值。每个主成分的奇异值表示输入变形矩阵中由该主成分解释的变化量。

图16是描绘使用主成分分析(PCA)来减小变形矩阵的维度的示例方法的流程图。该方法可以由执行存储在非暂时性存储介质中的指令的硬件计算机处理器来执行。该方法开始于框1605,其中,将输入变形矩阵初始化为混合形状的N×M矩阵。然后,如框1610所示,计算输入变形矩阵的N个主成分。如已经讨论的,每个主成分与新的混合形状相关联。取决于要从输入变形矩阵保留的数据的百分比,省略了一些主成分,如框1620所示。可以基于输入变形矩阵中由每个主成分解释的变化的百分比来选择被省略的主成分的数量。在一些实施例中,所保留的主成分的数量可以基于用户对于所要保留的变化的百分比的偏好,在计算上性能优化的新混合形状的数量、和/或被判断为导致在美学上可接受的网格变形的新混合形状的数量。最后,在框1625处,也省略了与省略的主成分相对应的混合形状,并且根据与其余主成分相关联的新的混合形状来形成输出变形矩阵A'。

输出变形矩阵A'中的混合形状可以由姿势空间变形器控制。由于本文所述的技术允许保留来自输入变形矩阵的指定量的信息,因此这些技术可以有利地减少实现可接受的网格变形所需的混合形状的数量。

示例实施例

1.一种系统,包括:非暂时性计算机存储器,用于存储虚拟角色的骨架系统的多个示例姿势;以及与所述非暂时性计算机存储器通信的硬件计算机处理器,所述硬件计算机处理器被配置为通过执行以下方法来减小输入姿势空间的维度,所述方法包括:将所述多个示例姿势聚类成一个或多个聚类,所述多个示例姿势定义输入姿势空间,所述多个示例姿势中的每个示例姿势包括一组关节旋转,所述关节旋转具有无奇异点数学表示;确定每个聚类的代表性姿势;以及提供与所述输入姿势空间相比维度减小的输出姿势空间。

2.根据权利要求1所述的系统,其中,所述关节旋转的所述无奇异点数学表示包括四元数表示。

3.根据权利要求2所述的系统,还包括:接收所述关节旋转具有欧拉角表示的所述多个示例姿势;以及将所述欧拉角表示转换为所述四元数表示。

4.根据权利要求1所述的系统,其中,基于用于确定每个示例姿势与每个聚类之间的相似性的度量,将所述示例姿势聚类成所述一个或多个聚类。

5.根据权利要求1所述的系统,其中,聚类所述示例姿势包括:将每个所述示例姿势映射到多维空间中的点。

6.根据权利要求5所述的系统,其中,聚类所述示例姿势还包括:确定每个聚类的质心;确定每个示例姿势的所述点与每个聚类的质心之间的距离;以及将每个示例姿势分配给最近的聚类。

7.根据权利要求6所述的系统,还包括:迭代地确定每个聚类的质心,并将每个示例姿势分配给最近的聚类。

8.根据权利要求6所述的系统,其中,每个聚类的代表性姿势包括被分配给该聚类的一个所述示例姿势或者与该聚类的质心相关联的示例姿势。

9.根据权利要求1所述的系统,还包括:确定聚类数量。

10.根据权利要求9所述的系统,其中,确定聚类数量包括:对于多个不同的候选聚类数量中的每个候选聚类数量,将所述多个示例姿势聚类成所述一个或多个聚类;计算与每个候选聚类数量相关联的误差度量;以及基于与所述候选聚类数量相关联的所述误差度量,选择所述候选聚类数量中的一个。

11.根据权利要求10所述的系统,其中,对于所述输入姿势空间中的全部所述示例姿势,所述误差度量包括与每个示例姿势对应的点与它的被分配的聚类的质心之间的平方距离的和。

12.根据权利要求10所述的系统,其中,选择所述候选聚类数量中的一个包括:确定它的误差度量是否满足所选择的标准。

13.根据权利要求12所述的系统,其中,所述标准是所述误差度量的变化率超过指定阈值。

14.根据权利要求1所述的系统,还包括:使用所述输出姿势空间来训练姿势空间变形器。

15.根据权利要求14所述的系统,还包括:使用所述姿势空间变形器来计算虚拟角色的网格变形。

16.根据权利要求14所述的系统,还包括:使用所述姿势空间变形器来控制输出变形矩阵中的多个混合形状。

17.根据权利要求16所述的系统,其中,通过使用主成分分析而减小输入变形矩阵的维度来生成所述输出变形矩阵。

18.根据权利要求17所述的系统,其中,减小所述输入变形矩阵的维度包括:确定所述输入变形矩阵的主成分;省略所述主成分中的一个或多个以留下一个或多个剩余主成分;使用与所述一个或多个剩余主成分相关联的一个或多个混合形状来生成所述输出变形矩阵。

19.根据权利要求1所述的系统,其中,所述输出姿势空间比所述输入姿势空间小至少30%。

20.根据权利要求1所述的系统,其中,所述系统包括虚拟现实显示系统、增强现实显示系统、或混合现实显示系统。

21.一种方法,包括:获得虚拟角色的骨架系统的多个示例姿势,所述多个示例姿势定义输入姿势空间,所述多个示例姿势中的每个示例姿势包括一组关节旋转,所述关节旋转具有无奇异点数学表示;将所述多个示例姿势聚类成一个或多个聚类;确定每个聚类的代表性姿势;以及提供与所述输入姿势空间相比维度减小的输出姿势空间。

22.根据权利要求21所述的方法,其中,所述关节旋转的所述无奇异点数学表示包括四元数表示。

23.根据权利要求22所述的方法,还包括:接收所述关节旋转具有欧拉角表示的所述多个示例姿势;以及将所述欧拉角表示转换为所述四元数表示。

24.根据权利要求21所述的方法,其中,基于用于确定每个示例姿势与每个聚类之间的相似性的度量,将所述示例姿势聚类成所述一个或多个聚类。

25.根据权利要求21所述的方法,其中,聚类所述示例姿势包括:将每个所述示例姿势映射到多维空间中的点。

26.根据权利要求25所述的方法,其中,聚类所述示例姿势还包括:确定每个聚类的质心;确定每个示例姿势的所述点与每个聚类的质心之间的距离;以及将每个示例姿势分配给最近的聚类。

27.根据权利要求26所述的方法,还包括:迭代地确定每个聚类的质心,并将每个示例姿势分配给最近的聚类。

28.根据权利要求26所述的方法,其中,每个聚类的代表性姿势包括被分配给该聚类的一个所述示例姿势或者与该聚类的质心相关联的示例姿势。

29.根据权利要求21所述的方法,还包括:确定聚类数量。

30.根据权利要求29所述的方法,其中,确定聚类数量包括:对于多个不同的候选聚类数量中的每个候选聚类数量,将所述多个示例姿势聚类成所述一个或多个聚类;计算与每个候选聚类数量相关联的误差度量;以及基于与所述候选聚类数量相关联的所述误差度量,选择所述候选聚类数量中的一个。

31.根据权利要求30所述的方法,其中,对于所述输入姿势空间中的全部所述示例姿势,所述误差度量包括与每个示例姿势对应的点与它的被分配的聚类的质心之间的平方距离的和。

32.根据权利要求30所述的方法,其中,选择所述候选聚类数量中的一个包括:确定它的误差度量是否满足所选择的标准。

33.根据权利要求32所述的方法,其中,所述标准是所述误差度量的变化率超过指定阈值。

34.根据权利要求31所述的方法,还包括:使用所述输出姿势空间来训练姿势空间变形器。

35.根据权利要求34所述的方法,还包括:使用所述姿势空间变形器来计算虚拟角色的网格变形。

36.根据权利要求34所述的方法,还包括:使用所述姿势空间变形器来控制输出变形矩阵中的多个混合形状。

37.根据权利要求36所述的方法,其中,通过使用主成分分析而减小输入变形矩阵的维度来生成所述输出变形矩阵。

38.根据权利要求37所述的方法,其中,减小所述输入变形矩阵的维度包括:确定所述输入变形矩阵的主成分;省略所述主成分中的一个或多个以留下一个或多个剩余主成分;使用与所述一个或多个剩余主成分相关联的一个或多个混合形状来生成所述输出变形矩阵。

39.根据权利要求21所述的方法,其中,所述输出姿势空间比所述输入姿势空间小至少30%。

40.根据权利要求21所述的方法,其中,所述方法被虚拟现实显示系统、增强现实显示系统、或混合现实显示系统执行。

41.一种非暂时性计算机可读介质,当被硬件计算机处理器读取时,所述非暂时性计算机可读介质使所述硬件计算机处理器执行一种方法,所述方法包括:获得虚拟角色的骨架系统的多个示例姿势,所述多个示例姿势定义输入姿势空间,所述多个示例姿势中的每个示例姿势包括一组关节旋转,所述关节旋转具有无奇异点数学表示;将所述多个示例姿势聚类成一个或多个聚类;确定每个聚类的代表性姿势;以及提供与所述输入姿势空间相比维度减小的输出姿势空间。

42.根据权利要求41所述的计算机可读介质,其中,所述关节旋转的所述无奇异点数学表示包括四元数表示。

43.根据权利要求42所述的计算机可读介质,其中,所述方法还包括:接收所述关节旋转具有欧拉角表示的所述多个示例姿势;以及将所述欧拉角表示转换为所述四元数表示。

44.根据权利要求41所述的计算机可读介质,其中,基于用于确定每个示例姿势与每个聚类之间的相似性的度量,将所述示例姿势聚类成所述一个或多个聚类。

45.根据权利要求41所述的计算机可读介质,其中,聚类所述示例姿势包括:将每个所述示例姿势映射到多维空间中的点。

46.根据权利要求45所述的计算机可读介质,其中,聚类所述示例姿势还包括:确定每个聚类的质心;确定每个示例姿势的所述点与每个聚类的质心之间的距离;以及将每个示例姿势分配给最近的聚类。

47.根据权利要求46所述的计算机可读介质,其中,所述方法还包括:迭代地确定每个聚类的质心,并将每个示例姿势分配给最近的聚类。

48.根据权利要求46所述的计算机可读介质,其中,每个聚类的代表性姿势包括被分配给该聚类的一个所述示例姿势或者与该聚类的质心相关联的示例姿势。

49.根据权利要求41所述的计算机可读介质,其中,所述方法还包括:确定聚类数量。

50.根据权利要求49所述的计算机可读介质,其中,确定聚类数量包括:对于多个不同的候选聚类数量中的每个候选聚类数量,将所述多个示例姿势聚类成所述一个或多个聚类;计算与每个候选聚类数量相关联的误差度量;以及基于与所述候选聚类数量相关联的所述误差度量,选择所述候选聚类数量中的一个。

51.根据权利要求50所述的计算机可读介质,其中,对于所述输入姿势空间中的全部所述示例姿势,所述误差度量包括与每个示例姿势对应的点与它的被分配的聚类的质心之间的平方距离的和。

52.根据权利要求50所述的计算机可读介质,其中,选择所述候选聚类数量中的一个包括:确定它的误差度量是否满足所选择的标准。

53.根据权利要求52所述的计算机可读介质,其中,所述标准是所述误差度量的变化率超过指定阈值。

54.根据权利要求41所述的计算机可读介质,其中,所述方法还包括:使用所述输出姿势空间来训练姿势空间变形器。

55.根据权利要求54所述的计算机可读介质,其中,所述方法还包括:使用所述姿势空间变形器来计算虚拟角色的网格变形。

56.根据权利要求54所述的计算机可读介质,其中,所述方法还包括:使用所述姿势空间变形器来控制输出变形矩阵中的多个混合形状。

57.根据权利要求56所述的计算机可读介质,其中,通过使用主成分分析而减小输入变形矩阵的维度来生成所述输出变形矩阵。

58.根据权利要求57所述的计算机可读介质,其中,减小所述输入变形矩阵的维度包括:确定所述输入变形矩阵的主成分;省略所述主成分中的一个或多个以留下一个或多个剩余主成分;使用与所述一个或多个剩余主成分相关联的一个或多个混合形状来生成所述输出变形矩阵。

59.根据权利要求41所述的计算机可读介质,其中,所述输出姿势空间比所述输入姿势空间小至少30%。

60.根据权利要求41所述的计算机可读介质,其中,所述方法被虚拟现实显示系统、增强现实显示系统、或混合现实显示系统执行。

其它注意事项

在此描述和/或附图中描绘的过程、方法和算法中的每个可以在由一个或多个物理计算系统、硬件计算机处理器、专用电路和/或配置为执行专用和特定计算机指令的电子硬件执行的代码模块中体现,并且完全或部分地由代码模块自动执行。例如,计算系统可以包括采用特定计算机指令或专用计算机、专用电路等编程的通用计算机(例如服务器)。代码模块可以被编译并链接到可执行程序中,安装在动态链接库中,或者可以用解释的编程语言编写。在一些实现方式中,特定操作和方法可以由特定于给定功能的电路执行。

此外,本公开的功能的某些实现方式在数学上、计算上或技术上足够复杂,以使得专用硬件或一个或多个物理计算设备(利用适当的专用可执行指令)可能有必要例如由于所涉及的计算的量或复杂性而执行功能或者基本上实时地提供结果。例如,动画或视频可以包括许多帧,每个帧具有数百万个像素,并且需要专门编程的计算机硬件来处理视频数据,以在商业上合理的时间量内提供期望的图像处理任务或应用。

代码模块或任何类型的数据可以被存储在任何类型的非暂态计算机可读介质上,诸如包括硬盘驱动器、固态存储器、随机存取存储器(RAM)、只读存储器(ROM)、光盘、易失性或非易失性存储设备,与它们相同或类似物的组合等的物理计算机存储装置。方法和模块(或数据)还可以作为所生成的数据信号(例如,作为载波或其它模拟或数字传播信号的一部分)在各种计算机可读传输介质(包括基于无线的和有线的/基于电缆的介质)上发送,并且可以采用多种形式(例如,作为单个或多路复用模拟信号的一部分,或者作为多个离散数字分组或帧)。所公开的过程或过程步骤的结果可以持久地或以其它方式存储在任何类型的非暂态有形计算机存储装置中,或者可以经由计算机可读传输介质传送。

在此描述和/或附图中描绘的流程图中的任何过程、框、状态、步骤或功能应当理解为可能表示代码模块、代码段或代码部分,其包括用于实施特定功能(例如,逻辑或算术)或过程中的步骤的一个或多个可执行指令。各种过程、块、状态、步骤或功能可以与在此提供的说明性示例组合、重新排列、添加、删除、修改或以其它方式改变。在一些实施例中,附加或不同的计算系统或代码模块可以执行在此描述的一些或全部功能。在此描述的方法和过程也不限于任何特定序列,并且与其相关的块、步骤或状态可以以适当的其它顺序执行,例如,以串行、并行或以一些其它方式。可以向所公开的示例实施例添加任务或事件或从中移除任务或事件。此外,在此描述的实现方式中的各种系统组件的分离是出于说明性目的,并且不应被理解为在所有实现方式中都需要这种分离。应当理解,所描述的程序部件、方法和系统通常可以一起集成在单个计算机产品中或打包成多个计算机产品。许多实现方式变化都是可能的。

过程、方法和系统可以在网络(或分布式)计算环境中实现。网络环境包括企业范围的计算机网络、内联网、局域网(LAN)、广域网(WAN)、个人局域网(PAN)、云计算网络、众包计算网络、互联网和万维网。网络可以是有线或无线网络或任何其它类型的通信网络。

本公开的系统和方法各自具有若干创新方面,其中没有一个单独地对在此公开的期望属性负责或要求。以上所述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都旨在落入本公开的范围内。对本领域技术人员来说,对本公开中描述的实现方式的各种修改是显而易见的,并且在不脱离本公开的精神或范围的情况下,在此定义的一般原理可以应用于其它实现方式。因此,权利要求不旨在限于在此所示的实现方式,而是与符合在此公开的本公开、原理和新颖特征的最宽范围相一致。

在单独实现方式的上下文中在本说明书中描述的某些特征也可以在单个实现方式中组合实施。相反,在单个实现方式的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实现方式中实现。此外,尽管特征可以在上面被描述为以某些组合起作用并且甚至最初如此要求保护,但是在一些情况下可以从组合中排除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以用于子组合或子组合的变体。对于每个和所有实施例,没有单个特征或特征组是必需或必不可少的。

除非另有说明,或者在所使用的上下文中以其它方式理解,否则在此使用的条件语言,诸如“能够”、“可以”、“可能”、“可”、“例如”等通常旨在传达某些实施例包括某些特征、元件和/或步骤,而其它实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示对于一个或多个实施例以任何方式需要特征、元素和/或步骤,或者一个或多个实施例必须包括用于决定是否在任何特定实施例中包括或将要执行这些特征、元件和/或步骤(无论是否有作者输入或提示)的逻辑。术语“包含”、“包括”、“具有”等是同义的并且以开放式方式包含使用,并且不排除附加元件、特征、动作、操作等。此外,术语“或”在其包含意义上(而不是在其独有意义上)使用,因此当使用时,例如,为了连接元素列表,术语“或”表示列表中的一个、一些或全部元素。另外,除非另有说明,否则本申请和所附权利要求中使用的冠词“一”、“一个”和“该”应理解为表示“一个或多个”或“至少一个”。

如在此所使用的,指代项目列表中的“至少一个”的短语是指那些项目的任何组合,包括单个成员。例如,“A、B或C中的至少一个”旨在涵盖:A、B、C、A和B、A和C、B和C,以及A、B和C。除非另外特别说明,否则诸如短语“X、Y和Z中的至少一个”的联合语言以其它方式通过上下文理解为通常用于传达项目、术语等可以是X、Y或Z中的至少一个。因此,这种联合语言通常不旨在暗示某些实施例需要X中的至少一个、Y中的至少一个和Z中的至少一个各自存在。

类似地,虽然可以以特定顺序在附图中描绘操作,但应认识到,不需要以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。此外,附图可以以流程图的形式示意性地描绘一个或多个示例过程。然而,未示出的其它操作可以包含在示意性示出的示例方法和过程中。例如,可以在任何所示操作之前、之后、同时或之间执行一个或多个附加操作。另外,可以在其它实现方式中重新排列或重新排序操作。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实现方式中的各种系统组件的分离不应被理解为在所有实现方式中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以在单个软件产品中集成在一起或者被打包到多种软件产品。另外,其它实现方式在以下权利要求的范围内。在一些情况下,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。

56页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:中间新兴内容

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类