处理和/或传输3D数据的制作方法

文档序号:12288346阅读:451来源:国知局
处理和/或传输3D数据的制作方法与工艺

本申请要求2014年3月14日提交的题为“PROCESSING AND/OR TRANSMITTING 3D DATA”的美国非临时专利申请序列号14/213,531的优先权,该专利申请的全部内容通过引用并入本文。

技术领域

本公开总体涉及三维(3D)建模,并且更具体地,涉及处理和/或传输3D数据。



背景技术:

数字三维(3D)模型可以基于建筑空间(例如,房屋、建筑工地、办公空间等)的扫描来生成。通常,基于建筑空间的扫描所生成的3D模型包括大量的数据(例如,数据点、多边形、纹理等)。因此,向远端客户端设备流传输3D模型(例如,以在远端客户端设备上显示3D模型)往往很慢,因为相对于3D模型的大小,数据带宽是有限的。此外,一旦3D模型的数据被递送到远端客户端设备,渲染(render)3D模型或部分3D模型进行显示需要额外的时间。此外,一旦3D模型的数据被递送到远端客户端设备,用于渲染3D模型或部分3D模型的计算资源(例如,纹理存储器、可以以一定的帧速率来渲染的多边形数量等)会是有限的。因此,在采用当前技术将3D模型流传输到远端客户端设备时,用户体验往往受到妨碍和/或计算资源往往受到限制。因此,可以改进用于向远程客户端设备流传输3D模型的当前技术。



技术实现要素:

下面陈述本说明书的简化发明内容,以便提供本说明书的一些方面的基本理解。本发明内容不是本说明书的广泛综述。其既不旨在识别本说明书的关键特征或关键元件,也不旨在描绘本说明书的特定具体实施的任何范围或权利要求的任何范围。其唯一目的是作为后面陈述的具体实施方式的前奏,以简化方式陈述本说明书的一些概念。

根据实现方式,系统包括分割组件、数据组件和输出组件。分割组件接收采集的与内部环境的三维(3D)模型关联的3D数据,并将采集的3D数据分割为与至少第一细节层次和第二细节层次关联的至少一个数据区块。数据组件存储包含至少一个数据区块的至少第一细节层次和第二细节层次的3D数据。输出组件基于与第一细节层次和第二细节层次关联的信息,向远端客户端设备传输至少一个数据区块的与第一细节层次或第二细节层次关联的一部分数据。在一方面,分割组件基于识别出的3D模型的建筑元素来将采集的3D数据分割为至少一个数据区块。

另外,非限制性实现方式提供用于:接收采集的与室内环境的三维(3D)模型关联的采集3D数据,将采集的3D数据分割为与多个细节层次关联的至少一个数据段,在数据结构中存储包含与至少一个数据段关联的多个细节层次的3D数据,并基于根据与多个细节层次关联的几何形状数据或纹理数据确定的顺序,向远端设备传输至少一个数据段的多个细节层次。

根据另一实现方式,系统包括服务器。服务器将与内部环境的三维(3D)模型关联的3D数据分割为与多个细节层次关联的至少一个数据区块,在数据结构中存储与至少一个数据区块关联的多个细节层次,并基于根据与多个细节层次关联的数据确定的传输顺序,向远端设备传输与至少一个数据区块关联的多个细节层次。

根据另一实现方式,系统包括分割组件、数据组件和输出组件。分割组件接收采集的与内部环境的三维(3D)模型关联的3D数据,并将采集的3D数据分割为与细节层次关联的数据区块和与其它细节层次关联的多个其它数据区块。数据组件存储至少包含数据区块的细节层次和多个其它数据区块的其它细节层次的3D数据。输出组件向远端设备初始传输数据区块,并随后基于与其它细节层次关联的信息,向该远端设备传输多个其它数据区块的一部分数据。

下面的具体实施方式和附图阐述本说明书的某些例示性方面。然而,这些方面表示本说明书的原理可采用的各种方式中的一些方式。通过下面的结合附图描述的本说明书的具体实施方式,本发明的其它优点和新颖特征将变得显而易见。

附图说明

在考虑到下面的结合附图的具体实施方式,本发明的很多方面、具体实施、目标和优点将是显而易见的,其中,附图标号指的是整个附图的相同组件,并且其中:

图1示出根据本文所述的各种方面和实现方式的用于处理和/或传输三维(3D)数据的示例处理组件的高层次框图;

图2示出根据本文所述的各种方面和实现方式的用于处理和/或传输3D数据的系统的高层次框图;

图3示出根据本文所述的各种方面和实现方式的用于处理和/或传输3D数据的另一系统的高层次框图;

图4示出根据本文所述的各种方面和实现方式的与3D模型相关联的子区间的示意图;

图5示出根据本文所述的各种方面和实现方式的用于处理和/或传输三维(3D)数据的示例方法的流程图;

图6示出根据本文所述的各种方面和实现方式的用于处理和/或传输三维(3D)数据的另一示例方法的流程图;

图7示出根据本文所述的各种方面和实现方式的用于处理和/或传输三维(3D)数据的又一示例方法的流程图;

图8示出根据本文所述的各种方面和实现方式的用于处理和/或传输三维(3D)数据的又一示例方法的流程图;

图9示出根据本文所述的各种方面和实现方式的用于基于观察位置从服务器向远端客户端设备发送数据区块的示例方法的流程图;

图10为示出合适的运行环境的示意性框图;以及

图11为示例计算环境的示意性框图。

具体实施方式

现在参考附图描述本公开的各个方面,其中,相同附图标号被用于指示所有附图的相同元件。在下面的具体实施方式中,为了解释目的,阐述很多具体细节以提供对一个或多个方面的透彻理解。然而,应理解,本公开的某些方面可在没有这些具体细节或通过其它方法、组件、材料等来实施。在其它实例中,熟知的结构和设备以框图的形式示出以有利于描述一个或多个方面。

数字三维(3D)模型可以基于建筑空间(例如,房屋、建筑工地、办公空间等)的扫描来生成。通常,基于建筑空间的扫描所生成的3D模型包括大量的数据(例如,数据点、多边形、纹理等)。因此,向远端客户端设备流传输3D模型(例如,以在远端客户端设备上显示3D模型)往往很慢,因为相对于3D模型的大小,数据带宽是有限的。此外,一旦3D模型的数据被递送到远端客户端设备,渲染3D模型或部分3D模型进行显示需要额外的时间。此外,一旦3D模型的数据被递送到远端客户端设备,渲染3D模型或部分3D模型的资源(例如,纹理存储器、可以以一定的帧速率来渲染的多边形数量等)会是有限的。因此,在采用当前技术将3D模型流传输到远端客户端设备时,用户体验往往受到妨碍和/或计算资源往往受到限制。因此,可以改进用于向远程客户端设备流传输3D模型的当前技术。

为此,提出了用于处理和/或传输3D数据(例如,3D重构数据)的技术。例如,3D数据(例如,3D重构数据)可以基于3D重构系统来生成,该3D重构系统允许自动和/或半自动形成真实世界位置(例如,房屋、公寓、建筑工地、办公空间、商业空间、其它生活空间、其它工作空间等)的3D模型。在一个示例中,3D重构系统可以采用从3D传感器(例如,激光扫描仪、结构化光系统、时间飞行系统等)采集的2D图像数据和/或深度数据来生成3D数据(例如,3D重构数据)。在一方面,3D数据(例如,3D重构数据)可以被划分(例如,自动划分)为一个或多个数据区块(data chunk)。数据区块可以是3D模型或3D模型的特定区域的区块。一个或多个数据区块可以基于与3D数据关联的建筑元素(例如,墙壁、地板、房间、对象等)来确定。例如,与3D数据关联的建筑元素可以被识别(例如,自动识别)、分段(例如,自动分段)和/或与数据区块关联。每个数据区块可以与一个或多个细节层次(level of detail)关联。例如,每个数据区块可以与几何形状的一个或多个细节层次和/或纹理(例如,视觉纹理)的一个或多个细节层次关联。在另一方面,可以确定(例如,自动确定)传输一个或多个数据区块和/或与每个数据区块关联的细节层次的顺序。例如,可以确定向远端设备(例如,远端客户端设备)流传输一个或多个数据区块和/或与每个数据区块关联的细节层次的顺序。因此,可以提高用于渲染被流传输到远程设备的3D数据(例如,3D模型)的加载时间。此外,可以改善在采用远端客户端设备来观看3D数据(例如,通过3D模型观察器来观看3D模型)时的用户体验。

初始参考图1,其示出根据主题公开的方面的可以有利于处理和/或传输3D数据(例如,3D重构数据)的系统100。在一个示例中,系统100可以在与3D数据(例如,3D重构数据)关联的至少一个服务器上实现或结合该至少一个服务器。系统100可以被各种系统,诸如但不限于3D建模系统、3D重构系统、服务器系统、基于云的系统等采用。

具体地,系统100可以提供处理组件102,其具有可以被用在例如3D建模应用(例如,3D重构应用)中的分割特征(例如,分割组件104)、数据特征(例如,数据组件105)、选择特征(例如,选择组件106)和/或输出特征(例如,输出组件108)。分割特征可以接收所采集的与内部环境的3D模型关联的3D数据。例如,3D模型可以包括3D网格(例如,三角形网格、四边形网格、参数化网格等)、点云、表面元素(例如,曲面元素)和/或通过采用一个或多个3D传感器所采集的其它数据。此外,分割特征可以将采集的3D数据分割为与至少第一细节层次和第二细节层次关联的至少一个数据区块。数据特征可以存储包含该至少一个数据区块的至少第一细节层次和第二细节层次的3D数据。输出特征可以基于与第一细节层次和第二细节层次关联的信息(例如,元数据)向远端客户端设备传输与第一细节层次或第二细节层次关联的至少一个数据区块的一部分数据。选择特征可以基于与第一细节层次和第二细节层次关联的信息来选择与第一细节层次或第二细节层次关联的至少一个数据区块的一部分数据。在实施例中,系统100可以包括选择特征(例如,选择特征可以在服务器上实现)。在另一实施例中,选择特征可以与系统100分开实现(例如,选择特征可以在远端客户端设备上实现)。

特别地,系统100可以包括处理组件102。在图1中,处理组件102包括分割组件104、数据组件105、选择组件106和/或输出组件108。在本公开中解释的系统、设备或过程的各方面可以构成嵌入在机器内的例如嵌入在与一个或多个机器相关联的一个或多个计算机可读介质(或媒介)中的机器可执行组件。在由一个或多个机器,例如计算机、计算设备、虚拟机器等执行时,此类组件可以使该机器执行所描述的操作。系统100可以包括用于存储计算机可执行组件和指令的存储器112。系统100可以还包括有助于系统100运行指令(例如,计算机可执行组件和指令)的处理器110。

处理组件102(例如,具有分割组件104)可以接收采集的3D数据(例如,在图1中示出的采集的3D数据)。采集的3D数据可以是采集的3D重构数据。在一个示例中,采集的3D数据可以是原始3D重构数据。在另一示例中,采集的3D数据可以是处理后和/或分段后的3D重构数据。在一方面,采集的3D数据可以通过至少一个3D重构系统来生成(例如,采集)。例如,至少一个3D重构系统可以采用从一个或多个3D传感器(例如,激光扫描仪、结构化光系统、时间飞行系统等)采集的二维(2D)图像数据和/或深度数据来自动化和/或半自动地生成内部环境(例如,建筑空间、建筑结构、物理对象、...)的3D模型。在一个实施例中,一个或多个3D传感器可以在摄像机上实现以采集(例如,同时采集)与内部环境关联的纹理数据和几何形状数据。在另一实施例中,一个或多个3D传感器可以在移动设备(例如,智能电话等)上实现以采集与内部环境关联的纹理数据和几何形状数据。

内部环境的3D模型(例如,采集的3D数据)可以包括几何形状数据和/或纹理数据。几何形状数据可以包括几何形状的数据点,除此之外还包括与几何形状的数据点关联的纹理坐标(例如,指示纹理数据如何应用于几何形状数据的纹理坐标)。例如,内部环境的3D模型(例如,采集的3D数据)可以包括网格数据(例如,三角形网格、四边形网格、参数网格等)、一个或多个纹理映射网格(例如,一个或多个纹理映射多边形网格等)、点云、点云集、曲面元素和/或通过采用一个或多个3D传感器所构造的其它数据。在一个示例中,采集的3D数据可以以三角形网格的格式、四边形网格的格式、曲面元素的格式、参数化实心格式、几何形状基元格式和/或另外类型的格式来配置。例如,在纹理映射网格中的多边形的每个顶点可以包含给定纹理(例如,2D纹理)中的点的UV坐标(例如,2D纹理),其中U和V是给定纹理的轴线。在三角形网格的非限制性示例中,三角形的每个顶点包含给定纹理中的点的UV坐标。由三角形的三个点在纹理中形成的三角形(例如,一组三个UV坐标)可以被映射到网格三角形上以用于渲染目的。在一方面,采集的3D数据可以是未分段的采集的3D数据。例如,采集的3D数据可以是在被一个或多个3D传感器(例如,至少一个3D重构系统)采集之后未被分割和/或处理的3D数据。

内部环境(例如,室内环境)可以包括但不限于一个或多个房间、一个或多个房屋、一个或多个公寓、一个或多个办公空间、一个或多个建筑工地、一个或多个商业空间、其它生活空间、其它工作空间、其它环境空间、建筑物的内部、交通工具、船舶、航空器、地铁、隧道、爬行空间、设备区、阁楼、空洞等。此外,内部环境可以包括包含在一个或多个房间、一个或多个房屋、一个或多个公寓、一个或多个办公空间、一个或多个建筑工地、一个或多个商业空间、其它生活空间、其它工作空间、其它环境空间中的物理对象。

分割组件104可以分割采集的3D数据。例如,分割组件104可以将采集的3D数据划分为一个或多个数据区块(例如,一个或多个数据分区、一个或多个数据段等)。数据区块可以是3D模型或3D模型的特定区域(例如,子区间)的区块。一个或多个数据区块中的每一者可以包括几何形状的一个或多个细节层次和/或纹理(例如,视觉纹理)的一个或多个细节层次。在一个示例中,一个或多个数据区块中的每一者可以包括几何形状的多个细节层次和/或纹理的多个细节层次。因此,数据区块可以包括分层结构(例如,与多个细节层次关联的分层结构)。在另一示例中,分割组件104可以生成3D模型的单个数据区块。3D模型的单个数据区块可以与多个子区块关联。多个子区块中的每一者可以是比3D模型的单个数据区块更高的分辨率。在一方面,分割组件104可以将采集的3D数据分割为与至少第一细节层次和第二细节层次关联的至少一个数据区块。一个或多个数据区块和/或细节层次可以在向远端客户端设备传输3D数据时(例如,在远端客户端设备上渲染和/或加载3D模型时)提供更大的灵活性。在一方面,分割组件104可以向一个或多个数据区块中的每一者分配标识符(例如,标识符值、标记等)(例如,以识别和/或描述每个数据区块)。

分割组件104可以识别(例如,自动识别)与采集的3D数据(例如,3D模型)关联的建筑元素。建筑元素可以包括但不限于包含在3D模型中的墙壁、地板、房间、物理对象等。分割组件104可以基于3D模型的建筑元素(例如,所识别的建筑元素)来将采集的3D数据分割为至少一个数据区块。例如,一个或多个数据区块可以对应于3D模型(例如,采集的3D数据等)的一个或多个子区间(例如,一个或多个建筑子区间、一个或多个建筑元素等)。在一方面,数据区块可以包括平面结构,其中,3D模型的每个部分(例如,在网格中的三角形、在3D模型中的空间区域、3D模型的子段等)与单个数据区块关联。例如,分割组件104可以将建筑结构(例如,房屋等)的3D模型划分为“房间”,其中,每个“房间”与单个数据区块关联。因此,分割组件104可以使至少一个数据区块与包含在内部空间的3D模型中的房间关联(例如,数据区块可以是房屋中的房间的数据区块)。

在另一方面,一个或多个数据区块中的每一者可以包括分层数据结构。例如,数据区块可以包括与细节层次关联的树状数据结构。在另一方面,特定数据库可以部分地包括、完全包括或替代例如在树状数据结构中的其它数据区块。在一个示例中,一个或多个数据区块可以与分层数据结构关联。在另一示例中,八叉树数据结构可以被实现以将采集的3D数据(例如,3D模型)分层地划分为一个或多个数据区块(例如,形成树状数据结构)。例如,分割组件104可以基于树状数据结构(例如,八叉树数据结构)将采集的3D数据划分为一个或多个数据区块。在八叉树数据结构中,特定数据区块如果不是叶节点,则可以包括高达八个孩节点(例如,八个关联的数据区块、八个子区块等),它们一起可以覆盖特定数据区块中的相同空间区域。在一个示例中,八个孩节点可以对应于八个数据块(data block),这八个数据块是通过经由与三个轴线对准并其中心居于数据区块的中心的平面进一步细分数据区块来形成的。在另一示例中,多个数据区块可以共享相同的纹理数据的图像。例如,基于分层数据结构被确定为相关的一个或多个数据区块可以与相同的纹理数据关联。

在一方面,选择组件106可以将最低分辨率的数据区块选择为初始的数据区块。在一个示例中,选定的最低分辨率数据区块可以包括与其它数据区块不同的数据结构。在另一示例中,选定的最低分辨率数据区块可以包括最低网格复杂性和/或最低纹理分辨率。在又一示例中,选定的最低分辨率数据区块可以包括与位置数据关联的平面图像。选择组件106可以将能够被加载到远端客户端设备上的最低细节数据区块(例如,唯一的最低细节数据区块)选择为3D模型的初始数据区块。

在一个实施例中,初始数据区块可以是包括特定数量的平面的(例如,最少数量的平面)3D模型。一个或多个平面可以对应于3D模型中的每个墙壁、每个地板和/或每个天花板。此外,通过选择在每个房间的中部或接近墙壁的视点,每个平面可以被纹理化。从选定视点看到的场景可以被投影到使用3D模型(例如,全分辨率3D模型)表示墙壁、地板或天花板的平面上。因此,3D模型可以以较少的多边形计数和/或最少数量的纹理来处理(例如,可以减少3D模型的多边形计数和/或纹理)。在一方面,通过应用纹理压缩、选择每个平面的单个平均颜色或其它技术,可以进一步减少纹理大小。在另一方面,平面可以被扩展以在边缘和/或拐角重叠(例如,以可视地指示3D模型的低分辨率版本,从而允许在传输和/或加载与家具等关联的3D数据之前,以较少数量的缺失数据来观看房间)。

在另一实施例中,初始的数据区块可以是将在3D模型的地平面上渲染的单个纹理。例如,初始的数据区块可以对应于单个网格对象(例如,被单个矩形纹理纹理化的单个矩形网格对象)。在一方面,单个网格对象的纹理可以是建筑结构(例如,房屋)的鸟瞰图或建筑结构(例如,房屋)的内部空间的鸟瞰图。例如,鸟瞰图可以是3D模型在地平面上的正投影。在一个示例中,背面剔除(back-face culling)可以应用于单个网格对象,使得建筑结构中的房间的地板和/或其它朝上的表面(例如,桌面、柜台等)在3D模型的投影图像中不包括该房间的天花板的情况下出现。

在一方面,初始的区块可以被划分为一起包括3D模型的一组数据区块。例如,数据区块可以包括匹配或近似匹配3D模型的更高分辨率数据区块或一组更高分辨率数据区块的边界的物理边界。因此,由于更高分辨率数据区块被选择组件106选择和/或被输出组件108传输,因此一旦对应于3D模型的相同部分的所有更高分辨率的区块也被选择组件106选择和/或被输出组件108传输,数据区块就可以从远端客户端设备的显示器移除。

应明白,分割组件104可以以各种方式分割3D数据(例如,生成一个或多个数据区块)。还应明白,分割组件104可以用其它分割技术来组合和/或嵌套特定分割技术。此外,应明白,分割组件104可以基于3D模型的组成向不同的3D模型应用不同的分割技术。

在一方面,分割组件104可以将采集的3D数据(例如,3D模型)划分为具有固定高度和/或固定宽度的多个规则间隔的数据块。例如,数据块可以包括对应于宽度、长度和高度的(X,Y,Z)维度。此外,数据块可以被配置为空间填充的图案,使得数据块的中心可以包括坐标(a*宽度、b*长度、c*高度),其中,a、b和c为整数。因此,X坐标可以是宽度的倍数,Y坐标可以是长度的倍数,Z坐标可以是高度的倍数。此外,每个数据块可以对应于数据区块。被包含在数据块中(例如,完全包含在内)的多边形(例如,三角形、其它几何形状等)可被包含在对应的数据区块中。此外,被包含在不止一个数据块中的多边形(例如,三角形、其它几何形状等)可以被分配给特定对应的数据区块。在一方面,不包含几何形状的数据区块可以被丢弃和/或在数据树结构中指定为空。在另一方面,被包含在不止一个数据块中的几何形状(例如,从一个数据块跨到另一数据块)可以被细分。例如,三角形可以被细分,使得三角形的每个成分被包含(例如,完全包含)在一个数据块内。因此,子几何形状可以被分配给与完全包含子几何形状的数据块对应的数据区块。

在另一方面,分割组件104可以基于Quad+Z树数据结构将采集的3D数据划分为一个或多个数据区块。例如,与3D模型关联的采集的3D数据可以包括建筑结构(例如,建筑物等)的一个或多个地板。因此,通过在X-Y平面(例如,水平面)中采用2D栅格,3D模型可以被分割。因此,被数据区块涵盖的体积可以是无限高度的矩形棱柱、对应于单个地板的高度的矩形棱柱等。因此,在水平面中的给定正方形或矩形的上方或下方的3D模型的整个部分可以被包含在特定数据区块中。在一方面,平面可以被划分为2D块。因此,几何形状可以被分配给与平面的每个数据块对应的数据区块。此外,可以按分层数据结构细分数据块。

分割组件104可以基于采集的3D数据的子区间(例如,房间、单元等)将采集的3D数据划分为一个或多个数据区块。例如,在3D模型中的基于内部空间的扫描(例如,通过采用一个或多个3D传感器)所生成的子区间(例如,房间、单元等)可以被识别(例如,自动识别)为和/或用作(例如,自动用作)3D模型的数据区块。在一方面,子区间(例如,房间、单元等)可以基于单元入口方法(cell and portal method)(例如,体积式单元入口方法、入口剔除等)来识别。例如,3D模型的体积式表示可以被用于有助于识别在3D模型中的子区间(例如,房间、单元等)。3D模型中待分开的对象可以对应于3D模型中的单元,隔板可以对应于入口。

一旦子区间(例如,房间、单元等)被识别,分割组件104可以划分3D模型,使得被包含在每个子区间中或邻接每个子区间的几何形状集对应于数据区块。分割组件104可以继续细分3D模型,直到达到用于附加划分的特定阈值分数(例如,阈值)。一旦达到用于附加划分的特定阈值分数,每个细分的区间可以对应于唯一的数据区块。在图4中示出与自上而下视图的3D模型400关联的分解过程的非限制性示例。例如,3D模型400包括子区间(例如,房间、单元等)401、子区间(例如,房间、单元等)402和子区间(例如,房间、单元等)403。3D模型400还包括入口(例如,划分线(division))404和入门(例如,划分线)405。例如,入口可以是子区间之间(例如,在房间之间、在单元之间等)的划分线。在一方面,子区间401、子区间402和/或子区间403可以基于一种或多种分割技术进一步细分为数据区块和/或分层子数据区块集。3D模型400可以对应于分割后的(例如,处理后的)3D数据。

物理对象可以被包括在每个子区间(例如,在子区间401、子区间402和/或子区间403)内。例如,物理对象406可以被识别(例如,自动识别)和/或分开(例如,自动分开)为在子区间402内的唯一数据区块。物理对象可以包括但不限于家具、其它移动对象等。在一方面,物理对象可以被连接到特定子区间(例如,与其关联)作为连接组件。应明白,3D模型400可以包括不止一个物理对象。另外,分割组件104可以将墙壁和/或地板识别为3D模型400中的主要平面(prominent plane)。在分割组件104将墙壁和/或地板识别为3D模型400中的主要平面和/或使这些主要平面(例如,被识别的墙壁和/或地板)关联为各个数据区块之后,分割组件104可以从待分配给数据区块的几何形状(例如,采集的3D数据)中移除所识别的墙壁和/或地板。3D模型400中剩余的连接组件可以是物理对象(例如,沙发、桌子、台灯办公桌、其它家具等)。因此,每个连接组件可以被分配给唯一的数据区块。另外或替换地,可以应用其它技术(例如,最小切割的图形理论的概念等)来进一步细分3D模型400的剩余部分。

分割组件104可以基于内容类型将采集的3D数据划分为一个或多个数据区块。例如,采集的3D数据(例如,3D模型)的理解和/或分段可以被实现为分割采集的3D数据(例如,3D模型)的基础。在一个示例中,分割组件104可以基于体积式图形切割、最小表面、有效3D场景分段、3D场景的虚拟探测等将采集的3D数据划分为一个或多个数据区块。然而,应当理解,分割组件104可以基于不同的技术将采集的3D数据划分为一个或多个数据区块。在一方面,通过识别网格内的平面,分割组件104可以识别采集的3D数据中的墙壁、地板和/或天花板。例如,包括特定大小和/或特定角度(例如,对应于墙壁、地板或天花板的角度)的平面可以被识别为墙壁、地板和/或天花板(例如,主要平面)。在一个示例中,分割组件104可以基于迭代方法例如随机抽样一致性(RANSAC)识别采集的3D数据中的墙壁、地板和/或天花板。例如,分割组件104可以选择与公共平面关联的某个表面区域和/或某个数量的边缘、顶点或三角形。此外,分割组件104可以识别也与该公共平面关联的其它点、顶点或三角形。因此,分割组件104可以响应于确定某个表面区域和/或某个数量的边缘、顶点或三角形与公共平面关联而确定该公共平面为主要平面(例如,墙壁、地板或天花板)。此外,分割组件104可以移除与公共平面关联的几何形状。此外,分割组件104可以重复这个识别采集的3D数据中的其它平面(例如,其它墙壁、地板或天花板)的过程。

在一个示例中,当分割组件104识别并移除采集的3D数据的每个平面时,采集的3D数据中剩下的连接组件可以包括物理对象,例如但不限于桌子、椅子、沙发、办公桌、其它家具等。因此,分割组件104可以将采集的3D数据的每个连接组件(例如,每个物理对象)分配给唯一的数据区块。另外或替换地,分割组件104可以对与采集的3D数据关联的连接组件(例如,物理对象)进行分组。例如,连接组件(例如,物理对象)可以按子区间(例如,房间)来分组。在另一示例中,连接组件(例如,物理对象)可以被分组为单个“房间内容”数据区块。包含在单个“房间内容”数据区块中的连接组件(例如,物理对象)中的每一者可以与一组子区块(例如,数据区块分层)关联。例如,在一组子区块中的每个子区块可以与不同的分辨率程度(例如,不同的细节层次)关联。在一方面,分割组件104可以将所识别的平面分开为数据区块,每个所识别平面的每个连接组件形成唯一数据区块。另外或替换地,分割组件104可以将所识别的平面和/或连接组件(例如,物理对象)合并为数量更少的数据区块。在另一方面,可以在子区间边界(例如,房间边界)或者在采集的3D数据中的通过采用子区间识别技术(例如,单元入口方法等)识别的其它位置处细分平面。

在如图4所示的非限制性示例中,在识别每个子区间(例如,每个房间)之间的分隔线(separation)之后,子区间402(例如,与房间关联的墙壁和地板)的平面可以被组合在一起成为单个数据区块。此外,子区间402的体积内的剩余几何形状可以包括物理对象406(例如,连接组件,例如桌子)。因此,物理对象406(例如,采集的3D数据中剩余的几何形状)可以形成单个连接组件。此外,物理对象406可以被分配唯一数据区块。

在一个示例中,可以实施一种或多种孔填充技术以填充与采集的3D数据关联的缺失数据。例如,当墙壁、地板或其它表面被物体遮挡时,遮挡区域的几何形状数据和/或纹理数据会丢失。因此,可以实施一种或多种孔填充技术以生成遮挡区域的几何形状数据和/或纹理数据。在一个示例中,可以通过沿着孔边界分两步重复连接顶点对以形成三角形,直到整个孔被分成三角形,来几何填充与在一定平面距离内的孔边界关联的孔。然后,来自3D重构系统的可视数据可以沿着与所确定的对孔的平面(例如,最佳拟合平面)垂直的轴线被映射到两个维度。替换地,孔周围区域的纹理数据可以根据基于距离的加权平均被混合以提供该孔的可视数据(例如,包含在孔中的缺失数据)。替换地,孔周围区域的纹理可以被提供作为纹理合成算法的输入以填充与该孔关联的缺失数据。

在一方面,分割组件104可以基于采集的3D数据的子区间(例如,房间、单元等)和内容类型将采集的3D数据划分为一个或多个数据区块。例如,分割组件104可以将3D模型划分为一个或多个子区间(例如,房间)。此外,分割组件104可以将每个子区间(例如,每个房间)进一步划分为一组建筑结构(例如,墙壁、地板、天花板等)并划分为每个子区间(例如,每个房间)内的一组物理对象(例如,家具等)。在一个示例中,在每个子区间中的对象集合可以与单个数据区块关联。在另一示例中,在每个子区间中的对象集合可以被细分为多个数据区块。例如,在子区间中的每个物理对象可以包括唯一的数据区块。此外,子区间的墙壁、地板和/或天花板可以包括另一数据区块。在一个示例中,墙壁、地板和/或天花板可以包括唯一的数据区块。在另一示例中,墙壁、地板和/或天花板可以被细分为多个数据区块。

数据组件105可以存储由分割组件104处理的3D数据。例如,数据组件105可以存储由分割组件104所生成的分段3D数据。数据组件105可以被实施为和/或与用于存储一个或多个数据区块的数据结构关联。在一个示例中,数据组件105可以是3D数据组件。数据组件105可以存储3D数据,包括由分割组件104所生成的每个数据区块的细节层次。在一方面,数据组件105可以存储分层的数据区块。例如,数据组件105可以存储每个数据区块的多个细节层次。

选择组件106可以从数据组件105选择数据区块和/或数据区块的细节层次。在一方面,选择组件106可以从与至少第一细节层次和第二细节层次关联的至少一个数据区块选择数据区块和/或数据的一部分。例如,选择组件106可以确定发送一个或多个数据区块和/或与每个数据区块关联的细节层次的顺序(例如,输出组件108向远端客户端设备传输一个或多个数据区块和/或与每个数据区块关联的细节层次的顺序)。在一方面,选择组件106可以基于与一组数据区块中的每个数据区块关联的信息(例如,几何形状数据、纹理数据、细节层次数据、分辨率数据等)从该组数据区块中选择数据区块。在另一方面,选择组件106可以基于与第一细节层次和第二细节层次关联的信息(例如,几何形状数据、纹理数据、采样数据点的数量、分辨率数据、网格复杂性、纹理分辨率等)从与第一细节层次或第二细节层次关联的至少一个数据区块中选择一部分数据。与该组数据区块中的每个数据区块关联的信息可以是元数据。

在一个实施例中,分割组件104可以接收与内部环境的三维(3D)模型关联的采集的3D数据,并将采集的3D数据分割为与细节层次(例如,低分辨率数据区块)关联的数据区块和与其它细节层次关联的多个其它数据区块(例如,多个更高分辨率的子区块)。数据组件105可以存储至少包含该数据区块的细节层次和多个其它数据区块的其它细节层次的3D数据。输出组件108可以向远端设备初始传输该数据区块,并随后基于与其它细节层次关联的信息向该远端设备传输多个其它数据区块的一部分数据。因此,由选择组件106选择的第一数据区块可以是用于3D模型的低分辨率数据区块(例如,与整个3D模型关联的低分辨率数据区块)。在选择组件106选择第一数据区块之后,选择组件106可以选择用于3D模型的多个更高分辨率子区块中的一个或多个。例如,用于3D模型的每个更高分辨率子区块可以与3D模型的子区间关联。用于3D模型的多个更高分辨率子区块中的一个或多个可以被叠加在第一数据区块(例如,用于3D模型的低分辨率数据区块)上。在一方面,分割组件104可以基于所识别的3D模型的建筑元素将采集的3D数据分割为多个其它数据区块。在另一方面,数据组件105可以以比该数据区块的细节层次更大的细节层次(例如,更高分辨率)存储多个数据区块的其它细节层次。

在一方面,选择组件106可以采用自适应顺序来选择和/或传输一个或多个数据区块和/或细节层次。例如,选择组件106可以基于反馈数据(例如,在图1中示出的反馈数据)从一组数据区块和/或与数据区块关联的细节层次选择数据区块。反馈数据可以包括但不限于与在远程客户端设备上渲染3D模型关联的位置数据、在远程客户端设备上渲染3D模型关联的取向数据等。在远端客户端设备上的3D模型观察器可以显示3D模型的渲染。反馈数据可以从远端客户端设备(例如,渲染3D模型的远端客户端设备、采用3D模型观察器显示3D模型的远端客户端设备等)接收。在一个示例中,自适应顺序可以基于在远端客户端设备中的渲染视图的位置。在数据区块与多个离散细节层次关联的非限制性示例中,选择组件106可以初始选择和/或以某个固定顺序或某个可变顺序传输最低细节的每个数据区块,接着选择和/或传输下一最详细层次的每个数据区块等,直到最高层次的数据区块被选择和/或传输。

选择组件106可以基于与在远端客户端设备上的渲染视图关联的位置数据选择和/或传输一个或多个数据区块和/或细节层次(例如,远端客户端设备被配置用于接收一个或多个数据区块和/或通过3D观察器显示3D模型)。例如,选择组件106可以选择和/或传输最接近与在远端客户端设备上渲染3D模型关联的摄像机位置和/或摄像机取向(例如,视角)的特定数据区块。在一个示例中,选择组件106可以从最低细节层次到最高细节层次选择和/或传输特定数据区块,接着从最低细节层次到最高细节层次选择和/或传输下一最接近的数据区块等。最接近的数据区块可以是包含最接近与远端客户端设备关联的视点(例如,与在远端客户端设备上渲染3D模型关联的视点)的三角形、曲面元素或点的数据区块。替换地,最接近的数据区块可以是与关联于该数据区块的所有三角形、曲面元素或点相对于与远端客户端设备关联的视点(例如,与在远端客户端设备上渲染3D模型关联的视点)的最小平均距离关联的数据区块。在另一方面,选择组件106可以根据基于可见度的剔除技术来选择和/或传输一个或多个数据区块和/或细节层次。基于可见度的剔除技术可以包括但不限于视见平截头体剔除、遮挡剔除、背面剔除、细节剔除等。然而,应明白,选择组件106可以实施类似的技术来选择和/或传输一个或多个数据区块和/或细节层次。

选择组件106可以基于先前选定的细节层次来选择和/或传输与细节层次关联的一部分数据。在非限制性示例中,选择组件106可以选择和/或传输具有与网格数据和/或纹理数据关联的两个细节层次的单个区块。例如,3D模型可以包括在多个细节层次的单个区块。因此,选择组件106可以初始选择和/或传输3D模型的低分辨率版本。例如,3D模型的低分辨率版本可以包括具有少量的三角形(例如,20k)和低分辨率纹理(例如,在最高分辨率纹理的每个维度中的像素分辨率的l/8,在512x512像素图像的每个维度中的像素分辨率的1/8等)的网格(例如,多边形网格)。在一个示例中,纹理可以以高压缩来编码(例如,JPEG编码)以进一步降低大小。在选择组件106选择和/或传输3D模型的低分辨率版本(例如,先前选定的3D模型的版本)之后,选择组件106可以选择和/或传输3D模型的高分辨率版本和/或3D模型的全分辨率版本。更高分辨率版本的3D模型可以对应于更大的网格复杂性和/或更大的纹理分辨率。例如,高分辨率版本的3D模型可以包括具有大量的三角形(例如,500k)和/或基本没有或完全没有压缩的全分辨率纹理的网格(例如,多边形网格)。

在另一非限制性示例中,选择组件106可以选择和/或传输具有不同纹理的细节层次和/或不同的网格细节层次的单个区块。例如,3D模型可以包括在多个细节层次的单个区块。因此,选择组件106可以初始选择和/或传输3D模型的低分辨率版本。例如,低分辨率版本的3D模型可以包括具有一定数量的三角形(例如,与其它版本的3D模型相比为少量的三角形)和/或与一定量的压缩(例如,与其它版本的3D模型相比为更大的压缩)关联的低分辨率纹理的网格(例如,多边形网格)。接下来,选择组件106可以选择和/或传输高分辨率版本的3D模型,其包括采用与3D模型的低分辨率版本关联的低分辨率纹理的网格(例如,多边形网格)。接下来,选择组件106可以选择和/或传输可以被映射到高分辨率网格上的高分辨率纹理。例如,高分辨率纹理可以包括与其它版本的3D模型相比为最高的分辨率(例如,为先前选定和/或传输的纹理的每个维度的像素的八倍,为2048x2048像素图像的每个维度的像素的八倍等)。此外,为了更好的最终图像质量,高分辨率纹理可以包括与其它版本的3D模型相比更少的压缩(例如,高分辨率纹理可以以无损的格式编码等)。应明白,这些技术可以被扩展到不止两个细节层次(例如,以允许选择组件106逐渐选择和/或传输更高的分辨率网格和/或纹理)。应明白,可以改变选择组件106所采用的选择和/或传输网格和/或纹理的细节层次的顺序。例如,选择组件106可以选择和/或传输在更高分辨率网格之前选择和/或传输高分辨率纹理等。在一方面,纹理优先或网格优先的优先级可以取决于用户正在观看3D模型的位置(例如,远端客户端设备的位置)。例如,如果用户正在通过远端客户端设备上的3D模型观察器更详细(例如,近距离、放大等)观看3D模型时,则纹理可以是优先的。

在一方面,选择组件106选择和/或传输的更高分辨率版本的数据区块可以替换3D数据列表中待显示(例如,在远端客户端设备上显示)的较低分辨率版本的数据区块。在另一方面,响应于确定多个子区块中的每一者被选择组件106选择和/或传输(例如,响应于确定多个子子区块中的每一者已被传输到远端客户端设备),与多个子区块(例如,相对于分层数据结构的多个孩节点数据区块)关联的数据区块可以用也与多个子区块关联的一个或多个数据区块(例如,与多个孩节点数据区块关联的一个或多个数据区块)替换。因此,一旦与数据区块关联的所有子区块被加载,数据区块就可以在远端客户端设备的显示器中用更高细节的子区块来替换。

在一个实施例中,选择组件106可以基于分辨率中深度优先的技术来选择和/或传输一个或多个数据区块和/或一个或多个数据区块的细节层次。例如,选择组件106可以初始选择和/或传输3D模型中的每个数据区块的最低分辨率版本。接着,选择组件106可以选择和/或传输每个数据区块的下一最详细层次,并依此类推,直到每个数据区块的最高细节层次已被选择组件106选择和/或传输。在一方面,可以任意(例如,随机)确定每个细节层次内的顺序。在一个示例中,在每个细节层次内的顺序可以基于随机数值生成器来确定。

在另一实施例中,选择组件106可以基于仅最高分辨率技术来选择和/或传输一个或多个数据区块和/或一个或多个数据区块的细节层次。例如,选择组件106可以选择和/或传输每个数据区块的最高细节层次版本,而不选择和/或传输每个数据区块的任何较低细节层次。在一方面,选择组件106可以实施仅高分辨率技术连同其它方法来选择和/或传输数据区块(例如,仅高分辨率技术可以与其它方法组合来选择数据区块和/或确定传输数据区块的顺序)。

在又一实施例中,选择组件106可以基于视见平截头体技术来选择和/或传输一个或多个数据区块和/或一个或多个数据区块的细节层次。例如,选择组件106可以基于与远端客户端设备(例如,被配置用于接收一个或多个数据区块和/或一个或多个数据区块的细节层次的远端客户端设备)的视点关联的位置数据和/或取向数据来计算视见平截头体。选择组件106可以基于视见平截头体来确定(例如,计算)与平截头体相交的数据区块列表。

在一方面,选择组件106可以基于相对于远端客户端设备的视点的距离对与平截头体相交的数据区块(例如,可见的数据区块)进行分类和/或排序。例如,选择组件106可以选择和/或传输视见平截头体中的还未以最高分辨率选择和/或传输的最近数据区块。在一个示例中,当视见平截头体改变时,选择组件106可以更新和/或重新计算与平截头体相交的数据区块的排序。在示例中,选择组件106可以基于搜索技术来确定最近的数据区块和/或对数据区块进行排序。例如,通过采用八叉树,选择组件106可以确定最近的数据区块和/或对数据区块进行排序。在一个示例中,选择组件106可以确定与八叉树数据结构的特定部分(例如,体积)相交的数据区块。数据区块可以被存储在八叉树数据结构中。因此,可以采用视见平截头体的一部分(例如,体积)来查询八叉树数据结构(例如,以识别相交的数据区块)。此外,选择组件106可以分析相交的数据区块。

在另一方面,选择组件106可以计算平截头体内的每个数据区块的角大小(例如,表观的角大小)。例如,选择组件106可以将边界区域(例如,与平截头体相交的数据区块的边界立方体)投影到与远端客户端设备关联的视点。在一个示例中,选择组件106可以接着基于角大小对与平截头体相交的数据区块的列表进行排序。因此,由选择组件106选择和/或传输的下一数据区块为最高分辨率版本。

在又一实现方式中,选择组件106可以基于数据区块的分辨率和/或计算出的数据区块的角大小来计算分数。例如,分数可以是在给定数据区块的当前细节层次和至与远端客户端设备关联的视点的距离的情况下,每球面度(例如,立体角的度量)的像素或顶点的数量。在另一示例中,分数可以被计算为从与远端客户端设备关联的视点来看,数据区块的大小(例如,数据区块的字节的数量)相对于数据区块的球面度的大小。在一方面,分割组件104可以选择具有最低分数的数据区块的细节层次,使得该数据区块的分数不再是最低分数。选定的数据区块的细节层次可以被选择用于进行传输(例如,选定的数据区块的细节层次可以被接下来传输给远端客户端设备)。在另一面,选择组件106可以选择具有最低分数的数据区块的细节层次,使得该数据区块的新分数大于预定阈值。选定的数据区块的细节层次可以被选择用于进行传输(例如,选定的数据区块的细节层次可以被接下来传输给远端客户端设备)。在一个示例中,响应于确定所有数据区块大于预定阈值,选择组件106可以采用不同的方法来选择和/或传输数据区块和/或数据区块的细节层次。在另一示例中,响应于确定所有数据区块大于预定阈值(例如,响应于确定所有数据区块满足预定阈值),可以实现不同的阈值(例如,更高的阈值、更大的阈值等)来选择和/或传输数据区块和/或数据区块的细节层次。

在又一实施例中,选择组件106可以基于与3D模型观察器(例如,在远端客户端设备上实现的3D模型观察器)关联的信息来选择和/或传输一个或多个数据区块和/或一个或多个数据区块的细节层次。选择组件106可以选择和/或传输占用3D模型观察器上的当前视图(例如,当前渲染视域)的最大空间量的一个或多个数据区块和/或一个或多个数据区块的细节层次。例如,选择组件106可以初始选择和/或传输3D模型中的每个数据区块的最低分辨率版本。接着,选择组件106可以以统计方式采样和/或确定从与3D模型的每个数据区块(例如,作为与3D模型首次相交的3D模型的每个数据区块)相交的3D模型的当前渲染视域内的虚拟摄像机(例如,与在远端客户端设备上实现的3D模型关联的虚拟摄像机)发出的摄像机射线的数量。因此,选择组件106可以基于与每个数据区块相交的摄像机射线的数量来选择和/或传输下一数据区块和/或数据区块的下一细节层次。例如,待选择和/或传输的下一数据区块和/或数据区块的下一细节层次可以是具有最高数量的摄像机射线的、未以最高分辨率加载的数据区块的更高分辨率版本(例如,在远端客户端设备上显示的数据区块的当前分辨率版本之上的数据区块的分辨率版本)。响应于确定每个数据区块包括多于两个的分辨率水平,已与特定数据区块相交的摄像机射线的数量可以与特定数据区块的当前细节层次组合以生成分数。例如,可以采用该分数来选择和/或传输下一数据区块和/或下一细节层次。在一个示例中,被选择和/或传输的特定数据区块的细节层次可以是比特定数据区块的当前细节层次更高的一个细节层次。在另一示例中,被选择和/或传输的特定数据区块的细节层次可以通过记分函数来确定。

如果特定数据区块的细节层次是数据区块的先前细节层次在每个方向的细节的两倍,则分数可以基于与特定数据区块相交的摄像机射线的数量和特定数据区块的细节层次来确定。在一个示例中,分数可以对应于RAYCOUNT/(4^LOD),其中,变量RAYCOUNT是与在3D模型上的特定数据区块相交的摄像机射线的数量(例如,从3D模型渲染上的当前用户位置发出的摄像机射线的数量),变量LOD是特定数据区块的细节层次。例如,变量RAYCOUNT可以是从数据区块标识符(例如,其中,每个数据区块包括唯一的标识符)至整数的映射。变量RAYCOUNT可以被初始化,使得每个数据区块的标识符映射到整数零。变量LOD可以是从数据区块标识符至整数的映射,其中,LOD[i]表示标识符为i的特定数据区块在远端客户端设备中的当前细节层次,其中,标识符i为非负整数。例如,标识符i为零值可以表示特定数据区块在远端客户端设备中没有细节,标识符i为一的值可以表示特定数据区块在远端客户端设备中的第一细节层次,等。每次远端客户端设备渲染帧时,可以计算与每个数据区块相交为与3D模型的首次相交的摄像机射线的数量。计算出的当前帧的摄像机射线的数量可以被添加到由每个数据区块的标识符映射的整数。在一个示例中,映射可以由选择组件106从远端客户端设备接收。因此,选择组件106可以确定要选择和/或传输的下一数据区块。

替换地,远端客户端设备可以基于远端客户端设备当前采用的数据区块的细节大小和/或细节层次从数据组件105请求下一数据区块。另外或替换地,远端客户端设备可以基于数据区块的列表和/或细节层次的列表从数据组件105请求下一数据区块。在一方面,数据区块i的分数由RAYCOUNT[i]/4^LOD[i]给出。对于不与最高细节层次关联的数据区块,可以选择和/或传输具有最高分数的数据区块的下一最精细的细节层次。在一个示例中,摄像机射线计数(例如,与每个数据区块相交的摄像机射线的计数)可以被统计采样替换,在该统计采样中,采用在远端客户端设备上渲染3D模型的视场内的少量的随机取向的摄像机射线和/或记录(tally)随机取向的摄像机射线的最近数据区块交集。因此,选择组件106可以基于被用于确定与数据区块关联的数据的摄像机射线的总数来选择数据区块和/或细节层次。替换地,与远端客户端设备上的图形组件(例如,显卡)关联的缓冲区(例如,Z缓冲区)可以被用作投射线的替代。

在又一实施例中,选择组件106可以基于当用户通过远端客户端设备上的3D模型观察器观看3D模型时的用户行为(例如,观看3D模型的一个或多个用户的过去行为、用户历史、位置数据和/或取向数据的历史等)来选择和/或传输一个或多个数据区块和/或一个或多个数据区块的细节层次。例如,与渲染3D模型关联的用户的先前位置(例如,用户的先前观看位置)可以被用于推测用户的将来位置(例如,用户的可能将来观看位置)。在示例中,先前观看最多的数据区块(例如,最多观看的数据区块)可以由选择组件106首先选择和/或传输。例如,与通过远端客户端设备上的3D观察器观看3D模型的摄像机视野关联的位置数据和/或取向数据可以被存储(例如,以周期性间隔)。位置数据和/或取向数据集可以形成与3D模型的特定部分(例如,特定体积)关联的一组数据点。该组数据点可以被处理(例如,平滑)以生成在3D模型的特定部分(例如,特定体积)上的用户位置的平均分布。因此,与平均分布关联的数据点的最高值可以被认为是用户的最有可能的观看位置。此外,与平均分布关联的数据点的最高值(例如,用户的最有可能的观看位置)可以被用于确定待选择和/或传输的初始数据区块和/或初始细节层次。替换地,与平均分布关联的数据点的最高值(例如,用户的最有可能的观看位置)可以被用于基于当前用户位置和/或当前用户取向来生成用于预测将来用户位置和/或将来用户取向的模型。在一个示例中,预测将来用户位置和/或将来用户取向的模型可以基于隐藏的Markov模型来生成。然而,应明白,用于预测将来用户位置和/或将来用户取向的模型可以基于不同的技术来生成。在一方面,不久的将来用户位置和/或不久的将来用户取向的概率分布(例如,基于当前用户位置和/或当前用户取向所确定的)可以被用于选择和/或传输下一数据区块、对在一定时间段内有可能接近用户的数据区块排优先级、对在一定时间段内有可能在远端客户端设备上的3D模型观察器的视场中的数据区块排优先级,等。

在一方面,响应于确定3D模型被分割为建筑结构(例如,墙壁等)和/或被包含在建筑框架内的物理对象(例如,家具),物理对象的选择和/或传输可以被去优先级,除非该物理对象被包含在与用户的当前位置(例如,远端客户端设备的当前位置)相同的子区间(例如,相同房间)中。在非限制性示例中,如果3D模型被分割为每个子区间(例如,每个房间)的墙壁和地板的一个数据区块以及该子区间的物理对象(例如,被包含在子区间中的内容)的一个或多个数据区块,则选择和/或传输优先级可以如下:初始选择和/或传输3D模型观察器的摄像机视野目前所关联于的子区间(例如,房间)的墙壁和地板,之后是当前子区间的物理对象(例如,被包含在当前房间中的内容),接着是相邻子区间(例如,相邻房间)的墙壁和地板,接着是相邻子区间段的物理对象(例如,被包含在相邻房间中的内容),接着是所有其它墙壁和地板,其次是所有其它物理对象(例如,被包含在3D模型中的所有其它内容)。数据区块可以由选择组件106按优先级顺序来选择和/或传输。在一方面,数据区块的选择和/或传输的排序可以基于3D模型观察器的摄像机视野的位置变化来周期性地更新。另外或替换地,对于包括多个细节层次的数据区块,可以确定数据区块在特定细节层次的优先级排序。

应明白,采集的3D数据可以在未被分割组件104分割的情况下,由选择组件106和/或输出组件108接收。例如,采集的3D数据可以在未被分割为一个或多个数据区块和/或一个或多个细节层次的情况下被传输至远端客户端设备。

输出组件108可以向远端客户端设备传输处理后的3D数据(例如,在图1中示出的处理后的3D数据)。远程客户端设备可以被配置成渲染和/或显示与处理后的3D数据关联的3D模型(例如,通过3D模型观察器)。例如,输出组件108可以基于由选择组件106所确定的排序(例如,传输顺序)来传输一个或多个数据区块和/或数据区块的一个或多个细节层次。在一个示例中,处理后的3D数据可以是处理后的3D重构数据。

在一方面,输出组件108可以为被传输至远端客户端设备的数据区块(例如,高分辨率数据区块)和/或细节层次生成一个或多个视觉效果。在一个示例中,输出组件108可以在平坦(flat)数据区块或低分辨率数据区块被远端客户端设备渲染(例如,用于在3D模型观察器上显示)之后,生成高分辨率数据区块的一个或多个更好视觉效果(例如,当传输高分辨率数据区块时)。例如,当从3D模型中的地板上升时,当从3D模型落下时,当从3D模型中的特定点展开时,当类似在3D模型中的最终位置稳定之前的不稳定状态(例如,像果冻吹起来和摇摆等)时等,可以在远端客户端设备上渲染与3D模型的子区间(例如,房间)关联的高分辨率数据区块。

在另一方面,输出组件108生成特定数据区块并非处于最高细节层次的视觉指示。例如,输出组件108可以为远端客户端设备(例如,在远端客户端设备上实现的3D模型观察器)生成3D模型的至少一部分并非处于最高可用分辨率的指示。此外,输出组件108可以为远端客户端设备生成最高分辨率版本将被提供给远端客户端设备的指示。

在一个示例中,输出组件108可以生成低分辨率纹理的水印和/或在与并非处于最高细节层次的数据区块的至少一部分关联的纹理上附加(例如,叠加)水印。在示例中,水印可以以规则图案应用于覆盖一定大小的平坦表面的纹理。例如,与房间关联的数据区块的墙壁和/或地板可以包括水印,但是物理对象(例如,家具)可以不用水印来实现。在一方面,水印可以相对于时间是动画的。

在另一示例中,输出组件108可以以降低的α水平来配置数据区块,使得其它对象通过该数据区块是可见的。例如,在中等细节层次的数据区块可以包括70%的α水平(例如,数据区块部分可看透,但是很类似实心(solid)的α水平),而在最高细节层次的任何数据区块包括100%的α水平(例如,数据区块为完全不透明的α水平)。

在又一示例中,输出组件108可以将数据区块配置为随时间以循环方式盲化或平滑插值。例如,输出组件108可以将数据区块配置为在100%的完全α水平和小于100%的α水平之间改变。另外或替换地,输出组件108可以将数据区块颜色、亮度、色调和/或饱和度配置为以循环方式改变。在又一示例中,输出组件108可以用不同的颜色、亮度、色调和/或饱和度来配置数据区块的纹理。例如,输出组件108可以将具有较低细节层的数据区块的纹理配置为按灰度进行显示。在又一示例中,输出组件108可以不用纹理(例如,没有纹理)来配置数据区块。在又一示例中,输出组件108可以用栅格(例如,栅格可以被投影到数据区块上)来配置数据区块。在又一示例中,输出组件108可以用叠加的垂直或水平移动线来配置数据区块(例如,待在远端客户端设备上显示的数据区块)以暗示数据区块的扫描操作在进行中。在又一示例中,响应于确定正在加载3D模型的一部分,输出组件108可以生成消息(例如,加载消息)。另外或替换地,响应于确定通过远端客户端设备上的3D模型观察器正在显示的3D模型的一部分并非处于最高可能的细节层次,输出组件108可以生成消息(例如,加载消息)。

在一方面,输出组件108可以生成3D模型的一部分的投影(例如,3D场景),其中没有为数据区块提供细节层次。在示例中,输出组件108可以确定显示未加载数据区块的投影点。例如,如果数据区块是房间,则投影点可以被确定为刚好在该房间的门外面的点。在一个示例中,投影可以在位于3D模型中的平面上显示。例如,投影可以在未加载子区间(例如,401、402、403)的入口(例如,404、405)处显示。在另一示例中,投影可以被显示为3D模型内的天空盒(skybox)。

虽然图1示出在系统100中的独立组件,但是应明白,该组件可在公共组件中实施。在一个示例中,分割组件104、数据组件105、选择组件106和/或输出组件108可以被包含在单个组件中。此外,应明白,系统100的设计可以包含其它组件选择、组件布局等以有助于处理和/或传输3D数据。

参考图2,其示出根据本公开的各个方面和具体实施的系统200的非限制性实现方式。系统包括至少一个服务器202、网络204和远端客户端设备206。至少一个服务器202可以包括至少处理组件102。处理组件102可以包括分割组件104、数据组件105、选择组件106和/或输出组件108。

远端客户端设备206可以被配置成接收要渲染和/或显示3D模型的3D数据(例如,处理后的3D数据、处理后的3D重构数据等)。3D模型可以通过3D模型观察器在远端客户端设备206上显示。另外,远端客户端设备206可以确定与在3D模型观察器上渲染3D模型的视点和/或摄像机位置关联的位置数据和/或取向数据(例如,反馈数据)。远端客户端设备206可以向至少一个服务器202传输位置数据和/或取向数据(例如,反馈数据)。在一方面,至少一个服务器202可以与3D重构系统关联。在另一方面,远端客户端设备206可以与用户(例如,用户身份等)关联。远端客户端设备206可以包括但不限于蜂窝电话(例如,智能电话)、平板计算机、个人计算机(PC)、台式计算机、便携式计算机、摄像机、3D采集系统、其它便携式计算设备等。至少一个服务器202可以通过网络204以通信方式耦合到远端客户端设备206。网络204可以包括一个或多个网络。例如,网络204可以包含一个或多个无线网络和/或一个或多个有线网络,其包含但不限于蜂窝网络、广域网(WAN,例如,互联网)、局域网(LAN)和/或个人局域网(PAN)。在示例中,至少一个服务器202(例如,处理组件102)可以通过网络204向远端客户端设备206传输处理后的3D数据。因此,远端客户端设备206可以通过虚拟和期望的无线或有线技术,包括例如蜂窝、WAN、无线保真等,来接收处理后的3D数据。

至少一个服务器202(例如,处理组件102)可以处理和/或传输3D数据,如本文更完全公开的。例如,在一方面,至少一个服务器202(例如,处理组件102)可以将与3D模型关联的3D数据分割为与多个细节层次关联的至少一个数据区块。此外,至少一个服务器202(例如,处理组件102)可以基于与多个细节层次关联的数据来确定与至少一个数据区块关联的多个细节层次的传输顺序。在一方面,至少一个服务器202(例如,处理组件102)可以还基于反馈数据(例如,位置数据和/或取向数据)和/或与远端客户端设备206关联的数据区块的传输顺序来确定与至少一个数据区块关联的多个细节层次的传输顺序。在一个示例中,与多个细节层次关联的数据可以包括几何形状数据和/或纹理数据。在另一方面,至少一个服务器202可以向远端客户端设备206传输与数据区块和/或细节层次(例如,数据区块的大小信息、数据区块的分层信息等)关联的信息。

远端客户端设备206可以基于传输顺序从至少一个服务器202(例如,处理组件102)接收与至少一个数据区块和/或多个数据区块关联的多个细节层次。在一方面,远端客户端设备206可以接收从最低细节层次到最高细节层次的多个细节层次。此外,远端客户端设备206可以基于与至少一个数据区块关联的多个细节层次来渲染3D模型的至少一部分。

在示例中,至少一个服务器202(例如,处理组件102)可以接收和/或存储采集的与3D模型关联的3D数据。至少一个服务器202可以(例如,基于识别出的3D模型的建筑元素)将采集的3D数据分割为一个或多个数据区块。此外,远端客户端设备206可以接收由至少一个服务器202所生成的数据区块和/或渲染从至少一个服务器202接收到的数据区块。一旦远端客户端设备206接收足以在3D模型观察器上构建渲染的3D模型的数据区块,用户就可以通过远端客户端设备206上的3D模型观察器观看渲染的3D模型。随着与3D模型观察器上的渲染的3D模型关联的摄像机视野改变,至少一个服务器202可以向远端客户端设备206传输新的数据区块。在一方面,至少一个服务器202可以基于与摄像机视野(例如,与3D模型观察器上的渲染的3D模型关联的摄像机视野)关联的位置数据和/或取向数据向远端客户端设备206传输新的数据区块。应明白,至少一个服务器202(例如,处理组件102)和/或远端客户端设备206可以包括其它特征和/或与用于处理和/或传输3D数据的其它技术相关联,如本文更全面公开的。

参考图3,其示出根据本公开的各个方面和具体实施的系统300的非限制性实现方式。系统包括至少一个服务器202、网络204和远端客户端设备206。至少一个服务器202可以包括至少分割组件104、数据组件105和/或输出组件108。远端客户端设备206可以包括至少选择组件106。

在至少一个服务器202上实现的分割组件104、数据组件105和/或输出组件108可以处理和/或传输3D数据,如本文更全面公开的。在一方面,至少一个服务器202将与内部环境的3D模型关联的3D数据分割为与多个细节层次关联的至少一个数据区块,在数据结构中存储与至少一个数据区块关联的多个细节层次,和/或基于根据与多个细节层次关联的数据确定的传输顺序向远端设备传输与至少一个数据区块关联的多个细节层次。

远端客户端设备206可以基于与细节层次关联的数据来确定与至少一个数据区块关联的多个细节层次的传输顺序,基于该传输顺序从服务器接收与至少一个数据区块关联的多个细节层次,和/或基于与至少一个数据区块关联的多个细节层次来渲染3D模型的至少一部分。在一方面,远端客户端设备206可以基于所确定的传输顺序来请求存储在数据组件105中的数据区块和/或数据区块的特定细节层次(例如,向至少一个服务器202发送包含关于特定数据区块和/或数据区块的特定细节层次的信息的请求)。远端客户端设备206可以通过与远端客户端设备206关联的3D模型观察器加载所请求的数据区块和/或所请求的细节层次。

至少一个服务器202可以向远端客户端设备206(例如,在远端客户端设备206上实现的选择组件106)传输与数据区块和/或细节层次关联的信息以有助于选择数据区块和/或与数据区块关联的细节层次。该信息可以包括但不限于数据区块的大小信息、数据区块的位置信息、数据区块的细节层次信息等。在一个示例中,至少一个服务器202可以向远端客户端设备206传输与数据组件105关联的分层索引。分层索引可以是存储在数据组件105中的数据区块和/或细节层次的索引。因此,远端客户端设备206可以基于从至少一个服务器202接收到的信息和/或分层索引来确定传输顺序。应明白,在远端客户端设备206上实现的选择组件106可以另外或替换地实现其它特征和/或与用于选择数据区块和与数据区块相关联的细节层次的其它技术相关联,如本文更全面公开的。

前述的系统和/或设备已关于在几个组件之间的交互作用来描述。应明白,此类系统和组件可以包括本文指定的这些组件和子组件、部分的指定组件或子组件和/或另外的组件。子组件也可以被实施为与其它组件通信耦合的组件而不是被包含在父组件内。另外,一个或多个组件和/或子组件可被组合为提供聚集功能的单个组件。组件可与出于简明的目的未在本文中具体描述,但是本领域的技术人员已知的一个或多个其它组件交互。

图5-9示出根据所公开的主题的方法和/或流程图。为了简化解释,该方法被描绘和描述为一系列行为。应理解和明白,本主题创新不受所示的行为和/或行为的顺序限制,例如各行为可以以各种顺序和/或并行发生,并利用未在本文陈述和描述的其它行为。此外,未全部示出的行为可被要求实施根据所公开的主题的方法。此外,本领域的技术人员应理解和明白,该方法可以通过状态图或事件被替换表示为一系列相关的状态。替换地,还应当明白,在下文和整个说明书中所公开的方法能够被存储在有助于向计算机传输和传递此类方法的制品上。如本文所用,术语制品旨在涵盖可从任何计算机可读设备或存储介质访问的计算机程序。

参考图5,其示出根据主题创新的方面的用于处理和/或传输3D数据的方法500。例如,方法500可以被用在各种应用中,诸如但不限于3D建模系统、3D重构系统、服务器系统、基于云的系统等。在502,(例如,由至少一个服务器202)存储与内部环境的三维(3D)模型关联的3D数据。在504,基于识别出的3D模型的建筑元素,(例如,由至少一个服务器202)将3D数据分割为至少一个数据区块。在506,基于所确定的传输顺序,(例如,由至少一个服务器202)将多个数据区块发送至远端设备。另外或替换地,(例如,由至少一个服务器202)将与多个数据区块关联的信息发送至远端设备。例如,与多个数据区块相关联的信息可以包括但不限于:多个数据区块的大小信息、多个数据区块的位置信息、多个数据区块的分层信息(例如,细节层次信息)等。在508,基于与多个数据区块关联的信息、与在远端设备上渲染3D模型关联的其它信息和/或与在远端设备上渲染3D模型的摄像机位置关联的其它信息,(例如,由至少一个服务器202)将一个或多个新数据区块发送至远端设备。

参考图6,其示出根据主题创新的另一方面的用于处理和/或传输3D数据的方法600。在602,(例如,由处理组件102和/或分割组件104)接收与环境的三维(3D)模型关联的3D数据。在604,基于一种或多种数据分块技术,(例如,由分割组件104)将3D数据分割为至少一个数据区块。在606,(例如,由选择组件106)确定至少一个数据区块的传输顺序、与至少一个数据区块关联的几何形状数据和/或与至少一个数据区块关联的纹理数据。在608,基于传输顺序,(例如,由输出组件108)将至少一个数据区块、与至少一个数据区块关联的几何形状数据和/或与至少一个数据区块关联的纹理数据发送至远端设备。

参考图7,其示出根据主题创新的又一方面的用于处理和/或传输3D数据的方法700。在702,(例如,由处理组件102和/或分割组件104)接收采集的与内部环境的三维(3D)模型关联的3D数据。在704,(例如,使用分割组件104)将采集的3D数据分割为与多个细节层次关联的至少一个数据段。在706,(例如,由数据组件105)将包含与至少一个数据段关联的多个细节层次的3D数据存储在数据结构中。在708,基于根据与多个细节层次关联的几何形状数据和/或纹理数据确定的顺序,(例如,由输出组件108)将至少一个数据段的多个细节层次传输至远端设备。

参考图8,其示出根据主题创新的又一方面的用于处理和/或传输3D数据的方法800。在802,(例如,由处理组件102和/或分割组件104)接收采集的与三维(3D)模型关联的3D数据。在804,(例如,使用分割组件104)将采集的3D数据划分为与多个细节层次关联的至少一个数据区块。在806,基于与在远端设备上渲染3D模型关联的至少一个位置数据和/或取向数据,(例如,使用选择组件106)选择传输至少一个数据区块的多个细节层次的顺序。在808,基于该顺序,(例如,由输出组件108)将至少一个数据区块的多个细节层次发送至远端设备。

参考图9,其示出根据本主题创新的方面的基于视野位置从服务器向远端客户端设备发送数据区块的示例方法900。例如,方法900示出在远端客户端设备和服务器之间的用于基于来自远端客户端设备的反馈(例如,与远端客户端设备关联的摄像机的位置)来选择特定细节层次和/或特定数据区块的示例通信流程。在902,客户端从服务器请求网格。例如,远端客户端设备可以从服务器请求3D数据。在一方面,远端客户端设备可以发送在渲染3D模型时的用户初始位置(例如,与在远端客户端设备上实现的基于网页的观察器关联的观看位置)。因此,从服务器发送至客户端的初始网格可以被选择以更精确地对应于与客户端关联的初始视点。在904,将低分辨率网格从服务器发送至客户端。例如,服务器可以向远端客户端设备发送关于网格的初始数据(例如,表示与3D数据关联的网格/纹理的低分辨率版本的数据区块或数据区块的集合)(例如,以在远端客户端设备上初始显示)。在906,客户端向服务器报告用户位置。例如,远端客户端设备可以报告在渲染3D模型时的用户位置(例如,与在远端客户端设备上实现的观察器关联的观看位置、与在远端客户端设备上实现的3D模型观察器关联的摄像机位置等)。在一个示例中,用户位置可以由用户位置在3D空间中的关于X、Y和Z坐标的三个浮点数来表示。在另一示例中,除了用户位置以外,表示与用户在远端客户端设备上渲染的3D模型中的位置关联的虚拟摄像机或视见平截头体的取向(例如,观看方向)的数据(例如,四元数)被报告给服务器。例如,四元数可以包括标准表示作为满足特定关系的四个浮点数,并且可以被减少到三个独立浮点数。在一方面,客户端向服务器报告更新的用户位置。例如,远端客户端设备可以报告在渲染3D模型时的更新的用户位置(例如,与在远端客户端设备上实现的观察器关联的更新的观看位置)。在一个示例中,更新的用户位置可以对应于初始的用户位置。在另一示例中,更新的用户位置可以不同于初始的用户位置。

在908,服务器确定任何数据区块是否仍待发送至客户端。例如,服务器可以确定是否存在可以被发送至远端客户端设备的任何细节层次的任何剩余数据区块。如果“否”,则方法900进行到914。在914,完成网格加载。如果“是”,则方法900进行到910。在910,服务器判断哪个数据区块接下来待发送至客户端。例如,如果存在剩余的数据区块,则服务器可以确定接下来发送哪个数据块和/或哪个细节层次至客户端。在一个示例中,服务器可以基于在906确定的位置数据和/或取向数据,来确定接下来发送哪个数据区块和/或哪个细节层次至客户端。在912,服务器向客户端发送下一个数据区块。接下来,在906,客户端向服务器报告新的用户位置。在一个示例中,新的用户位置可以与先前报告的用户位置相同。在另一示例中,新的用户位置可以不同于先前报告的用户位置。因此,方法900可以继续,直到客户端不再需要网格或直到服务器已确定网格加载已完成(例如,在914)。在替换实施例中,908和/或910可以在客户端上实现。在一方面,服务器可以向客户端传输与每个数据区块关联的信息和/或与数据区块的每个细节层次关联的信息,以有助于确定任何数据区块是否仍待发送至客户端和/或判断接下来发送哪个数据区块至客户端。

为了提供本公开的主题的各个方面的上下文,图10和11以及下面的论述旨在提供可实施本公开的主题的各个方面的合适环境的简短的一般描述。

参考图10,用于实施本公开的各个方面的合适环境1000包括计算机1012。计算机1012包括处理单元1014、系统存储器1016和系统总线1018。系统总线1018耦合系统组件,其包含但不限于系统存储器1016耦合至处理单元1014。处理单元1014可以为各种可用处理器。双微处理器和其它多处理器架构也可以被用作处理单元1014。

总线结构1018可以是若干类型的总线结构中的任一种,包含存储器总线、存储器控制器或外围总线或外部总线和/或使用任何各种各样的可用总线架构的本地总线,任何各种各样的可用总线架构包含但不限于工业标准架构(ISA)、微通道架构(MSA)、扩展ISA(EISA)、智能驱动电子(IDE)、VESA局部总线(VLB)、外围组件互连(PCI)、卡总线、通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)、火线(IEEE 1394)以及小型计算机系统接口(SCSI)。

系统存储器1016包括易失性存储器1020和非易失性存储器1022。含有诸如在启动过程中在计算机1012内的元件之间传递信息的基本例程的基本输入/输出系统(BIOS)被存储在非易失性存储器1022中。借助于说明但不是限制,非易失性存储器1022可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、闪存或非易失性随机存取存储器(RAM)(例如,铁电RAM(FeRAM)。易失性存储器1020包括可以充当外部高速缓存存储器的随机存取存储器(RAM)。借助于说明但不是限制,RAM可用于许多形式,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、加强SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、直接Rambus RAM(DRRAM)、直接Rambus动态RAM(DRDRAM)和Rambus动态RAM。

计算机1012也包括可移除/不可移除、易失性/非易失性计算机存储介质。图10示出例如盘存储1024。盘存储1024包括但不限于磁盘驱动器、软盘驱动器、带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡或存储器棒的器件。盘存储1024也可以包括独立或与其它存储介质组合的存储介质,包括但不限于光盘驱动器,诸如紧凑盘ROM设备(CD-ROM)、CD可录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能ROM驱动器(DVD-ROM)。为了有助于盘存储设备1024至系统总线1018的连接,通常使用可移除或不可移除接口,诸如接口1026。

图10也示出充当用户和在合适的运行环境1000中描述的基本计算机资源之间的中间体的软件。此类软件包括例如操作系统1028。可以被存储在盘存储1024中的操作系统1028用于控制和分配计算机系统1012的资源。系统应用1030利用操作系统1028通过例如存储在系统存储器1016或盘存储1024中的程序模块1032和程序数据1034对资源进行管理。应明白,本公开可以用各种操作系统或操作系统的组合来实施。

用户通过输入设备1036将命令或信息输入到计算机1012中。输入设备1036包括但不限于定点设备,诸如鼠标、轨迹球、手写笔、触摸板、键盘、麦克风、摇杆、游戏垫、卫星天线、扫描仪、电视调谐卡、数码相机、数码摄像机、网络摄像机等。这些和其它输入设备通过接口端口1038通过系统总线1018连接到处理单元1014。接口端口1038包括例如串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备1040使用一些相同类型的端口用作输入设备1036。因此,例如,USB端口可以被用于提供至计算机1012的输入并从计算机1012向输出设备1040输出信息。提供输出适配器1042是为了示出除了其它输出设备1040之外,还存在一些输出设备1040,像监视器、扬声器和打印机,它们需要特殊的适配器。借助于说明但不是限制,输出适配器1042包括显卡和声卡,其提供在输出设备1040和系统总线1018之间的连接的手段。应指出,其它设备和/或设备系统均提供诸如远端计算机1044的输入和输出性能。

通过使用至一个或多个远端计算机诸如远端计算机1044的逻辑连接,计算机1012可以运行在联网环境中。远端计算机1044可以是个人计算机。服务器。路由器、网络PC、工作站、基于应用的微处理器、对等设备或其它公共网络节点等,并且通常包括关于计算机1012所述的许多或全部元件。为了简明起见,仅示出远端计算机1044具有内存存储设备1046。远端计算机1044通过网络接口1048被逻辑连接到计算机1012并接着通过通信连接1050物理连接。网络接口1048涵盖有线和/或无线通信网络,诸如局域网(LAN)、广域网(WAN)、蜂窝网络等。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(接口)、以太网、令牌环。WAN技术包括但不限于,点对点的链路、电路交换网络,像集成服务数字网络(ISDN)和其变体,分组交换网和数字用户线(DSL)。

通信连接1050指的是被用于将网络接口1048连接至总线1018的硬件/软件。虽然为了清楚起见,通信连接1050被示出在计算机1012中,但是它也可以在计算机1012的外部。仅出于示例性目的,至网络接口1048的连接所需的硬件/软件包含内部和外部技术,诸如调制解调器,包括常规的电话级调制解调器、电缆调制解调器和DSL调制解调器、ISDN适配器和以太网卡。

应明白,计算机1012可以被用于实现结合图1-9所示和所述的一个或多个系统、组件和/或方法的连接。根据各个方面和具体实施,计算机1012可以被用于有助于处理和/或传输3D数据。在某些示例性实施例中,计算机1012包括组件1006(例如,处理组件102),其可以包括例如分割组件、数据组件、选择组件和/或输出组件,它们中的每个可以分别起本文完全公开的作用。

图11为本公开的主题可以与其交互的采样计算环境1100的示意性框图。系统1100包括一个或多个客户端1110。客户端1110可以是硬件和/或软件(例如,线程、进程、计算设备)。系统1100也包括一个或多个服务器1130。因此,除了其它模型之外,系统1100可以对应于两层客户端服务器模型或多层模型(例如,客户端、中间层服务器、数据服务器)。服务器1130也可以是硬件和/或软件(例如,线程、进程、计算设备)。通过采用本公开,服务器1130可以容纳线程以执行例如转换。在客户端1110和服务器1130之间的一个可能通信可以是在两个或多个计算机进程之间传输的数据包的形式。

系统1100包括通信框架1150,其可以被用于有助于在客户端1110和服务器1130之间的通信。客户端1110可操作连接到一个或多个客户端数据存储1120,其可以被用于存储客户端1110本地的信息。类似地,服务器1130可操作连接到一个或多个服务器数据存储1140,其可以被用于存储服务器1130本地的信息。

应指出,本公开的各方面或特征可以被利用在任何无线通信或射频技术中,例如Wi-Fi;蓝牙;全球微波接入互操作性(WiMAX);增强通用分组无线业务(增强型GPRS);第三代合作伙伴计划(3GPP)长期演进(LTE);第三代合作伙伴计划2(3GPP2)超移动宽带(UMB);3GPP通用移动通信系统(UMTS);高速分组接入(HSPA);高速下行链路分组接入(HSDPA);高速上行链路分组接入(HSUPA);GSM(全球移动通信系统)EDGE(GSM演进的增强数据速率)无线接入网络(GERAN);UMTS陆地无线电接入网(UTRAN);高级LTE(LTE-A);等。此外,本文所述的一些或所有的方面可以在传统的通信技术,例如GSM中利用。此外,移动以及非移动网络(例如,互联网、数据服务网络,诸如互联网协议电视(IPTV)等)可以利用本文所述的各方面或特征。

虽然本主题已在上面在计算机上运行的计算机程序的计算机可执行指令的一般语境下描述,但是本领域的技术人员应认识到,本公开也可用其它程序模块或可与其它程序模块组合来实施。一般来说,程序模块包括例程、程序、组件、数据结构等,其执行特定任务和/或实施特定抽象数据类型。此外,本领域的技术人员应明白,本发明方法可用其它计算机系统配置,包含单处理器或多处理器计算机系统、迷你计算设备、大型计算机以及个人计算机、手持式计算设备(例如,PDA、电话)、基于微处理器或可编程消费者或工业电子设备等来实施。所示的各方面也可在分布式计算环境中实施,其中,任务由通过通信网络链接的远端处理设备来执行。然而,本公开的一些方面可以在独立的计算机上实施,如果不是全部的话。在分布式计算环境中,程序模块可以被定位在本地和远程内存存储设备中。

如在本申请中使用,术语“组件”、“系统”、“平台”、“接口”等可以指的是和/或可以包含计算机相关的实体或使可操作机器与一个或多个具体功能相关的实体。本文所公开的实体可以为硬件、硬件和软件的组合、软件或在执行的软件。例如,组件可为但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。借助于例证,在服务器上运行的应用和该服务器两者均可以为组件。一个或多个组件可驻留在执行进程和/或线程内,以及组件可被定位在一个计算机上和/或分布在两个或多个计算机之间。

在另一示例中,相应的组件可以执行具有存储在其上面的各种数据结构的各种计算机可读介质。组件可通过本地和/或远程进程来通信,诸如根据具有一个或多个数据包的信号(例如,来自与本地系统、分布式系统中的另一组件交互的一个组件的数据和/或通过信号跨网络诸如具有其它系统的互联网)。作为另一示例,组件可以为具有由电气或电子电路操作的机械组件所提供的特定功能的设备,其由处理器执行的软件或固件应用来操作。在此情况下,处理器可以在该设备的内部或外部并且可以执行软件或固件应用的至少一部分。作为又一示例,组件可以为通过电子组件提供指定功能而无需机械组件的设备,其中,电子组件可以包括处理器或执行软件或固件以赋予该电子组件的至少一部分功能的其它设备。在一方面,组件可以例如在云计算系统内通过虚拟机器来模拟电子组件。

此外,术语“或”旨在表示包含“或”而不是排他性的“或”。即,除非另外指明或从上下文清楚指出,否则“X采用A或B”旨在表示自然包含排列中的任一种。即,如果X采用A;X采用B;或X采用A和B两者,则在前述实例的任一情况下满足“X采用A或B”。此外,用在本说明书和附图中的冠词“a”和“an”通常应解释为意指“一个或多个”,除非另外指明或从上下文清楚指出为单数形式。

如本文所用,所用的术语“示例”和/或“示例性”意指用作示例、实例或例证。为了避免疑问,本文所公开的主题不受此类示例限制。此外,本文被描述为“示例”和/或“示例性”的任何方面或设计不一定被解释为比其它方面或设计优选或有利的,也不一定意指排除本领域的普通技术人员已知的等同示例性结构和技术。

本文所述的各个方面或特征可以被实施为使用标准编程或工程技术的方法、设备、系统或制品。此外,在本公开中公开的各个方面或特征可以通过实施本文公开的至少一种或多种方法的程序模块来实现,该程序模块被存储在存储器中并由至少一个处理器来执行。硬件和软件或硬件和固件的其它组合可允许或实施本文所述的方面,包含所公开的方法。如本文所用,术语“制品”可以涵盖可从任何计算机可读设备、载体或存储介质访问的计算机程序。例如,计算机可读存储介质可以包含但不限于磁存储设备(例如,硬盘、软盘、磁带...)、光盘(例如,光盘(CD)、数字多功能盘(DVD)、蓝光盘(BD)...)、智能卡和闪存设备(例如,存储卡、棒、密钥驱动器...)等。

如在本说明书中所用,术语“处理器”可以基本上指的是任何计算出来单元或设备,包括但不限于单核处理器;具有软件多线程执行能力的单处理器;多核处理器;具有软件多线程执行能力的多核处理器;具有硬件多线程技术的多核处理器;并行平台;和具有分布式共享存储器的并行平台。另外,处理器可以指的是集成电路、专用集成电路(ASIC)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑控制器(PLC)、复杂可编程逻辑器件(CPLD)、分立门或晶体管逻辑、分立硬件组件或它们的任何组合以执行本文所述的功能。此外,处理器可以利用纳米尺度的架构,诸如但不限于,基于分子和量子点的晶体管、开关和门,以便优化空间的使用或提高用户设备的性能。处理器也可被实施为计算处理单元的组合。

在本公开中,术语诸如“存储”、“数据存储”、“数据库”等基本上为关于组件的操作和功能的任何其它信息存储组件,所使用的组件是指“存储器组件”、“在存储器中”实施的实体或包括存储器的组件。应明白,本文所述的存储器和/或存储器组件可以为易失性存储器或非易失性存储器,或可以包含易失性和非易失性存储器。

借助于说明但不是限制,非易失性存储器可以包含只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦ROM(EEPROM)、闪存或非易失性随机存取存储器(RAM)(例如,铁电RAM(FeRAM)。易失性存储器可以包含RAM,其可例如充当外部高速缓存存储器。借助于例证但不是限制,RAM可用于许多形式,诸如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、加强SDRAM(ESDRAM)、Synchlink DRAM(SLDRAM)、直接Rambus RAM(DRRAM)、直接Rambus动态RAM(DRDRAM)和Rambus动态RAM(RDRAM)。另外,本文所公开的系统或方法的存储器组件旨在包含但不限于这些和任何其它合适类型的存储器。

应当明白和理解,关于特定系统或方法所述的组件(例如,处理组件、分割组件、数据组件、选择组件、输出组件等)可以包含关于本文所公开的其它系统或方法所述的相应组件(例如,相应命名的组件或类似命名的组件)的相同或类似功能。

上面的描述包含提供本公开的优点的系统和方法的实例。当然,出于描述本公开的目的,描述每种想得到的组件和方法的组合是不可能的,但是本领域的普通技术人员应明白,本公开的许多另外组合和置换是可能的。此外,至于术语“包含”、“具有”、“拥有”等在具体实施方式、权利要求和附图中所使用的程度,此类术语旨在以类似于术语“包括”的方式被包含在内,在权利要求中使用术语“包括”时,其被解释为过渡词。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1