/ Nweon / 0浏览

微软AR/VR专利提出实现精确后期重投影的有效方法



映维网Nweon
2024年10月17日

)对于AR/VR,后期重投影(Late Stage Reprojection/LSR)是一项重要的技术。在一份专利申请中,
微软
就提出了一种实现精确后期重投影的有效方法。

实现LSR的方法包括基于渲染深度缓冲区中包含的深度信息对图像应用校正。在各种示例中,深度缓冲区为呈现的彩色图像中的每个像素编码与头显或其他显示设备的距离。后期重投影过程可以确定在后期重投影期间应用于每个像素的校正。例如,图像中离用户较近的部分可能比离用户较远的部分需要更大幅度的校正。

在各种示例中,LSR方法涉及根据网格从渲染深度缓冲区中采样位置,计算每个网格顶点的位置校正,并在顶点之间插值校正。可以使用规则划分的网格对深度缓冲进行采样。使用低分辨率的规则划分网格意味着深度缓冲区的某些部分采样不足,从而导致重投影图像的视觉伪影。使用高分辨率的规则划分网格可以减少视觉伪影,但需要高计算重投影成本。

在各种示例中,可以使用自适应镶嵌网格,网格在内容复杂性较高的区域具有较高的分辨率,而在内容复杂性较低的区域具有较低的分辨率。使用自适应镶嵌网格意味着以较低的计算重投影成本减少视觉伪影。

镶嵌包括将规则网格细分为更细分的部分。在各种示例中,通过将网格块划分为细分部分并将网格块转换为三角形表示来实现正方形网格块的镶嵌。在各种示例中,镶嵌是由镶嵌器执行。

尽管相关方法在网格生成后的重投影成本较低,但与固定网格重投影技术相比,自适应镶嵌的计算成本十分显着。在现有的方法中,一个网格块的可能细分数量非常高。例如,一个正方形的网格块在水平和垂直方向上以及沿着四个边缘中的每一个使用分数细分级别进行划分。所以,镶嵌需要在专用硬件计算。但在远程渲染场景中,客户机设备具有有限的计算预算,并且需要高质量的重投影来补偿网络系统固有的高延迟。所以,需要以较低的计算成本产生自适应细分网格的LSR细分方法。

微软提出了一种使用自适应镶嵌的高质量后期重投影方法。所述镶嵌设计能够有效和高效地实现后期重投影,并且相关设计能够以较低的功耗成本实现高质量的后期重投影。运动到光子的延迟,即计算更新的姿态预测和向用户显示重投影结果之间的时间差,同样有所减少。

在一个实施例中,访问渲染的彩色图像和深度缓冲区。深度缓冲区是一种与彩色图像相对应的数据结构,它对彩色图像中表示深度的信息进行编码。在各种示例中,深度缓冲区和彩色图像是基于头显的初始预测姿态计算。

使用捕获的传感器数据来预测初始姿态。同时,访问深度复杂度图。在各种示例中,深度复杂度图编码深度缓冲区的几何复杂度信息。深度复杂度图是一个二维数值数组,每个数值对应于深度缓冲区对应的深度图的图像元素。

利用预先计算的模式数据库,从深度复杂度图中计算出索引的镶嵌网格。镶嵌包括将规则网格细分为更细分的部分。在各种示例中,未镶嵌方形网格patch的镶嵌包括将网格patch划分为子部分并将其转换为三角形表示。使用深度复杂度图计算网格意味着深度缓冲区中复杂度较低的部分可以更稀疏地采样,而深度缓冲区中复杂度较高的部分可以更密集地采样。

因此,这有效地分配了计算资源和功率,并以较低的重投影成本实现了高质量的重投影。使用预先计算模式的数据库计算索引镶嵌网格意味着生成网格在功率和计算资源方面更有效。

与现有的LSR技术相比,微软表示所述技术的效率更高,因为预先计算的图案独立于每个单独的重投影事件。在运行时,可以查询预先计算的模式数据库,以便计算索引的镶嵌网格。

使用索引网格而不是未索引网格意味着顶点信息在网格patch之间共享,所以网格存储和渲染更有效。这是因为索引网格表示在计算机内存方面更紧凑,并且在运行时渲染速度更快。

在一个实施例中,方法包括将索引的镶嵌网格存储在内存中,然后在稍后的时间计算客户端设备的姿态的更新姿态预测,从内存中检索索引的镶嵌网格,并使用更新的姿态预测呈现索引的镶嵌网格。

因此,网格的镶嵌和渲染过程是分开的。在LSR期间拆分镶嵌和渲染意味着减少了重投影延迟。

在一个实施例中,LSR方法由客户端设备执行,并且预先计算的模式数据库存储在客户端设备。在客户端设备执行LSR可以减少重投影延迟,并且可以减少网络丢失风险或其他负面影响。

在一个实施例中,预先计算模式的数据库包括与镶嵌方形网格patch对应的数据表,每个镶嵌方形网格patch根据三个细分因子进行索引。镶嵌方形网格patch是一块细分成段的方形网格。在许多例子中,线段都是三角形线段。与镶嵌方形网格patch对应的数据对应于镶嵌方形网格patch的镶嵌图案。

通过在索引数据库中存储方形网格块对应的数据,在运行时通过细分因子查询数据库,可以有效地从数据库中提取模式。使用方形网格patch而不是其他形状的patch可以减少可能的patch数量,从而令索引数据库更高效。

在一个实施例中,细分因子是整数。细分因子控制网格patch内部或边缘的细分段的数量。通过使用整数细分因子,与使用分数细分因子的方法相比,可以减少细分因子可能组合的数量。

细分因子同时是以像素为单位的patch大小的整数,而不是更高,这进一步减少了细分因子的数量。使用更高的细分因子将导致深度缓冲区的过采样,这意味着使用更多的计算资源,但LSR质量没有任何改善。

减少细分因子组合的数量意味着网格图案可以预先计算并存储在数据库中,以便在运行时查询。另外,对于LSR使用分数细分因子意味着,如果一个顶点跨越深度缓冲区中前景对象和背景对象之间的不连续,则位于深度缓冲区像素之间的patch顶点会导致伪影。因此,与现有技术相比,使用整数细分可以提高LSR的质量。

在一个实施例中,通过从细分因子图中读取三个细分因子来计算索引的细分网格。用三个细分因子查询预先计算的模式数据库;从预先计算的图案数据库中检索与一个镶嵌方形网格块对应的图案数据;通过结合方格网格patch内顶点的局部坐标和方格网格patch的全局位置,将方格网格patch数据附加到索引的方格网格中,并将结果值复制到输出网格缓冲区中。

细分因子的映射指定了未划分的规则网格中每个patch的期望镶嵌水平。从细分因子图中读取的三个细分因子用于查询预先计算的图案数据库,并检索出镶嵌方形网格patch对应的图案数据。patch数据附加到索引的镶嵌网格中。以这种方式生成索引的镶嵌网格计算效率很高,因为图案是预先计算的,而不是动态地生成镶嵌网格patch。

图1示出使用包含镶嵌网格的后期重投影。在示例远程呈现场景中,客户端设备112通过网络110与服务器102通信。客户端设备112是头戴式计算机。服务器102是客户端设备112的伴侣设备。服务器102的渲染器104基于客户端设备112在显示时间的预测姿态呈现彩色图像100和相应的深度图像,并通过网络将其发送到客户端设备112。

服务器102呈现来自复杂3D模型的彩色图像100和相应的深度图像。在图1的实施例中,服务器102从3D模型呈现了图形用户界面的彩色图像100和相应的深度图像。从复杂的3D模型中渲染所花费的时间和将渲染图像传输到客户端所花费的时间所带来的延迟意味着用于渲染彩色图像的预测姿势变得过时。后期重投影是为了纠正姿态误差。

深度缓冲区114是存储与彩色图像100相对应的深度图像的存储器。在各种示例中,深度缓冲区配置为存储包含彩色图像100的每个像素的深度值的数组。深度缓冲区114存储用户佩戴头显时与用户头部的距离。更一般地说,深度缓冲器存储从显示设备的视点到将在全息图中描绘环境中的虚拟表面的距离。当应用姿势校正时,存储在深度缓冲区中的信息决定了应用于彩色图像100中每个像素的校正的缩放。深度复杂度图116存储深度缓冲区114的相对内容复杂度。

在各种示例中,客户端设备112使用预先计算模式118的数据库,从深度复杂度图116中计算一个索引的镶嵌网格。索引镶嵌网格120重新投影为校正彩色图像100并产生校正后的彩色图像,校正后的彩色图像由头显112显示以产生全息图126。

图2是后期重投影的示意图。预渲染图像是基于初始姿态估计200进行渲染的图像。更新后的图像是从使用重投影的预渲染图像计算得到的图像。更新的姿态估计210是基于在确定初始姿态估计之后的某个时间点获得的更新的姿态信息来确定。

更新后的图像208使用平面偏移重投影生成。所述预渲染图像包括深度图像和彩色图像。在一个示例中,通过对预渲染图像202的彩色图像应用像素偏移调整来生成更新后的图像208。像素偏移调整的程度可以取决于更新的姿态估计与初始姿态估计之间的差异,以及从拟合到偏离平面的特征的3D网格中渲染的图像中的信息。

如图所示,虚拟对象(即虚拟圆柱体)的图像204在X维和Y维都进行了像素移动,例如向左移动4个像素,向上移动3个像素。在一个示例中,使用通过渲染镶嵌网格计算的像素偏移调整来生成更新的图像208。为了计算平面偏差重投影,使用显示设备的更新姿态从3D多边形网格中渲染图像。然后使用所述图像变换与所述深度图像相对应的彩色图像,以产生所述彩色图像的重投影。

图3是使用深度缓冲区300和深度复杂度图302生成镶嵌网格的示意图。深度缓冲300对应于一个示例增强现实场景。场景包括具有第一深度的第一用户界面面板306和具有第二深度的第二用户界面面板308。第二深度大于第一深度。

图4示出了一个实例镶嵌补丁。patch 400是一个在镶嵌过程中细分成三角形的正方形patch。6个细分因子402、404、406、408、410和412标记在patch 400。图4中网格patch 400的内部水平细分因子标记为“5”。图4中网格patch 400的内部垂直细分因子标记为“6”。其余的细分因子对应于patch的边缘。

图5示出拼接patch。拼接的正方形网格块拼接在一起,以生成索引的拼接网格120。在各种示例中,通过查询预先计算的模式数据库来计算每个正方形patch 500、502、504、506。例如,通过使用内部细分因子512、上边缘细分因子508和左边缘细分因子510查询预先计算的图案数据库来生成网格补丁500。

每个patch的上边缘和左边缘分别与patch 500的上边缘(patch 502)和左边缘(patch 506)的内部细分因子相匹配。同理,patch 506的上边缘细分因子与patch 504的内细分因子相匹配。将patch 502的左边缘细分因子与patch 504的内细分因子相匹配。在各种实施例中,以这种方式生成索引镶嵌网格120。

图6显示了索引和未索引的示例网格。网格600是一个未索引网格的例子。示例未索引网格由其顶点的坐标定义,例如存储在顶点缓冲区中。在示例未索引网格600中,每个顶点(V0, V1, V2, V3, V4, V5)分别存储在顶点缓冲区中。在顶点缓冲区中,在两个所描绘的三角形之间共享顶点的地方,顶点坐标是重复的。V2和V3有相同的坐标,V1和V4有相同的坐标。

例如,索引网格602是由顶点缓冲区和索引缓冲区定义的。顶点缓冲区包含每个顶点V0, V1, V2和V3的顶点坐标,作为示例索引网格602的一部分。四个顶点的坐标(而不是六个)可以存储,因为网格元素共享顶点。索引缓冲区包含关于哪个顶点组成每个网格元素的信息。

图7示出了细分patch的优化示例。示例patch 704是一个优化的patch,它是网格优化702的结果。作为网格优化702的一部分应用的网格优化技术示例包括拉普拉斯平滑和Delaunay三角剖分。

在其他示例中,在网格优化702期间应用任何其他合适的网格优化技术。量化多边形网格质量的一个度量是三角形宽高比,它是三角形最长边的长度与最短边的长度之比。较高的三角形宽高比表示三角形更长更细。示例未优化的网格patch700的平均三角形纵横比为1.94:1,而示例优化的网格patch704的平均三角形纵横比为1.62:1。

因此,这两个patch具有相同的三角形和顶点计数,但示例优化pacht704具有更少的滑动三角形,因此产生更高质量的重投影。

图8示出使用预先计算图案的数据库进行镶嵌。细分因子的映射包含关于如何细分每个网格块的信息。当从细分因子映射中读取细分因子时,将读取一个块的细分因子以及该块的上邻和左邻的细分因子。

图9是使用镶嵌网格的后期重投影流程图。

在902,访问诸如深度缓冲区300的深度缓冲区和诸如彩色图像100的彩色图像。

在904,访问深度复杂度映射。深度复杂度映射对应于深度缓冲区。

在906,使用预先计算的模式数据库从深度复杂性图中计算索引的镶嵌网格。

图10示出生成预先计算图案的数据库。基于应用各种约束生成预先计算图案的数据库。所述预计算的图案数据库包括与诸如网格patch400、700和704的网格patch对应的数据表。因此,图10中所描述的方法所应用的约束之一是网格块是正方形的。

另一个约束是使用的细分因子达到网格patch的像素大小。例如,如果网格patch的大小为8×8像素,则可能的细分因子范围为1到7。另一个约束是patch仅使用其顶部和左侧邻居拼接在一起,例如使用如图5所示的拼接。

另一个约束是假设每个patch的水平和垂直内部细分因子相等。因此,每个patch都与三个细分因子相关联:一个因子对应于patch的内部,一个因子对应于patch的上边缘,一个因子对应于patch的左边缘。约束确定了细分的可能组合的数量。对于每个细分因子的组合,使用镶嵌方案1014从一个未镶嵌的方形网格patch生成未优化的镶嵌补丁1016。

在各种示例中,将网格优化应用于未优化的镶嵌patch,结果是优化的镶嵌patch。优化后的镶嵌patch对应的图案数据存储在预先计算的图案数据库中。以这种方式为每个细分因素的组合生成图案数据,直到与每个可能的细分因素组合相对应的数据在预先计算的图案数据库中。

在1024,将检查数据库中是否存在与每个可能的细分因子组合相对应的数据。如果有更多的细分因子组合要添加到数据库中,则为下一个细分因子组合生成图案数据。如果与所有可能的细分因子组合相对应的数据在预先计算图案的数据库中,则方法在1026结束。

图11是使用融合镶嵌器和网格重投影的后期重投影流程图。图11示出了采用融合细分器和网格重投影的现有LSR方法。镶嵌和重投影过程结合在一起,因为可能的镶嵌网格patch的数量非常高。在图11所示的方法中,姿态跟踪器计算用于LSR的更新姿态估计。融合镶嵌和网格重投影发生在更新的姿态估计计算之后。然后生成重新投影的图像并进行显示。重投影延迟关键路径如箭头1108所示。重投影延迟是采样更新的目标姿态进行重投影和在屏幕显示重投影结果之间的时间差。

图12是使用索引细分网格的后期重投影流程图。图12中的方法是微软发明技术的一个示例。与图11中描述的方法相反,镶嵌不是重投影延迟关键路径1208的一部分。相反,索引的镶嵌网格1220是由镶嵌器1216在重投影延迟关键路径之外生成。因此,与图11所示方法等现有方法相比,微软提出的方法减少了重投影延迟,而且重投影质量更高。

图13是后期重投影流程图。

在1302,访问基于头显初始姿态的深度缓冲区和彩色图像。

在1304,基于初始姿态访问深度复杂性图。

在306,使用预先计算的模式数据库计算索引网格。

在1308,访问头显的更新姿态。

在1310,索引细分网格用于根据头显的更新姿态生成重投影图像。


相关专利


Microsoft Patent | Late stage reprojection using tessellated mesh

名为“Late stage reprojection using tessellated mesh”的
微软专利
申请最初在2023年3月提交,并在日前由美国专利商标局公布。