查看
几何感知空间插值
(
为了应对这个问题,
图2A描绘了示例性虚拟环境200和与所述虚拟环境200相关联的采样点210的网格。虚拟环境200包括各种虚拟对象,如墙壁202。虚拟环境200可以包括任何类型和/或数量的虚拟对象,例如墙壁、地板、天花板等和/或可移动对象。
在图2A的示例中,采样点210组织在均匀网格中,采样点210均匀分布在整个虚拟环境200中。每个采样点210可以存储虚拟环境200的相应环境数据。例如,每个采样点可以存储声学数据、温度数据、气压数据、光传播数据和/或其他数据。
每个采样点210都与虚拟环境200中的各自坐标相关联。所以,系统可以确定每个采样点210相对于虚拟环境200内的几何体的定位。
图2B描绘了虚拟环境200的一部分(在图2A中标记为“2B”的部分)以及与之相关的采样点210。图2B示出了每个采样点210的各自安全区域212,其中安全区域212表示为以每个采样点210为中心的圆圈。
每个安全区域212从其相应的采样点210延伸到虚拟环境200中最近的几何体或最近的虚拟对象。例如在图2B的实施例中,每个安全区212从其相应的采样点210延伸,直到安全区212到达墙壁202的最近部分。
在这方面,每个安全区域212可以用各自的安全距离来表征,安全距离表示从其相应的采样点210到虚拟环境200内最近的虚拟对象的距离。每个相应的安全距离可以定义每个安全区域212的半径和或其他几何特征。
可以以各种方式选择离其相关采样点210所延伸的安全距离最近的虚拟对象。
在图2B的示例中,每个安全距离(以及相应的安全区域212)从其各自的采样点210向最近的虚拟对象的体积内的中点延伸。中点可以沿着从采样点210延伸并穿过最近的虚拟对象的轴线选择。
每个安全距离可以存储在包括其相关采样点210的数据结构中。在一个实施例中,安全距离可以有利地提供虚拟环境200的几何形状的表示,同时仅向每个采样点210添加单个值。
可以在运行时利用上面讨论的安全区域212,以促进为各种用例生成插值值。
例如,其中每个采样点210与声学数据相关联,可以使用采样点210生成虚拟环境200内查询点的内插声学数据。用于采样点210的安全区域212可以指示使用哪些特定采样点210来生成用于特定查询点的内插声学数据。换句话说,每个各自的安全区域212可以指示其关联的采样点210可用于生成内插数据的区域。
图2C说明了虚拟环境200中查询点220A和220B的概念表示。与采样点210一样,每个查询点220A和220B都与虚拟环境200中的各自位置坐标相关联。如上所述,可以使用与虚拟环境200相关联的一个或多个采样点210为查询点220A和220B生成插值数据。
为了生成查询点220A的内插数据,系统可以确定查询点220A是否包含在与虚拟环境200相关联的采样点210的任何安全区域212中。例如,系统可以对采样点210的安全区域212测试查询点220A,从而确定查询点220A是否位于安全区域内。图2C示出与采样点210A相关联的安全区域212A和与采样点210B相关联的安全区域212B所包含的查询点220A。
为了确定查询点220A包含在一个或多个安全区域212中,系统可以利用与包含查询点220A的安全区域212相关联的采样点210来为查询点220A生成插值数据。
在图2C的示例中,由于采样点210A和210B的安全区域212A和212B分别包含查询点220A,所以可以利用采样点210A和210B为查询点220A生成插值数据。重要的是,安全区域的实现可以防止与查询点分开的采样点用于为查询点生成插值数据。
在一个实施例中,虚拟环境的某些部分可能不包含在安全区域中,从而可能导致在尝试为虚拟环境的这些部分中的查询点生成插值数据时出现问题。在图2C中,查询点220B不包含在任何安全区域212中,但它几乎分别包含在采样点210B和210C的安全区域212B和212C中。
系统可以通过生成修改的安全区域来减少虚拟环境中不包含在安全区域中的空间量。安全区域组合可以作为构建存储采样点的数据结构的预计算的一部分和/或作为运行时插值的一部分来执行。
为了组合相邻的安全区域212以提供修改的安全区域,系统可以在数据结构中识别相邻的安全区域212,并确定相邻的安全区域212是否与相似的环境数据相关联。如果相邻的安全区域212包含类似的环境数据,则系统可以将相邻的安全区域212组合以定义修改的安全区域。
作为举例说明,图2D示出了修改后的安全区域214。安全区域214分别由采样点210B和210C相邻的安全区域212B和212C构成。修改后的安全区域214包含相邻安全区域212B和212C之间的空间,从而包含未被任何单个安全区域212包含的查询点220B。
为了生成查询点220B的内插数据,系统可以确定查询点220B是否包含在任何修改的安全区域中。在确定查询点220B包含在修改的安全区域214中后,系统可以利用用于获得修改的安全区域214的相邻采样点210B和210C的环境数据来为查询点220B生成插值数据。
如上所述,当相邻安全区域的环境数据不同时,系统可以避免使用相邻安全区域来获得修改的安全区域。例如,位于墙壁两侧的相邻采样点的声学数据不太可能相似。所以,通过预先检查相邻采样点的底层环境数据的相似性,系统可以避免会导致被场景几何/虚拟对象分开的采样点用来为单个查询点生成插值数据的方式组合安全区域。
在一个实施例中,与虚拟环境相关联的数据结构的一个或多个采样点可能位于虚拟环境的几何形状中。
图3A示出了示例性虚拟环境300的侧视图,其中采样点310A和310B位于地板304上方和墙壁302相对两侧的空中坐标处,并且其中采样点310C和310D位于虚拟环境300的地板304内。
位于层304中的采样点310C和310D省略了环境数据或包含无效的环境数据,它们在运行时无法用于生成插值数据。
图3A同时示出不位于任何安全区域内的查询点320。例如,查询点320位于采样点310A的安全区域312A下方。如果采样点310C具有安全区和可用的环境数据,则可以使用包含查询点320的采样点310A和310C的安全区域构建修改的安全区,从而能够使用采样点310A和310C为查询点320生成插值数据。
对于位于场景几何中的采样点,系统将来自环境其他附近部分的环境数据结合起来,以使所述采样点可用于在运行时生成插值数据。所述操作可以作为预计算来执行,以构建采样点的数据结构,从而在运行时生成插值数据。
在一个实施例中,为了将环境数据和安全区域分配给场景几何包含的采样点,系统确定环境的单个部分是否存在:最接近特定采样点;不包含在虚拟对象中。
例如,为了将环境数据和安全区域分配给位于虚拟环境300的地板304内的采样点310C,图3B示出了环境300的最近部分316,部分316不包含在虚拟环境300的任何虚拟对象中。
为响应检测到最近部分316的存在,系统可以为最近部分316定义安全距离和安全区域318,如图3B所示。
然后,为最近的部分316定义的安全距离和/或区域318可以分配采样点310C,如图3C所示,其中安全区域318以采样点310C为中心。除了为最近部分316计算的安全区域318之外,与最近部分316相关联的环境数据可以与位于虚拟环境300的几何结构内的采样点310C相关联。
在图3C的示例中,与所述采样点310C相关联的安全区域318包含所述查询点320,使得与所述采样点310C相关联的环境数据可用于在运行时为所述查询点320生成插值数据。
可以利用上文所讨论的技术产生修改的安全区域。采样点310C的安全区318可与采样点310A的安全区312A组合,形成一个修改后的安全区314,覆盖在安全区318和312A之间的空间。图3D表明,可以利用采样点310A和310C来为查询点320生成插值数据。
在一个实施例中,系统不是确定与采样点310C关联的最近部分316的安全距离和/或安全区域318,而是直接为采样点310C确定安全距离和/或安全区域312C,如图3E所示。最近部分316的安全距离和环境数据可以与采样点310C一起存储。
与图3D类似,对于相邻的采样点310A,可以将安全区312C与安全区312A组合,以提供修改后的安全区324。图3F表明,可以利用采样点310A和310C来为查询点320生成插值数据。
图4A示出位于虚拟环境400内墙壁402的角落附近的查询点420。查询点420位于与采样点410A和410B相关联的组合安全区域414内。然而,采样点410A和410B相对于查询点420位于墙402的另一侧,这可能导致使用采样点410A和410B的环境数据为查询点420生成的插值数据是不现实的。
为了应对这种情况,系统可以实现替代插值模式,而不是依赖基于安全区域的方法。图4B到4E描述了相关的概念表示,包括最近邻插补模式(图4B)、几何无关插补模式(图4C)、特定于数据的启发式插补模式(图4D)和推矢量插补模式(图4E)。
在图4B的最近邻插值模式中,使用坐标最接近查询点420坐标的采样点来生成查询点420的插值数据。与所选最近邻采样点410A结合使用与所选最近邻采样点410A接近的一个或多个附加采样点,以生成查询点420的内插数据。
在图4C的几何无关插值模式中,使用坐标最接近查询点420坐标的采样点集生成查询点420的插值数据。
在图4D所示的特定于数据的启发式插值模式中,选择包含满足一个或多个条件的环境数据的邻近采样点为查询点420生成插值数据。
在图4E的推向量插值模式中,从查询点420扩展推向量422,并选择推向量422指向的最接近查询点420的采样点,以生成查询点420。所述推矢量422可以采取各种形式,例如指向虚拟环境400内空间中心的矢量,具有与虚拟环境400内最近的虚拟对象相关联的法矢量方向的矢量等。
图5A示出包括墙壁502的示例性虚拟环境500。图5A同时示出与虚拟环境500相关联的采样点510A、510B、510C。
从图5A可以看出,采样点510A、510B、510C在虚拟环境500中是不均匀分布的。每个采样点510A、510B、510C存储或与环境数据相关联。例如在声学数据的示例中,每个采样点510A、510B、510C可以存储包括环境声学数据的采样点的各自数据结构。
对于相同的虚拟环境,一个非均匀的采样点网格包含的采样点比一个相应的均匀的采样点网格包含的采样点要少,这就为每个采样点留下了更多的空间来解释场景几何,而不是每个采样点的单个安全距离。
图5B示出为与虚拟环境500相关联的采样点510B定义的示例安全区域512B的概念表示。系统可以通过从采样点510B向外扩展一个或多个体积来确定采样点510B的安全区域512B。在图5B中,体积由从采样点510B向外延伸的虚点三角形表示。体积可以采取各种形式,如多面体体积。
在一个实施例中,系统利用非均匀网格的多个采样点为单个查询点生成插值数据。例如,对于包含查询点的安全区域,系统可以利用安全区域也包含的其他采样点来为查询点生成插值数据。
在一个实施例中,由单个安全区域包含的多个采样点的安全区域可以组合以提供修改的安全区域。所有安全区域属于修改安全区域的采样点都可以用来为修改安全区域中包含的所有查询点生成插值数据。
图6和7分别举例的流程图600和700描述了与促进几何感知空间插值相关的行为。
在图6中,602包括访问包含一组采样点的数据结构,其中所述采样点集的每个采样点与相对于虚拟环境的各自坐标相关联,所述虚拟环境包括一个或多个虚拟对象。
604包括确定与采样点集合的至少一些采样点关联的各自安全距离,每个各自的安全距离表示从采样点集合的其相关采样点到虚拟环境中最近的虚拟对象的距离,每个各自的安全距离表示其相关采样点的各自安全区域。
606包括将数据结构内的每个各自的安全距离与其所述采样点集的相关采样点相关联地存储起来。
608A包括,为了检测该采样集的特定采样点的各自坐标表明该特定采样点在虚拟环境的虚拟对象内的定位,可以确定环境中是否存在最接近该特定采样点且不包含在虚拟对象中的单个部分;为了确定环境的单个部分存在,可以测量环境的单个部分的安全距离,以及将安全距离存储在与特定采样点相关的数据结构中。
608B包括,为了检测该采样集的特定采样点的各自坐标表明该特定采样点在虚拟环境的虚拟对象内的定位,确定环境中是否存在最接近该特定采样点且不包含在虚拟对象中的单个部分;为了确定环境的单一部分存在,测量特定采样点的安全距离,以及在数据结构中存储与特定采样点相关的安全距离。
610包括使用所述数据结构生成插值数据。生成内插数据包括确定查询点是否包含在数据结构的一个或多个安全区域中;以及针对确定所述查询点包含在所述一个或多个安全区域中,利用与所述一个或多个安全区域相关联的一个或多个采样点为所述查询点生成内插数据。
在一个实施例中,生成内插数据包括:确定查询点是否包含在一个或多个修改的安全区域中,所述一个或多个修改的安全区域基于与所述数据结构的相邻采样点相关联的相邻安全区域确定;以及为了确定所述查询点包含在一个或多个修改的安全区域中,利用相邻的采样点为所述查询点生成插值数据。
对于虚拟环境中的至少一些查询点,生成内插数据包括利用最近邻内插模式、几何无关内插模式、数据特定的启发式内插模式或推矢量内插模式。
在图7中,702包括访问包含一组采样点的数据结构,其中所述采样点集的每个采样点与相对于虚拟环境的各自坐标相关联,所述虚拟环境包括一个或多个虚拟对象。
704包括确定用于与所述采样点集的至少一些采样点相关联的各自的安全区域,每个各自的安全区域指示其关联的采样点可用于生成内插数据的区域。
706包括将每个各自的安全区域存储在与所述采样点集的相关采样点相关联的数据结构内。
708包括使用该数据结构生成插值数据。
在一个实施例中,生成内插数据包括确定查询点是否包含在所述数据结构的一个或多个安全区域中,以及为响应确定所述查询点是否包含在所述一个或多个安全区域中,利用与所述一个或多个安全区域相关联的一个或多个采样点为所述查询点生成内插数据。在一个实施例中,生成插值数据进一步利用与一个或多个采样点相关联的一个或多个安全区域所包含的一个或多个附加采样点。
微软专利申请最初在2022年12月提交,并在日前由美国专利商标局公布。