CN116635900A - 时延弹性化的云渲染 - Google Patents
时延弹性化的云渲染 Download PDFInfo
- Publication number
- CN116635900A CN116635900A CN202180075067.XA CN202180075067A CN116635900A CN 116635900 A CN116635900 A CN 116635900A CN 202180075067 A CN202180075067 A CN 202180075067A CN 116635900 A CN116635900 A CN 116635900A
- Authority
- CN
- China
- Prior art keywords
- views
- virtual object
- view
- geometric representation
- viewpoints
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 66
- 238000000034 method Methods 0.000 claims abstract description 101
- 238000004891 communication Methods 0.000 claims description 23
- 230000001419 dependent effect Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 8
- 230000008859 change Effects 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 31
- 230000009471 action Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 7
- 239000010410 layer Substances 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 238000002156 mixing Methods 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- RGNPBRKPHBKNKX-UHFFFAOYSA-N hexaflumuron Chemical compound C1=C(Cl)C(OC(F)(F)C(F)F)=C(Cl)C=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F RGNPBRKPHBKNKX-UHFFFAOYSA-N 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/60—Shadow generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4053—Scaling of whole images or parts thereof, e.g. expanding or contracting based on super-resolution, i.e. the output image resolution being higher than the sensor resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/536—Depth or shape recovery from perspective effects, e.g. by using vanishing points
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/80—Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/16—Indexing scheme for image data processing or generation, in general involving adaptation to the client's capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/08—Bandwidth reduction
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
在一个实施例中,一种方法包括以下步骤:为由几何表示定义的虚拟对象生成围绕该虚拟对象的多个视点;针对该多个视点中的每一个视点,基于该视点生成该虚拟对象的简化几何表示,其中,该简化几何表示具有比该虚拟对象的该几何表示低的分辨率;从客户端设备接收用于观看该虚拟对象的期望视点;基于该期望视点从该多个视点中选择一个或多个视点;以及向该客户端设备发送渲染数据,该渲染数据包括与选择的该一个或多个视点中的每一个视点相关联的该简化几何表示和相关联的视图相关纹理,该渲染数据被配置用于从该期望视点渲染该虚拟对象的图像。
Description
技术领域
本公开总体上涉及在用户设备上渲染增强现实(Augmented-Reality,AR)内容或虚拟现实(Virtual-Reality,VR)内容。本公开总体上涉及在云架构上存储和渲染AR/VR内容。
背景技术
虚拟现实是对环境(例如,3D环境)的计算机生成的模拟,用户可以以看似真实的或物理的方式与之交互。虚拟现实系统可以是单个设备或一组设备,虚拟现实系统可以例如在虚拟现实头戴式设备(headset)或一些其它显示设备上生成这种模拟以向用户显示。这种模拟可以包括图像、声音、触觉反馈和/或其它知觉,以模仿真实或想象的环境。随着虚拟现实变得越来越重要,其有用的应用范围正在迅速扩大。虚拟现实的最常见的应用包括游戏或其它交互内容,但是诸如出于娱乐或培训目的而观看视觉媒体项目(例如照片、视频)等其他应用紧随其后。使用虚拟现实来模拟现实生活对话以及其它用户交互的可行性也正在探索中。
增强现实向现实或物理世界的视野提供添加的计算机生成的感官输入(例如,视觉、听觉)。换句话说,计算机生成的虚拟效果可以增强或补充真实世界的视野。例如,虚拟现实头戴式设备上的相机可以捕获真实世界的场景(作为图像和视频),并显示所捕获的场景与计算机生成的虚拟对象的合成。虚拟对象可以例如是二维和/或三维对象,并且可以是静止的或动画的。
发明内容
因此,本发明公开了根据所附权利要求的方法、计算机可读非暂时性存储介质、系统和计算机程序。优选实施例是从属权利要求的主题。
本发明的一方面涉及一种方法,该方法包括,由计算服务器:为由几何表示定义的虚拟对象生成围绕该虚拟对象的多个视点;针对该多个视点中的每一个视点,基于该视点生成该虚拟对象的简化几何表示,其中,该简化几何表示具有比该虚拟对象的该几何表示低的分辨率;从客户端设备接收用于观看该虚拟对象的期望视点;基于该期望视点从该多个视点中选择一个或多个视点;以及向该客户端设备发送渲染数据,该渲染数据包括与选择的该一个或多个视点中的每一个视点相关联的该简化几何表示和相关联的视图相关纹理,该渲染数据被配置用于从该期望视点渲染该虚拟对象的图像。
在根据本发明的方法的实施例中,基于该期望视点从该多个视点中选择该一个或多个视点还可以包括:基于该期望视点相对于该虚拟对象的相对位置,对该多个视点中的一个或多个视点确定优先级;以及基于该一个或多个视点的优先级来选择该多个视点中的一个或多个视点。
在根据本发明的方法的实施例中,对该多个视点中的该一个或多个视点确定优先级还可以基于与该期望视点相关联的虚拟相机的轨迹。
在根据本发明的方法的实施例中,对于该多个视点中的每一个视点,该简化几何表示可以是在从该客户端设备接收该期望视点之前生成的。
在根据本发明的方法的实施例中,对于该多个视点中的每一个视点,该简化几何表示还可以基于光栅化过程而生成。
在根据本发明的方法的实施例中,该方法还可以包括:响应于从该多个视点中选择该一个或多个视点,为选择的该一个或多个视点中的每一个视点生成与该简化几何表示相关联的该视图相关纹理。
在根据本发明的方法的实施例中,对于选择的该一个或多个视点中的每一个视点,该视图相关纹理可以是从选择的该视点基于虚拟环境内的照明条件生成的。
在根据本发明的方法的实施例中,该方法还可以包括:基于虚拟环境内的照明条件生成该虚拟对象的阴影纹理,并且其中,该渲染数据还包括该阴影纹理。
在根据本发明的方法的实施例中,该虚拟对象的该阴影纹理进一步可以是响应于检测到该虚拟环境内的该照明条件的变化而生成的。
在一个方面,本发明还涉及包含软件的一种或多种计算机可读非暂时性存储介质,该软件在被执行时可操作,以执行如上所述的方法或者以:为由几何表示定义的虚拟对象生成围绕该虚拟对象的多个视点;针对该多个视点中的每一个视点,基于该视点生成该虚拟对象的简化几何表示,其中,该简化几何表示具有比该虚拟对象的该几何表示低的分辨率;从客户端设备接收用于观看该虚拟对象的期望视点;基于该期望视点从该多个视点中选择一个或多个视点;以及向该客户端设备发送渲染数据,该渲染数据包括与选择的该一个或多个视点中的每一个视点相关联的该简化几何表示和相关联的视图相关纹理,该渲染数据被配置用于从该期望视点渲染该虚拟对象的图像。
在根据本发明的一种或多种计算机可读非暂时性存储介质的实施例中,基于该期望视点从该多个视点中选择该一个或多个视点还可以包括:基于该期望视点相对于该虚拟对象的相对位置,对该多个视点中的一个或多个视点确定优先级;以及基于该一个或多个视点的优先级来选择该多个视点中的一个或多个视点。
在根据本发明的一种或多种计算机可读非暂时性存储介质的实施例中,对于该多个视点中的每一个视点,该简化几何表示可以是在从该客户端设备接收该期望视点之前生成的。
在根据本发明的一种或多种计算机可读非暂时性存储介质的实施例中,该软件在被执行时还可以操作以:响应于从该多个视点中选择该一个或多个视点,为选择的该一个或多个视点中的每一个视点生成与该简化几何表示相关联的该视图相关纹理。
在根据本发明的一种或多种计算机可读非暂时性存储介质的实施例中,对于选择的该一个或多个视点中的每一个视点,该视图相关纹理可以是从选择的该视点基于虚拟环境内的照明条件生成的。
在根据本发明的一种或多种计算机可读非暂时性存储介质的实施例中,该软件在被执行时还可以操作以:基于虚拟环境内的照明条件生成该虚拟对象的阴影纹理,并且其中,该渲染数据还包括该阴影纹理。
本发明的一方面还涉及一种系统,该系统包括:一个或多个处理器;以及与该一个或多个处理器通信的一个或多个计算机可读非暂时性存储介质,该一个或多个计算机可读非暂时性存储介质包括指令,该指令在由该一个或多个处理器执行时,使得该系统执行上述的方法或:为由几何表示定义的虚拟对象生成围绕该虚拟对象的多个视点;针对该多个视点中的每一个视点,基于该视点生成该虚拟对象的简化几何表示,其中,该简化几何表示具有比该虚拟对象的该几何表示低的分辨率;从客户端设备接收用于观看该虚拟对象的期望视点;基于该期望视点从该多个视点中选择一个或多个视点;以及向该客户端设备发送渲染数据,该渲染数据包括与选择的该一个或多个视点中的每一个视点相关联的该简化几何表示和相关联的视图相关纹理,该渲染数据被配置用于从该期望视点渲染该虚拟对象的图像。
在根据本发明的系统的实施例中,基于该期望视点从该多个视点中选择该一个或多个视点还可以包括:基于该期望视点相对于该虚拟对象的相对位置,对该多个视点中的一个或多个视点确定优先级;以及基于该一个或多个视点的优先级来选择该多个视点中的一个或多个视点。
在根据本发明的系统的实施例中,对于该多个视点中的每一个视点,该简化几何表示可以是在从该客户端设备接收该期望视点之前生成的。
在根据本发明的系统的实施例中,该一个或多个计算机可读非暂时性存储介质还可以包括指令,该指令在由该一个或多个处理器执行时,使该系统执行:响应于从该多个视点中选择该一个或多个视点,为选择的该一个或多个视点中的每一个视点生成与该简化几何表示相关联的该视图相关纹理。
在根据本发明的系统的实施例中,对于选择的该一个或多个视点中的每一个视点,该视图相关纹理可以是从选择的该视点基于虚拟环境内的照明条件生成的。
在一个方面,本发明还涉及计算机程序和/或计算机程序产品,当该计算机程序和/或计算机程序产品被配置为在处理器上执行时,执行如上所述的方法。
附图说明
图1示出了围绕对象的视图层次的示例。
图2示出了视图层次和用户的视点的示例。
图3A至图3B示出了基于渲染数据来渲染虚拟对象的图像的过程。
图4示出了生成渲染数据的服务器和执行重构过程的设备的图。
图5示出了用于生成虚拟对象的视图层次的示例方法。
图6示出了用于确定与用户相关的视点并提供与所述相关的视点相关联的渲染数据的示例方法。
图7示出了用于基于渲染数据来渲染虚拟对象的图像的示例方法。
图8示出了与社交网络系统相关联的示例网络环境。
图9示出了示例计算机系统。
具体实施方式
本公开的发明旨在解决与向轻重量、低成本设备(例如,移动电话)提供高质量的AR/VR内容相关联的问题。本发明旨在利用云渲染实现大量的密集计算,同时利用用户设备上的本地重构,使得最终渲染的时延在很大程度上与网络条件解耦,以便提供时延弹性化(latency-resilient)的AR/VR体验。传统的云渲染方法使用服务器来执行所有渲染任务,并且仅将最终的视频流发送到客户端设备。但是由于渲染过程和网络传输造成的时延,在向用户显示视频时,服务器所使用的渲染视频的视点可能与用户的视点不同。视点的差异将表现为滞后,并且当虚拟对象的几何形状复杂并且网络条件差时,滞后将变得尤其明显。为了解决这些问题,本发明使用服务器来执行重负荷的渲染任务,并对3D对象的伪像(例如,简化的几何形状和RGB数据)进行编码。然后,这些伪像被发送到用户设备并由用户设备使用,以使用用户的最新视点来重构对象的图像。
重构方案利用了这样的事实,即在任何给定时间,AR/VR环境中的用户将只能从用户的“视点”或视角看到对象的部分(例如,用户在其位置能够看到的对象的部分)。这意味着为用户渲染的对象可能不需要被完整地渲染。而是,可能只需要渲染对象的与用户的视点相关的部分(例如,对象的可以从用户的视野看到的部分)。本发明的实施例提供了一种用于基于围绕对象的不同视点对虚拟对象进行编码的方法,每个视点与简化几何表示(geometric representation)和相关联的视图相关纹理(例如,渲染数据)相关联。一旦(例如由服务器)基于对象的不同视点对对象进行编码,则可以确定与用户相关的视点,并且可以向用户设备提供与相关视点相关联的渲染数据。然后,用户设备可以使用从服务器接收的渲染数据从用户的视点重构对象。
本发明的实施例可以包括人工现实系统或结合人工现实系统来实现。人工现实是在向用户呈现之前已经以某种方式进行了调整的现实形式,人工现实可以包括例如虚拟现实(VR)、增强现实(AR)、混合现实(MR)、混合现实(hybrid reality)或它们的某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或与捕获的内容(例如,现实世界的照片)相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈或它们的某种组合,这些中的任何一者都可以以单通道或多通道呈现(例如,向观看者生成三维效果的立体视频)。此外,在一些实施例中,人工现实可以与应用、产品、附件、服务或它们的某种组合相关联,这些应用、产品、附件、服务或它们的某种组合例如用于在人工现实中创建内容,和/或用于人工现实中(例如,在人工现实中执行动作)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主计算机系统的头戴式显示器(HMD)、独立的HMD、移动设备或计算系统,或能够向一位或多位观看者提供人工现实内容的任何其他硬件平台。
本文公开的实施例仅是示例,并且本公开的范围不限于此。特定实施例可以包括以上公开的实施例的所有或一些组件、元件、特征、功能、操作或步骤,或不包括以上公开的实施例的组件、元件、特征、功能、操作或步骤。在所附权利要求中具体公开了根据本发明的实施例,所附权利要求涉及一种方法、一种存储介质、一种系统和一种计算机程序产品,其中,在一个权利要求类别(例如,方法)中提到的任何特征也可以在另一权利要求类别(例如,系统)中要求保护。所附权利要求中的从属关系或引用仅出于形式原因而被选择。然而,也可以要求保护对任何先前权利要求(特别是多个从属关系)的有意引用所产生的任何主题,使得权利要求及其特征的任何组合被公开并且可以被要求保护,而无论所附权利要求中选择的从属关系如何。可以要求保护的主题不仅包括所附权利要求中列出的特征的组合,还包括权利要求中的特征的任何其它组合,其中,权利要求中提到的每个特征可以与权利要求中的任何其它特征或其它特征的组合进行组合。此外,本文描述或描绘的任何实施例和特征可以在单独的权利要求中要求保护,和/或在与本文描述或描绘的任何实施例或特征或者与所附权利要求的任何特征的任何组合中要求保护。
在各种实施例中,本公开的发明提供了一种基于视图相关架构(称为“视图层次(view hierarchy)”)对对象进行编码的方法。视图层次是围绕一个对象的多个视点的布局,每个视点与如下的对象的表示相关联:该对象的表示从该视点捕获对象的几何形状和纹理。图1示出了围绕对象150的视图层次100的示例。视图层次100的每个顶点代表从空间中该点来看的视点,其中三个顶点示为视点105、106和107。在特定实施例中,视图层次的视点基于等矩形布局来分布,类似于地球的球体。视图层次的视点可以以这样的方式分布:使得最大数量的视点分布在赤道或0度纬度周围,并且数量减少的视点沿着远离赤道的其它非零度纬度分布。在其它实施例中,视图层次的视点可以基于不同的布局(例如,测地线分布)来分布。在特定实施例中,视图层次可以由称为“视图三角形”的多个三角形组成,每个三角形由三个视点形成。例如,图1示出了由视点105、106和107形成的视图三角形。在图1所示的实施例中,视图层次100由围绕对象150的单层视点组成,使得所有视点位于距对象150中心的固定距离处。在其它实施例中,视图层次可以由两层或更多层组成,使得不同层的视点置于距对象中心的不同距离处。例如,如果视图层次由两层组成,则第一层中的视点可以分布为使得第一层由多个视图三角形组成,并且附加的视点可以分布在第二层中,使得它们与来自第一层的视图三角形形成“视图四面体”。具有多层视点的实施例因为可以基于不同深度的视点对对象进行编码,因此可能是有利的。
在特定实施例中,可以通过从围绕对象的每个视点生成对象的表示来对虚拟对象进行编码。与视点相关联的每个表示可以包括两种类型的数据:(1)“表面代理”或“网格”,其表示从视点对对象的几何形状的简化表示;以及(2)RGB数据,其表示网格的视图相关纹理。例如,图1示出了与视图层次100的视点105相对应的网格142和RGB数据148。
网格是对象的几何形状的片段,其基于深度信息从特定视点(或视点组)表示对象的整体体积和形状。从一个视点来看,网格只代表对象的一部分,所以移动到网格后面会显示该网格是一个空壳。换句话说,网格是原始对象的复杂几何形状的简化几何形状,并且是从深度数据中导出的。因此,网格的密度和质量受深度缓冲分辨率的影响,而不是受对象的几何复杂度影响。在特定实施例中,可以通过利用光栅化过程来产生网格。从覆盖深度缓冲区(depth buffer)的稀疏网格(例如,128×128像素)开始,评估与网格的每个单元格相关联的深度值的范围(例如,最小深度值和最大深度值),以确定该单元格的适当尺寸。如果与任何一个单元格相关联的深度值的范围太大而不能由该单元格表示,则可以递归方式将该单元格均匀地细分为四份,直到每个细分后的单元格的尺寸适合于与该单元格相关联的深度值的范围,或者直到该单元格达到最小单元格尺寸(例如,2×2像素)。一旦确定了这些单元格的适当尺寸,通过插入穿过单元格的对角线,来将每个单元格分成两个三角形(在一些实施例中,这些单元格可以分成不同于三角形的多边形形状)。如果三角形的任何顶点超出截止阈值,则所述三角形可能会被丢弃。这意味着,由任何一个单元格产生的三角形的数量可以是零、一个或两个。一旦生成了三角形,就可以通过进一步丢弃斜率(例如,深度增量)超出工作范围的任何三角形,来应用深度悬崖滤波器。对于所有剩余的三角形,这些三角形的顶点基于深度缓冲区而被映射到x-y坐标空间的x和y值以及z值。这种网格生成方法消除了所有不属于对象的一部分的空白空间,并动态调整了三角形密度以适应深度复杂度最高的区域(如边缘)。图1示出了通过该方法生成的示例网格142。除非对象的几何形状发生变化,否则网格不需要重新计算或更新,因此,网格通常可以预先计算并以“随时可用”的方式保存。在特定实施例中,对应于几个视点的网格可以被组合以生成单个统一网格。例如,主要视图的网格可以组合为单个统一网格,该单个统一网格表示来自所有三个视点的对象的简化几何形状(例如,视图三角形)。
RGB数据是从视点的角度对对象的纹理渲染(例如,视图相关纹理)。网格和RBG数据被设计成使得当基于本文描述的方法组合时,所得图像将实际上与原始对象渲染几乎难以区分。在特定实施例中,可以为几个邻近的视点渲染更高质量的RGB数据,而不是为每个单独的视点渲染单独的RGB数据。这是可能的,因为几个邻近视点的RGB数据可能彼此没有实质上的不同(例如,对象的从任何一个视点来看的纹理通常看起来与从邻近视点来看的纹理相似)。在特定实施例中,服务器可以分析用户在虚拟环境中的位置和轨迹,然后提供用户重构对象可能需要的网格和RGB数据(对应于视图层次的视点)。
对象的重构过程由用户设备基于该对象的视图层次在本地执行。在特定实施例中,重构过程包括:通过将来自用户的视点的光线投射到对象的中心并确定该光线与视图层次相交的点(称为“命中点”),来确定用户相对于对象的视图层次的视点。例如,图2示出了投射在用户的视点210(例如,虚拟相机位置)与对象的中心点215之间的光线220。光线220与视图层次100相交的点被称为命中点250。然后,识别包围命中点250的视图三角形,并且选择形成该视图三角形的三个视点作为“主要视图”(例如,视点105、106和107)。然后,可以确定用户的视点210相对于视图三角形(由主要视图形成)的重心坐标。如下文所述,由设备执行的重构过程可以包括:对于每个主要视图,基于对应于该主要视图的网格和RGB数据,从用户的视点来渲染对象的图像,然后基于用户的视点相对于主要视图的重心坐标来混合图像。
图3A至图3B示出了如下过程:对于每个主要视图,基于对应于该主要视图的网格和RGB数据从用户的视点来渲染对象的图像(例如,从用户的视点对对象进行重新投影),然后通过组合重新投影的图像来重构对象。例如,图3A示出了每个主要视图(“重新投影1”、“重新投影2”和“重新投影3”)的重新投影步骤,其中对应于主要视图的网格和RGB数据渲染成来自主要视图的对象的重新投影图像。网格301和RGB数据302被示为被渲染成重新投影图像305,网格311和RGB数据312被示为被渲染成重新投影图像315,并且网格321和RGB数据322被示为被渲染成投影图像325。在特定实施例中,可以在单独的帧缓冲区中处理三个重新投影步骤中的每一个。由于与主要视图相关联的视点可能不同于用户的视点(例如,从用户的视点观看的对象的一些部分可能从主要视图不可见),因此每个重新投影步骤本身可能无法完全重构对象。因此,图3B示出了分别缺少对象的内部部分381和382的重新投影图像305和315以及缺少对象的底部部分383的重新投影图像325。在生成三个重新投影图像之后,可以使用自定义混合操作来执行组合步骤,其中,基于重心权重(例如,基于用户的视点相对于主要视图的重心坐标来确定)来组合包括重新投影图像的三个帧缓冲区。例如,图3A示出了通过将三个重新投影图像混合在一起而生成的重构图像350。在特定实施例中,如果对象的几何形状的一些近似值与低置信度相关联,则自定义混合操作可以从重构图像中移除对象的部分,从而在对象中创建“孔”。在这种情况下,可以对重构对象执行基于模板的孔填充步骤,以填充在自定义混合操作期间产生的任何孔。模板的使用确保只有孔内的碎片被填充。在特定实施例中,除了网格和RGB数据之外,服务器还可以向用户设备提供阴影纹理,以允许该设备将阴影纹理渲染到对象的重构图像中。服务器可以将阴影纹理渲染为非视图相关的全局阴影纹理,因此仅为对象渲染单个阴影纹理。在重构过程中,全局阴影纹理可能必须基于用户的视点进行变换或整形,以匹配重构图像中的对象。全局阴影纹理可以在自定义混合操作期间或在单独的操作中被渲染到重构图像中。例如,图3A示出了渲染到重构图像350中的全局阴影纹理330。
图4示出了生成渲染数据(例如,网格和RGB数据)的服务器与执行重构过程的设备之间的流程图400。在特定实施例中,如图4所示,由于对象的几何形状通常不改变,因此服务器可以预先计算对象401的网格并存储预先计算的网格402以供后续使用。在特定实施例中,服务器可以使用渲染器403来渲染对象的RGB数据和阴影纹理。与网格不同,RGB数据和阴影纹理不仅基于视点还基于虚拟环境中的照明条件进行渲染。这意味着,因为照明条件通常比对象的几何形状变化得更频繁,所以RGB数据和阴影纹理可能需要比网格更频繁地渲染和更新。因此,在特定实施例中,渲染器403可以根据需要在运行时渲染RGB数据和阴影纹理,而不是预先渲染它们。在其它实施例中,例如,当照明条件不频繁改变时,渲染器403可以以类似于网格的方式预先渲染RGB数据和阴影纹理。
在特定实施例中,基于优先级的流转化器(priority-based streamer,PBS)410可以基于用户在虚拟环境中的位置和轨迹来确定与用户最相关的视点。例如,PBS 410可以基于接收的来自用户设备的六自由度(six degrees of freedom,6DOF)跟踪信息485,来确定用户的当前位置和轨迹。PBS 410可以基于用户的位置和轨迹,识别用户重构对象可能需要的视点,所述视点可以包括在三个最近视点之外的视点,例如主要视图。在特定实施例中,PBS 410可以对视点确定优先级,因此可以在不太相关的渲染数据(例如,网格和RGB数据)之前向用户提供更相关的渲染数据。例如,PBS 410可以基于用户必然需要的视点、用户很可能需要的视点以及用户可能需要的视点来对视点确定优先级。在识别与用户相关的视点后,PBS 410可以请求渲染器403为所识别的视点渲染RGB数据。一旦针对所识别的视点渲染了RGB数据,PBS 410可以将RGB数据和对应的预先计算的网格提供给压缩/编码处理器420以用于传输。在特定实施例中,可以根据基于面向块的、运动补偿的整数-DCT编码(例如高级视频编码(“AVC”)或H.264)的视频压缩标准,对RGB数据进行压缩。可以基于利用网格顶点的均匀间距的自定义网格压缩算法来压缩网格。然后可以将压缩数据提供给用户设备。
在特定实施例中,由用户设备接收的压缩数据可以由数据解码和处理线程450进行解码和处理。一旦被解码和处理,数据可以被提供到用户设备的视图层次和资源数据库455。在特定实施例中,用户设备可以存储和维护其自己的对象的视图层次,因此当接收到某些视点的网格和RGB数据时,设备用接收到的信息更新相应的视点。在特定实施例中,用户设备可以利用本地高速缓存并存储从服务器接收的网格和RGB数据,使得它们可以用于未来的重构过程。
图5示出了用于生成对象的视图层次的示例方法500。该方法可以开始于步骤501,在步骤501,为由几何表示定义的虚拟对象生成围绕该虚拟对象的多个视点。在步骤502,该方法通过针对该多个视点中的每一个视点,基于该视点生成虚拟对象的简化几何表示来继续,其中,该简化几何表示具有比该虚拟对象的几何表示更低的分辨率。在步骤503,该方法可以通过从客户端设备接收用于观看虚拟对象的期望视点来继续。在步骤504,该方法可以通过基于期望视点从该多个视点中选择一个或多个视点来继续。在步骤505,该方法可以通过向客户端设备发送渲染数据来继续,该渲染数据包括与所选择的一个或多个视点中的每一个视点相关联的简化几何表示和相关联的视图相关纹理,该渲染数据被配置用于从期望视点渲染虚拟对象的图像。特定实施例可以在适当的情况下重复图5的方法的一个或多个步骤。尽管本公开描述并示出了图5的方法的特定步骤以特定顺序发生,但是本公开考虑了图5的方法的任何适当的步骤以任何适当的顺序发生。此外,尽管本公开描述并示出了用于生成对象的视图层次的示例方法,但是本公开考虑了包括任何适当的步骤的用于生成对象的视图层次的任何适当的方法,该任何适当的步骤可以在适当的情况下包括图5的方法的所有或一些步骤,或者不包括图5的方法的步骤。
图6示出了用于确定与用户相关的视点并提供与相关视点相关联的渲染数据的示例方法600。该方法可以从步骤601开始,在步骤601,从客户端设备接收用于观看虚拟对象的期望视点,虚拟对象由几何表示定义。在步骤602,该方法可以通过基于期望视点从围绕虚拟对象的多个视点中选择一个或多个视点来继续。在步骤603,该方法可以通过以下来继续:对于所选择的一个或多个视点中的每一个视点,访问与所选择的视点相关联的简化几何表示,其中,该简化几何表示具有比虚拟对象的几何表示更低的分辨率;以及从所选择的视点渲染视图相关纹理,该视图相关纹理与该简化几何表示相关联。在步骤604,该方法可以通过以下来继续:向客户端设备发送简化几何表示以及与所选择的一个或多个视点中的每一个视点相关联的视图相关纹理以用于从期望视点渲染虚拟对象的图像。特定实施例可以在适当的情况下重复图6的方法的一个或多个步骤。尽管本公开描述并示出了图6的方法的特定步骤以特定顺序发生,但是本公开考虑了图6的方法的任何适当的步骤以任何适当的顺序发生。此外,尽管本公开描述并示出了用于确定与用户相关的视点并将与相关视点相关联的网格数据和RGB数据提供到与用户相关联的设备的示例方法,但是本公开考虑了用于确定与用户相关的视点并将与相关视点相关联的网格数据和RGB数据提供到与用户相关联的设备的任何适当的方法包括任何适当的步骤,所述任何适当的步骤可以在适当的情况下包括图6的方法的所有或一些步骤,或者不包括图6的方法的步骤。此外,尽管本公开描述并示出了执行图6的方法的特定步骤的特定部件、设备或系统,但是本公开考虑了执行图6的方法的任何适当的步骤的任何适当的部件、设备或系统的任何适当的组合。
图7示出了用于基于对象的简化几何表示和视图相关纹理来渲染虚拟对象的图像的示例方法700。该方法可以从步骤701开始,在步骤701,从计算服务器接收用于渲染虚拟对象的图像的渲染数据,该虚拟对象由几何表示定义,其中,渲染数据与围绕虚拟对象的多个视点相关联,并且其中,对于该多个视点中的每一个视点,渲染数据包括从该视点看的虚拟对象的简化表示和相关联的视图相关纹理,该简化表示具有比虚拟对象的几何表示更低的分辨率。在步骤702,该方法可以通过确定用于观看虚拟对象的期望视点来继续。在步骤703,该方法可以通过基于期望视点来选择该多个视点中的一个或多个视点来继续。在步骤704,该方法可以通过以下来继续:基于所选择的一个或多个视点中的每一个视点的简化几何表示和相关联的视图相关纹理,从期望视点渲染虚拟对象的图像。特定实施例可以在适当的情况下重复图7的方法的一个或多个步骤。尽管本公开描述并示出了图7的方法的特定步骤以特定顺序发生,但是本公开考虑了图7的方法的任何适当的步骤以任何适当的顺序发生。此外,尽管本公开描述并示出了用于在设备上本地重构对象的示例方法,但是本公开考虑了用于在设备上本地重构对象的任何适当的方法包括任何适当的步骤,所述任何适当的步骤可以在适当的情况下包括图7的方法的所有或一些步骤,或者不包括图7的方法的步骤。此外,尽管本公开描述并示出了执行图7的方法的特定步骤的特定部件、设备或系统,但是本公开考虑了执行图7的方法的任何适当的步骤的任何适当的部件、设备或系统的任何适当的组合。
图8示出了与社交网络系统相关联的示例网络环境800。网络环境800包括通过网络810彼此连接的客户端系统830、社交网络系统860和第三方系统870。虽然图8示出了客户端系统830、社交网络系统860、第三方系统870和网络810的特定布置,但是本公开考虑了客户端系统830、社交网络系统860、第三方系统870和网络810的任何适当的布置。作为示例而非限制,客户端系统830、社交网络系统860和第三方系统870中的两个或更多个系统可以绕过网络810而彼此直接连接。作为另一个示例,客户端系统830、社交网络系统860和第三方系统870中的两个或更多个系统可以整体地或部分地在物理上或逻辑上彼此共址。例如,AR/VR头戴式设备830可以经由短程无线通信(例如,蓝牙)连接到本地计算机或移动计算设备870。此外,虽然图8示出了特定数量的客户端系统830、社交网络系统860、第三方系统870和网络810,但是本公开考虑了任何适当数量的客户端系统830、社交网络系统860、第三方系统870和网络810。作为示例而非限制,网络环境800可以包括多个客户端系统830、多个社交网络系统860、多个第三方系统870和多个网络810。
本公开考虑了任何适当的网络810。作为示例而非限制,网络810的一个或多个部分可以包括短程无线网络(例如,蓝牙、Zigbee等)、自组网络、内联网、外联网、虚拟专用网络(virtual private network,VPN)、局域网(local area network,LAN)、无线LAN(wireless LAN,WLAN)、广域网(wide area network,WAN)、无线WAN(wireless WAN,WWAN)、城域网(metropolitan area network,MAN)、互联网的一部分、公共交换电话网(publicswitched telephone network,PSTN)的一部分、蜂窝电话网络或这些网络中的两种或更多种网络的组合。网络810可以包括一个或多个网络810。
链路850可以将客户端系统830、社交网络系统860和第三方系统870连接到通信网络810或彼此连接。本公开考虑了任何适当的链路850。在特定实施例中,一条或多条链路850包括一条或多条有线(例如,数字用户线(digital subscriber line,DSL)或有线数据服务接口规范(data over cable service interface specification,DOCSIS))链路、无线(例如,Wi-Fi、全球微波互联接入(worldwide interoperability for microwaveaccess,WiMAX)、蓝牙)链路、或光(例如,同步光网络(synchronous optical network,SONET)或同步数字体系(synchronous digital hierarchy,SDH))链路。在特定实施例中,一条或多条链路850各自包括自组网络、内联网、外联网、VPN、LAN、WLAN、WAN、WWAN、MAN、互联网的一部分、PSTN的一部分、基于蜂窝技术的网络、基于卫星通信技术的网络、另一链路850或者两种或更多种这样的链路850的组合。各链路850在整个网络环境800中不必是相同的。一条或多条第一链路850可以在一个或多个方面不同于一条或多条第二链路850。
在特定实施例中,客户端系统830可以是如下电子设备:该电子设备包括硬件、软件或嵌入式逻辑部件或两种或更多种这样的部件的组合,并且能够执行由客户端系统830实现或支持的适当功能。作为示例而非限制,客户端系统830可以包括计算机系统,例如VR/AR头戴式设备、台式计算机、笔记本或膝上型计算机、上网本、平板计算机、电子书阅读器、GPS设备、相机、个人数字助理(personal digital assistant,PDA)、手持电子设备、蜂窝电话、智能电话、增强/虚拟现实设备、其它适当的电子设备或它们的任何适当的组合。本公开考虑了任何适当的客户端系统830。客户端系统830可以使客户端系统830处的网络用户能够访问网络810。客户端系统830可以使其用户能够与其它客户端系统830处的其他用户通信。
在特定实施例中,社交网络系统860可以是可以托管在线社交网络的网络可寻址计算系统。社交网络系统860可以生成、存储、接收和发送社交网络数据(例如,用户简档数据、概念简档数据、社交图信息或与在线社交网络相关的其它适当数据)。社交网络系统860可以由网络环境800的其它部件直接地或经由网络810访问。作为示例而非限制,客户端系统830可以使用网络浏览器或与社交网络系统860相关联的本地应用(例如,移动社交网络应用、消息传递应用、另一适当的应用或它们的任意组合)直接地或经由网络810来访问社交网络系统860。在特定实施例中,社交网络系统860可以包括一个或多个服务器862。每个服务器862可以是单一服务器或跨越多个计算机或多个数据中心的分布式服务器。服务器862可以具有各种类型,例如,但不限于网络服务器、新闻服务器、邮件服务器、消息服务器、广告服务器、文件服务器、应用服务器、交换服务器、数据库服务器、代理服务器、适合于执行本文描述的功能或过程的另一服务器或它们的任意组合。在特定实施例中,每个服务器862可以包括硬件、软件或嵌入式逻辑部件或两种或更多种这样的部件的组合,以用于执行由服务器862实现或支持的适当功能。在特定实施例中,社交网络系统860可以包括一个或多个数据存储区864。数据存储区864可用于存储各种类型的信息。在特定实施例中,存储在数据存储区864中的信息可以根据特定的数据结构来组织。在特定实施例中,每个数据存储区864可以是关系数据库、列式数据库、相关数据库或其它适当的数据库。尽管本公开描述或示出了特定类型的数据库,但是本公开考虑了任何适当类型的数据库。特定实施例可以提供使客户端系统830、社交网络系统860或第三方系统870能够管理、检索、修改、添加或删除存储在数据存储区864中的信息的接口。
在特定实施例中,社交网络系统860可以将一个或多个社交图存储在一个或多个数据存储区864中。在特定实施例中,社交图可以包括多个节点——其可以包括多个用户节点(每个对应于特定用户)或多个概念节点(每个对应于特定概念)——以及连接这些节点的多条边。社交网络系统860可以向在线社交网络的用户提供与其它用户通信和交互的能力。在特定实施例中,用户可以经由社交网络系统860加入在线社交网络,然后将连接(例如,关系)添加到他们想要连接到的、社交网络系统860的多个其它用户。这里,术语“朋友”可以指用户已经经由社交网络系统860与之形成连接、关联或关系的、社交网络系统860的任何其它用户。
在特定实施例中,社交网络系统860可以向用户提供在社交网络系统860支持下对各种类型的项目或对象采取动作的能力。作为示例而非限制,这些项目和对象可以包括社交网络系统860的用户可能所属的组或社交网络、用户可能感兴趣的事件或日程表条目、用户可能使用的基于计算机的应用、允许用户通过服务购买或出售项目的交易、用户可能执行的与广告的交互或者其它适当的项目或对象。用户可以与能够在社交网络系统860中表示或由第三方系统870的外部系统表示的任何事物进行交互,第三方系统870与社交网络系统860分离并经由网络810耦接到社交网络系统860。
在特定实施例中,社交网络系统860能够链接各种实体。作为示例而非限制,社交网络系统860可以使用户能够彼此交互以及从第三方系统870或其它实体接收内容,或者允许用户通过应用编程接口(application programming interface,API)或其它通信信道与这些实体交互。
在特定实施例中,第三方系统870可以包括通信地耦接到客户端系统830的本地计算设备。例如,如果客户端系统830是AR/VR头戴式设备,则第三方系统870可以是本地膝上型计算机,该膝上型计算机被配置为执行必要的图形渲染并将渲染结果提供给AR/VR头戴式设备830用于后续处理和/或显示。在特定实施例中,第三方系统870可以执行与客户端系统830(例如,渲染引擎)相关联的软件。第三方系统870可以生成具有视频帧的稀疏像素信息的样本数据集,并将稀疏数据发送到客户端系统830。客户端系统830然后可以生成从样本数据集重构的帧。
在特定实施例中,第三方系统870还可以包括一种或多种类型的服务器、一个或多个数据存储区、一个或多个接口(包括但不限于API)、一个或多个网络服务、一个或多个内容源、一个或多个网络、或例如服务器可以与其通信的任何其它适当的组件。第三方系统870可以由与操作社交网络系统860的实体不同的实体来操作。然而,在特定实施例中,社交网络系统860和第三方系统870可以彼此协同操作,以向社交网络系统860或第三方系统870的用户提供社交网络服务。在这种意义上,社交网络系统860可以提供平台或主干,其它系统(例如,第三方系统870)可以使用该平台或主干而跨互联网向用户提供社交网络服务和功能。
在特定实施例中,第三方系统870可以包括第三方内容对象提供者(例如,包括本文描述的稀疏样本数据集)。第三方内容对象提供者可以包括内容对象的一个或多个源,该一个或多个源可以与客户端系统830通信。作为示例而非限制,内容对象可以包括与用户感兴趣的事物或活动有关的信息,例如电影放映时间、电影评论、餐馆评论、餐馆菜单、产品信息和评论或其它适当的信息。作为另一个示例而非限制,内容对象可以包括激励内容对象,例如优惠券、折扣票、礼券或其它适当的激励对象。
在特定实施例中,社交网络系统860还包括用户生成的内容对象,该内容对象可以增强用户与社交网络系统860的交互。用户生成的内容可以包括用户可以添加、上传、发送或“发布”到社交网络系统860的任何事物。作为示例而非限制,用户从客户端系统830向社交网络系统860传送帖子。帖子可以包括例如状态更新或其它文本数据、位置信息、照片、视频、链接、音乐等数据或其它类似数据或媒介。内容也可以由第三方通过“通信信道”(例如,新闻源或流)添加到社交网络系统860。
在特定实施例中,社交网络系统860可以包括各种服务器、子系统、程序、模块、日志和数据存储区。在特定实施例中,社交网络系统860可以包括下述的一者或多者:网络服务器、动作记录器、API请求服务器、相关度和排名引擎、内容对象分类器、通知控制器、动作日志、第三方内容对象暴露日志、推理模块、授权/隐私服务器、搜索模块、广告定位模块、用户界面模块、用户简档存储区、关系存储区、第三方内容存储区或位置存储区。社交网络系统860还可以包括适当的部件,例如网络接口、安全机制、负载平衡器、故障转移服务器、管理和网络操作控制台、其它适当的部件或它们的任何适当的组合。在特定实施例中,社交网络系统860可以包括用于存储用户简档的一个或多个用户简档存储区。用户简档可以包括例如传记信息、人口统计信息、行为信息、社会信息或其它类型的描述性信息,例如工作经历、教育历史、爱好或偏好、兴趣、亲密关系或位置。兴趣信息可以包括与一个或多个类别相关的兴趣。类别可以是一般的或特定的。作为示例而非限制,如果用户“喜欢”关于某品牌的鞋的文章,则该类别可以是该品牌,或者“鞋”或“服装”的一般类别。关系存储区可以用于存储关于用户的关系信息。关系信息可以指示具有相似或共同的工作经验、群组成员、爱好、教育历史或以任何方式相关或共享共同属性的用户。关系信息还可以包括不同用户和内容(内部和外部)之间的、用户定义的关系。网络服务器可以用于经由网络810将社交网络系统860连接到一个或多个客户端系统830或者一个或多个第三方系统870。网络服务器可以包括邮件服务器或用于在社交网络系统860与一个或多个客户端系统830之间接收和路由消息的其它消息收发功能。API请求服务器可以允许第三方系统870通过调用一个或多个API来从社交网络系统860访问信息。动作记录器可以用于从网络服务器接收关于用户登录社交网络系统860或离开社交网络系统860的动作的通信。结合动作日志,可以维护用户对第三方内容对象的暴露的第三方内容对象日志。通知控制器可以向客户端系统830提供关于内容对象的信息。可以将信息作为通知推送到客户端系统830,或者可以响应于从客户端系统830接收的请求从客户端系统830提取信息。授权服务器可以用于强制执行社交网络系统860的用户的一个或多个隐私设置。用户的隐私设置确定如何能够共享与用户相关联的特定信息。授权服务器可以例如通过设置适当的隐私设置,允许用户选择加入或选择退出使社交网络系统860记录用户的动作或与其它系统(例如,第三方系统870)共享用户的动作。第三方内容对象存储区可以用于存储从第三方(例如,第三方系统870)接收的内容对象。位置存储区可以用于存储从与用户相关联的客户端系统830接收的位置信息。广告定价模块可以组合社交信息、当前时间、位置信息或其它适当的信息,以通知的形式向用户提供相关广告。
图9示出了示例计算机系统900。在特定实施例中,一个或多个计算机系统900执行本文描述或示出的一种或多种方法的一个或多个步骤。在特定实施例中,一个或多个计算机系统900提供本文描述或示出的功能。在特定实施例中,在一个或多个计算机系统900上运行的软件执行本文描述或示出的一种或多种方法的一个或多个步骤,或者提供本文描述或示出的功能。特定实施例包括一个或多个计算机系统900的一个或多个部分。此处,在适当的情况下,对计算机系统的引用可以包括计算设备,反之亦然。此外,在适当的情况下,对计算机系统的引用可以包括一个或多个计算机系统。
本公开考虑了任何适当数量的计算机系统900。本公开考虑了计算机系统900采用任何适当的物理形式。作为示例而非限制,计算机系统900可以是嵌入式计算机系统、片上系统(system-on-chip,SOC)、单板计算机系统(single-board computer system,SBC)(例如,模块上计算机(computer-on-module,COM)或模块上系统(system-on-module,SOM))、台式计算机系统、膝上型或笔记本计算机系统、交互式自助服务机(interactive kiosk)、大型机、计算机系统网格、移动电话、个人数字助理(PDA)、服务器、平板计算机系统、增强/虚拟现实设备或这些中的两种或更多种的组合。在适当的情况下,计算机系统900可以包括一个或多个计算机系统900;单一的或分布式的;跨越多个位置;跨越多台机器;跨越多个数据中心;或者驻留在云中,所述云可以包括一个或多个网络中的一个或多个云组件。在适当的情况下,一个或多个计算机系统900可以在没有实质上的空间或时间限制的情况下执行本文描述或示出的一种或多种方法的一个或多个步骤。作为示例而非限制,一个或多个计算机系统900可以实时地或以批处理模式执行本文描述或示出的一种或多种方法的一个或多个步骤。在适当的情况下,一个或多个计算机系统900可以在不同的时间或在不同的位置执行本文描述或示出的一种或多种方法的一个或多个步骤。
在特定实施例中,计算机系统900包括处理器902、存储器904、存储装置906、输入/输出(I/O)接口908、通信接口910和总线912。尽管本公开描述并示出了在特定布置中具有特定数量的特定组件的特定计算机系统,但是本公开考虑了在任何适当的布置中具有任何适当数量的任何适当组件的任何适当计算机系统。
在特定实施例中,处理器902包括用于执行指令的硬件,例如构成计算机程序的那些指令。作为示例而非限制,为了执行这些指令,处理器902可以从内部寄存器、内部高速缓存、存储器904或存储装置906检索(或提取)指令;解码并执行这些指令;然后将一个或多个结果写入内部寄存器、内部高速缓存、存储器904或存储装置906。在特定实施例中,处理器902可以包括用于数据、指令或地址的一个或多个内部高速缓存。在适当的情况下,本公开考虑了处理器902包括任何适当数量的任何适当的内部高速缓存。作为示例而非限制,处理器902可以包括一个或多个指令高速缓存、一个或多个数据高速缓存和一个或多个转译后备缓冲器(translation lookaside buffer,TLB)。指令高速缓存中的指令可以是存储器904或存储装置906中的指令的副本,并且指令高速缓存可以加速处理器902对那些指令的检索。数据高速缓存中的数据可以是存储器904或存储装置906中的用于在处理器902处执行以进行操作的指令的数据的副本;在处理器902处执行的用于由在处理器902处执行的后续指令进行访问或用于写入存储器904或存储装置906的先前指令的结果;或其它适当的数据。数据高速缓存可以加速处理器902的读取或写入操作。TLB可以加速用于处理器902的虚拟地址转换。在特定实施例中,处理器902可以包括用于数据、指令或地址的一个或多个内部寄存器。在适当的情况下,本公开考虑了处理器902包括任何适当数量的任何适当的内部寄存器。在适当的情况下,处理器902可以包括一个或多个算术逻辑单元(arithmeticlogic unit,ALU);可以是多核处理器;或者可以包括一个或多个处理器902。尽管本公开描述并示出了特定处理器,但是本公开考虑了任何适当的处理器。
在特定实施例中,存储器904包括主存储器,该主存储器用于存储处理器902执行的指令或处理器902操作的数据。作为示例而非限制,计算机系统900可以将指令从存储装置906或另一个源(例如,另一个计算机系统900)加载到存储器904。然后,处理器902可以将指令从存储器904加载到内部寄存器或内部高速缓存。为了执行这些指令,处理器902可以从内部寄存器或内部高速缓存中检索这些指令并对这些指令进行解码。在这些指令的执行期间或之后,处理器902可以将一个或多个结果(其可以是中间或最终结果)写入内部寄存器或内部高速缓存。然后,处理器902可以将这些结果中的一个或多个结果写入存储器904。在特定实施例中,处理器902仅执行一个或多个内部寄存器或内部高速缓存或存储器904(与存储装置906或其它处相对)中的指令,并且仅对一个或多个内部寄存器或内部高速缓存或存储器904(与存储装置906或其它处不同)中的数据进行操作。一个或多个存储器总线(其可以各自包括地址总线和数据总线)可以将处理器902耦接到存储器904。如下文所述,总线912可以包括一个或多个存储器总线。在特定实施例中,一个或多个存储器管理单元(memory management units,MMU)驻留在处理器902与存储器904之间,并且促进由处理器902请求的对存储器904的访问。在特定实施例中,存储器904包括随机存取存储器(randomaccess memory,RAM)。在适当的情况下,该RAM可以是易失性存储器。在适当的情况下,该RAM可以是动态RAM(dynamic RAM,DRAM)或静态RAM(static RAM,SRAM)。此外,在适当的情况下,该RAM可以是单端口或多端口RAM。本公开考虑了任何适当的RAM。在适当的情况下,存储器904可以包括一个或多个存储器904。尽管本公开描述并示出了特定存储器,但是本公开考虑了任何适当的存储器。
在特定实施例中,存储装置906包括用于数据或指令的大容量存储。作为示例而非限制,存储装置906可以包括硬盘驱动器(hard disk drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,USB)驱动器或者这些中的两种或更多种的组合。在适当的情况下,存储装置906可以包括可移动或不可移动(或固定)介质。在适当的情况下,存储装置906可以在计算机系统900的内部或外部。在特定实施例中,存储装置906是非易失性固态存储器。在特定实施例中,存储装置906包括只读存储器(read-onlymemory,ROM)。在适当的情况下,该ROM可以是掩模编程ROM、可编程ROM(programmable ROM,PROM)、可擦除PROM(erasable PROM,EPROM)、电可擦除PROM(electrically erasablePROM,EEPROM)、电可改写ROM(electrically alterable ROM,EAROM)或闪存或者这些中的两种或更多种的组合。本公开考虑了采用任何适当的物理形式的大容量存储装置906。在适当的情况下,存储装置906可以包括促进处理器902与存储装置906之间的通信的一个或多个存储控制单元。在适当的情况下,存储装置906可以包括一个或多个存储装置906。尽管本公开描述并示出了特定存储装置,但本公开考虑了任何适当的存储装置。
在特定实施例中,I/O接口908包括硬件、软件或两者,提供用于计算机系统900与一个或多个I/O设备之间的通信的一个或多个接口。在适当的情况下,计算机系统900可以包括这些I/O设备中的一个或多个。这些I/O设备中的一个或多个可以实现个人与计算机系统900之间的通信。作为示例而非限制,I/O设备可以包括键盘、小键盘、麦克风、监视器、鼠标、打印机、扫描仪、扬声器、静态相机、触控笔、平板计算机、触摸屏、轨迹球、摄像机、另一适当的I/O设备或这些中的两种或更多种的组合。I/O设备可以包括一个或多个传感器。本公开考虑了任何适当的I/O设备和用于任何适当的I/O设备的任何适当的I/O接口908。在适当的情况下,I/O接口908可以包括使处理器902能够驱动这些I/O设备中的一个或多个I/O设备的一个或多个设备或软件驱动器。在适当的情况下,I/O接口908可以包括一个或多个I/O接口908。尽管本公开描述并示出了特定I/O接口,但是本公开考虑了任何适当的I/O接口。
在特定实施例中,通信接口910包括为计算机系统900与一个或多个其它计算机系统900或者一个或多个网络之间的通信(例如,基于分组的通信)提供一个或多个接口的硬件、软件或两者。作为示例而非限制,通信接口910可以包括用于与以太网或其它基于有线的网络通信的网络接口控制器(NIC)或网络适配器,或者用于与无线网络(例如,WI-FI网络)通信的无线NIC(wireless NIC,WNIC)或无线适配器。本公开考虑了任何适当的网络和用于任何适当的网络的任何适当的通信接口910。作为示例而非限制,计算机系统900可以与自组网络、个人区域网(PAN)、局域网(LAN)、广域网(WAN)、城域网(MAN)或互联网的一个或多个部分或者这些中的两种或更多种的组合进行通信。这些网络中的一个或多个网络的一个或多个部分可以是有线的或无线的。作为示例,计算机系统900可以与无线PAN(wireless PAN,WPAN)(例如,蓝牙WPAN)、WI-FI网络、WI-MAX网络、蜂窝电话网络(例如,全球移动通信系统(global system for mobile communications,GSM)网络)或其它适当的无线网络或者这些中的两种或更多种的组合进行通信。在适当的情况下,计算机系统900可以包括用于这些网络中的任何一个网络的任何适当的通信接口910。在适当的情况下,通信接口910可以包括一个或多个通信接口910。尽管本公开描述并示出了特定通信接口,但是本公开考虑了任何适当的通信接口。
在特定实施例中,总线912包括将计算机系统900的组件彼此耦接的硬件、软件或两者。作为示例而非限制,总线912可以包括加速图形端口(accelerated graphics port,AGP)或其它图形总线、增强型工业标准架构(enhanced industry standardarchitecture,EISA)总线、前端总线(front-side bus,FSB)、超传输(hypertransport,HT)互连、工业标准架构(industry standard architecture,ISA)总线、无限带宽互连、低引脚数(low-pin-count,LPC)总线、存储器总线、微通道架构(micro channel architecture,MCA)总线、外围组件互连(peripheral component interconnect,PCI)总线、PCI-Express(PCIe)总线、串行高级技术附件(serial advanced technology attachment,SATA)总线、视频电子标准协会本地(video electronics standards association local,VLB)总线或另一适当的总线或者这些中的两种或更多种的组合。在适当的情况下,总线912可以包括一个或多个总线912。尽管本公开描述并示出了特定总线,但本公开考虑了任何适当的总线或互连。
在此,计算机可读非暂时性存储介质可以包括一个或多个基于半导体的或其它集成电路(IC)(例如,现场可编程门阵列(field-programmable gate array,FPGA)或专用IC(application-specific IC,ASIC))、硬盘驱动器(HDD)、混合硬盘驱动器(hybrid harddrive,HHD)、光盘、光盘驱动器(optical disc drive,ODD)、磁光盘、磁光驱动器、软盘、软盘驱动器(floppy disk drive,FDD)、磁带、固态驱动器(solid-state drive,SSD)、RAM驱动器、安全数字卡或驱动器、任何其它适当的计算机可读非暂时性存储介质或者这些中的两种或更多种的任何适当的组合。在适当的情况下,计算机可读非暂时性存储介质可以是易失性的、非易失性的或易失性和非易失性的组合。
在此,除非上下文另有其他明确指示或其他指示,否则“或”是包含性的,而不是排他性的。因此,在此,除非上下文另有其他明确指示或其他指示,否则“A或B”是指“A、B、或两者”。此外,除非上下文另有其他明确指示或其他指示,否则“和”既是联合的,也是各自的。因此,在此,除非上下文另有其他明确指示或其他指示,否则“A和B”是指“A和B,联合地或各自地”。
本公开的范围包括本领域普通技术人员将理解的对文本描述或示出的示例实施例的所有改变、替换、变化、变更和修改。本公开的范围不限于本文描述或示出的示例实施例。此外,尽管本公开在此描述和示出了包括特定组件、元件、特征、功能、操作或步骤的各个实施例,但是这些实施例中的任何一个可以包括本领域普通技术人员将理解的在文中任何处描述或示出的任何组件、元件、特征、功能、操作或步骤的任何组合或排列。此外,在所附权利要求中对适合于、布置成、能够、配置成、使能、可操作成或操作以执行特定功能的装置或系统或者装置或系统的组件的引用包括该装置、系统、组件,无论其或该特定功能是否被激活、开启或解锁,只要该装置、系统或组件如此地被适合于、布置、能够、配置、使能、可操作或操作即可。另外,尽管本公开描述或示出了提供特定优点的特定实施例,但是特定实施例可以提供这些优点中的一些或全部,或者可以不提供这些优点。
Claims (20)
1.一种方法,所述方法包括,由计算服务器:
为由几何表示定义的虚拟对象生成围绕所述虚拟对象的多个视点;
针对所述多个视点中的每一个视点,基于所述视点生成所述虚拟对象的简化几何表示,其中,所述简化几何表示具有比所述虚拟对象的所述几何表示低的分辨率;
从客户端设备接收用于观看所述虚拟对象的期望视点;
基于所述期望视点从所述多个视点中选择一个或多个视点;以及
向所述客户端设备发送渲染数据,所述渲染数据包括与选择的所述一个或多个视点中的每一个视点相关联的所述简化几何表示和相关联的视图相关纹理,所述渲染数据被配置用于从所述期望视点渲染所述虚拟对象的图像。
2.根据权利要求1所述的方法,其中,基于所述期望视点从所述多个视点中选择所述一个或多个视点包括:
基于所述期望视点相对于所述虚拟对象的相对位置,对所述多个视点中的一个或多个视点确定优先级;以及
基于所述一个或多个视点的优先级来选择所述多个视点中的一个或多个视点。
3.根据权利要求2所述的方法,其中,对所述多个视点中的所述一个或多个视点确定优先级还基于与所述期望视点相关联的虚拟相机的轨迹。
4.根据权利要求1所述的方法,其中,对于所述多个视点中的每一个视点,所述简化几何表示是在从所述客户端设备接收所述期望视点之前生成的。
5.根据权利要求1所述的方法,其中,对于所述多个视点中的每一个视点,所述简化几何表示还基于光栅化过程而生成。
6.根据权利要求1所述的方法,所述方法还包括:
响应于从所述多个视点中选择所述一个或多个视点,为选择的所述一个或多个视点中的每一个视点生成与所述简化几何表示相关联的所述视图相关纹理。
7.根据权利要求6所述的方法,其中,对于选择的所述一个或多个视点中的每一个视点,所述视图相关纹理是从选择的所述视点基于虚拟环境内的照明条件生成的。
8.根据权利要求1所述的方法,所述方法还包括:
基于虚拟环境内的照明条件生成所述虚拟对象的阴影纹理,并且
其中,所述渲染数据还包括所述阴影纹理。
9.根据权利要求8所述的方法,其中,所述虚拟对象的所述阴影纹理是响应于检测到所述虚拟环境内的所述照明条件的变化而生成的。
10.一种或多种计算机可读非暂时性存储介质,所述一种或多种计算机可读非暂时性存储介质包含软件,所述软件在被执行时能够操作,以执行权利要求1至9中任一项所述的方法或者以:
为由几何表示定义的虚拟对象生成围绕所述虚拟对象的多个视点;
针对所述多个视点中的每一个视点,基于所述视点生成所述虚拟对象的简化几何表示,其中,所述简化几何表示具有比所述虚拟对象的所述几何表示低的分辨率;
从客户端设备接收用于观看所述虚拟对象的期望视点;
基于所述期望视点从所述多个视点中选择一个或多个视点;以及
向所述客户端设备发送渲染数据,所述渲染数据包括与选择的所述一个或多个视点中的每一个视点相关联的所述简化几何表示和相关联的视图相关纹理,所述渲染数据被配置用于从所述期望视点渲染所述虚拟对象的图像。
11.根据权利要求10所述的一种或多种计算机可读非暂时性存储介质,其中,基于所述期望视点从所述多个视点中选择所述一个或多个视点包括:
基于所述期望视点相对于所述虚拟对象的相对位置,对所述多个视点中的一个或多个视点确定优先级;以及
基于所述一个或多个视点的优先级来选择所述多个视点中的一个或多个视点。
12.根据权利要求10所述的一种或多种计算机可读非暂时性存储介质,其中,对于所述多个视点中的每一个视点,所述简化几何表示是在从所述客户端设备接收所述期望视点之前生成的。
13.根据权利要求10所述的一种或多种计算机可读非暂时性存储介质,其中,所述软件在被执行时还能够操作以:
响应于从所述多个视点中选择所述一个或多个视点,为选择的所述一个或多个视点中的每一个视点生成与所述简化几何表示相关联的所述视图相关纹理,并且可选地,
其中,对于选择的所述一个或多个视点中的每一个视点,所述视图相关纹理是从选择的所述视点基于虚拟环境内的照明条件生成的。
14.根据权利要求10所述的一种或多种计算机可读非暂时性存储介质,其中,所述软件在被执行时还能够操作以:
基于虚拟环境内的照明条件生成所述虚拟对象的阴影纹理,并且
其中,所述渲染数据还包括所述阴影纹理。
15.一种系统,所述系统包括:一个或多个处理器;以及与所述一个或多个处理器通信的一个或多个计算机可读非暂时性存储介质,所述一个或多个计算机可读非暂时性存储介质包括指令,所述指令在由所述一个或多个处理器执行时,使得所述系统执行权利要求1至9中任一项所述的方法或执行:
为由几何表示定义的虚拟对象生成围绕所述虚拟对象的多个视点;
针对所述多个视点中的每一个视点,基于所述视点生成所述虚拟对象的简化几何表示,其中,所述简化几何表示具有比所述虚拟对象的所述几何表示低的分辨率;
从客户端设备接收用于观看所述虚拟对象的期望视点;
基于所述期望视点从所述多个视点中选择一个或多个视点;以及
向所述客户端设备发送渲染数据,所述渲染数据包括与选择的所述一个或多个视点中的每一个视点相关联的所述简化几何表示和相关联的视图相关纹理,所述渲染数据被配置用于从所述期望视点渲染所述虚拟对象的图像。
16.根据权利要求15所述的系统,其中,基于所述期望视点从所述多个视点中选择所述一个或多个视点包括:
基于所述期望视点相对于所述虚拟对象的相对位置,对所述多个视点中的一个或多个视点确定优先级;以及
基于所述一个或多个视点的优先级来选择所述多个视点中的一个或多个视点。
17.根据权利要求15所述的系统,其中,对于所述多个视点中的每一个视点,所述简化几何表示是在从所述客户端设备接收所述期望视点之前生成的。
18.根据权利要求15所述的系统,其中,所述一个或多个计算机可读非暂时性存储介质还包括在由所述一个或多个处理器执行时使所述系统执行以下操作的指令:
响应于从所述多个视点中选择所述一个或多个视点,为选择的所述一个或多个视点中的每一个视点生成与所述简化几何表示相关联的所述视图相关纹理。
19.根据权利要求18所述的系统,其中,对于选择的所述一个或多个视点中的每一个视点,所述视图相关纹理是从选择的所述视点基于虚拟环境内的照明条件生成的。
20.一种包括指令的计算机程序,当所述程序由处理器执行时,所述指令使得所述处理器执行权利要求1至9中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/090,627 US20220139026A1 (en) | 2020-11-05 | 2020-11-05 | Latency-Resilient Cloud Rendering |
US17/090,627 | 2020-11-05 | ||
PCT/US2021/055785 WO2022098512A1 (en) | 2020-11-05 | 2021-10-20 | Latency-resilient cloud rendering |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116635900A true CN116635900A (zh) | 2023-08-22 |
Family
ID=80222097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180075067.XA Pending CN116635900A (zh) | 2020-11-05 | 2021-10-20 | 时延弹性化的云渲染 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20220139026A1 (zh) |
EP (1) | EP4241245A1 (zh) |
JP (1) | JP2023547838A (zh) |
KR (1) | KR20230101861A (zh) |
CN (1) | CN116635900A (zh) |
WO (1) | WO2022098512A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115423920B (zh) * | 2022-09-16 | 2024-01-30 | 如你所视(北京)科技有限公司 | Vr场景的处理方法、装置和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1371019A2 (en) * | 2001-01-26 | 2003-12-17 | Zaxel Systems, Inc. | Real-time virtual viewpoint in simulated reality environment |
US10911732B2 (en) * | 2019-01-14 | 2021-02-02 | Fyusion, Inc. | Free-viewpoint photorealistic view synthesis from casually captured video |
-
2020
- 2020-11-05 US US17/090,627 patent/US20220139026A1/en not_active Abandoned
-
2021
- 2021-10-20 WO PCT/US2021/055785 patent/WO2022098512A1/en active Application Filing
- 2021-10-20 CN CN202180075067.XA patent/CN116635900A/zh active Pending
- 2021-10-20 EP EP21854829.5A patent/EP4241245A1/en active Pending
- 2021-10-20 JP JP2023524279A patent/JP2023547838A/ja active Pending
- 2021-10-20 KR KR1020237018632A patent/KR20230101861A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
EP4241245A1 (en) | 2023-09-13 |
JP2023547838A (ja) | 2023-11-14 |
KR20230101861A (ko) | 2023-07-06 |
WO2022098512A1 (en) | 2022-05-12 |
US20220139026A1 (en) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846888B2 (en) | Systems and methods for generating and transmitting image sequences based on sampled color information | |
US11501488B2 (en) | Systems, methods, and media for generating visualization of physical environment in artificial reality | |
US20210233312A1 (en) | Systems, methods, and media for displaying real-time visualization of physical environment in artificial reality | |
US11854230B2 (en) | Physical keyboard tracking | |
US11734808B2 (en) | Generating a composite image | |
US11451758B1 (en) | Systems, methods, and media for colorizing grayscale images | |
WO2022182441A1 (en) | Latency-resilient cloud rendering | |
US10699470B2 (en) | Methods and systems for representing a scene using orthographic and perspective projections | |
US11748940B1 (en) | Space-time representation of dynamic scenes | |
CN116917842A (zh) | 用于在人工现实中生成真实环境的稳定图像的系统和方法 | |
CN116635900A (zh) | 时延弹性化的云渲染 | |
US11410387B1 (en) | Systems, methods, and media for generating visualization of physical environment in artificial reality | |
US11210860B2 (en) | Systems, methods, and media for visualizing occluded physical objects reconstructed in artificial reality | |
US11676324B2 (en) | Cloud rendering of texture map | |
US20220326527A1 (en) | Display System Optimization | |
US20240078745A1 (en) | Generation of a virtual viewpoint image of a person from a single captured image | |
US20230196627A1 (en) | Anti-aliasing by encoding primitive edge representations | |
US11386532B2 (en) | Blue noise mask for video sampling | |
US20240062425A1 (en) | Automatic Colorization of Grayscale Stereo Images | |
US20220122285A1 (en) | Visual inertial odometry localization using sparse sensors | |
CN116210220A (zh) | 经有效运动补偿的时空采样 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |