在人工现实环境中生成和修改手的表示的制作方法

文档序号:33107257发布日期:2023-02-01 01:37阅读:42来源:国知局
在人工现实环境中生成和修改手的表示的制作方法

1.本公开总体上涉及增强现实、虚拟现实、混合现实或混杂现实环境。
2.背景
3.人工现实是一种在呈现给用户之前已经以某种方式进行了调整的现实形式,其可以包括例如虚拟现实(vr)、增强现实(ar)、混合现实(mixed reality,mr)、混杂现实(hybrid reality)或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或与捕获的内容(例如,真实世界的照片)相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈、或其某种组合,且其中任何一个都可以在单个通道中或在多个通道中被呈现(例如向观看者产生三维效果的立体视频)。人工现实可以与应用、产品、附件、服务或它们的某种组合相关联,这些应用、产品、附件、服务或它们的某种组合例如用于在人工现实中创建内容和/或在人工现实中使用(例如,在人工现实中执行活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主机计算机系统的头戴式显示器、独立的头戴式显示器、移动设备或计算系统、或者能够向一个或更多个观看者提供人工现实内容的任何其他硬件平台。
4.移动计算设备(例如智能手机、平板计算机或膝上型计算机)可以包括用于确定它的位置、方向或定向的功能,例如gps接收器、罗盘、陀螺仪或加速度计。这种设备还可以包括用于无线通信(例如蓝牙通信、近场通信(nfc)、或红外(ir)通信、或与无线局域网(wlan)或蜂窝电话网络的通信)的功能。这种设备还可以包括一个或更多个相机、扫描仪、触摸屏、麦克风或扬声器。移动计算设备还可以执行软件应用,例如游戏、web浏览器或社交网络应用。使用社交网络应用,用户可以与他们的社交网络中的其他用户关连(connect)、通信和分享信息。
5.特定实施例的概述
6.所公开的方法提供了用于通过生成和定位可表示用户手的一个或更多个表面来在ar/vr/mr环境中生成和修改的用户手的表示的技术。在特定实施例中,可以基于具有确定姿势的手的三维模型来生成表示手的表面,其中姿势是基于由与人工现实系统相关联的一个或更多个相机捕获的接收图像来确定的。表示手的二维表面可以表示如从用户的视点观看的手。可以将表示手的二维表面和一个或更多个虚拟对象表示定位在三维空间中。该定位还可以基于人工现实系统的用户的视点。所公开的方法还包括确定表示手的二维表面的一部分从三维空间中的第二视点是可见的,以及生成输出图像,其中与二维表面的可见部分相对应的输出图像的一组图像像素被配置为使得显示器关闭一组对应的显示像素。在这样做时,计算系统可以准确地预测并向hmd的用户生成沉浸式人工现实环境的视图。
7.所公开的方法还提供用于通过生成和定位可表示用户手的阴影(shadow)的一个或更多个表面来在ar/vr/mr环境中生成和修改用户手的阴影的表示的技术。在特定实施例中,计算系统可以基于确定的光源的光方向和手的三维模型来生成表示手的阴影的第二二维表面。表示手的阴影的二维表面可以表示如从用户的视点观看的手的阴影。可以将表示手的阴影的二维表面定位在三维空间中。该定位还可以基于人工现实系统的用户的视点。
所公开的方法还包括确定表示手的阴影的二维表面的一部分从三维空间中的第二视点是可见的,以及生成输出图像,其中与二维表面的可见部分相对应的输出图像的一组图像像素被配置为使得显示器关闭一组对应的显示像素。
8.在特定实施例中,所生成的图像可以由与设备(例如,膝上型计算机、手机、台式计算机、可穿戴设备)相关联的计算系统的一个或更多个部件(例如,cpu、gpu等)渲染。在特定实施例中,该设备与hmd上的计算系统通信,但可能以其它方式与hmd物理分离。作为示例而非限制,该设备可以是与hmd有线连接或与hmd无线通信的膝上型计算机设备。作为另一示例而非限制,该设备可以是与hmd有线连接或与hmd无线通信的可穿戴设备(例如,绑在手腕上的设备)、手持式设备(例如,电话)或某种其他合适的设备(例如,膝上型计算机、平板计算机、台式计算机)。在特定实施例中,该设备可以将该初始视图发送到hmd以用于显示。在特定实施例中,生成初始视图的设备的部件还可以生成表示该视图的感兴趣对象的一个或更多个表面。作为另一示例而非限制,hmd的机载计算系统在其从单独的计算系统(例如,从可穿戴设备、手持式设备或膝上型计算机设备的cpu或gpu)接收到初始视图之后,可以重新采样并调整一个或更多个表面的姿势,以考虑到在渲染初始图像时可能发生的hmd和/或感兴趣对象的移动。
9.在特定实施例中,图形应用(例如,游戏、地图、内容提供应用等)可以构建场景图,该场景图与给定的视图位置和时间点一起用于生成图元以在gpu上渲染。场景图可以定义场景中对象之间的逻辑和/或空间关系。在特定实施例中,显示引擎还可以生成并存储场景图,该场景图是完整应用场景图的简化形式。简化的场景图可用于指定表面之间的逻辑和/或空间关系(例如,由显示引擎渲染的图元,诸如在3d空间中定义的四边形或轮廓,其具有基于由应用渲染的主帧生成的相应纹理)。存储场景图允许显示引擎将场景渲染到多个显示帧,针对当前视点(例如,头部定位)、当前对象定位(例如,它们可能相对于彼此移动)和每个显示帧改变的其他因素来调整场景图中的每个元素。此外,基于场景图,显示引擎还可以针对由显示子系统引入的几何和颜色失真进行调整,然后将对象合成在一起以生成帧。存储场景图允许显示引擎以期望的高帧速率近似完成完整渲染的结果,而实际上以明显更低的速率运行gpu。
10.本文公开的实施例仅仅是示例,并且本公开的范围不限于它们。特定实施例可以包括本文公开的实施例的部件、要素、特征、功能、操作或步骤中的全部、一些,或不包括这些部件、要素、特征、功能、操作或步骤。在涉及方法、存储介质、系统和计算机程序产品的所附权利要求中具体公开了根据本发明的实施例,其中在一个权利要求类别(例如方法)中提到的任何特征,也可以在另一个权利要求类别(例如系统)中被要求保护。在所附权利要求中的从属性或往回引用仅为了形式原因而被选择。然而,也可以要求保护由对任何先前权利要求的有意往回引用(特别是多个从属关系)而产生的任何主题,从而权利要求及其特征的任何组合被公开并且可以被要求保护,而不管所附权利要求中选择的从属关系如何。可以被要求保护的主题不仅包括如在所附权利要求中阐述的特征的组合,而且还包括在权利要求中的特征的任何其他组合,其中,在权利要求中提到的每个特征可以与在权利要求中的任何其他特征或其他特征的组合相结合。此外,本文描述或描绘的实施例和特征中的任一个可以在单独的权利要求中和/或以与本文描述或描绘的任何实施例或特征的任何组合或以与所附权利要求的任何特征的任何组合被要求保护。
11.附图简述
12.图1a示出了示例人工现实系统和用户。
13.图1b示出了示例增强现实系统。
14.图2a示出了体验人工现实环境的ar hmd的用户。
15.图2b示出了由与人工现实系统相关联的一个或更多个相机捕获的真实环境的图像。
16.图3a示出了基于图像中检测到的手的实例输出的边界框。
17.图3b示出了根据确定的光方向投影到虚拟对象上的手的三维模型。
18.图3c示出了在人工现实环境中表示用户手的生成的表面。
19.图3d示出了在人工现实环境中表示用户手的阴影的生成的表面。
20.图4示出了人工现实环境的场景的视点的输出图像。
21.图5示出了用于生成包括手的表示的至少一部分的人工现实环境的输出图像的示例方法。
22.图6示出了显示引擎的系统图。
23.图7示出了与社交网络系统相关联的示例网络环境。
24.图8示出了示例计算机系统。
25.示例实施例的描述
26.图1a示出了示例人工现实系统100和用户102。在特定实施例中,人工现实系统100可以包括头戴式装置(headset)104、控制器106和计算系统108。用户102可以佩戴头戴式装置104,该头戴式装置104可以向用户102显示视觉人工现实内容。hmd 104可以包括可以向用户102提供音频人工现实内容的音频设备。头戴式装置104可以包括眼睛跟踪系统,用于确定用户102的辐辏距离(vergence distance)。辐辏距离可以是从用户眼睛到用户眼睛汇聚的对象(例如,现实世界对象或虚拟空间中的虚拟对象)的距离。头戴式装置104可以被称为头戴式显示器(hmd)。一个或更多个控制器106可以与人工现实系统100配对。在特定实施例中,一个或更多个控制器106可配备有用于人工现实系统100的至少一个惯性测量单元(imu)和红外(ir)发光二极管(led),以估计控制器的姿势和/或跟踪控制器的位置,使得用户102可经由控制器106执行某些功能。在特定实施例中,一个或更多个控制器106可以配备有一个或更多个被分配以由计算系统108跟踪的可跟踪标记。一个或更多个控制器106可以包括触控板(trackpad)和一个或更多个按钮。一个或更多个控制器106可以接收来自用户102的输入,并将该输入中继到计算系统108。一个或更多个控制器106还可以向用户102提供触觉反馈。计算系统108可以通过电缆或无线连接而连接到头戴式装置104和一个或更多个控制器106。一个或更多个控制器106可以包括本文未明确示出的硬件、软件和/或固件的组合,以便避免模糊本公开的其他方面。
27.人工现实系统100还可以包括计算机单元108。计算机单元可以是与hmd物理分离的独立单元,或者其可以与hmd集成。在计算机108是单独单元的实施例中,它可以经由无线或有线链路通信地耦合到hmd。计算机108可以是诸如台式计算机或膝上型计算机的高性能设备,或者是诸如移动电话的资源有限的设备。高性能设备可以具有专用gpu和大容量或恒定电源。另一方面,资源有限的设备可能不具有gpu,并且可能具有有限的电池容量。因此,可由人工现实系统100实际使用的算法取决于其计算机单元108的能力。
28.图1b示出了示例增强现实系统100b。增强现实系统100b可以包括增强现实头戴式显示器(ar hmd)110(例如,眼镜),其包括框架112、一个或更多个显示器114和计算系统120。显示器114可以是透明的或半透明的,允许佩戴ar hmd 110的用户通过显示器114观看以看到真实世界,以及同时向用户显示视觉人工现实内容。ar hmd 110可以包括可以向用户提供音频人工现实内容的音频设备。ar hmd 110可以包括一个或更多个能够捕获环境的图像和视频的相机。ar hmd 110可以包括眼睛跟踪系统,以跟踪佩戴ar hmd 110的用户的辐辏运动。除了在整个本技术中所指定的情况以外,“hmd”的使用可以用于指代hmd 104(其可遮挡用户对真实环境的视线)或ar hmd 110(其可允许用户看到真实世界并同时向用户显示视觉人工现实内容)。
29.增强现实系统100b还可以包括控制器,该控制器包括触控板和一个或更多个按钮。控制器可以接收来自用户的输入,并将输入中继到计算系统120。控制器还可以向用户提供触觉反馈。计算系统120可以通过电缆或无线连接而连接到ar hmd 110和控制器。计算系统120可以控制ar hmd 110和控制器来向用户提供增强现实内容并从用户接收输入。计算系统120可以是独立的主机计算机系统、与ar hmd 110集成的机载计算机系统、移动设备或能够向用户提供人工现实内容并从用户接收输入的任何其他硬件平台。
30.hmd可以具有面向外部的相机,例如图1a中所示的两个面向前的相机105a和105b。虽然仅示出了两个面向前的相机105a-105b,但hmd可以具有面向任何方向的任意数量的相机(例如,用于捕获天花板或房间照明的面向上的相机、用于捕获用户面部和/或身体的一部分的面向下的相机、用于捕获用户身后内容的一部分的面向后的相机、和/或用于捕获用户眼睛注视以用于眼睛跟踪目的的内部相机)。面向外部的相机105a和105b被配置为捕获用户周围的物理环境,并且可以连续地这样做以生成帧序列(例如,作为视频)。
31.在特定实施例中,可能需要hmd在环境中的姿势(例如,位置和取向)。例如,为了在用户102在虚拟或增强现实环境中四处移动时为该用户102渲染适当的显示,系统100将需要在任何时刻确定他的位置和取向。基于hmd的姿势,系统100可以进一步确定相机105a和105b中的任一者或用户眼睛中的任一者的视点。在特定实施例中,hmd可以配备有惯性测量单元(“imu”)。由imu生成的数据以及由面向外部的相机105a-105b捕获的立体图像允许系统100使用例如slam(即时定位和地图构建)或其他合适的技术来计算hmd的姿势。
32.自其存在以来,人工现实(例如,增强现实(ar)、虚拟现实(vr)、混合现实(mr))技术一直被响应于用户视角的突然变化和/或显示给用户的ar/vr/mr视图的突然变化而渲染对象的ar/vr/mr表示时的延迟问题所困扰。例如,当观看场景时,用户可能突然需要能够移动他们的头部,并且渲染的图像可能需要通过调整呈现给用户的一个或更多个虚拟表示的视图来立即响应。一项特定的挑战是准确地渲染和显示人工现实设备的用户的一个或更多个手。用户可能用他们的手做频繁的细微的移动,这些移作可能很小,但是零星的,并且难以(如果不是不可能的话)预测。此外,需要准确地渲染和显示对应于用户的一个或更多个手的阴影。这些阴影可以产生于真实环境中的真实光源(例如,太阳或灯),或者产生于来自人工现实环境中的一个或更多个虚拟对象的虚拟光源(例如,虚拟灯或虚拟蜡烛)。
33.此外,手部移动可能发生得很快,这要求人工现实环境的渲染视图被迅速修改以考虑到所发生的视角变化。如果这做得不够快,由此产生的延迟可能会导致用户体验到感觉失调(sensory dissonance),从而导致虚拟现实晕动症或不适,或者至少会破坏体验的
沉浸式本质。例如,突然的移动可能会导致被渲染和不正确地显示在真实对象上的虚拟内容。此外,与真实或人工环境中的许多真实对象不同,用户的手是高度动态的,并且频繁地与真实环境中的虚拟对象交互。在没有对这些手部移动或视角变化进行适当的检测和调整的情况下,这些虚拟对象可能被不适当地渲染在比虚拟对象更靠近用户的一个或更多个手上,导致不太沉浸式的体验。这对于用户的手特别重要,因为人工现实系统的用户在他们与人工现实环境中的对象交互时可能频繁地看着他们的手。结果,用户可能超感知到(be hyperaware of)关于用户手的视角的变化、延迟和不适当渲染的虚拟对象。因此,为了适当地解决用户对ar沉浸感的期望,落在用户手后面的虚拟对象必须被遮挡和/或与其周围的真实对象融合。未能这样做会破坏ar的沉浸感和对虚拟内容深度的感知。
34.在渲染用户的手时所面临的问题的一个解决方案涉及生成和重新采样“表面”。表面可以是由显示引擎渲染的一个或更多个图元,例如在3d空间中定义的四边形或轮廓,其具有基于由应用渲染的主帧生成的相应纹理。在特定实施例中,一个或更多个表面可以表示人工现实环境中对象的特定视图,其中表面对应于一个或更多个对象,这些对象由于视角的变化,预期将作为一个单元一起移动/平移、倾斜、缩放、扭曲或以其他方式改变外观。该方法可以允许响应于用户的头部移动和/或对象的一个或更多个移动来调整视图的有效快捷方式,并且可以通过以较低的帧速率(例如,60hz,或每1/60秒一次)渲染和使用表面来调整或内插视图以考虑用户手的快速移动而显著降低所需的处理能力,从而确保视图更新得足够快以充分降低延迟。这可以进一步导致计算资源的节约,这对于使用足够紧凑以容纳在hmd(特别是具有小形状因子的ar hmd)内的不太强大的部件的ar系统可能是重要的。可替代地,计算系统可以以与hmd的显示速率匹配的速率(例如,200hz,每1/200秒一次)渲染表示手或阴影的表面。这防止用户感知到延迟,从而避免或充分降低感觉失调。在2019年9月27日提交的第16/586,590号美国专利申请中公开了用于在增强现实或虚拟现实环境中生成和修改对象的表示的方法,该美国专利申请通过引用而并入。
35.在高水平上,本文公开的非限制性实施例允许与人工现实系统相关联的计算系统接收至少包括用户的手的真实环境的一个或更多个图像并确定手的姿势。计算系统可以基于用户的视点生成表示手的二维表面,并将二维表面和一个或更多个虚拟对象定位在三维空间(例如人工现实环境)中。计算系统还可以确定二维表面的至少一部分从第二视点(例如,相对于第一视点,由手、用户头部的一个或更多个移动、人工现实环境中的变化等产生的第二视点)的可见性。计算系统可以生成输出图像,其中输出图像的对应于二维表面的可见部分的一组图像像素被配置为使得显示器关闭一组对应的显示像素。
36.另外的实施例允许与人工现实系统相关联的计算系统生成表示手的阴影的第二生成二维表面。手的阴影在人工现实环境中显示时提供了许多与手相同的挑战,并且因此必须以非常小的延迟生成,以便产生逼真的、沉浸式的体验。当用传统的人工现实技术显示用户的真实手时,由于无法渲染准确的阴影(尤其是投影在用户可能与之交互的附近虚拟对象上的阴影),手通常看起来不自然。在特定实施例中,计算系统可以基于光源的光方向和手的三维模型来生成表示手的阴影的二维表面。
37.实施例可以包括人工现实系统或结合人工现实系统来实现。在特定实施例中,渲染人工显示环境以及生成和修改其表面所涉及的处理任务可以在两个或更多个计算系统之间进行划分。作为示例而非限制,表示手、真实对象等的一个或更多个表面可以由第一计
算系统(例如,膝上型计算机、手机、台式计算机、可穿戴设备)生成。除了纹理、颜色和透明度信息之外,表面可能还包括关于它们在人工现实环境中的位置的信息。这些表面可以传递给第二计算系统(例如,hmd上的机载计算系统)。hmd可以基于与表面相关联的信息(例如,手的移动)并基于佩戴hmd的用户的当前视角(例如,如由hmd的位置和取向确定),扭曲在视图内的表面。用户视角的任何变化(其可能由于例如(1)用户的轻微头部运动和(2)人工现实环境中的手或其他对象的移动而发生)(这可能以百分之一秒的量级发生)可以由接收的图像数据和hmd上的传感器跟踪,并通过重新采样视图中的表面以渲染时间调整的视点来说明。渲染时间调整的视点可以包括确定表示手的表面的一部分从三维空间中的第二视点是可见的。由于视点的调整,表面在被重新采样时可能会平移/移动、倾斜、缩放、扭曲或以其他方式改变外观。由于视图不是从头重新渲染的,因此可以相对快速地(例如,以200hz)修改视图。在特定实施例中,当与第二计算系统相比时,第一计算系统可能相对强大,因为第二计算系统(例如,hmd)可能具有有限的系统资源,该系统资源在不会导致对用户舒适性而言太大的重量、尺寸和/或热量的情况下可能不会明显增加。
38.图2a示出了体验人工现实环境的ar hmd的用户。当用户102在整个人工现实环境200中移动时,用户可以与真实对象和虚拟对象(例如虚拟桌210)交互。在特定实施例中,与人工现实系统相关联的计算系统可以接收真实环境的图像。图2b示出了由与人工现实系统相关联的一个或更多个相机捕获的真实环境的图像。图像220可以由与人工现实系统相关联的一个或更多个相机(例如由用户佩戴的hmd上的相机105a-105b)捕获。在特定实施例中,由用户佩戴的相机连接到头戴式显示器。图像220可以包括用户的一个或更多个手215的至少一部分。在特定实施例中,图像可以是较低分辨率和帧速率的单目图像(例如,640x640单色图像,以20hz在左相机和右相机之间交替)。
39.在特定实施例中,计算系统可以基于图像220确定手215的姿势。在特定实施例中,手215的姿势可以基于捕获图像220时用户的视点或相机的姿势。计算系统还可以基于图像确定与手相关联的一个或更多个运动或平移向量(例如,表示手的当前运动、速度、加速度等的向量)。使用这些向量,计算系统可以基于在捕获图像时手的移动、速度、加速度等来预测未来的手姿势或阴影姿势。在特定实施例中,手215的姿势可以基于从图像确定的一个或更多个关键点特征。关键点特征可以通过使用例如机器学习模型或任何合适的图像分割技术来确定。关键点特征是指对象(例如,手)的独特特征,这些特征相对于缩放、旋转、仿射失真、视点、噪声或照明的变化保持相对不变。相对于手,关键点特征可以包括(例如但不限于)手指、指尖、关节、手掌或任何其他感兴趣的结构。在特定实施例中,每个关键点可以表示为二维坐标,并且该组关键点可以表示为坐标的阵列或向量。尽管描述了检测到的人和分割信息的特定数据表示,但是本公开考虑了这种信息的任何合适的数据表示。在特定实施例中,计算系统可以基于跟踪算法确定真实环境内的关键点特征的坐标点。由设备收集的每个关键点特征可以与在捕获时关键点特征的坐标点和设备相机姿势一起存储在数据库中。可以基于与每个观察相关联的时间戳(例如,关键点特征被设备捕获的时间点)对数据库进行索引。
40.在特定实施例中,计算系统可以生成围绕手215的边界框。图3a示出了基于图像中检测到的手的实例输出的边界框。矩形边界框320可以表示为指示该框的四个拐角的四个二维坐标。在确定手215存在时,计算系统使用例如机器学习模型(例如,掩模r-cnn)来生成
包括图像220中的手215的2d边界框320。在特定实施例中,边界框可以是能够完全包含包括手的像素的最小或接近最小的矩形(或任何其他几何形状)。该计算系统可以基于边界框渲染二维表面的纹理。在一些非限制性实施例中,所生成的表示手的二维表面的尺寸可以基于在捕获接收到的图像时手与相机的距离。以这种方式,边界框可以用作感兴趣的fov,以避免渲染不必要的大区域,从而节省功率和其他计算资源。
41.机器学习模型可以包括若干高级别部件,其包括骨干神经网络(还称为主干(trunk))、区域建议网络(rpn)、检测头(例如,人员检测器)、关键点头和分割头。这些部件中的每一个可以被配置为神经网络,使得机器学习模型包括一个或更多个神经网络。从概念上讲,主干被配置为处理图像200并准备表示图像200的特征图(例如,卷积输出的初始(inception))。rpn获取由主干生成的特征图,并输出n个建议的感兴趣区域(roi),其可以包括一个或更多个检测到的感兴趣对象(例如手215)。检测头然后可以检测n个roi中的哪些可能包含手,并输出相应的对象检测指示符,其可以定义包含手的图像220的较小区域(例如边界框)。对于被认为足够可能包含手的roi,其可以被称为目标区域定义,关键点头可以确定它们相应的关键点映射,并且分割头可以确定它们相应的分割掩模。
42.在特定实施例中,检测头、关键点头和分割头可以并行执行它们相应的操作。在其他实施例中,检测头、关键点头和分割头可以不并行执行它们的操作,而是采用多阶段处理方法,这具有减少计算和加速整体操作的优点。如上所述,根据特定实施例的机器学习模型是紧凑的,并且针对推断时间速度进行了优化。在某些情况下,这种优化可能会导致预测结果的精度不太理想。为了补偿,特定实施例可以执行后处理来校正或调整模型的关键点预测。特别地,由关键点头生成的关键点预测可被自动调整以基于一个或更多个所学习的手的姿势反映更可能的姿势。
43.在特定实施例中,计算系统可以基于图像,或者基于从人工现实系统接收的与捕获接收到的图像的时间相对应的传感器数据来确定手与相机的距离。使用该距离,计算系统可以限制(cap)或识别最大纹理尺寸以减少渲染像素的数量(例如,当手靠近用户的视点时)。因为当在非常近的距离处观看时对象自然变得模糊(例如,由于限制了缩小到眼睛焦距的能力的生理限制),所以即使使用最大纹理尺寸也可以获得自然的和美观的体验。
44.在特定实施例中,计算系统可以确定人工现实环境中光源的光方向。返回到图2a,光源240可以存在于人工现实环境中。光源可以是真实光源,其中光从真实环境中的真实对象(例如,真实灯、真实蜡烛、太阳等)发出,或者光源可以是虚拟光源,其中光从用户正在体验的人工现实环境中的虚拟对象(例如,虚拟灯、虚拟电视屏幕等)发出。可以基于从用户正在体验的人工现实应用接收的数据来确定光源240的光方向,或者可以基于由计算系统接收的图像数据或传感器数据来确定光源240的光方向。在特定实施例中,光方向可以对应于时间(例如,捕获接收到的图像的时间)。
45.计算系统可以根据所确定的光方向,将手的三维模型投影到人工现实环境中的虚拟对象(例如,用户站在其旁边的虚拟桌)上。图3b示出了根据确定的光方向投影到虚拟对象上的手的三维模型。可以设置手的三维模型的姿势以表示在特定时间(例如,捕获接收到的图像的时间)的手。该技术允许计算系统基于人工现实环境中的光源240近似手的阴影330,就像它将出现在虚拟对象210上一样。
46.在特定实施例中,计算系统可以生成表示手的表面。图3c示出了在人工现实环境
中表示用户手的生成的表面。该表面可以基于手的三维模型,该手的三维模型可以由计算系统来访问或使用由与人工现实系统相关联的一个或更多个相机或传感器捕获的传感器数据或图像数据(例如,接收到的图像)来生成。例如,计算系统可以通过将手的三维模型的三角形的顶点投影到与视点相关联的图像平面上来生成二维表面,并对像素进行光栅化以确定每个像素是否是手的一部分,从而产生2d四边形和阿尔法纹理(alpha texture)。在特定实施例中,二维表面可以表示如从用户的第一视点(例如,在接收到的图像被与人工现实系统相关联的相机捕获时的视点)观看的手的外观。计算系统可以可替代地或附加地基于手的运动或平移向量来渲染表面。基于向量(而不是手的确定姿势)渲染表面的优点是计算系统可以以比手跟踪可以允许的更快的速率进行渲染。例如,计算系统可以以相当于从其接收图像的相机的捕获速率(例如,30fps或60fps)的间隔确定手的姿势,并且可以基于这些向量以更快的速率(例如,以显示速率,例如200hz)渲染表面。
47.在特定实施例中,计算系统可以生成二维表面,该二维表面表示如从用户的视点观看的人工现实环境中的虚拟对象(例如,虚拟桌)上的手的阴影。图3d示出了在人工现实环境中表示用户手的阴影的生成的表面。表示手的阴影的二维表面可以与图3c所示的表示手的二维表面相补充(in addition to)或分离地生成。在特定实施例中,二维表面可以表示如从用户的第一视点(例如,在接收到的图像被与人工现实系统相关联的相机捕获时的视点)观看的手的阴影的外观。在特定实施例中,表示手的阴影的二维表面的外观可以被修改以更准确地描绘阴影,例如而不是作为限制,通过将二维表面映射到灰度图,通过模糊表示手的阴影的二维表面的边缘(这可能在视觉上对用户更有吸引力),或者通过调整表示手的阴影的二维表面的透明度,使得阴影掩模下的虚拟对象仍然可见或部分可见,但在手的阴影出现的地方显示为变暗。这样的修改为用户创造了更沉浸式和逼真的人工现实体验。
48.表面的纹理数据可以由一个或更多个子部分(本文称为“纹素(texel)”)组成。这些纹素可以是聚集在一起以创建构成表面的纹素阵列的块(例如,矩形块)。作为示例而非限制,它们可以是构成表面的连续块。出于说明的目的,表面的纹素可以被概念化为类似于图像的像素。表面可以由任何合适的设备产生。在特定实施例中,表面可以对其纹素中的一个或更多个纹素的视觉信息(rgba)(例如,作为纹理)进行编码。α分量可以是指定要与纹素一致的透明度级别的值。作为示例而非限制,α值0可以指示纹素是完全透明的,α值1可以指示纹素是不透明的,并且在0和1之间的α值可以指示完全透明和不透明之间的透明度级别(确切的透明度级别由该值确定)。表面可以支持任何合适的图像格式。为了节省资源,表面可以作为表示分割掩模中每个像素的遮挡和混合(例如,透明度)的α掩模(alpha-mask)来传输。α掩模可以是低分辨率纹理(64x64像素),其降低功耗,当覆盖在感兴趣的遮挡对象210上时提供模糊(但美观)的边界,由于较小分辨率而减少延迟,并提供更好的可扩展性。此外,计算系统可以基于模糊滤波技术(其通常对周围像素值进行平均),向外模糊表面的边缘以防止核心手区域减弱(fade)。在没有这些技术的情况下,用户的手(例如,手指)的边缘可能减弱,因为边缘处的方框滤波器(box filter)中的像素将不会被表示为完全不透明。例如,典型的模糊滤波器(例如,5
×
5)可以确定25个像素的平均不透明度(例如,将25个周围像素中的每一个的不透明度值求和并除以25)。替代地,特定实施例可以通过将滤波器区域中每个像素的不透明度求和并除以更小的数(例如,将25个像素中每个像素的不透明度值求和并除以(例如但不限于)12)来向外模糊手。通过除以更小的数,计算系统可以有效
地减少在方框滤波器中所需的像素的阈值数,以使中心像素被认为是完全不透明的。在这些实施例中,方框滤波器可以进一步限制不透明度值,使得像素的最终不透明度值总是在0和1之间。因此,在上述示例中,如果超过12个像素具有不透明度值1,则方框滤波器将基于该限制输出最终不透明度1(例如,完全不透明)。作为另一个示例,如果1到12个之间的像素具有不透明度值1,则方框滤波器将输出在0到1之间的最终不透明度值。这种技术允许向外模糊手,并防止手区域减弱。
49.在特定实施例中,表面可以在三维空间中的坐标系中定位和取向。在特定实施例中,坐标系可以对应于真实环境,例如已知的世界锁定坐标(x,y)。表面的世界坐标可以是基于人工现实环境中的绝对坐标(例如,在特定的x、y坐标处),或者可以相对于hmd的姿势、hmd、用户、用户上的特定点(例如,用户的眼球)或人工现实中的一个或更多个其他表面或虚拟对象(例如,在相对于人工现实环境中的墙或虚拟咖啡桌的坐标处摆姿势)来确定表面的世界坐标。表面的深度允许计算系统相对于(例如但不限于)环境中的一个或更多个其他真实对象或虚拟对象表示将表面定位在人工现实环境中。例如,表示手215的表面可以定位在用户手的近似深度处,而表示手的阴影的表面可以定位在虚拟桌210的近似深度处。在特定实施例中,虚拟对象表示可以是如从用户的视点观看的二维表面。以这种方式,例如,如果手定位在虚拟对象后面,则可以确定手215和手的阴影相对于一个或更多个其他真实对象或虚拟对象的适当遮挡(例如通过遮挡表示手的表面的一部分)。
50.在特定实施例中,计算系统可以生成用于显示给用户的人工现实环境的场景的视点的输出图像,该输出图像可以包括例如如本文所述的一个或更多个表面。图4示出了人工现实环境的场景的视点的输出图像。可以在计算系统的gpu上通过渲染如从用户的当前视点观看的表面来完成生成输出图像以供显示。作为示例而非限制,视点的该输出图像可以包括一组虚拟对象,例如虚拟鸟410。输出图像可以包括对应于表面的被确定为可见的部分的一组图像像素。输出图像可以被配置为使得显示器关闭一组相应的显示像素,使得当向用户显示所生成的输出图像时,手的可见部分(或真实环境的其他部分)对用户可见。在特定实施例中,可以将输出图像传输到hmd以用于显示。这允许向用户显示沉浸式人工现实环境。
51.基于表面相对于人工现实环境中的一个或更多个虚拟对象或真实对象的相对遮挡,输出图像可以对应于用户的视点。该计算系统可以利用光线投射或诸如光线追踪的其他渲染过程来确定将在人工现实环境的场景的视点的初始输出图像中显示的一个或更多个虚拟对象的视觉信息和位置信息。在特定实施例中,第一计算系统(例如膝上型计算机、手机、台式计算机、可穿戴设备)可以执行该第一光线投射过程以生成人工现实环境的视点的输出图像。人工现实环境的“视点”可以指人工现实环境的用户视角,该视角可以例如基于hmd的当前位置和取向来确定。光线投射过程的这种使用在本文可称为“可见性测试”,因为它可以用于通过将虚拟对象的模型与表面进行比较来确定虚拟对象410相对于手215的可见性。光线投射过程可以最终用于将屏幕像素与从人工现实环境的特定视点将可见的任何对象上的相交点相关联。
52.该生成的输出图像可以由物理连接到hmd的计算系统的一个或更多个部件(例如,cpu、gpu等)渲染。然而,hmd可能具有有限的系统资源和有限的电源,并且这些限制在不会导致对用户舒适性而言太大的重量、尺寸和/或热量的情况下可能不会明显减少。结果,hmd
单方面地处理在渲染人工现实环境的视点的输出图像中涉及的所有处理任务可能是不可行的。在特定实施例中,该一个或更多个部件可以与可用于渲染输出图像(例如,执行光线投射过程)的设备(例如,膝上型计算机、手机、台式计算机、可穿戴设备)相关联。在特定实施例中,该设备与hmd上的计算系统通信,但可以以其它方式与hmd物理分离。作为示例而非限制,该设备可以是与hmd有线连接或与hmd无线通信的膝上型计算机设备。作为另一示例而非限制,该设备可以是与hmd有线连接或与hmd无线通信的可穿戴设备(例如,绑在手腕上的设备)、手持式设备(例如,电话)或某种其他合适的设备(例如,膝上型计算机、平板计算机、台式计算机)。在特定实施例中,该设备可以将该输出图像发送到hmd以用于显示。
53.在特定实施例中,生成输出图像的设备的部件还可以生成表示针对特定视点的手和手的阴影的一个或更多个表面。作为另一个示例而非限制,hmd的机载计算系统可以在其从分离的计算系统(例如,从可穿戴设备、手持式设备或膝上型计算机设备的cpu或gpu)接收到输出图像之后生成一个或更多个表面。在特定实施例中,出于效率目的,可以为视图生成预定最大数量的表面(例如,16个表面)。尽管本公开侧重于在ar hmd上向用户显示输出图像,但它设想了在vr显示器或任何其他合适的设备上向用户显示输出图像。
54.在渲染人工现实环境的视点的输出图像之后,计算系统可能需要对输出图像进行一个或更多个调整,以向用户准确地显示一个或更多个表面的当前视点。对于通过例如允许用户同时透视和感知他们周围的真实环境的ar hmd 110来显示人工现实而言,这些调整的需要是唯一的。例如,由于用户正在实时体验人工现实环境,在执行本文描述的过程以渲染用于显示的人工现实环境的输出图像(其可以表示第一时间的第一视点,例如,当捕获接收到的图像时)之后,计算系统可以比用户的当前视点晚大约100毫秒。由于例如用户头部(例如,hmd姿势)的移动、用户手215的移动、用户佩戴的相机的移动和/或人工现实环境中的其他真实或虚拟对象的移动,用户的视点在此时间期间可能已经改变。这些移动导致在第二时间的第二视点与输出图像所表示的第一视点略有不同。相反,当通过传统显示器(例如,平板计算机或移动设备)或通过完全遮挡用户对真实环境的视图的hmd(例如,图1a中描绘的hmd)向用户显示人工现实时,计算系统可以简单地延迟或滞后显示的图像,使得显示的图像匹配渲染和显示表示人工现实环境内检测到的感兴趣对象的一个或更多个表面所需的视点(例如,滞后整个场景以考虑该处理时间)。
55.因此,如果在使用允许用户感知他们周围的真实环境的人工现实环境更新图像以反映视点的这种变化中存在显著的延迟,则用户可以感知到该延迟,从而产生感觉失调。为了防止这种失调,向用户显示的内容可能需要以非常快的速率考虑视点的变化。此外,重新渲染整个人工现实环境来考虑视角的这些变化需要时间。作为示例而非限制,即使利用强大的计算系统,帧也可能只以这种方式以60hz被渲染,这意味着在1/60秒内发生的任何视角变化(例如,由于快速的头部移动)都不会被所渲染和显示的内容捕获。此外,重新渲染整个视图以考虑视角的这些变化是一项资源密集型任务,该任务可能涉及执行大量的“可见性测试”以获得视觉信息(例如,颜色和透明度信息)以生成针对第二视点的输出图像。为了补救在该延迟周期期间可能导致变化的视点的视角的任何变化,而不是重新生成整个输出图像,计算系统可以针对特定视点调整图像中的一个或更多个表面的位置和/或取向(例如表示手215的二维表面或表示手的阴影的二维表面),以有效地处理快速生成输出图像。
56.该调整可以考虑导致用户对人工现实环境的视点的变化(例如,由用户头部上的
hmd移动到不同位置和/或取向引起)的预测变化(例如,移动/平移、倾斜、缩放、扭曲或以其它方式一起改变外观)。在特定实施例中,第一和第二视点可以基于用户佩戴的hmd的位置和取向,该位置和取向可以由计算系统连续或半连续地(例如,使用hmd上或跟踪hmd的远程设备上的惯性传感器、光学传感器、深度传感器和/或其他传感器)来确定佩戴hmd的用户在任何给定时间的视点。在特定实施例中,计算系统还可以连续地或半连续地跟踪用户的眼睛位置(例如,根据用户的注视来调整由hmd透镜导致的失真)。在特定实施例中,可以进一步基于(例如,如通过眼睛跟踪确定的)用户的注视或眼睛位置来确定最新视点。
57.调整的表面允许计算系统通过对视图中的表面重新采样(而不是重新渲染整个生成的图像)来简化(shortcut)对视点的变化的近似。在特定实施例中,重新采样可以涉及执行第二光线投射过程,以确定表示手的二维表面的一部分是否从三维空间中的第二视点可见,以及表示的表面从可以由用户的头部、手、或其它对象在该延迟周期期间的一个或更多个移动引起的第二视点可能看起来如何。
58.通过仅侧重于对视图内有限数量的表面(例如,16个表面)进行重新采样,可以快速地修改生成的图像,并且足够快速地防止或减少用户对延迟的感知。作为示例而非限制,可以每1/200秒执行进一步的第二光线投射过程,以考虑视角的可能变化(来自hmd的位置或取向的变化)。在特定实施例中,光线投射过程可以针对用户的每只眼睛单独执行,以考虑视点的微小变化(例如,基于眼睛的相对位置)。作为示例而非限制,可以对与左眼相关联的屏幕和与右眼相关联的屏幕执行第一和第二光线投射过程。这些过程可能彼此独立运行,甚至可能彼此不同步运行。
59.在特定实施例中,hmd的机载计算系统可以通过执行光线投射过程来重新采样一个或更多个表面以反映用户的最新视点。如果视角自前一个光线投射过程以来已经改变,则假想光线可能相应地与表面的不同点相交。以这种方式基于重新采样来修改生成的图像可能仅仅是视图应该如何被视点的变化所改变的近似,并且这种近似可能仅适用于视点的相对小的变化。但这可能是所需要的全部,因为目的是考虑生成完全渲染的帧之间的相对短的时间段(例如,在百分之一秒的量级)内发生的变化。本质上,它可以是临时修复,直到可以(例如,通过诸如可穿戴设备的更强大的计算系统)重新生成人工现实环境的输出图像。作为示例而非限制,可以与hmd分离的更强大的计算系统(例如,固定到用户的腰带或腰围的可穿戴设备)可以每1/60秒从头重新生成输出图像,并且可以在它们被生成时将这些重新渲染的图像发送到hmd设备以用于显示。在该示例中,在每1/60秒接收重新渲染的视图之间的时间内,hmd设备可以自行修改表面(例如,每1/200秒),以考虑用户视点的快速变化。
60.图5示出了用于生成包括手的表示的至少一部分的人工现实环境的输出图像的示例方法500。该方法可以在步骤510开始,在步骤510,计算系统可以接收使用由用户佩戴的相机捕获的真实环境的图像,该图像包括用户的手。
61.在步骤520,计算系统可以基于图像确定手的姿势。
62.在步骤530,计算系统可以基于具有确定的姿势的手的三维模型,生成表示如从用户的第一视点观看的手的二维表面。
63.在步骤540,计算系统可以将表示手的二维表面和一个或更多个虚拟对象表示定位在三维空间中。
64.在步骤550,计算系统可以确定表示手的二维表面的一部分从三维空间中的第二视点可见。
65.在步骤560,计算系统可以生成输出图像,其中与二维表面的可见部分相对应的输出图像的一组图像像素被配置为使得显示器关闭一组对应的显示像素。
66.在适当的情况下,特定实施例可以重复图5的方法的一个或更多个步骤。虽然本公开描述并且示出了图5的方法的特定步骤以特定顺序发生,但是本公开设想了图5的方法的任何合适的步骤以任何合适的顺序出现。此外,尽管本公开描述并示出了用于生成包括手的表示的至少一部分的人工现实环境的输出图像的示例方法,该示例方法包括图5的方法的特定步骤,但本公开设想了用于生成包括手的表示的至少一部分的人工现实环境的输出图像的任何合适的方法,该方法包括任何合适的步骤,在适当的情况下,该方法可以包括图5的方法的所有步骤、一些步骤或不包括图5的方法的步骤。此外,虽然本公开描述并且示出了执行图5的方法的特定步骤的特定部件、设备或系统,但是本公开设想了执行图5的方法的任何合适步骤的任何合适的部件、设备或系统的任何合适的组合。
67.图6示出了显示引擎600的系统图。显示引擎600可以包括四种类型的顶层块。如图6所示,这些块可以包括控制块610、变换块620a和620b、像素块630a和630b、以及显示块640a和640b。显示引擎600的一个或更多个部件可以被配置成经由一个或更多个高速总线、共享存储器或任何其他合适的方法进行通信。如图6所示,显示引擎600的控制块610可以被配置为与变换块620a和620b以及像素块630a和630b通信。显示块640a和640b可以被配置为与控制块610通信。如本文进一步详细解释的,该通信可以包括数据以及控制信号、中断和其他指令。
68.在特定实施例中,控制块610可以从主渲染部件接收输入数据流660,并初始化显示引擎600中的流水线以完成渲染供显示。在特定实施例中,输入数据流660可以包括来自主渲染部件的数据和控制分组。数据和控制分组可以包括信息,诸如包括纹理数据和位置数据的一个或更多个表面以及附加的渲染指令。控制块610可以根据需要向显示引擎600的一个或更多个其他块分发数据。控制块610可以为将要显示的一个或更多个帧启动流水线处理。在特定实施例中,hmd可以包括多个显示引擎600,并且每个显示引擎可以包括其自己的控制块610。
69.在特定实施例中,变换块620a和620b可以确定要在人工现实环境的视图中显示的表面的初始可见性信息。一般而言,变换块(例如,变换块620a和620b)可以从屏幕上的像素位置投射光线,并产生要发送到像素块630a和630b的滤波命令(例如,基于双线性或其他类型的插值技术的滤波)。变换块620a和620b可以从用户的(例如,使用惯性测量单元、眼睛跟踪器和/或任何合适的跟踪/定位算法,例如即时定位和地图构建(slam)而确定的)当前视点将光线投射到表面被定位的人工场景中,并且可以产生结果以发送到相应的像素块630a和630b。
70.一般而言,根据特定实施例,变换块620a和620b可以各自包括四级流水线。变换块的级可以如下进行。光线投射器可以发出与具有一个或更多个对准像素的阵列对应的光线束(ray bundle),该阵列称为图块(tile)(例如,每个图块可以包括16
×
16个对准像素)。根据一个或更多个失真网格(distortion mesh),光线束在进入人工现实环境之前可能会扭曲。失真网格可以被配置成校正至少源于hmd的显示器650a和650b的几何失真效果。变换块
620a和620b可以通过将每个图块的边界框与每个表面的边界框进行比较来确定每个光线束是否与人工现实环境中的表面相交。如果光线束与对象不相交,它可能会被丢弃。检测图块表面相交,并且相应的图块表面对625a和625b被传递到像素块630a和630b。
71.一般而言,根据特定实施例,像素块630a和630b从图块表面对625a和625b确定颜色值,以产生像素颜色值。从由控制块610接收并且存储的表面的纹理数据(例如,其作为输入数据流660的一部分)中采样每个像素的颜色值。像素块630a和630b分别从变换块620a和620b接收图块表面对625a和625b,并调度双线性滤波。对于每个图块表面对625a和625b,像素块630a和630b可以使用对应于投影的图块与表面相交的位置的颜色值来对图块内的像素的颜色信息进行采样。在特定实施例中,像素块630a和630b可以为每个像素分别处理红色、绿色和蓝色分量。像素块630a和630b然后可以分别向显示块640a和640b输出像素颜色值635a和635b。
72.一般来说,显示块640a和640b可以从像素块630a和630b接收像素颜色值635a和635b,将数据的格式转换为更适合显示器的扫描线输出,对像素颜色值635a和635b应用一个或更多个亮度校正,并准备像素颜色值635a和635b以输出到显示器650a和650b。显示块640a和640b可以将由像素块630a和630b生成的图块顺序像素颜色值635a和635b转换为显示器650a和650b可能需要的扫描线或行顺序数据。亮度校正可以包括任何所需的亮度校正、伽马映射和抖动。显示块640a和640b可以直接向显示器650a和650b提供像素输出645a和645b,例如校正的像素颜色值,或者可以以各种格式向显示引擎600外部的块提供像素输出645a和645b。例如,hmd可以包括额外的硬件或软件,以进一步定制后端颜色处理,以支持显示器的更宽接口,或者优化显示速度或保真度。
73.图7示出了与社交网络系统相关联的示例网络环境700。网络环境700包括通过网络710连接到彼此的客户端系统730、社交网络系统760和第三方系统770。尽管图7示出了客户端系统730、社交网络系统760、第三方系统770和网络710的特定布置,但是本公开设想了客户端系统730、社交网络系统760、第三方系统770和网络710的任何合适的布置。作为示例而不是作为限制,客户端系统730、社交网络系统760和第三方系统770中的两个或更多个可以绕过网络710彼此直接连接。作为另一个示例,客户端系统730、社交网络系统760和第三方系统770中的两个或更多个可以全部或部分地在物理上或逻辑上彼此位于同一位置。此外,尽管图7示出了特定数量的客户端系统730、社交网络系统760、第三方系统770和网络710,但是本公开考虑了任何合适数量的客户端系统730、社交网络系统760、第三方系统770和网络710。作为示例而不是作为限制,网络环境700可以包括多个客户端系统730、社交网络系统760、第三方系统770和网络710。
74.本公开设想了任何合适的网络710。作为示例而不是作为限制,网络710的一个或更多个部分可以包括自组织网络、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、互联网的一部分、公共交换电话网(pstn)的一部分、蜂窝电话网、或这些中的两个或更多个的组合。网络710可以包括一个或更多个网络710。
75.链路750可以将客户端系统730、社交网络系统760和第三方系统770连接到通信网络710或连接到彼此。本公开设想了任何合适的链路750。在特定实施例中,一个或更多个链路750包括一个或更多个有线(诸如例如数字用户线路(dsl)或基于电缆的数据服务接口规
范(docsis))链路、无线(诸如例如wi-fi或全球互通微波接入(wimax))链路、或光(诸如例如同步光网络(sonet)或同步数字体系(sdh))链路。在特定实施例中,一个或更多个链路750各自包括自组织网络、内联网、外联网、vpn、lan、wlan、wan、wwan、man、互联网的一部分、pstn的一部分、基于蜂窝技术的网络、基于卫星通信技术的网络、另一链路750、或两个或更多个这种链路750的组合。链路750不必在整个网络环境700中相同。一个或更多个第一链路750可以在一个或更多个方面上不同于一个或更多个第二链路750。
76.在特定实施例中,客户端系统730可以是包括硬件、软件或嵌入式逻辑组件、或两个或更多个这样的组件的组合,并且能够执行由客户端系统730实现或支持的适当功能的电子设备。作为示例而不是作为限制,客户端系统730可以包括计算机系统,例如台式计算机、笔记本或膝上型计算机、上网本、平板计算机、电子书阅读器、gps设备、照相机、个人数字助理(pda)、手持电子设备、蜂窝电话、智能手机、增强/虚拟现实设备、其他合适的电子设备、或其任何合适的组合。本公开设想了任何合适的客户端系统730。客户端系统730可以使在客户端系统730处的网络用户能够访问网络710。客户端系统730可以使它的用户能够与在其他客户端系统730处的其他用户进行通信。
77.在特定实施例中,客户端系统730可以包括web浏览器732,并且可以具有一个或更多个附加件、插件或其他扩展件。在客户端系统730处的用户可以输入统一资源定位符(url)或将web浏览器732引导到特定的服务器(例如,服务器762或与第三方系统770相关联的服务器)的其他地址,并且web浏览器732可以生成超文本传输协议(http)请求并将http请求传递到服务器。服务器可以接受http请求,并响应于http请求而向客户端系统730传递一个或更多个超文本标记语言(html)文件。客户端系统730可以基于来自服务器的html文件来显现网页用于呈现给用户。本公开设想了任何合适的网页文件。作为示例而不是作为限制,可以根据特定的需要从html文件、可扩展超文本标记语言(xhtml)文件或可扩展标记语言(xml)文件来显现网页。这样的页面还可以执行脚本、标记语言和脚本的组合等。在本文,在适当的情况下,对网页的引用包括一个或更多个相应的网页文件(浏览器可以使用这些网页文件来显现网页),反之亦然。
78.在特定实施例中,社交网络系统760可以是可以托管在线社交网络的网络可寻址计算系统。社交网络系统760可以生成、存储、接收并发送社交网络数据(诸如例如,用户简档数据、概念简档数据、社交图信息或与在线社交网络相关的其他合适的数据)。社交网络系统760可以由网络环境700的其他部件直接地或经由网络710来访问。作为示例而不是作为限制,客户端系统730可以使用web浏览器732或与社交网络系统760相关联的原生(native)应用(例如,移动社交网络应用、消息传送应用、另一合适的应用或其任何组合)直接地或经由网络710来访问社交网络系统760。在特定实施例中,社交网络系统760可以包括一个或更多个服务器762。每个服务器762可以是整体式服务器(unitary server)或跨越多台计算机或多个数据中心的分布式服务器。服务器762可以具有各种类型,例如且没有限制,web服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交换服务器、数据库服务器、代理服务器、适合于执行本文描述的功能或过程的另一服务器、或者其任何组合。在特定实施例中,每个服务器762可以包括硬件、软件或嵌入式逻辑部件、或用于执行由服务器762实现或支持的适当功能的两个或更多个这样的部件的组合。在特定实施例中,社交网络系统760可以包括一个或更多个数据储存器764。数据储存器764
可以用于存储各种类型的信息。在特定实施例中,可以根据特定的数据结构来组织存储在数据储存器764中的信息。在特定实施例中,每个数据储存器764可以是关系数据库、纵列(columnar)数据库、相关性数据库或其他合适的数据库。尽管本公开描述或示出了特定类型的数据库,但是本公开设想了任何合适类型的数据库。特定实施例可以提供使客户端系统730、社交网络系统760或第三方系统770能够管理、检索、修改、添加或删除存储在数据储存器764中的信息的接口。
79.在特定实施例中,社交网络系统760可以在一个或更多个数据储存器764中存储一个或更多个社交图。在特定实施例中,社交图可以包括多个节点——其可以包括多个用户节点(各自对应于特定用户)或多个概念节点(各自对应于特定概念)——以及连接节点的多条边。社交网络系统760可以向在线社交网络的用户提供与其他用户通信和互动的能力。在特定实施例中,用户可以经由社交网络系统760加入在线社交网络,且然后将关连(例如,关系)添加到社交网络系统760中的他们想要关连到的多个其他用户。在本文,术语“朋友”可以指社交网络系统760的任何其他用户,用户经由社交网络系统760与任何其他用户形成关连(connection)、关联(association)或关系。
80.在特定实施例中,社交网络系统760可以向用户提供对由社交网络系统760支持的各种类型的项目或对象采取动作的能力。作为示例而不是作为限制,项目和对象可以包括社交网络系统760的用户可以属于的群组或社交网络、用户可能感兴趣的事件或日历条目、用户可以使用的基于计算机的应用、允许用户经由服务来购买或销售商品的交易、用户可以执行的与广告的交互、或其他合适的项目或对象。用户可以与能够在社交网络系统760中或者由第三方系统770的外部系统表示的任何事物进行互动,第三方系统770与社交网络系统760分离并且经由网络710耦合到社交网络系统760。
81.在特定实施例中,社交网络系统760能够链接各种实体。作为示例而不是作为限制,社交网络系统760可以使用户能够彼此互动以及从第三方系统770或其他实体接收内容,或者允许用户通过应用编程接口(api)或其他通信渠道与这些实体互动。
82.在特定实施例中,第三方系统770可以包括一种或更多种类型的服务器、一个或更多个数据储存器、一个或更多个接口(包括但不限于api)、一个或更多个web服务、一个或更多个内容源、一个或更多个网络或任何其他合适的部件(例如,服务器可以与这些部件通信)。第三方系统770可以由与操作社交网络系统760的实体不同的实体进行操作。然而,在特定实施例中,社交网络系统760和第三方系统770可以结合彼此来操作以向社交网络系统760或第三方系统770的用户提供社交网络服务。在这个意义上,社交网络系统760可以提供平台或骨干网,其他系统(例如,第三方系统770)可以使用该平台或骨干网来在整个互联网上向用户提供社交网络服务和功能。
83.在特定实施例中,第三方系统770可以包括第三方内容对象提供者。第三方内容对象提供者可以包括可以被传递到客户端系统730的内容对象的一个或更多个源。作为示例而不是作为限制,诸如,内容对象可以包括关于用户感兴趣的事情或活动的信息,例如电影放映时间、电影评论、餐馆评论、餐馆菜单、产品信息和评论或其他合适的信息。作为另一示例而不是作为限制,内容对象可以包括激励内容对象(例如优惠券、折扣券、礼品券或其他合适的激励对象)。
84.在特定实施例中,社交网络系统760还包括用户生成的内容对象,其可以增强用户
与社交网络系统760的交互。用户生成的内容可以包括用户可以添加、上传、发送或“发布”到社交网络系统760的任何内容。作为示例而不是作为限制,用户将帖子从客户端系统730传送到社交网络系统760。帖子可以包括数据,例如状态更新或其他文本数据、位置信息、照片、视频、链接、音乐或其他类似数据或媒体。内容还可以由第三方通过“通信渠道”(例如,动态消息(newsfeed)或流)来添加到社交网络系统760。
85.在特定实施例中,社交网络系统760可以包括各种服务器、子系统、程序、模块、日志和数据储存器。在特定实施例中,社交网络系统760可以包括下列项中的一项或更多项:web服务器、动作记录器、api请求服务器、相关性和排名引擎、内容对象分类器、通知控制器、动作日志、第三方内容对象暴露日志、推理模块、授权/隐私服务器、搜索模块、广告定位模块(advertisement-targeting module)、用户界面模块、用户简档储存器、关连储存器(connection store)、第三方内容储存器或位置储存器。社交网络系统760还可以包括合适的组件,例如网络接口、安全机构、负载平衡器、故障转移服务器、管理和网络操作控制台、其他合适的组件、或其任何合适的组合。在特定实施例中,社交网络系统760可以包括用于存储用户简档的一个或更多个用户简档储存器。用户简档可以包括例如,传记信息、人口统计信息、行为信息、社交信息或其他类型的描述性信息(例如工作经历、教育历史、爱好或偏好、兴趣、亲和力或定位)。兴趣信息可以包括与一个或更多个类别相关的兴趣。类别可以是一般的或特定的。作为示例而不是作为限制,如果用户“赞(like)”关于一种品牌的鞋的文章,该类别可以是品牌,或者“鞋”或“衣服”的一般类别。关连储存器可以用于存储关于用户的关连信息。关连信息可以指示具有相似或共同的工作经历、组成员资格、爱好、教育历史或者以任何方式相关或共享共同属性的用户。关连信息还可以包括在不同用户和内容(内部和外部)之间的用户定义的关连。web服务器可以用于经由网络710将社交网络系统760链接到一个或更多个客户端系统730或一个或更多个第三方系统770。web服务器可以包括邮件服务器或用于在社交网络系统760和一个或更多个客户端系统730之间接收并按规定路线发送消息的其他消息传送功能。api请求服务器可以允许第三方系统770通过调用一个或更多个api来访问来自社交网络系统760的信息。动作记录器可以用于从web服务器接收关于用户在社交网络系统760上或之外的动作的通信。结合动作日志,可以维护用户暴露于第三方内容对象的第三方内容对象日志。通知控制器可以向客户端系统730提供关于内容对象的信息。信息可以作为通知被推送到客户端系统730,或者信息可以响应于从客户端系统730接收的请求而从客户端系统730中被拉取。授权服务器可以用于实施社交网络系统760的用户的一个或更多个隐私设置。用户的隐私设置确定与用户相关联的特定信息可以如何被分享。授权服务器可以诸如例如通过设置适当的隐私设置来允许用户选择加入或选择退出使他们的动作由社交网络系统760记录或者与其他系统(例如,第三方系统770)共享。第三方内容对象储存器可以用于存储从第三方(例如第三方系统770)接收的内容对象。位置储存器可以用于存储从与用户相关联的客户端系统730接收的位置信息。广告定价模块可以组合社交信息、当前时间、定位信息或其他合适的信息以用通知的形式向用户提供相关广告。
86.图8示出了示例计算机系统800。在特定实施例中,一个或更多个计算机系统800执行本文描述或示出的一个或更多个方法的一个或更多个步骤。在特定实施例中,一个或更多个计算机系统800提供本文描述或示出的功能。在特定实施例中,在一个或更多个计算机
系统800上运行的软件执行本文描述或示出的一个或更多个方法的一个或更多个步骤,或者提供本文描述或示出的功能。特定实施例包括一个或更多个计算机系统800的一个或更多个部分。在本文,在适当的情况下,对计算机系统的引用可以包括计算设备,并且对计算设备的引用可以包括计算机系统。此外,在适当的情况下,对计算机系统的引用可以包括一个或更多个计算机系统。
87.本公开设想了任何合适数量的计算机系统800。本公开设想了计算机系统800采取任何合适的物理形式。作为示例而不是作为限制,计算机系统800可以是嵌入式计算机系统、片上系统(soc)、单板计算机系统(sbc)(例如,模块上计算机(com)或模块上系统(som))、台式计算机系统、膝上型或笔记本计算机系统、交互式信息亭、大型机、计算机系统网状网、移动电话、个人数字助理(pda)、服务器、平板计算机系统、增强/虚拟现实设备、或者这些系统的两个或更多个的组合。在适当的情况下,计算机系统800可以包括一个或更多个计算机系统800;是整体式的或分布式的;跨越多个定位;跨越多台机器;跨越多个数据中心;或者驻留在云中,云可以包括在一个或更多个网络中的一个或更多个云组件。在适当的情况下,一个或更多个计算机系统800可以在没有实质性空间或时间限制的情况下执行本文描述或示出的一个或更多个方法的一个或更多个步骤。作为示例而不是作为限制,一个或更多个计算机系统800可以实时地或以批处理模式来执行本文描述或示出的一个或更多个方法的一个或更多个步骤。在适当的情况下,一个或更多个计算机系统800可以在不同的时间或在不同的定位处执行本文描述或示出的一个或更多个方法的一个或更多个步骤。
88.在特定实施例中,计算机系统800包括处理器802、存储器804、存储装置806、输入/输出(i/o)接口808、通信接口810和总线812。尽管本公开描述并示出了具有在特定布置中的特定数量的特定组件的特定计算机系统,但是本公开设想了具有在任何合适布置中的任何合适数量的任何合适组件的任何合适的计算机系统。
89.在特定实施例中,处理器802包括用于执行指令(例如构成计算机程序的那些指令)的硬件。作为示例而不是作为限制,为了执行指令,处理器802可以从内部寄存器、内部高速缓存、存储器804或存储装置806中检索(或取回)指令;将他们解码并执行它们;以及然后将一个或更多个结果写到内部寄存器、内部高速缓存、存储器804或存储装置806。在特定实施例中,处理器802可以包括用于数据、指令或地址的一个或更多个内部高速缓存。在适当的情况下,本公开设想了处理器802包括任何合适数量的任何合适的内部高速缓存。作为示例而不是作为限制,处理器802可以包括一个或更多个指令高速缓存、一个或更多个数据高速缓存、以及一个或更多个转译后备缓冲区(tlb)。在指令高速缓存中的指令可以是在存储器804或存储装置806中的指令的副本,并且指令高速缓存可以加速处理器802对那些指令的检索。在数据高速缓存中的数据可以是:在存储器804或存储装置806中的数据的副本,用于使在处理器802处执行的指令进行操作;在处理器802处执行的先前指令的结果,用于由在处理器802处执行的后续指令访问或者用于写到存储器804或存储装置806;或其他合适的数据。数据高速缓存可以加速由处理器802进行的读或写操作。tlb可以加速关于处理器802的虚拟地址转译。在特定实施例中,处理器802可以包括用于数据、指令或地址的一个或更多个内部寄存器。在适当的情况下,本公开设想了处理器802包括任何合适数量的任何合适的内部寄存器。在适当的情况下,处理器802可以包括一个或更多个算术逻辑单元(alu);是多核处理器;或者包括一个或更多个处理器802。尽管本公开描述并示出了特定的
处理器,但是本公开设想了任何合适的处理器。
90.在特定实施例中,存储器804包括用于存储用于使处理器802执行的指令或用于使处理器802操作的数据的主存储器。作为示例而不是作为限制,计算机系统800可以将指令从存储装置806或另一个源(例如,另一个计算机系统800)加载到存储器804。处理器802然后可以将指令从存储器804加载到内部寄存器或内部高速缓存。为了执行指令,处理器802可以从内部寄存器或内部高速缓存中检索指令并将它们解码。在指令的执行期间或之后,处理器802可以将一个或更多个结果(其可以是中间结果或最终结果)写到内部寄存器或内部高速缓存。处理器802然后可以将这些结果中的一个或更多个写到存储器804。在特定实施例中,处理器802仅执行在一个或更多个内部寄存器或内部高速缓存中或在存储器804(而不是存储装置806或其他地方)中的指令,并且仅对在一个或更多个内部寄存器或内部高速缓存中或在存储器804(而不是存储装置806或其他地方)中的数据进行操作。一个或更多个存储器总线(其可以各自包括地址总线和数据总线)可以将处理器802耦合到存储器804。如下所述,总线812可以包括一个或更多个存储器总线。在特定实施例中,一个或更多个存储器管理单元(mmu)驻留在处理器802和存储器804之间,并且便于由处理器802请求的对存储器804的访问。在特定实施例中,存储器804包括随机存取存储器(ram)。在适当的情况下,该ram可以是易失性存储器。在适当的情况下,该ram可以是动态ram(dram)或静态ram(sram)。此外,在适当的情况下,该ram可以是单端口ram或多端口ram。本公开设想了任何合适的ram。在适当的情况下,存储器804可以包括一个或更多个存储器804。尽管本公开描述并示出了特定的存储器,但是本公开设想了任何合适的存储器。
91.在特定实施例中,存储装置806包括用于数据或指令的大容量存储装置。作为示例而不是作为限制,存储装置806可以包括硬盘驱动器(hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(usb)驱动器、或这些中的两个或更多个的组合。在适当的情况下,存储装置806可以包括可移动或不可移动(或固定)介质。在适当的情况下,存储装置806可以在计算机系统800的内部或外部。在特定实施例中,存储装置806是非易失性固态存储器。在特定实施例中,存储装置806包括只读存储器(rom)。在适当的情况下,该rom可以是掩模编程rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可变rom(earom)、或闪存、或这些中的两个或更多个的组合。本公开设想了采用任何合适的物理形式的大容量存储装置806。在适当的情况下,存储装置806可以包括便于在处理器802和存储装置806之间的通信的一个或更多个存储装置控制单元。在适当的情况下,存储装置806可以包括一个或更多个存储装置806。尽管本公开描述并示出了特定的存储装置,但是本公开设想了任何合适的存储装置。
92.在特定实施例中,i/o接口808包括为在计算机系统800和一个或更多个i/o设备之间的通信提供一个或更多个接口的硬件、软件或两者。在适当的情况下,计算机系统800可以包括这些i/o设备中的一个或更多个。这些i/o设备中的一个或更多个可以实现在人和计算机系统800之间的通信。作为示例而不是作为限制,i/o设备可以包括键盘、小键盘、麦克风、监视器、鼠标、打印机、扫描仪、扬声器、静态摄像机、触笔、平板计算机、触摸屏、跟踪球、视频摄像机、另一个合适的i/o设备、或这些中的两个或更多个的组合。i/o设备可以包括一个或更多个传感器。本公开设想了任何合适的i/o设备以及用于它们的任何合适的i/o接口808。在适当的情况下,i/o接口808可以包括使处理器802能够驱动这些i/o设备中的一个或
更多个的一个或更多个设备或软件驱动器。在适当的情况下,i/o接口808可以包括一个或更多个i/o接口808。尽管本公开描述并示出了特定的i/o接口,但是本公开设想了任何合适的i/o接口。
93.在特定实施例中,通信接口810包括提供用于在计算机系统800和一个或更多个其他计算机系统800或一个或更多个网络之间的通信(例如,基于包的通信)的一个或更多个接口的硬件、软件或两者。作为示例而不是作为限制,通信接口810可以包括用于与以太网或其他基于有线的网络进行通信的网络接口控制器(nic)或网络适配器,或用于与无线网络(例如wi-fi网络)进行通信的无线nic(wnic)或无线适配器。本公开设想了任何合适的网络和用于它的任何合适的通信接口810。作为示例而不是作为限制,计算机系统800可以与自组织网络、个域网(pan)、局域网(lan)、广域网(wan)、城域网(man)或互联网的一个或更多个部分、或这些中的两个或更多个的组合进行通信。这些网络中的一个或更多个的一个或更多个部分可以是有线的或无线的。作为示例,计算机系统800可以与无线pan(wpan)(例如,蓝牙wpan)、wi-fi网络、wi-max网络、蜂窝电话网络(例如,全球移动通信系统(gsm)网络)、或其他合适的无线网络、或这些中的两个或更多个的组合进行通信。在适当的情况下,计算机系统800可以包括用于这些网络中的任一个的任何合适的通信接口810。在适当的情况下,通信接口810可以包括一个或更多个通信接口810。尽管本公开描述并示出了特定的通信接口,但是本公开设想了任何合适的通信接口。
94.在特定实施例中,总线812包括将计算机系统800的组件耦合到彼此的硬件、软件或两者。作为示例而不是作为限制,总线812可以包括加速图形端口(agp)或其他图形总线、扩展工业标准体系结构(eisa)总线、前端总线(fsb)、hypertransport(ht)互连、工业标准体系结构(isa)总线、infiniband互连、低引脚数(lpc)总线、存储器总线,微通道体系结构(mca)总线、外围部件互连(pci)总线、pci-express(pcie)总线、串行高级技术附件(sata)总线、视频电子标准协会本地(vlb)总线、或任何其他合适的总线、或这些中的两个或更多个的组合。在适当的情况下,总线812可以包括一个或更多个总线812。尽管本公开描述并示出了特定总线,但是本公开设想了任何合适的总线或互连。
95.在本文,在适当的情况下,一个或更多个计算机可读非暂时性存储介质可以包括一个或更多个基于半导体的或其他集成电路(ic)(例如,现场可编程门阵列(fpga)或专用ic(asic))、硬盘驱动器(hdd)、混合硬盘驱动器(hhd)、光盘、光盘驱动器(odd)、磁光盘、磁光盘驱动器、软盘、软盘驱动器(fdd)、磁带、固态驱动器(ssd)、ram驱动器、安全数字(secure digital)卡或驱动器、任何其他合适的计算机可读非暂时性存储介质、或这些中的两个或更多个的任何合适组合。在适当的情况下,计算机可读非暂时性存储介质可以是易失性的、非易失性的或者易失性和非易失性的组合。
96.本文中,除非另有明确指示或通过上下文另有指示,否则“或”是包括一切的而非排他性的。因此在本文,除非另有明确指示或通过上下文另有指示,否则“a或b”意指“a、b或两者”。此外,除非另有明确指示或通过上下文另有指示,否则“和”既是联合的又是各自的。因此在本文,除非另有明确指示或通过上下文另有指示,否则“a和b”意指“a和b,联合地或各自地”。
97.本公开的范围包括本领域中的普通技术人员将理解的对本文描述或示出的示例实施例的所有改变、替换、变化、变更和修改。本公开的范围不限于本文描述或示出的示例
实施例。此外,尽管本公开将本文的相应实施例描述并示为包括特定的组件、元件、特征、功能、操作或步骤,但是这些实施例中的任何一个可以包括本领域中的普通技术人员将理解的在本文任何地方描述或示出的任何组件、元件、特征、功能、操作或步骤的任何组合或置换。此外,在所附权利要求中对适合于、被布置成、能够、被配置成、实现来、可操作来、或操作来执行特定功能的装置或系统或装置或系统的组件的引用包括该装置、系统、组件,无论它或那个特定功能是否被激活、开启或解锁,只要该装置、系统或组件是这样被调整、被布置、使能够、被配置、被实现、可操作的、或操作的。此外,尽管本公开将特定实施例描述或示为提供特定优点,但是特定实施例可以不提供这些优点、提供这些优点中的一些、或全部。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1