
1.本公开总体上涉及人工现实系统,例如增强现实、混合现实和/或虚拟现实系统。
2.背景
3.人工现实系统正变得越来越普遍,应用于许多领域,例如计算机游戏、健康和安全、工业和教育。作为几个示例,人工现实系统正在被合并到移动设备、游戏机、个人计算机、电影院和主题公园中。通常,人工现实是在呈现给用户之前已经以某种方式调整的现实的形式,其可包括例如虚拟现实、增强现实、混合现实、混杂现实(hybrid reality)、或其某种组合和/或衍生物。
4.典型人工现实系统包括用于渲染和向用户显示内容的一个或更多个设备。作为一个示例,人工现实系统可合并头戴式显示器(hmd),该hmd由用户佩戴并且被配置为向用户输出人工现实内容。人工现实内容可以完全包括由系统生成的内容,或者可以包括与捕获的内容(例如,真实世界视频和/或图像)相结合的生成的内容。在操作期间,用户通常与人工现实系统交互以选择内容、启动应用、配置系统,并且通常体验人工现实环境。
5.概述
6.总的来说,本公开描述了人工现实(ar)系统和技术,其使用被设计用于传输视频数据的通信协议,以传送非视频表面数据,用于在多设备ar系统内渲染(render)和显示人工现实(ar)内容。示例多设备ar系统包括其中外围设备在与一个或更多个头戴式显示器(hmd)配对时作为协同处理ar设备操作的系统。例如,如本文进一步描述的,外围设备和每个hmd可以各自包括一个或更多个片上系统(soc)集成电路(本文中称为“soc”或“soc集成电路”),它们被共同配置成提供人工现实应用执行环境。
7.本文所述的人工现实(ar)系统的各种示例使用视频数据通信协议,经由直接存储器存取(dma)控制器将原始表面(或纹理)数据从应用处理器传送至储存器。典型地,视频数据通信协议携带用于直接驱动显示器的视频像素数据。在本公开中,视频数据通信协议在ar系统的外围设备内被利用来携带原始表面数据,以便能够稍后渲染ar场景,用于在ar系统的头戴式显示器(hmd)上显示。
8.在传统显示图形处理中(例如,在所有非ar系统中),所有表面在应用处理器中合成,以形成输出显示帧,然后将输出显示帧传输至一个或更多个显示器。对于ar系统,各表面由应用处理器生成,合成在图形流水线的最后阶段中执行,要求各表面在整个系统上传输。合成图像(例如,经由ar协同处理soc集成电路)被传输到一个或更多个显示器。然而,在分布式系统中,执行视频处理的soc集成电路和控制图像合成和显示的soc集成电路可能跨一个或更多个设备分离。另外,随着ar场景变得更加复杂,通信带宽限制可能会阻止大量数据以为用户创建流畅的视觉体验所必需的速率(例如,每秒60次)从应用单元可靠地传送到显示器。
9.当构建要显示的ar内容时,应用可能具有频繁变化的动画图像和不频繁变化的静态图像的组合。例如,玩家化身可以改变以对应于用户的移动,并且商店标志可以在场景持续期间不改变。如下所述,应用soc集成电路使用视频数据通信协议来传输该通信协议没有
被设计来承载的数据。应用soc集成电路利用了这样的事实,即并非ar场景中所有感兴趣的表面都需要随着每一帧而改变,并且由于hmd的移动而对非更新表面进行的修改(例如,旋转、平移、缩放等)可以在稍后阶段执行(例如,通过hmd上的显示驱动器等执行)。应用单元使用通用通信协议(例如,pcie等)来传输定义要显示的表面的设置帧(setup frame),并使用视频数据传输协议(例如,mipi dsi等)来发送仅包括将在下一个显示周期中更新的表面的数据的原始表面数据。
10.应用soc集成电路生成包括子帧报头和相应子帧的超帧。子帧包括要更新的每个表面的原始表面数据。报头和子帧被格式化以适合视频数据传输协议的消息结构。对于要包括的每个表面,应用soc电路生成子帧报头,该子帧报头指定相应的子帧在视频数据传输协议的消息结构中的位置。这些报头被放置在超帧的开头处的定义位置,使得ar协同处理soc集成电路(例如,经由dma控制器)能够从这些报头中检索子帧特征,并且随后使用子帧特征将每个子帧的相应原始表面数据写入存储器中。
11.与使用通用通信协议发送表面更新相比,使用视频数据传输协议发送表面更新具有几个优点:(a)视频数据通信协议可在传输之间进入空闲模式,以节省电能;(b)视频数据通信协议通常在其结构和时序(timing)方面被更严格地定义;以及(c)通用通信协议可以通过改变传送数据的时序来管理其带宽,即使表面更新需要以固定的周期传送(例如,一秒60次)。
12.如本文所用,表面是具有指定宽度和高度的图形纹理,并分配有句柄标识符(id)。可以通过将表面作为子帧包含在超帧内来更新表面。表面更新不需要在每个超帧中都发生。如本文所用,子帧是被分配了句柄id的图形表面的一帧。子帧的纹理元素(texels)被封装在超帧内。“纹理元素”是纹理数据的单位,而“像素”是用于输出到显示器的最终合成帧的图像数据的单位。子帧数据的纹理元素可以存储在被定义为使用像素数据结构的视频帧中。如本文所用,超帧是视频通信接口视频帧,其被用作多个子帧报头和相应的子帧原始纹理数据有效载荷的容器。
13.根据本发明的第一方面,提供了一种人工现实系统,包括第一集成电路;以及通过视频通信接口通信耦合到第一集成电路的第二集成电路;其中第一集成电路包括至少一个处理器,该处理器被配置为:在视频通信接口的视频帧中生成超帧,以传输到第二集成电路,其中该超帧包括多个子帧有效载荷和相应的子帧报头,该多个子帧有效载荷携带要在帧中更新的表面纹理数据,该子帧报头包括子帧有效载荷的参数;其中第二集成电路包括直接存取存储器(dma)控制器,该控制器被配置为:在接收到超帧时,基于包括在子帧报头中的相应一个子帧报头中的参数,将每个子帧有效载荷内的表面纹理数据直接写入存储器中的分配位置;并且将表面纹理数据从存储器传输到显示设备以进行渲染以供显示。
14.第一集成电路可以被配置为:识别要显示的帧内的表面;和/或对于要由显示器显示的每一帧,将表面的一部分分类为动态表面,并生成具有仅动态表面的表面纹理数据的子帧有效载荷。
15.超帧可以包括位于超帧的开头的超帧报头。超帧报头可以包括子帧报头。
16.超帧报头可以包括由第二集成电路使用以确定超帧是否有效的多个有效性字段。
17.超帧报头可以指定第一子帧有效载荷在超帧内的位置。
18.子帧报头可指定相应表面纹理数据的输入像素格式和/或相应表面纹理数据的输
出像素格式。
19.第二集成电路可以被配置为,当输入像素格式和输出像素格式不匹配时,在将表面纹理数据存储到存储器中之前,将表面纹理数据从第一像素格式转换成第二像素格式。
20.子帧报头可指定下一子帧有效载荷在超帧内的位置。
21.第一集成电路可配置为使用视频通信接口的模式传输超帧,该模式在传输期间不改变视频帧。
22.第二集成电路的dma控制器可配置为在接收到超帧时,将超帧的子帧报头写入状态和控制寄存器中。
23.根据本发明的第二方面,提供了一种方法,包括:由人工现实(ar)系统的第一集成电路在视频通信接口的视频帧中生成超帧,以传输到ar系统的第二集成电路,其中,超帧包括多个子帧有效载荷和相应的子帧报头,该多个子帧有效载荷携带要在帧中更新的表面纹理数据,子帧报头包括子帧有效载荷的参数;在接收到超帧时,由第二集成电路的直接存取存储器(dma)控制器基于包括在子帧报头中的相应一个子帧报头中的参数,将每个子帧有效载荷内的表面纹理数据直接写入存储器中的分配位置;以及由第二集成电路将表面纹理数据从存储器传输到显示设备,以进行渲染以供显示。
24.该方法还可以包括:由第一集成电路识别要显示的帧内的表面;并且对于要由显示器显示的每一帧,由第一集成电路将表面的一部分分类为动态表面,并且生成具有仅动态表面的表面纹理数据的子帧有效载荷。
25.生成超帧可包括在超帧的开头生成超帧报头,超帧报头包括子帧报头。
26.超帧报头可以包括由第二集成电路用来确定超帧是否有效的多个有效性字段。
27.超帧报头可指定第一子帧有效载荷在超帧内的位置。
28.子帧报头可指定相应表面纹理数据的输入像素格式和/或相应表面纹理数据的输出像素格式。
29.该方法还可以包括,当输入像素格式和输出像素格式不匹配时,在将表面纹理数据存储到存储器中之前,由第二集成电路将表面纹理数据从第一像素格式转换成第二像素格式。
30.子帧报头可指定下一子帧有效载荷在超帧内的位置。
31.该方法还可以包括,在接收到超帧时,由dma控制器将超帧的子帧报头写入状态和控制寄存器中。
32.根据本发明的第三方面,提供了一种包含指令的计算机可读存储介质,该指令在被执行时将计算系统的处理电路配置为:对于将由显示设备显示的每一帧,由人工现实(ar)系统的第一集成电路在视频通信接口的视频帧中生成超帧,以传输至ar系统的第二集成电路,其中该超帧包括多个子帧有效载荷和相应的子帧报头,该多个子帧有效载荷携带要在帧中更新的表面纹理数据,该子帧报头包括子帧有效载荷的参数;在接收到超帧时,由所述第二集成电路的直接存取存储器(dma)控制器基于包括在子帧报头中的相应一个子帧报头中的参数,将每个子帧有效载荷内的表面纹理数据直接写入存储器中的分配位置;以及由第二集成电路将表面纹理数据从存储器传输到显示设备,以进行渲染以供显示。
33.一个或更多个示例的细节在附图和以下描述中阐述。从说明书和附图以及权利要求中,其他特征、目的和优点将变得明显。
34.附图简述
35.图1a是描绘根据本公开所述技术操作的示例多设备人工现实系统的示意图。
36.图1b是描绘根据本公开所述技术操作的另一示例多设备人工现实系统的示意图。
37.图2a是描绘根据本公开所述技术操作的示例头戴式显示器(hmd)和示例外围设备的示意图。
38.图2b是描绘根据本公开所述技术操作的另一示例hmd的示意图。
39.图3是示出根据本公开所述技术操作的图1a和图1b的多设备人工现实系统的控制台、hmd和外围设备的示例实现的框图。
40.图4是描绘根据本公开所述技术操作的图1a和图1b的多设备人工现实系统的hmd和外围设备的示例实现的框图。
41.图5是示出根据本公开所述技术的多设备人工现实系统的分布式架构的更详细的示例实现的框图,其中一个或更多个设备(例如,外围设备和hmd)使用每个设备内的一个或更多个片上系统(soc)集成电路来实现。
42.图6是示出包含原始纹理数据子帧的超帧示意图,该超帧的结构符合视频通信接口的消息格式。
43.图7示出了图6的超帧的报头的示例格式和包括在超帧的报头中的一个或更多个子帧的报头的示例格式。
44.图8是示出人工现实(ar)协同处理soc集成电路的直接存储器存取(dma)控制器的数据路径的框图,用于直接存储经由视频通信接口接收的超帧的子帧数据。
45.图9a是示出视频通信接口端口上像素数据的示例格式的示意图。
46.图9b是示出将来自视频通信接口端口的像素数据重新映射至子帧表面有效载荷数据的报头数据和像素数据的示例的示意图。
47.图10是生成和传输图6的超帧的示例方法的流程图。
48.图11是处理超帧以检索表面纹理的示例方法的流程图。
49.详细描述
50.图1a是描绘根据本公开所述技术的生成人工现实(ar)内容的示例多设备人工现实系统10的示意图。在图1a的示例中,人工现实系统10包括头戴式显示器(hmd)112、外围设备136,并且在一些示例中可以包括一个或更多个外部传感器90和/或控制台106。
51.如图所示,hmd 112通常由用户110佩戴,并且包括用于向用户110呈现人工现实内容122的电子显示器和光学组件。此外,hmd 112包括用于跟踪hmd 112的运动的一个或更多个传感器(例如,加速度计),并且可以包括用于捕获周围物理环境的图像数据的一个或更多个图像捕获设备138(例如,相机、线扫描仪)。尽管图示为头戴式显示器,但是ar系统10可以替代地或附加地包括眼镜或其他显示设备,用于向用户110呈现人工现实内容122。
52.在该示例中,控制台106被示为单个计算设备,例如游戏机、工作站、台式计算机或膝上型计算机。在其他示例中,控制台106可以分布在多个计算设备上,例如分布式计算网络、数据中心或云计算系统。如该示例中所示,控制台106、hmd 112和传感器90可以经由网络104通信耦合,网络104可以是有线或无线网络(例如wi-fi)、网状网络或短程无线通信介质或其组合。尽管在该示例中,hmd 112被示出为与控制台106通信,例如系留(tethered to)到控制台或与控制台进行无线通信,但在一些实现中,hmd 112作为独立的移动人工现
实系统进行操作。
53.通常,人工现实系统10使用从真实世界、3d物理环境捕获的信息来渲染人工现实内容122以显示给用户110。在图1a的示例中,用户110观看由在hmd 112和/或控制台106上执行的人工现实应用构建和渲染的人工现实内容122。在一些示例中,人工现实内容122可以包括真实世界图像(例如,手132、外围设备136、墙壁121)和显示在实际和/或定义的表面上的虚拟对象(例如,虚拟内容项目124、126和虚拟用户界面137)的混合,以产生混合现实和/或增强现实。在一些示例中,虚拟内容项目124、126可以被映射(例如,钉住、锁定、放置)到人工现实内容122内的特定位置。虚拟内容项目的位置可以是固定的,例如相对于墙壁121或地球之一。例如,相对于外围设备136或用户,虚拟内容项目的位置可以是可变的。在一些示例中,虚拟内容项目在人工现实内容122内的特定位置与真实世界物理环境内的位置相关联(例如,在物理对象的表面上或者在相对于物理对象定义的表面上)。
54.在该示例中,外围设备136是具有表面的物理真实世界设备,ar系统10在该表面上覆盖虚拟用户界面137。外围设备136可以包括一个或更多个存在敏感(presence-sensitive)表面,用于通过检测触摸或悬停在存在敏感表面的位置上的一个或更多个对象(例如,手指、触笔)的存在来检测用户输入。在一些示例中,外围设备136可以包括输出显示器,其可以是存在敏感的显示器。在一些示例中,外围设备136可以是智能手机、平板电脑、个人数据助理(pda)或其他手持设备。在一些示例中,外围设备136可以是智能手表、智能戒指或其他可佩戴设备。外围设备136也可以是信息亭(kiosk)或其他固定或移动系统的一部分。外围设备136可以包括也可以不包括用于向屏幕输出内容的显示设备。
55.在图1a所示的示例人工现实体验中,虚拟内容项目124、126被映射到墙壁121上的位置。图1a中的示例还示出了虚拟内容项目124仅在人工现实内容122内部分地出现在墙壁121上,说明了该虚拟内容不存在于真实世界的物理环境中。虚拟用户界面137被映射到外围设备136的表面。结果,ar系统10在相对于外围设备136在人工现实环境中的位置被锁定的用户界面位置处渲染虚拟用户界面137,以作为人工现实内容122的一部分在hmd 112处显示。图1a示出了虚拟用户界面137仅在人工现实内容122内出现在外围设备136上,说明了该虚拟内容不存在于真实世界的物理环境中。
56.人工现实系统10可以响应于确定虚拟内容项目的位置的至少一部分在用户110的视场130中来渲染一个或更多个虚拟内容项目。例如,仅当外围设备136在用户110的视场130内时,人工现实系统10才可以在外围设备136上渲染虚拟用户界面137。
57.在操作期间,人工现实应用通过跟踪和计算参考系(通常是hmd 112的视角)的姿势信息来构建用于向用户110显示的人工现实内容122。使用hmd 112作为参考系(frame of reference),并且基于由hmd 112的当前估计姿势确定的当前视场130,人工现实应用渲染3d人工现实内容,在一些示例中,该3d人工现实内容可以至少部分地覆盖在用户110的真实世界3d物理环境上。在该过程中,人工现实应用使用从hmd 112接收的感测数据,例如移动信息和用户命令,并且在一些示例中,使用来自任何外部传感器90(例如外部相机)的数据来捕获真实世界物理环境中的3d信息,例如用户110的运动和/或关于用户110的特征跟踪信息。基于所感测的数据,人工现实应用确定hmd 112的参考系的当前姿势,并且根据当前姿势,渲染人工现实内容122。
58.人工现实系统10可以基于用户110的可以由用户的实时凝视跟踪或其他条件来确
定的当前视场130触发虚拟内容项目的生成和渲染。更具体地说,hmd 112的图像捕获设备138捕获表示在图像捕获设备138的视场130内的真实世界物理环境中的对象的图像数据。视场130通常对应于hmd 112的视角。在一些示例中,人工现实应用呈现包括混合现实和/或增强现实的人工现实内容122。如图1a所示,人工现实应用可以沿着虚拟对象例如在人工现实内容122内渲染处于视场130内的真实世界对象(例如外围设备136、用户110的手132和/或手臂134的部分)的图像。在其他示例中,人工现实应用可以在人工现实内容122内渲染外围设备136、用户110的手132和/或手臂134在视场130内的部分的虚拟表示(例如,将真实世界对象渲染为虚拟对象)。在任一示例中,用户110能够在人工现实内容122内查看他们的手132、手臂134、外围设备136和/或视场130内的任何其他真实世界对象的部分。在其他示例中,人工现实应用可以不渲染用户的手132或手臂134的表示。
59.在操作期间,人工现实系统10在由hmd 112的图像捕获设备138捕获的图像数据内执行对象识别,以识别外围设备136、手132,包括可选地识别用户110的单个手指或拇指,和/或手臂134的全部或部分。此外,人工现实系统10在滑动时间窗口上跟踪外围设备136、手132(可选地包括手的特定手指)和/或手臂134的部分的位置、取向和构形。在一些示例中,外围设备136包括用于跟踪外围设备136的运动或取向的一个或更多个传感器(例如,加速度计)。
60.如上所述,人工现实系统10的多个设备可以在ar环境中协同工作,其中每个设备可以是一个或更多个物理设备内的单独的物理电子设备和/或单独的集成电路(例如,片上系统(soc))。在该示例中,外围设备136在操作上与hmd 112配对,以在ar系统10内联合操作,从而提供人工现实体验。例如,外围设备136和hmd 112可以作为协同处理设备相互通信。作为一个示例,当用户在虚拟环境中在与覆盖在外围设备136上的虚拟用户界面137的虚拟用户界面元素之一相对应的位置处执行用户界面手势时,ar系统10检测用户界面并执行被渲染到hmd 112的动作。
61.根据本公开的技术,人工现实系统10可以在外围设备136内的不同soc之间提供用于生成ar内容的原始表面数据的有效传输。对于设备内表面纹理通信,外围设备136利用将由hmd 112显示的一些表面纹理经常(例如,每个视频帧等)(有时也称为“动态”)改变和一些表面纹理是静态的事实。外围设备136使用传输视频帧的视频通信接口来执行设备内表面纹理通信。视频帧被转换成包括多个表面纹理数据子帧的超帧。每个超帧仅包括将在下一个显示的视频帧中改变的表面纹理的表面纹理数据的子帧。这些方法有助于延长电池寿命和更好地管理连接外围设备136内的soc的通信接口的带宽。
62.图1b是描绘根据本公开所述技术操作的另一示例多设备人工现实系统20的示意图。类似于图1a的人工现实系统10,在一些示例中,图1b的人工现实系统20可以相对于多用户人工现实环境内的虚拟表面生成和渲染虚拟内容项目。虚拟表面可以对应于实际表面(例如,至少部分定义为墙壁或桌子等的平面)或定义的表面(例如,锚定到特定坐标集的空间中定义的平面等)。人工现实系统20使用表面纹理来渲染虚拟内容项目,这些虚拟内容项目被渲染为向用户显现为被附加到或结合到虚拟表面中。在各种示例中,人工现实系统20还可以响应于检测到用户与外围设备136的一个或更多个特定交互,生成并向用户渲染特定虚拟内容项目和/或图形用户界面元素。例如,外围设备136可以充当供用户“登台(stage)”或以其他方式与虚拟表面交互的舞台设备。
63.在图1b的示例中,人工现实系统20包括外部相机102a和102b(统称为“外部相机102”)、hmd 112a-112c(统称为“hmd 112”)、控制器114a和114b(统称为“控制器114”)、控制台106和传感器90。如图1b所示,人工现实系统20表示多用户环境,其中在控制台106和/或hmd 112上执行的人工现实应用基于相应用户的相应参考系的当前观看视角向用户110a-110c(统称为“用户110”)中的每一个呈现人工现实内容。也就是说,在该示例中,人工现实应用通过针对hmd 112中的每一个的参考系跟踪和计算姿势信息来构建人工内容。人工现实系统20使用从相机102、hmd 112和控制器114接收的数据来捕获真实世界环境中的3d信息,例如用户110的运动和/或关于用户110和对象108的跟踪信息,用于计算hmd 112的相应参考系的更新姿势信息。作为一个示例,人工现实应用可基于为hmd 112c确定的当前观看视角来渲染人工现实内容122,该人工现实内容具有空间上覆盖在真实世界对象108a-108b(统称为“真实世界对象108”)上的虚拟对象128a-128b(统称为“虚拟对象128”)。此外,从hmd 112c的视角来看,人工现实系统20分别基于用户110a、110b的估计位置来渲染化身120a、120b。一些虚拟对象128是不随每个视频帧而改变的静态纹理。例如,描绘树的虚拟对象(例如,虚拟对象128a等)可能很少改变表面纹理。其他虚拟对象128可以是动态的并且经常改变(例如,被动画化使得表面纹理在每个视频帧中改变)。同时其他虚拟对象128可以具有静态的周期和动态的周期。例如,财宝箱(例如,虚拟对象128b)在被交互之前可以是静态的,当它被动画化以打开时变成动态,并且在它被打开之后返回到静态。
64.每个hmd 112在人工现实系统20内同时操作。在图1b的示例中,每个用户110可以是人工现实应用中的“玩家”或“参与者”,并且任何用户110可以是人工现实应用中的“旁观者”或“观察者”。通过跟踪用户110c的手132和/或手臂134,并且将视场130内的手132的部分渲染为人工现实内容122内的虚拟手132,hmd 112c可以基本上类似于图1a的hmd 112进行操作。hmd 112b可以从用户110b持有的控制器114接收用户输入。在一些示例中,控制器114a和/或114b可以对应于图1a的外围设备136,并且基本上类似于图1a的外围设备136来操作。hmd 112a也可以基本上类似于图1a的hmd 112进行操作,并且通过用户110a的手132a、132b接收在外围设备136上执行或用外围设备136执行的手势形式的用户输入。hmd 112b可以从用户110b持有的控制器114接收用户输入。控制器114可以使用诸如蓝牙的短程无线通信的近场通信、使用有线通信链路或使用其它类型的通信链路来与hmd 112b通信。
65.以类似于以上关于图1a讨论的示例的方式,人工现实系统20的控制台106和/或hmd 112c生成并渲染包括虚拟内容项目129(例如,gif、照片、应用、直播流、视频、文本、网络浏览器、绘图、动画、3d模型、数据文件的表示(包括二维和三维数据集)或任何其他可见媒体)的虚拟表面,当相对于与虚拟内容项目129相关联的墙壁121定义的表面部分进入hmd 112c的视场130内时,该虚拟内容项目可以覆盖在显示给用户110c的人工现实内容122上。如图1b所示,除了经由hmd 112c的相机138捕获的图像数据之外或作为替代,来自外部相机102的输入数据可用于跟踪和检测外围设备136和/或用户110的手和手臂(例如用户110c的手132)的特定运动、构形、位置和/或取向,包括手的手指(手指、拇指)的单独和/或组合的移动。
66.在一些方面,人工现实应用可以在控制台106上运行,并且可以利用图像捕获设备102a和102b来分析手132b的构形、位置和/或取向,以识别可以由hmd 112a的用户执行的输入手势。类似地,hmd 112c可以利用图像捕获设备138来分析外围设备136和手132c的构形、
位置和/或取向,以输入hmd 112c的用户可以执行的手势。在一些示例中,外围设备136包括用于跟踪外围设备136的运动或取向的一个或更多个传感器(例如,加速度计)。人工现实应用可以响应于这样的手势、运动和取向,以类似于关于图1a描述的方式来渲染虚拟内容项目和/或ui元素。
67.图像捕获设备102和138可以捕获可见光谱、红外光谱或其他光谱中的图像。例如,本文描述的用于识别对象、对象姿势和手势的图像处理可以包括处理红外图像、可见光光谱图像等。
68.人工现实系统20的设备可以在ar环境中协同工作。例如,外围设备136与hmd 112c配对,以在ar系统20内联合操作。类似地,控制器114与hmd 112b配对,以在ar系统20内联合操作。外围设备136、hmd 112和控制器114可以各自包括一个或更多个soc集成电路(例如,下面图5的soc集成电路510a和510b),该soc集成电路被配置为实现用于人工现实应用的操作环境。
69.为了减少图形流水线(例如,存储器管理、处理和传输以在hmd 112上显示由控制台106生成的表面纹理的内部系统等)使用的带宽,与图1b的虚拟对象128或虚拟内容项目129相关联的至少一些表面纹理使用视频通信接口的视频帧在内部传输,该视频帧被转换成携带表面纹理数据的多个子帧的超帧。该超帧仅包括将在将由hmd 112显示的下一视频帧中改变的表面纹理数据的子帧。
70.图2a是描绘根据本公开所述技术的示例hmd 112和示例外围设备136的示意图。图2a的hmd 112可以是图1a和图1b的hmd 112中的任一个的示例。hmd 112可以是人工现实系统(例如图1a、图1b的人工现实系统10、20)的一部分,或者可作为被配置为实现本文所描述技术的独立的、移动的人工现实系统操作。
71.在该示例中,hmd 112包括前刚性主体和用于将hmd 112固定到用户的带。此外,hmd 112包括面向内部的电子显示器203,该电子显示器被配置为向用户呈现人工现实内容。电子显示器203可以是任何合适的显示技术,例如液晶显示器(lcd)、量子点显示器、点阵显示器、发光二极管(led)显示器、有机发光二极管(oled)显示器、阴极射线管(crt)显示器、电子墨水、或单色、彩色或能够生成视觉输出的任何其他类型的显示器。在一些示例中,电子显示器是用于向用户的每只眼睛提供单独图像的立体显示器。在一些示例中,当跟踪hmd 112的位置和取向以用于根据hmd 112和用户的当前观看视角渲染人工现实内容时,显示器203相对于hmd 112的前刚性主体的已知取向和位置被用作参考系,也被称为局部原点(local origin)。在其他示例中,hmd 112可以采取其他可佩戴的头戴式显示器的形式,例如眼镜或护目镜。
72.如图2a中进一步所示,在该示例中,hmd 112还包括一个或更多个运动传感器206,例如输出指示hmd 112的当前加速度的数据的一个或更多个加速度计(也称为惯性测量单元或“imu”)、输出指示hmd 112的位置的数据的gps传感器、输出指示hmd 112与各种对象相距的距离的数据的雷达或声纳、或提供hmd 112或物理环境内的其他对象的位置或取向的指示的其他传感器。此外,hmd 112可以包括集成的图像捕获设备138a和138b(统称为“图像捕获设备138”),例如摄像机、激光扫描仪、多普勒雷达扫描仪、深度扫描仪等,其被配置为输出表示物理环境的图像数据。更具体地,图像捕获设备138捕获表示物理环境中的在图像捕获设备138的视场130a、130b(其通常对应于hmd 112的视角)内的对象(包括外围设备136
和/或手132)的图像数据。hmd 112包括内部控制单元210,该内部控制单元可包括内部电源和一个或更多个印刷电路板,该印刷电路板具有一个或更多个处理器、存储器和硬件以提供用于执行可编程操作的操作环境,从而处理感测数据并在显示器203上呈现人工现实内容。
73.图2b是描绘根据本公开所述技术的另一示例hmd 112的示意图。如图2b所示,hmd 112可以采取眼镜的形式。图2a的hmd 112可以是图1a和图1b的hmd 112中的任一个的示例。hmd 112可以是人工现实系统(例如图1a、图1b的人工现实系统10、20)的一部分,或者可作为被配置为实现本文所描述技术的独立的、移动的人工现实系统操作。
74.在该示例中,hmd 112是包括前框架的眼镜,该前框架包括允许hmd 112搁在用户的鼻子上的鼻梁架(bridge)和在用户耳朵上延伸以将hmd 112固定到用户的镜腿(temple)(或“臂”)。此外,图2b的hmd 112包括面向内部的电子显示器203a和203b(统称为“电子显示器203”),其被配置为向用户呈现人工现实内容。电子显示器203可以是任何合适的显示技术,例如液晶显示器(lcd)、量子点显示器、点阵显示器、发光二极管(led)显示器、有机发光二极管(oled)显示器、阴极射线管(crt)显示器、电子墨水、或单色、彩色或能够生成视觉输出的任何其他类型的显示器。在图2b所示的示例中,电子显示器203形成立体显示器,用于向用户的每只眼睛提供单独的图像。在一些示例中,当跟踪hmd 112的位置和取向以根据hmd 112和用户的当前视角渲染人工现实内容时,显示器203相对于hmd 112的前框架的已知取向和位置被用作参考系,也称为局部原点。
75.如图2b中进一步所示,在该示例中,hmd 112还包括一个或更多个运动传感器206,例如输出指示hmd 112的当前加速度的数据的一个或更多个加速度计(也称为惯性测量单元或“imu”)、输出指示hmd 112的位置的数据的gps传感器、输出指示hmd 112与各种对象相距的距离的数据的雷达或声纳、或提供hmd 112或物理环境内的其他对象的位置或取向的指示的其他传感器。此外,hmd 112可以包括集成的图像捕获设备138a和138b(统称为“图像捕获设备138”),例如摄像机、激光扫描仪、多普勒雷达扫描仪、深度扫描仪等,其被配置为输出表示物理环境的图像数据。hmd 112包括内部控制单元210,该内部控制单元可包括内部电源和一个或更多个印刷电路板,该印刷电路板具有一个或更多个处理器、存储器和硬件以提供用于执行可编程操作的操作环境,从而处理感测数据并在显示器203上呈现人工现实内容。
76.为了减少图形流水线(例如,存储器管理、处理和传输以在hmd 112上显示由外围设备136生成的表面纹理的内部系统等)使用的带宽,与由hmd 112显示的虚拟对象相关联的至少一些表面纹理使用视频通信接口的视频帧在内部传输,该视频帧被转换成携带表面纹理数据的多个子帧的超帧。超帧仅包括这样的表面纹理数据的子帧,即这些表面纹理数据将在由图2a和2b的hmd 112显示的下一个视频帧中改变。
77.图3是示出根据本公开所述技术的图1a、图1b的多设备人工现实系统10、20的控制台106、hmd 112和外围设备136的示例实现的框图。在图3的示例中,控制台106基于感测的数据(例如从hmd 112和/或外部传感器接收的运动数据和图像数据)来为hmd 112执行姿势跟踪、手势检测以及用户界面生成和渲染。
78.在该示例中,hmd 112包括一个或更多个处理器302和存储器304,在一些示例中,处理器302和存储器304提供用于执行操作系统305的计算机平台,操作系统305可以是例如
嵌入式实时多任务操作系统或其他类型的操作系统。反过来,操作系统305提供用于执行一个或更多个软件部件307(包括应用引擎340)的多任务操作环境。如关于图2a和图2b的示例所讨论的,处理器302耦合到电子显示器203、运动传感器206和图像捕获设备138。在一些示例中,处理器302和存储器304可以是单独的、分立的部件。在其他示例中,存储器304可以是与单个集成电路内的处理器302并列放置的片上存储器。
79.通常,控制台106是处理从相机102(图1b)和/或hmd 112的图像捕获设备138(图1a、图2a、图2b)接收的图像和跟踪信息的计算设备,以执行手势检测和用于hmd 112的用户界面和/或虚拟内容生成。在一些示例中,控制台106是单个计算设备,例如工作站、台式计算机、膝上型计算机或游戏系统。在一些示例中,控制台106的至少一部分(例如处理器312和/或存储器314)可以分布在云计算系统、数据中心上或分布在网络上,例如互联网、另一公共或私有通信网络,例如宽带、蜂窝、wi-fi和/或用于在计算系统、服务器和计算设备之间传输数据的其他类型的通信网络。
80.在图3的示例中,控制台106包括一个或更多个处理器312和存储器314,在一些示例中,处理器和存储器提供用于执行操作系统316的计算机平台,操作系统可以是例如嵌入式实时多任务操作系统或其他类型的操作系统。继而,操作系统316提供用于执行一个或更多个软件部件317的多任务操作环境。处理器312耦合到一个或更多个i/o接口315,i/o接口315提供一个或更多个i/o接口,用于与例如键盘、游戏控制器、显示设备、图像捕获设备、hmd、外围设备等的外部设备通信。此外,一个或更多个i/o接口315可以包括一个或更多个有线或无线网络接口控制器(nic),用于与诸如网络104的网络通信。
81.控制台106的软件应用317操作以提供整体人工现实应用。在该示例中,软件应用317包括应用引擎320、渲染引擎322、手势检测器324、姿势跟踪器326和用户界面引擎。
82.通常,应用引擎320包括提供和呈现人工现实应用的功能,该人工现实应用例如是电话会议应用、游戏应用、导航应用、教育应用、培训或模拟应用等。应用引擎320可包括,例如,用于在控制台106上实现人工现实应用的一个或更多个软件包、软件库、硬件驱动器和/或应用程序接口(api)。响应于应用引擎320的控制,渲染引擎322生成3d人工现实内容,以由hmd 112的应用引擎340显示给用户。
83.应用引擎320和渲染引擎322根据参考系的当前姿势信息(通常是由姿势跟踪器326确定的hmd 112的观看视角)构建用于显示给用户110的人工内容。基于当前观看视角,渲染引擎322构建3d、人工现实内容,该人工现实内容在某些情况下可以至少部分地覆盖在用户110的真实世界3d环境上。在该过程期间,姿势跟踪器326对从hmd 112接收的感测数据(例如移动信息和用户命令)以及在一些示例中对来自任何外部传感器90(图1a、图1b)(例如外部相机)的数据进行操作,以捕获真实世界环境内的3d信息,例如用户110的运动和/或相对于用户110的特征跟踪信息。基于所感测的数据,姿势跟踪器326确定hmd 112的参考系的当前姿势,并且根据当前姿势,构建用于经由一个或更多个i/o接口315传送到hmd 112以显示给用户110的人工现实内容。姿势跟踪器326还可以确定外围设备136的当前姿势,并且根据当前姿势,触发与任何渲染的虚拟内容相关联的特定功能。
84.用户界面引擎328被配置成生成用于在人工现实环境中渲染的虚拟用户界面。用户界面引擎328生成虚拟用户界面,以包括一个或更多个虚拟用户界面元素329,例如虚拟绘图界面、可选菜单(例如,下拉菜单)、虚拟按钮、方向键(directional pad)、键盘或其他
用户可选用户界面元素、字形、显示元素、内容、用户界面控件等。渲染引擎322被配置为基于外围设备136的当前姿势,在人工现实环境中,在相对于外围设备136在人工现实环境中的位置被锁定的用户界面位置处渲染虚拟用户界面。
85.控制台106可以经由通信信道向hmd 112输出该虚拟用户界面和其他人工现实内容,以在hmd 112显示。渲染引擎322接收外围设备136的姿势信息,以持续更新用户界面位置和姿势,以匹配外围设备136的位置和姿势,例如存在敏感表面220之一的位置和姿势。
86.基于来自任何图像捕获设备138或102、存在敏感表面220或其他传感器设备的感测数据,手势检测器324分析外围设备136和/或用户对象(例如,手、手臂、手腕、手指、手掌、拇指)的被跟踪的运动、构形、位置和/或取向,以识别由用户110执行的一个或更多个手势。更具体地,手势检测器324分析在由hmd 112的图像捕获设备138和/或传感器90和外部相机102捕获的图像数据中识别的对象,以识别外围设备136和/或用户110的手和/或手臂,并跟踪外围设备136、手和/或手臂相对于hmd 112的移动,以识别用户110执行的手势。在一些示例中,手势检测器324可以基于捕获的图像数据来跟踪外围设备136、手、手指和/或手臂的移动,包括位置和取向的改变,并将对象的运动矢量与手势库330中的一个或更多个条目进行比较,以检测用户110执行的手势或手势组合。在一些示例中,手势检测器324可以接收由外围设备的存在敏感表面检测到的用户输入,并且处理用户输入以检测用户110相对于外围设备136执行的一个或更多个手势。
87.手势检测器324和手势库330可以全部或部分地分布到外围设备136,以处理外围设备136上的用户输入来检测手势。在这种情况下,存在敏感表面220检测表面位置处的用户输入。执行手势检测器324的外围设备136可以处理用户输入以检测手势库330的一个或更多个手势。外围设备136可以向控制台106和/或hmd 112发送检测到的手势的指示,以使控制台106和/或hmd 112响应性地执行一个或更多个动作。替代地或附加地,外围设备136可以向控制台106发送表面位置处的用户输入的指示,并且手势检测器324可以处理用户输入以检测手势库330的一个或更多个手势。手势库330中的一些条目可以各自将手势定义为一系列或模式的运动,例如外围设备136、用户的手、特定手指、拇指、手腕和/或手臂的相对路径或空间平移和旋转。手势库330中的一些条目可以各自将手势定义为外围设备、用户的手和/或手臂(或其部分)在特定时间或一段时间内的构形、位置和/或取向。
88.在图3中所示的示例中,外围设备136包括一个或更多个处理器346和存储器344,在一些示例中,该处理器和存储器提供用于执行操作系统342的计算机平台,该操作系统可以是例如嵌入式实时多任务操作系统或其他类型的操作系统。继而,操作系统346提供用于执行一个或更多个软件部件的多任务操作环境。在一些示例中,外围设备136包括一个或更多个存在敏感表面220(例如,使用电容、导电、电阻、声学和/或其他技术来检测触摸和/或悬停输入的一个或更多个表面)。在一个或更多个方面,外围设备136可以被配置成检测存在敏感表面220处的触摸和/或悬停输入,处理该输入(例如,在处理器346处处理),并将触摸和/或悬停输入和关于该输入的信息(包括关于该输入的位置信息)传送到控制台106和/或hmd 112。
89.如参考图2a的示例所讨论的,存在敏感表面220能够包括触摸屏(例如,电容式触摸屏、电阻式触摸屏、表面声波(saw)触摸屏、红外触摸屏、光学成像触摸屏、声脉冲识别触摸屏或任何其他触摸屏)。如图3中进一步所示,在该示例中,外围设备136还包括一个或更
多个运动传感器348,例如输出指示外围设备136的当前加速度的数据的一个或更多个加速度计(也称为imu)、输出指示外围设备的位置或定位的数据的gps传感器、输出指示外围设备136与各种对象(例如,与墙壁或其他表面)相距的距离的数据的雷达或声纳、或提供外围设备或物理环境内的其他对象的位置、定位和/或取向的指示的其他传感器。在一些示例中,处理器346耦合到存在敏感表面220和运动传感器246。在一些示例中,处理器346和存储器344可以是单独的、分立的部件。在其他示例中,存储器344可以是与单个集成电路内的处理器346并列放置的片上存储器。在一个或更多个方面,外围设备136可以与hmd共存,并且在一些示例中,在虚拟环境中作为hmd的辅助输入/输出设备操作。在一些示例中,外围设备136可以作为人工现实协同处理设备来操作,hmd的一些功能被卸载到该人工现实协同处理设备。在一个或更多个方面,外围设备136可以是智能手机、平板电脑或其他手持设备。
90.在一些示例中,处理器302、312、346中的每一个可包括多核处理器、控制器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)、或等效的离散或集成逻辑电路中的任何一个或更多个。存储器304、314、344可包括用于存储数据和可执行软件指令的任何形式的存储器,例如随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电子可擦除可编程只读存储器(eeprom)和闪存存储器。
91.在所示示例中,外围设备136从控制台106接收表面纹理数据,处理表面纹理数据(例如,使用处理器346),并将处理后的表面纹理数据传输至hmd 112,以在电子显示器203上显示。外围设备136包括图形流水线,该图形流水线基于表面纹理数据是否将在下一视频帧(该下一视频帧将显示在电子显示器203上)中改变,选择性地将表面纹理数据传送到hmd。图形流水线确定表面纹理数据是否将改变,并为该表面纹理数据准备子帧和子帧报头。图形流水线在内部传输包括多个子帧的视频帧,以减少外围设备136传输的内部数据量。
92.图4是描绘根据本公开所述技术的图1a、图1b的多设备人工现实系统的hmd和外围设备的示例实现的框图。
93.在这个示例中,类似于图3,hmd 112包括一个或更多个处理器302和存储器304,在一些示例中,处理器302和存储器304提供用于执行操作系统305的计算机平台,操作系统305可以是例如嵌入式实时多任务操作系统或其他类型的操作系统。继而,操作系统305提供用于执行一个或更多个软件部件417的多任务操作环境。此外,一个或更多个处理器302耦合到电子显示器203、运动传感器206和图像捕获设备138。
94.在图4的示例中,软件部件417操作以提供整体人工现实应用。在该示例中,软件应用417包括应用引擎440、渲染引擎422、手势检测器424、姿势跟踪器426和用户界面引擎428。在各种示例中,软件部件417类似于图3的控制台106的对应部件(例如,应用引擎320、渲染引擎322、手势检测器324、姿势跟踪器326和用户界面引擎328)来操作,以构建覆盖在人工内容上或作为人工内容的一部分的虚拟用户界面,以显示给用户110。
95.类似于关于图3描述的示例,基于来自图像捕获设备138或102中的任何一个、外围设备136的存在敏感表面或其他传感器设备的感测数据,手势检测器424分析外围设备136和/或用户对象(例如,手、手臂、手腕、手指、手掌、拇指)的跟踪的运动、构形、位置和/或取向,以识别由用户110执行的一个或更多个手势。
96.更具体地,手势检测器424可以分析由hmd 112的图像捕获设备138和/或传感器90以及外部相机102捕获的图像数据中识别的对象,以识别外围设备136和/或用户110的手和/或手臂,并且跟踪外围设备136、手和/或手臂相对于hmd 112的移动,以识别由用户110执行的手势。手势检测器424可以分析由hmd 112的图像捕获设备138和/或传感器90以及外部相机102捕获的图像数据中识别的对象,以识别外围设备136和/或用户110的手和/或手臂,并且跟踪外围设备136、手和/或手臂相对于hmd 112的移动,以识别由用户110执行的手势。在一些示例中,手势检测器424可以基于捕获的图像数据来跟踪外围设备136、手、手指和/或手臂的移动,包括位置和取向的改变,并将对象的运动矢量与手势库430中的一个或更多个条目进行比较,以检测用户110执行的手势或手势组合。在一些示例中,手势检测器424可以接收由外围设备的存在敏感表面检测到的用户输入,并且处理用户输入以检测用户110相对于外围设备136执行的一个或更多个手势。手势库430类似于图3的手势库330。手势检测器424的一些或全部功能可以由外围设备136执行。
97.如图3所示,外围设备136的图形流水线选择性地在内部传输表面数据。结果,对于每个视频帧,外围设备136传输的数据少于要由电子显示器302显示的每个视频帧中的所有表面纹理。
98.图5是示出多设备人工现实系统的分布式架构的示例实现的框图,其中一个或更多个设备(例如,外围设备136和hmd 112)使用每个设备内的一个或更多个soc集成电路来实现。如所述,外围设备136和hmd 112被构造和配置成能够在多设备人工现实系统中的设备之间有效地传送表面纹理数据。
99.一般来说,图5所示的soc代表以分布式架构排列的专用集成电路的集合,其中每个soc集成电路包括被配置为提供人工现实应用的操作环境的各种专用功能块。图5仅仅是soc集成电路的一个示例布置。多设备人工现实系统的分布式架构可以包括soc集成电路的任何集合和/或布置。
100.在此示例中,hmd 112的soc 530a(有时称为“ar中央处理soc”)包括功能块,功能块包括安全处理器224、跟踪570、加密/解密580、协同处理器582和接口584。跟踪570为眼睛跟踪572(“眼睛572”)、手跟踪574(“手574”)、深度跟踪576(“深度576”)和/或同时定位和映射(slam)578(“slam 578”)提供功能块。例如,hmd 112可以接收来自输出指示hmd 112当前加速度的数据的一个或更多个加速度计(也称为惯性测量单元或“imu”)、输出指示hmd 112位置的数据的gps传感器、输出指示hmd 112与各种对象的距离的数据的雷达或声纳、或提供hmd 112或物理环境内其他对象的位置或取向的指示的其他传感器的输入。hmd 112还可以从一个或更多个图像捕获设备588a-588n(统称为“图像捕获设备588”)接收图像数据。图像捕获设备可以包括摄像机、激光扫描仪、多普勒雷达扫描仪、深度扫描仪等,其被配置为输出表示物理环境的图像数据。更具体地,图像捕获设备捕获表示在图像捕获设备的视场内的物理环境中的对象(包括外围设备136和/或手)的图像数据,图像捕获设备的视场通常对应于hmd 112的视角。基于所感测的数据和/或图像数据,跟踪570确定例如hmd 112的参考系的当前姿势,并且根据当前姿势,渲染人工现实内容。
101.加密/解密580是加密传送到外围设备136的输出数据和解密从外围设备136传送的输入数据的功能块。加密/解密580可以支持对称密钥加密,以用会话密钥(例如,秘密对称密钥)加密/解密数据。加密/解密580便于例如外围设备136和头戴式显示器112之间的安
全通信。
102.协同应用处理器582包括各种处理器,例如视频处理单元、图形处理单元、数字信号处理器、编码器和/或解码器和/或其他。
103.接口584是一个功能块,其包括用于连接到ar中央处理soc 530a的功能块的一个或更多个接口。作为一个示例,接口584可以包括外围组件互连快速(pcie)插槽。ar中央处理soc 530a可以使用接口584与soc 530b和530c连接。ar中央处理soc 530a可以使用接口584与通信设备(例如,无线电发射机)连接,以便与其他设备(例如,外围设备136)进行通信。
104.soc 530b和530c(有时称为“显示器soc”)均代表用于在例如显示器586a、586b(统称为“显示器586”)的相应显示器上输出人工现实内容的显示控制器。在该示例中,显示器soc 530b可以包括用于显示器568a的显示控制器,以向用户的左眼587a输出人工现实内容。例如,显示器soc 530b包括解密块592a、解码器块594a、显示控制器596a和/或用于在显示器586a上输出人工现实内容的像素驱动器598a。类似地,显示器soc 530c可以包括用于显示器568b的显示控制器,以向用户的右眼587b输出人工现实内容。例如,显示器soc 530c包括解密592b、解码器594b、显示控制器596b和/或像素驱动器598b,用于生成和在显示器586b上输出人工现实内容。显示器568可以包括发光二极管(led)显示器、有机led(oled)、量子点led(qled)、电子纸(电子墨水)显示器、液晶显示器(lcd)或用于显示ar内容的其他类型的显示器。
105.外围设备136包括被配置为支持人工现实应用的soc 510a和510b。在该示例中,soc 510a(有时被称为“ar协同处理soc”)包括功能块,功能块包括安全处理器226、跟踪540、加密/解密550、显示处理器552、dma控制器553和接口554。跟踪540是提供眼睛跟踪542(“眼睛542”)、手跟踪544(“手544”)、深度跟踪546(“深度546”)和/或同时定位和映射(slam)548(“slam 548”)的功能块。例如,外围设备136可以从输出指示外围设备136的当前加速度的数据的一个或更多个加速度计(也称为惯性测量单元或“imu”)、输出指示外围设备136的位置的数据的gps传感器、输出指示外围设备136与各种对象的距离的数据的雷达或声纳、或提供外围设备136或物理环境内的其他对象的位置或取向的指示的其他传感器接收输入。在一些示例中,外围设备136还可以从一个或更多个图像捕获设备接收图像数据,所述图像捕获设备例如是摄像机、激光扫描仪、多普勒雷达扫描仪、深度扫描仪等,其被配置为输出表示物理环境的图像数据。基于所感测的数据和/或图像数据,跟踪块540确定例如外围设备136的参考系的当前姿势,并且根据当前姿势,将人工现实内容渲染到hmd 112。
106.加密/解密550对传送至hmd 112或安全服务器的输出数据进行加密,并对从hmd 112或安全服务器传送的输入数据进行解密。加密/解密550可以支持对称密钥加密,以使用会话密钥(例如,秘密对称密钥)来加密/解密数据。加密/解密550便于例如外围设备136和头戴式显示器112之间的安全通信。
107.显示处理器552包括一个或更多个处理器,例如视频处理单元、图形处理单元、编码器和/或解码器和/或其他,用于将人工现实内容渲染到hmd 112。
108.dma控制器553与接口554之间来往传输数据,并将数据存储在存储器514中。在接口554上接收的数据可以(例如,在报头中)包括通知dma控制器553在存储器415中在何处存
储接收的数据的信息。例如,dma控制器553可以访问表,该表将存储器中的特定位置与表面纹理的标识符相关联,使得当报头包括该标识符时,dma控制器553将伴随数据存储在存储器中的指定位置。dma控制器553包括存储信息(例如,子帧报头、当前帧号、超帧标识符、色彩空间转换矩阵系数、表面数据的起始和当前存储器地址等)和控制(例如中断控制、超帧命令等)的状态和控制(sc)寄存器,这些信息和控制用于处理超帧并将表面纹理数据存储在存储器514中的适当位置。
109.接口554包括一个或更多个接口,用于连接到ar协同处理soc 510a的功能块。作为一个示例,接口554可以包括外围组件互连快速(pcie)插槽。ar协同处理soc 510a可以使用接口554与soc 510b连接。ar协同处理soc 510a可以使用接口554与一个或更多个通信设备(例如,无线电发射机)连接,以便与其他设备(例如,hmd 112)进行通信。在所示示例中,接口554包括视频通信接口555a和数据通信接口556a。视频通信接口555a通信耦合到位于soc 510b内的视频通信接口555b。视频通信接口555a和555b被构造成传送利用消息的视频数据协议,该消息包括表示要被渲染以在显示设备(例如hmd 112的显示器586a和586b)上显示的表面的像素数据。在一些示例中,视频通信接口555a和555b实现由移动工业处理器接口(mipi)联盟指定的显示器串行接口(dsi)(有时被称为“mipi dsi”)。在一些示例中,视频通信接口555a和555b包括(a)当没有像素数据被传输时可以被置于低功率模式的接口,(b)具有消息结构,该消息结构一旦被定义就是严格的,以及(c)具有定义的传输时序。数据通信接口556a通信耦合到位于soc 510b内的数据通信接口556b。数据通信接口556a和556b被构造成传送数据,而不管数据的内容如何。在一些示例中,数据通信接口556a和556b实现外围组件互连快速(pcie)接口。
110.soc 510b(有时被称为“应用soc”)包括协同应用处理器560、应用处理器562、视频通信接口555b和数据通信接口556b。应用soc 510b渲染被发送到hmd 112以向用户显示的多个表面的表面纹理。在这个示例中,协同应用处理器560包括各种处理器,例如视觉处理单元(vpu)、图形处理单元(gpu)和/或中央处理单元(cpu)。应用处理器562可以包括用于执行一个或更多个人工现实应用的处理单元,以生成并向外围设备136的表面渲染例如虚拟用户界面和/或检测用户相对于外围设备136执行的手势。应用处理器562可以包括将表面纹理合成到超帧中的单元,该超帧经由视频通信接口555b被发送到ar中央处理soc 510a。
111.对于每个视频帧,应用soc 510b生成超帧,该超帧具有超帧报头以及用于将由头戴式显示器112渲染的每个表面纹理的子帧报头和子帧有效载荷。应用soc 510b递增作为超帧报头的一部分的计数器。在一些示例中,应用soc 510b产生仅具有在下一个视频帧中更新的表面纹理的表面纹理数据的超帧。在一些示例中,如果没有表面纹理要被更新,则应用soc 510b或者(a)发送与最后视频帧相同的超帧而不递增计数器,或者(b)发送没有任何子帧报头/有效载荷的超帧。应用soc 510b通过视频通信接口555b转发超帧。
112.如果计数器没有改变,则ar中央处理器soc 510a丢弃超帧。ar中央处理soc 510a使用dma控制器,(a)将超帧报头中的信息存储到存储器514中,并将子帧报头和子帧有效载荷存储到存储器514中。ar中央处理soc 510a(a)查找压缩状态,(b)压缩子帧有效载荷,以及(c)向无线电设备提供压缩的子帧有效载荷,以便传输到hmd 112。
113.图6是示出超帧600的示意图,超帧600包含原始纹理数据的子帧报头601a-601c(统称为“子帧报头601”)和相应的子帧有效载荷602a-602c(统称为“子帧有效载荷602”),
该超帧的结构符合视频通信接口的消息格式。子帧报头601在每个超帧的开头被放置在超帧报头700内,以便于在第一处理步骤中提取子帧报头601。超帧600具有定义的宽度(每行的字节数)和高度(行数)。超帧600的第一行包含超帧报头700。图7中示出了超帧报头700的示例。在图7所示的示例中,超帧报头700包括签名前缀码(signature prefix code)702、帧id(frame id)704、numheaders字段706、b2bidle字段708以及一个或更多个子帧报头(subframe header)601a至601n(统称为“子帧报头601”)。应用soc 510b可以定义任意数量的表面纹理(例如,预定义数量的子帧报头601和有效载荷602是静态的,等等)。然而,子帧600可以仅包括纹理总数中少量纹理的子帧报头601和子帧有效载荷602(例如,仅用于自上一视频帧以来已经改变的表面纹理等)。
114.签名前缀码702是指示有效帧的唯一签名。接收soc的dma控制器553(例如,ar协同处理soc 510a等)忽略超帧600,除非这个前缀匹配预定义的signature值。帧id 704是递增的帧号。除了dma控制器启用后的第一个超帧,该字段必须不同于上一个超帧的frame值,否则dma控制器忽略超帧600。签名前缀码702和帧id 704可以统称为“有效性字段”。numheaders字段706包含超帧600内的子帧有效载荷602的数量。b2bidle字段708包含超帧600内的子帧报头700和第一子帧有效载荷602a之间的空行或空闲行(在图6中被表示为“无效字节604a”)的数量。因为超帧600具有定义的长度,所以忽略帧末端的任何未使用的字节(在图6中被表示为“无效字节604c”)。
115.每个子帧报头601描述了相应子帧有效载荷602的特征。例如,子帧报头601可以包括子帧有效载荷602的长度(以像素等为单位)、存储为子帧有效载荷602的子帧表面纹理的尺寸、子帧数据格式和处理标签等。对子帧报头601进行解析以生成dma命令,这些命令处理(例如,检索、转换、在存储器中存储等)在超帧报头700之后的超帧600中被打包的相应子帧有效载荷602。将在下一视频帧中更新的每个表面纹理被包括在超帧报头700中,作为子帧报头601和子帧有效载荷602。子帧报头601包含用于在目的地处理子帧有效载荷602的参数。子帧有效载荷602包括要更新的表面纹理的像素数据。图7中示出了子帧报头601的示例。在图7所示的示例中,子帧报头包括id字段710、大小(size)字段712、b2b字段714、in_format字段716、out_format字段718、宽度(width)字段720、高度(height)字段722、rowpad字段724和save_state字段726。
116.id字段710包含相应表面的句柄id(handle id)。大小字段712包含相应子帧602中的表面数据有效载荷的大小(例如,以字节为单位)。b2b字段714包含超帧中的到下一子帧有效载荷602的空闲(例如,空)行的数量。因为每个子帧在超帧行的开头处开始,所以b2b字段714指示在包含相应子帧的最后的像素数据的超帧行之后要跳过多少超帧行。
117.in_format字段716包含相应子帧有效载荷602的像素输入格式(例如,x8(原始数据,单通道单色)、rgba8888(具有要提取的阿尔法(alpha)通道)、或rgbx8888等)。out_format字段718包含像素输出格式(例如,x8(原始数据,单通道单色)、半平面yuv 4:2:0(使用csc加缩减器(downscaler))、半平面grb 4:2:0(绕过csc,使用缩减器)、rgba(绕过csc和缩减器,将所有数据写入一个地址区域)、rgb 4:4:4(将r、g、b写入平面存储器区域)、yuv 4:4:4(使用csc,将y、u、v写入平面存储器区域)等),以用于存储相应的子帧有效载荷602(例如,通过接收soc的dma控制器)。根据out_format字段,dma控制器可以将包含在子帧有效载荷602中的表面像素数据写入多个可能的缓冲区。对于这些地址区中的每一个,都有一
个start_addr控制寄存器和一个cur_addr状态寄存器。当(在超帧处理开始时)读取超帧的子帧报头数据时,start_addr寄存器被捕获。当数据被写入缓冲区时,cur_addr状态寄存器会用纹理像素数据被写入的当前地址进行更新。子帧像素数据的具体处理取决于输入格式和/或输出格式。例如,在rgba子帧(由in_format字段716指定)的情况和split_alpha_channel控制位被设置为1的情况下,子帧有效载荷602内的每个像素数据的低位部分(例如,字节)中的阿尔法通道被写入另一个指定的存储器区域(alpha_start_addr)。对于rgba输出格式(out_format字段718),所有像素数据(包括alpha字节)都被写入rgba存储器区域,因为这是视频编码器的预期存储格式。rgba输出格式是32位打包像素格式,包含red、green、blue和alpha通道(各8位)。alpha通道是用于将重叠表面混合到显示器上的像素通道,
118.宽度字段720包含表面的宽度(例如,以像素为单位)。高度字段722包括表面的高度(例如,以像素为单位)。
119.rowpad字段724包含子帧有效载荷602的最后一行末尾的将被忽略的字节(在图6中表示为“无效字节604b”)的数量。这确保了超帧600中的每行像素与固定边界对齐(例如,每行16个像素宽的数据)。如果子帧宽度不是该固定边界的倍数,则在存储器中每个输出像素行的末端插入填充,使得每行包含固定边界的倍数。例如,如果子帧数据的最后一行具有14个像素,并且固定边界被定义为16个像素,则rowpad将是2个像素。在一些示例中,对于打包的缓冲器(y,uv,alpha,red,green,blue),每个输出像素行是16字节的倍数。作为另一个示例,对于32位rgba格式,每个输出像素行是64字节的倍数。
120.save_state字段726包含下游处理使用的通过状态数据。
121.图8是ar协同处理soc 510a的dma控制器553用来将经由视频通信接口接收的超帧600的子帧数据中的表面纹理移入存储器的数据路径的框图。ar协同处理soc 510a的视频通信接口555a传统上通过物理接口(例如,2
×
4通道2.5gbps/通道d-phy接口)从应用soc 510b接收视频或表面帧。帧以视频模式发送。替代地,在一些示例中,以命令模式发送帧。视频通信接口像素格式被设置为静态模式(例如,每像素16位rgb565模式),使得存储在应用soc 510b的存储器中的表面纹理数据被读取并通过接口传输,而不被改变或省略。
122.接收的视频通信数据通过视频通信接口555a的视频通信接口端口输入到dma控制器553。在一些示例中,视频通信接口555a被配置为输出2个像素/周期,其中每个16位像素被提取为rgb565像素。在这样的示例中,使用rgb565像素格式,使得存储器区域中的所有数据被传输而没有修改或省略。例如,一些其他已知的格式或者移除阿尔法通道所在的数据部分,或者需要在应用soc的510b显示处理流水线内进行一些图像处理,这将改变从存储器应用soc 510b读取的数据。
123.在一些示例中,视频通信接口555a具有两个视频接口数据端口(为清晰起见,在本文中有时被称为“vid_p0”和“vid_p1”)。在这样的示例中,每个视频接口数据端口(例如,vid_p0和vid_p1等)是由三个12位通道(例如,red通道、green通道和blue通道)组成的36位接口。例如,如图9a中的示例所示,red通道可以包含位[35:31],green通道可以包含位[23:18],并且blue通道可以包含位[11:7],其中位[30:24]、[17:12]和[6:0]是未连接的。
[0124]
在一些示例中,接收后,dma控制器553将来自视频接口数据端口(例如,vid_p0和vid_p1等)的数据连结成完整的32位字。两个连续的16位输入样本用于表示子帧中的实际
rgba像素(例如,红/绿/蓝/阿尔法,每通道8位)。如图9b中的示例所示,dma控制器然后将该32位值重新映射为报头数据(例如,超帧报头700)或者作为子帧表面有效载荷数据的一部分的像素数据(例如,作为子帧表面有效载荷的一部分的rgba数据等)(例如,根据超帧报头中提供的信息)。例如,当32位值被重新映射为报头数据时,第一个字节(b0)是位[7:0],第二个字节(b1)是位[15:8],第三个字节(b2)是位[23:16],第四个字节(b3)是位[31:24]。作为另一个示例,当32位值被重新映射为作为子帧表面有效载荷的一部分的rgba数据时,alpha通道是位[7:0],blue通道是位[15:8],green通道是位[23:16],并且red通道是位[31:24]。
[0125]
dma控制器553处理从视频通信接口555a的接收(rx)端口接收的数据,然后将其写入存储器(例如,本地存储器(lmem)或动态随机存取存储器(dram)等)。例如,对于接收的表面纹理,dma控制器553可以(a)将表面纹理从rgba8888格式转换为yuv 4:4:4格式,(b)将yuv 4:4:4像素降采样为yuv 4:2:0像素,并将所有计算的yuv 4:2:0像素写入指定的起始存储器,以及(c)从输入rgba像素中提取并打包阿尔法通道样本,并将打包的阿尔法数据写入另一个指定的起始存储器地址。为此,dma控制器553包括处理和存储接收到的超帧的电路。在所示的示例中,dma控制器包括状态机(sm)804、状态和控制寄存器(scr)802、颜色转换块806、色度二次采样块808和存储器写块810。sm 804、scr 802、颜色转换块806、色度二次采样块808和存储器写块810可以在一个或更多个电路中实现,包括集成电路、存储器、现场可编程门阵列(fpga)和/或专用集成电路(asic)等。
[0126]
scr 802指示dma控制器553的当前状态,并存储超帧报头700(包括子帧报头601),以便于检索和处理子帧有效载荷602。基于包含在超帧报头700和子帧报头601中的参数,scr 802用sm 804用来处理超帧600的命令值填充寄存器。例如,每个子帧表面有效载荷的起始存储器行都是从该报头数据计算的。当每个子帧有效载荷完成时,状态计数递增。超帧中要由dma控制器553处理的剩余有效载荷的计数可在scr 802中获得。
[0127]
sm 804使用命令值将超帧600的每一行解析为其组成部分。例如,sm 804可基于该命令值将一行视为报头数据或像素数据,忽略一行的某些部分(例如,由b2b字段714定义的部分等),或者跳过整行(例如,由b2bidle字段708指定的行等),等等。在超帧处理开始时,sm 804忽略来自视频接口数据端口的视频接口数据,直到输入帧的第一个有效行。来自该第一个有效行的数据由sm 804存储在scr 802的报头状态寄存器中,并且可通过控制和状态寄存器(csr)读取来访问。如果开始的字节(例如,对应于签名前缀码702的前4个字节)中的值与存储在scr 802中的预期签名不匹配,则sm 804不处理该超帧,并等待下一个超帧的开始。以这种方式,sm 804可以有效地处置无效的超帧。在一些示例中,dma控制器553经由在第一超帧之前发送的设置帧来获得预期签名。在一些这样的示例中,使用数据通信接口556b传送设置帧。另外,如果接收到的超帧报头700中的frame号(例如,帧id 704中的值)与最后处理的超帧的frame号相同,则sm 804忽略当前超帧。例如,这种情况表明应用soc 510b在超帧被其视频通信接口dma控制器读取之前没有及时更新该超帧。在解析数据流之后,sm 804从子帧有效载荷602重构表面纹理。
[0128]
基于scr 802的内容,sm 804可使颜色转换块806将重建的表面纹理从一种像素格式转换为另一种像素格式。在这样的示例中,颜色转换块806将像素数据从输入像素格式(例如,由存储在scr 802中的in_format字段808中的值指定)转换成输出像素格式(例如,
由存储在scr 802中的out_format字段810中的值指定)。例如,在存储之前,像素数据可以是从rgbx8888像素到yuv 4:4:4像素的转换的色彩空间。用于从rgb到yuv的色彩空间转换(csc)的转换矩阵是可编程的,例如,具有9个16位系数(都具有3.13的精度,以支持1个符号位和2个裕量幅度位)和3个偏移值(具有11.5的精度)。转换矩阵可以被实现为3个并行乘法累加器(mac)函数的3级流水线。第一级使用offset值作为加法操作数,而其他两级使用前一级的结果作为加法操作数。
[0129]
在一些示例中,在csc流水线之后,sm 804使色度二次采样块808执行例如从yuv 4:4:4到yuv 4:2:0的色度二次采样(有时被称为“uv抽取”)。
[0130]
sm 804使存储器写块810根据相应子帧报头的id字段802中的表面句柄id将重建的表面纹理写入存储器中的适当位置。表面的句柄id可以由设置帧建立。存储器写块810为写突发(write bursts)打包数据,驱动通信接口总线,其中数据被写到存储器514的在写地址通道总线上设置的存储器地址。存储器写块810还生成具有地址和突发长度的写突发请求。
[0131]
图10是生成和传输图6的超帧600的示例方法的流程图。最初,应用soc 510b生成并向ar协同处理soc 510a传输设置帧(块1002)。在一些示例中,设置帧经由数据通信接口556b发送。设置帧包括处理和显示表面纹理的信息,包括例如表面纹理的数量、表面纹理的句柄id、存储器中存储表面纹理的位置、和/或帧签名等。应用soc 510b确定在下一视频帧中要改变哪些表面纹理(块1004)。在一些示例中,在每个视频帧中只有一部分表面纹理被更新。例如,一个或更多个表面纹理可以是静态的,并且从一个视频帧到另一个视频帧很少改变(有时被称为“静态图像”),而一个或更多个表面纹理可以是动画的,并且从一个视频帧到另一个视频帧频繁改变(有时被称为“动态图像”或“动画图像”)。在一些示例中,表面纹理被分类为静态图像或动态图像,其中动态图像在下一个视频帧中改变。
[0132]
应用soc 510b准备具有将在下一视频帧中改变的表面纹理的子帧有效载荷(块1006)。例如,应用soc 510b可以填充表面纹理以符合超帧宽度。应用soc 510b生成对应于所生成的子帧有效载荷的子帧报头(例如,确定图7的字段710至726的值)(块1008)。子帧报头包括与子帧有效载荷中的表面纹理相关联的参数。应用soc 510b然后生成超帧报头,超帧报头包含所生成的子帧报头(例如,确定图7的字段702到708的值)(块1010)。然后,应用soc 510b通过视频通信接口555b经由视频帧传输超帧(块1012)。在一些示例中,因为视频通信接口555b可以传输其中应用soc 510b存储要周期性(例如,每秒60次等)传输的超帧的存储器的内容,应用soc 510b不更新帧号(例如,在超帧报头700的frame字段704中),直到超帧的内容完成。因此,如果超帧不完整,则由ar协同处理soc 510a丢弃该超帧。
[0133]
图11是处理超帧以检索表面纹理的示例方法的流程图。dma控制器553经由视频通信接口555a接收包含表面纹理数据的超帧(块1102)。dma控制器553检查超帧的开始的字节(例如,前四个字节等)(块1104)。当超帧的开始的字节与预期签名(例如,由设置帧提供的签名)不匹配时(在块1105为否),dma控制器553丢弃该超帧(块1106)。当超帧的开始的字节与预期签名匹配时(在块1105为是),dma控制器553继续解析超帧报头(块1108)。超帧报头包括帧计数器(例如,在超帧报头700的frame字段704中)。当帧计数器没有从先前接收的帧计数器改变时(在块1109为否),dma控制器553丢弃该超帧(块1106)。当帧计数器已经从先前接收的帧计数器改变时(在块1109为是),dma控制器553将子帧报头存储在scr 802中(块
1110)。dma控制器553基于子帧报头和超帧报头来填充scr 802(块1112)。例如,dma控制器553确定子帧有效载荷在超帧内的起始位置。基于scr 802中的命令,dma控制器553解析超帧以从子帧有效载荷接收表面纹理(块1114)。在一些示例中,当输入像素格式(例如,由子帧报头601的输入字段716指定)和输出像素格式(例如,由子帧报头601的输出字段718指定)不匹配时,dma控制器553通过将表面纹理数据从一种像素格式转换为另一种像素格式来对表面纹理执行颜色转换(块1116)。在一些示例中,dma控制器553对表面纹理执行色度二次采样(块1118)。然后,dma控制器553将表面纹理写入存储器(块1120)。随后,dma控制器553使用接口584将来自存储器的表面纹理提供给通信设备(例如,无线电发射机),以将来自存储器的表面纹理数据直接或间接地(例如,经由ar中央处理soc 530a)传输到显示设备,以进行渲染以供显示。
[0134]
如本文通过各种示例所描述的,本公开的技术可包括人工现实系统或结合人工现实系统来实现。如所描述的,人工现实是在呈现给用户之前已经以某种方式调整的现实的形式,其可包括例如虚拟现实(vr)、增强现实(ar)、混合现实(mr)、混杂现实、或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或与捕获的内容(例如,真实世界的照片)相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈、或其某种组合,且其中任何一个都可以在单个通道中或在多个通道中被呈现(例如向观看者产生三维效果的立体视频)。另外,在一些实施例中,人工现实可以与应用、产品、附件、服务或其某种组合相关联,这些应用、产品、附件、服务或其某种组合例如用于在人工现实中创建内容和/或在人工现实中被使用(例如,在人工现实中执行活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主计算机系统的头戴式设备(hmd)、独立的hmd、移动设备或计算系统、或者能够向一个或更多个观看者提供人工现实内容的任何其他硬件平台。
[0135]
本公开中描述的技术可以至少部分地以硬件、软件、固件或其任何组合实现。例如,所述技术的各个方面可在一个或更多个处理器内实现,该处理器包括一个或更多个微处理器、dsp、专用集成电路(asic)、现场可编程门阵列(fpga)、或任何其他等效的集成或离散逻辑电路,以及此类部件的任何组合。术语“处理器”或“处理电路”一般可指前述逻辑电路中的任一种(单独或与其他逻辑电路组合),或任何其他等效电路。包括硬件的控制单元也可执行本公开的一种或更多种技术。
[0136]
此类硬件、软件和固件可在相同的设备内或在单独的设备内实现以支持本公开中描述的各种操作和功能。此外,所述单元、模块或部件中的任一个可一起或单独地实现为离散的但可互操作的逻辑设备。将不同特征描述为模块或单元旨在突出不同的功能方面,并不一定意味着此类模块或单元必须由单独的硬件或软件部件实现。相反,与一个或更多个模块或单元相关联的功能可以由单独的硬件或软件部件执行,或者集成在公共或单独的硬件或软件部件内。
[0137]
在本公开中描述的技术还可在包含指令的计算机可读介质(例如计算机可读存储介质)中体现或编码。嵌入或编码在计算机可读存储介质中的指令可以例如在执行指令时致使可编程处理器或其他处理器执行方法。计算机可读存储介质可包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电子可擦除可编程只读存储器(eeprom)、闪存存储器、硬盘、cd-rom、软盘、盒式磁带、磁介质、
光学介质或其他计算机可读介质。