雨果巴拉:行业北极星Vision Pro过度设计不适合市场

Meta专利提出减少AR/VR云渲染延迟技术

查看引用/信息源请点击:映维网Nweon

减少云渲染延迟的技术

映维网Nweon 2022年05月10日)虚拟现实和增强现实都需要高沉浸感和高舒适度,但两者如同鱼与熊掌,难以兼得。在一定程度上,沉浸感和舒适度互为冲突,因为沉浸感越高,需要的性能就越高,所以设备就需要越大。反过来,优化舒适度或会导致性能下降。

一个解决方案是云端渲染。但云渲染同样存在挑战。例如,全息影像的云渲染不是单纯的查看YouTube视频。除了是渲染拥有多达十亿个多边形的全息图之外,你同时需要与之进行交互。所以延迟问题变得十分复杂。

当然,行业依然在积极探索各种各样的解决方案。在一份名为“Latency-resilient cloud rendering”的专利申请中,Meta就提出了一种减少云渲染延迟的技术。

传统的云渲染方法使用服务器来执行所有渲染任务,并仅将最终视频流发送到客户端设备。但由于渲染过程和网络传输导致的延迟,当视频显示给用户时,服务器用于渲染视频的视点可能与用户的视点不同。所以视点的差异将表现为滞后,而当虚拟对象的几何结构复杂且网络条件差时,滞后将变得尤为明显。

为了解决这些问题,Meta使用服务器来执行繁重的渲染任务,并对3D对象的artifact进行编码,例如简化的几何体和RGB数据。然后,artifact发送到用户设备并由用户设备使用,以利用用户的最新视点重建对象的图像。

所述重建主要利用了这样一个事实:在任何给定时间,AR/VR环境中的用户只能从特定“视点”看到对象的一部分。这意味着为用户呈现的对象可能不需要整体渲染。相反,只需要渲染与用户视点相关的对象部分即可。所以,Meta的方案主要是围绕对象的各种视点对虚拟对象进行编码,而每个视点与简化的几何表示和相关联的视图依赖纹理相关联。一旦基于对象的各种视点对对象进行编码,就可以确定与用户相关的视点,并且可以向用户设备提供与视点相关联的渲染数据。然后,用户设备可以使用从服务器接收的渲染数据,并从用户的视点重建对象。

这家公司表示,发明旨在通过对大量密集计算使用云渲染,同时利用用户设备的本地重建,从而令最终渲染的延迟在较大程度上与网络条件解耦,从而提供具有抗延迟的AR/VR体验。

具体来说,专利提出了一种通过基于视点的架构来对对象进行编码。团队将其称为View Hierarchy。View Hierarchy是围绕对象的多个视点的布局,每个视点都与从视点捕获对象几何体和纹理的对象表示相关联。

图1示出了围绕对象150的View Hierarchy100的示例。View Hierarchy100的每个顶点表示从空间中的该点开始的视点,例如可以是视点105、106和107。在特定实施例中,View Hierarchy的视点基于等矩形布局分布,类似于地球仪。View Hierarchy结构的视点可以这样分布:最大数量的视点分布在赤道或0度纬度周围,而减少数量的视点分布在远离赤道的其他非零度纬度。

在其他实施例中,View Hierarchy的视点可以基于不同的布局分布。在特定实施例中,View Hierarchy可以由多个三角形组成,每个三角形由三个视点组成。例如,图1示出了由视点105、106和107形成的视图三角形。

在图1所示的实施例中,View Hierarchy100由围绕对象150的一层视点组成,使得所有视点放置在远离对象150中心的固定距离。在其他实施例中,View Hierarchy可以由两个或更多层组成,使得不同层的视点放置在远离对象中心的不同距离。对于具有多层视点的实施例,可以基于不同深度的视点对对象进行编码。

在特定实施例中,可以通过从围绕对象的每个视点生成对象的表示来对虚拟对象进行编码。与视点相关联的每个表示可能包括两种类型的数据:Meshlet:表示从视点对对象几何体的简化表示;RGB数据,表示Meshlet的视图相关纹理。例如,图1示出了与View Hierarchy100的视点105相对应的Meshlet142和RGB数据148。

Meshlet是对象几何体的一部分,根据深度信息从特定视点代表对象的整体体积和形状。Meshlet仅代表视点中对象的一部分,因此在Meshlet后面移动将显示它是一个空壳。换句话说,小Meshlet是原始对象复杂几何体的简化几何体,由深度数据导出。因此,Meshlet的密度和质量受深度缓冲区分辨率的影响,而不是对象的几何复杂性。

在特定实施例中,可通过利用光栅化过程来产生Meshlet。从覆盖深度缓冲区的稀疏Meshlet(例如128.times.128像素)开始,评估与Meshlet的每个单元相关联的深度值范围(例如最小和最大深度值),以确定单元的适当大小。

如果与任何一个单元相关联的深度值的范围太大而无法由该单元表示,则该单元可以以递归方式均匀地细分为四分之一,直到每个细分单元的大小适合于与该单元相关联的深度值的范围,或者直到该单元达到最小单元大小(例如,2乘以2像素)。

一旦确定了单元的适当尺寸,则通过插入穿过单元的对角线将每个单元划分为两个三角形。如果三角形的任何顶点超出了截止阈值,则可以丢弃所述三角形。这意味着由任何一个单元生成的三角形的数量可以是零、一或两个。

生成三角形后,可以通过进一步丢弃坡度(例如深度增量)超出可用范围的任何三角形。对于所有剩余的三角形,三角形的顶点将映射到x-y坐标空间的x和y值,以及基于深度缓冲区的z值。这种Meshlet生成方法消除了所有不属于对象的空白空间,并动态调整三角形密度,以适应深度复杂度最高的区域(例如边)。

图1示出了通过所述方法产生的示例Meshlet142。除非对象的几何图形发生变化,否则无需重新计算或更新Meshlet。因此,通常可以预先计算Meshlet,并以“随时可用”的方式保存。在特定实施例中,可以组合对应于多个视点的小Meshlet以生成单个统一的小Meshlet。例如,主视图的小Meshlet可以组合为一个统一的小Meshlet,从所有三个视点(例如视图三角形)表示对象的简化几何体。

RGB数据是从视点的角度对对象进行的纹理渲染(例如依赖于视图的纹理)。Meshlet和RBG数据的设计使得,当基于本文描述的方法进行组合时,生成的图像实际上与原始对象渲染别无二致。在特定实施例中,不需要为每个单独的视点渲染单独的RGB数据,而是为几个附近的视点渲染更高质量的RGB数据,因为几个邻近视点的RGB数据可能彼此没有实质性差异。例如,来自任何一个视点的对象的纹理通常与邻近视点的纹理相似。

在特定实施例中,服务器可以分析用户在虚拟环境中的位置和轨迹,然后提供用户重建对象可能需要的Meshlet和RGB数据(对应于View Hierarchy的视点)。

对象的重建过程由用户设备基于对象的View Hierarchy在本地执行。在特定实施例中,重建过程涉及通过将光线从用户视点投影到对象中心,并确定光线与View Hierarchy相交的点来确定用户相对于对象View Hierarchy的视点。

例如,图2示出了在用户的视点210和对象215的中心点之间投影的光线220。射线220与View Hierarchy 100相交的点被称为Hit point 250。接下来,识别包围Hit point 250的视图三角形,并选择形成视图三角形的三个视点作为“主视图”,例如视点105、106和107。

然后,可以确定用户视点210相对于视图三角形(由主视图形成)的重心坐标。由设备执行的重建过程涉及基于与主视图相对应的Meshlet和RGB数据,针对每个主视图渲染来自用户视点的对象的图像,然后基于用户视点相对于主视图的重心坐标混合图像。

图3A-3B示出了基于与主视图相对应的Meshlet和RGB数据,并从用户的视点为每个主视图渲染对象的图像,然后通过组合重新投影的图像重建对象。

例如,图3A示出了每个主视图的重投影过程,其中与主视图相对应的Meshlet和RGB数据渲染成来自主视图的对象的重投影图像。

Meshlet301和RGB数据302表示为渲染成重投影图像305,Meshlet311和RGB数据312表示为渲染成重投影图像315,Meshlet321和RGB数据322表示为渲染成投影图像325。

在特定实施例中,三个重投影过程中的每一个都可以在单独的帧缓冲区中处理。每个重投影过程本身可能无法完全重建对象,因为与主视图相关联的视点可能与用户的视点不同。因此,图3B示出了分别缺少对象内部部分381和382的重投影图像305和315,以及缺少对象底部部分383的重投影图像325。

在生成三个重投影图像之后,可以使用自定义混合操作执行组合过程。例如,图3A示出了通过将三个重投影图像混合在一起而生成的重建图像350。在特定实施例中,如果对象几何体的近似与低置信水平相关联,则定制混合操作可以从重构图像中移除对象的部分,从而在对象中创建“孔”。在这种情况下,可以在重构对象执行基于模板的孔填充过程,以填充在定制混合操作期间产生的任何孔。

在特定实施例中,除了Meshlet和RGB数据之外,服务器同时可以向用户设备提供阴影纹理,允许设备将阴影纹理渲染到对象的重建图像中。服务器可以将阴影纹理渲染为不依赖于视图的全局阴影纹理,因此仅为对象渲染单个阴影纹理。

在重建过程中,可以必须基于用户的视点变换或重塑全局阴影纹理,以匹配重建图像中的对象。全局阴影纹理可以在自定义混合操作期间或在单独操作中渲染到重建图像中。例如,图3A示出了渲染到重建图像350中的全局阴影纹理330。

图4示出了生成渲染数据的服务器与执行重建处理的设备之间的流程图400。如图4所示,服务器可以预计算对象的401个Meshlet,并存储预计算的Meshlet402以供以后使用,因为对象的几何结构通胀不会改变。

在特定实施例中,服务器可以使用渲染器403来渲染对象的RGB数据和阴影纹理。与Meshlet相比,RGB数据和阴影纹理不仅基于视点,而且基于虚拟环境中的照明条件进行渲染。这意味着RGB数据和阴影纹理可能需要比Meshlet更频繁地渲染和更新,因为照明条件的变化通常比对象的几何体更频繁。因此,渲染器403可以根据需要在运行时将RGB数据渲染为阴影纹理,而不是预渲染它们。在其他实施例中,渲染器403可以以类似于Meshlet的方式预渲染RGB数据和阴影纹理,例如当照明条件不经常改变的时候。

在特定实施例中,Priority-Based Streamer(PBS)410可以基于用户在虚拟环境中的位置和轨迹来确定与用户最相关的视点。例如,PBS 410可以基于从用户设备接收的六自由度追踪信息485来确定用户的当前位置和轨迹。

基于用户的位置和轨迹,PBS 410可识别用户重建对象可能需要的视点。在特定实施例中,PBS 410可以对视点进行优先级排序,以便在不太相关的渲染数据之前向用户提供更相关的渲染数据,例如Meshlet和RGB数据。例如,PBS 410可以基于用户必然需要的视点、用户可能需要的视点以及用户可能需要的视点来对视点进行优先级排序。

在识别与用户相关的视点时,PBS 410可以请求渲染器403渲染所识别视点的RGB数据。一旦针对所识别的视点呈现了RGB数据,PBS 410可以将RGB数据和相应的预计算Meshlet提供给压缩/编码处理器420以进行传输。在特定实施例中,可以压缩RGB数据,然后可以将压缩数据提供给用户设备。

用户设备接收的压缩数据可由数据解码和处理线程450解码和处理。一旦解码和处理,可以将数据提供给用户设备的View Hierarchy和资源数据库455。在特定实施例中,用户设备可以存储和维护其自身的对象View Hierarchy。

因此,当接收到特定视点的Meshlet和RGB数据时,设备用接收到的信息更新相应的视点。在特定实施例中,用户设备可以利用本地缓存并存储从服务器接收的Meshlet和RGB数据,以便它们可以用于未来的重建过程。

图5示出了用于生成对象的View Hierarchy的示例方法500。

所述方法可以从步骤501开始。针对由几何表示定义的虚拟对象,生成围绕该虚拟对象的多个视点。在步骤502,为多个视点中的每一个生成虚拟对象的简化几何表示,其中简化几何表示比虚拟对象的几何表示具有更低的分辨率。

在步骤503,从客户端设备接收期望的视点。在步骤504,基于所需视点从多个视点中选择一个或多个视点。在步骤505,向客户端设备发送渲染数据,所述渲染数据包括与所选的一个或多个视点中的每一个相关联的简化几何表示和相关联的视图依赖纹理,渲染数据配置为从所需视点渲染虚拟对象的图像。

图6示出了用于确定与用户相关的视点,并提供与相关视点相关联的渲染数据的示例方法600。所述方法可以从步骤601开始,亦即从客户端设备接收期望的视点。

在步骤602,基于所需视点从围绕虚拟对象的多个视点中选择一个或多个视点。在步骤603,对于所选的一个或多个视点中的每一个,访问与所选视点相关联的简化几何表示,其中简化几何表示的分辨率低于虚拟对象的几何表示。然后,从所选视点渲染视图相关纹理。

在步骤604,向客户端设备发送与所选的一个或多个视点中的每一个相关联的简化几何表示和视图依赖纹理,以从所需视点渲染虚拟对象的图像。

图7示出了基于虚拟对象的简化几何表示和视图相关纹理渲染虚拟对象的图像的示例方法700。

在步骤701,从计算服务器接收用于渲染虚拟对象的图像的渲染数据,其中渲染数据与围绕该虚拟对象的多个视点相关联。在步骤702,确定查看虚拟对象的期望视点。在步骤703,基于所需视点选择多个视点中的一个或多个。在步骤704,从所需视点渲染虚拟对象的图像。

相关专利Facebook Patent | Latency-resilient cloud rendering

名为“Latency-resilient cloud rendering”的Meta专利申请最初在2020年11月提交,并在日前由美国专利商标局公布。

本文链接https://news.nweon.com/96910
转载须知:转载摘编需注明来源映维网并保留本文链接
素材版权:除额外说明,文章所用图片、视频均来自文章关联个人、企业实体等提供
QQ交流群苹果Vision  |  Meta Quest  |  微软HoloLens  |  AR/VR开发者  |  映维粉丝读者

您可能还喜欢...

资讯