三维模型优化的制作方法

文档序号:28735094发布日期:2022-02-01 09:26阅读:701来源:国知局
三维模型优化的制作方法

本申请要求于2019年8月28日提交的题为“THREE-DIMENSIONAL MODEL OPTIMIZATION(三维模型优化)”的第16/553,925号美国专利申请的优先权,其要求于2019年4月26日提交的题为“THREE-DIMENSIONAL MODEL OPTIMIZATION(三维模型优化)”的第16/395,722号美国专利申请的权益。上述申请的公开内容出于所有目的通过引用整体并入本文。

背景技术

系统可以使用三维(“3D”)模型来表示对象。例如,增强现实(“AR”)系统、虚拟现实(“VR”)系统或网络浏览器可以使用3D模型来表示对应环境中的对象。模型可能在视野之外并影响对象(例如,在椅子上弹跳的球)在视野内的呈现。



技术实现要素:

本说明书描述了用于优化3D模型的创建、渲染或两者的技术、方法、系统和其它途径。例如,3D模型可以是通过诸如网络浏览器或专用应用的应用显示的产品的模型。诸如移动设备、AR设备、VR设备或另一类型的计算机的计算设备可以在诸如移动设备屏幕、计算机屏幕、AR护目镜或VR护目镜的屏幕上显示3D模型。建模系统可以收集3D模型图像的观看数据,分析收集的数据,并基于对收集的数据的分析来优化3D模型。

当观看3D模型时,观看者可以具有观看模型的各个方面的能力。观看者可以例如通过使用计算机鼠标、手指或手写笔与模型的各个方面进行交互来调节模型的外观,或使用另一输入模式来调节模型的呈现。观看者可以能够点击并拖动模型或按键盘箭头键来旋转模型。当使用AR或VR设备时,观看者可以例如通过转动头部来观看模型的各个方面来调节模型的外观。

例如,最初可以向观看背包的3D模型的观看者呈现背包的侧视图。观看者可以在背包上点击并在垂直方向拖动输入设备(例如计算机鼠标)来观看背包的底部。观看者可以点击并向左或向右拖动以观看背包的侧面。观看者可以点击并在另一个垂直方向中拖动以观看背包的顶部。

当观看3D模型时,观看者可具有放大或缩小模型的能力。观看者可以放大模型,例如,通过使用计算机鼠标点击或双击模型的各个方面或使用任何其它适当的方法来放大模型或模型的一部分。观看者可以能够滚动鼠标滚轮或点击诸如放大镜的图标以便放大或缩小。例如,观看背包的3D模型的观看者可以放大背包的纹理,或观看背包的特征,例如诸如拉链或按钮的封闭设备。

3D模型的不同观看者在观看3D模型时可具有不同的观看模式。例如,一个观看者可以将3D背包模型旋转到左侧视图,并且然后放大左侧视图。另一个观看者可以将3D背包模型旋转到顶视图,并例如在与3D背包模型执行其它交互之前放大顶视图。

例如当观看者选择向建模系统提供该数据时,建模系统可以接收关于观看者与3D模型交互的数据。例如,建模系统可以接收有关观看者与3D模型交互的数据。数据可以表示从观看者的角度来看3D模型的视角、在显示器上向观看者呈现的模型的部分、在显示器上呈现模型的各部分的顺序,或者以上两个或更多个的组合。

在接收数据之后,例如当观看者与3D模型交互的会话结束时,建模系统可以分析观看数据。例如,数据可指示观看者花了10秒看背包的前视图,然后花20秒看背包的左侧视图,放大包括水瓶袋的左侧视图10秒,然后花了30秒看包括背包的带子的后视图。

建模系统可以接收针对3D模型的每个观看者或3D模型的观看者的子集的数据、聚合数据或两者兼有。建模系统可以使用该数据来优化3D模型。例如,建模系统可以使用聚合数据来识别3D模型的区域,观看者关注该区域比关注3D模型的其它区域更多。区域的一些示例包括3D模型的网格、纹理、象限、其它组件或这些中两个或更多个的组合。

区域可以是例如3D模型的透视图,诸如左侧视图或右侧视图。例如,当透视图是一个区域时,透视图可以包括在特定透视图中显示的3D模型的纹理、网格或两者,观看者可能关注其比关注3D模型的其它纹理、网格或两者更多。每个区域都可以包括在一个或多个透视图中。每个透视图可以包括一个或多个区域,例如该一个或多个区域可以包括在其它透视图中。

对于背包的示例3D模型,例如呈现给观看者的3D模型的图像可以描绘包括水瓶袋的左侧视图。该图像还可以描绘拉链封套和带子的纹理和网格。图像可能不描绘3D模型右侧的伞袋、背包左侧的徽标或两者的任何纹理和网格。因为例如徽标位于水瓶袋的后面,徽标的实际纹理和网格可能会或可能不会加载到3D模型中,或者两者兼有,所以在左侧视图中可能不会呈现徽标。在该示例中,透视图(例如作为区域)可包括水瓶袋的至少一部分、带子的至少一部分和拉链封套的至少一部分,并且可能不包括伞袋、徽标,或两者。

在一些示例中,当透视图是区域时,透视图可以包括3D模型的不连续部分。例如,透视图可以包括水瓶袋和拉链封套,即使水瓶袋和拉链封套被例如在透视图中没有显示的3D模型的其它区域分开。

为了识别3D模型中的相比其它区域观看者更关注的区域,建模系统可以对来自观看者交互的数据执行聚类分析。聚类分析可以针对聚合数据,可以生成聚合数据,或两者兼有。例如,建模系统可以通过创建3D模型的热图来执行聚类分析。热图可以用各种模式、阴影、颜色或所有这些来表示3D模型的区域,以区分相比其它区域而言观看者更关注的区域。

建模系统可以使用热图来优化3D模型。例如,建模系统(例如模型优化设备)可以使用识别出的区域(相比3D模型的其它区域而言观看者更关注该区域)来优化3D模型的一个或多个区域。对于3D模型中的相比其它区域而言观看者更少关注的区域,建模系统可以从更高分辨率的图像中生成更低分辨率的图像。

在一些实现方式中,建模系统可以生成3D模型的两个或更多个版本。3D模型的每个版本可以是不同的数据大小,例如,以兆字节、分辨率或两者为单位。较小大小的模型可以以高分辨率包括例如如由热图确定的相比3D模型的其它区域观看者更关注的3D模型的区域。较小大小的模型可以以低分辨率包括相比3D模型的其它区域观看者更少关注的3D模型的区域。较大大小的模型可以包括相比3D模型的其它区域观看者更少关注的3D模型的区域以及相比3D模型的其它区域(例如3D模型的所有区域)观看者更关注的3D模型的区域的高分辨率数据。

通过优化3D模型,建模系统可以优化3D模型的呈现。例如,当某个背包的3D模型中相比3D模型的其它区域观看者更关注的区域是示出水瓶架的左侧视图时,建模系统可以优化3D模型,使得左侧视图具有比3D模型的其它区域较高的分辨率、在3D模型呈现期间首先加载、或两者兼有。与未优化的3D模型相比,3D模型的该优化可以使呈现3D模型的设备(例如,在显示器上)更快地呈现优化的3D模型。建模系统可以将相比3D模型的其它区域观看者更少关注的3D模型的区域的高分辨率图像进行编程以在初始版本加载之后进行加载。

在一些实现方式中,系统可以基于3D模型的起始取向来渲染3D模型的不同的质量区域。例如,系统可以参考将在显示器上最初呈现的内容基于3D模型的起始取向来加载第一较高质量(例如,保真度)区域。例如,基于起始取向,系统可以加载最初不会呈现的第二较低质量区域。例如,对于页面加载时最初描绘相机的3D模型的前部区域的相机的网页,系统(例如渲染系统)可以确定以较高分辨率加载3D模型的前部区域,同时以较低分辨率加载看不见的后部区域。

在一些实现方式中,建模系统可以优化3D模型的类别,例如产品类别。例如,观看数据可以指示,对于某个登山鞋模型的观看者的阈值量,鞋底是相比3D模型的其它区域观看者更关注的3D模型的区域。建模系统可以使用该数据来优化产品类别的3D模型。例如,建模系统可以使用来自某个登山鞋模型的数据来优化产品类别的3D模型,诸如特定制造商的所有登山鞋、所有登山鞋和/或所有鞋子。建模系统可以优化鞋子的3D模型,使得鞋底具有比3D模型的其余部分较高的分辨率、在3D模型的呈现期间首先加载、或两者兼有。

在一些示例中,数据可以指示至少阈值量的有领衬衫的观看者放大衬衫的领子。建模系统可以使用数据来优化产品类别的3D模型,例如针对多领衬衫(例如全领衬衫)或者可能所有的上衣的3D模型。

在一些实现方式中,建模系统可以基于观看者的类别来优化3D模型的类别。观看者的类别可以包括单个用户(例如John)或多个观看者。例如,枕头的3D模型的观看数据可指示,对于具有特定人口统计特征(例如,物理地理位置)的阈值数量的观看者,枕头的背面是相比3D模型的其它区域观看者更关注的3D模型的区域。建模系统可以使用该数据针对观看者类别来优化3D模型,例如,当观看者选择共享诸如物理地理位置的类别信息时。例如,建模系统可以使用来自枕头模型的数据来优化诸如特定物理地理位置的所有观看者的观看者类别的3D模型。建模系统可以优化枕头的3D模型,使得枕头的背面比3D模型的其余部分具有更高的分辨率、在3D模型的呈现期间首先加载、或两者兼有。

建模系统可以针对不同的观看者类别(例如,物理地理位置)生成不同的枕头的3D模型,并使用关于观看者类别的数据将不同的3D模型中的一者提供给设备。例如,当建模系统从第一物理位置接收对枕头的3D模型的请求时,建模系统可以提供第一3D模型。当建模系统从第二不同的物理位置接收对枕头的3D模型的请求时,建模系统可以提供第二不同的3D模型。

通常,本说明书中描述的主题的一个创新方面可以体现在包括以下动作的方法中:对于要优化的对象的三维模型,确定对象上的多个点,每个点至少具有作为焦点的阈值可能性,该三维模型具有两个或更多个区域,每个区域包括一个或多个纹理、一个或多个网格或两者;从两个或更多个区域中识别一个或多个非焦点区域,其中i)每个非焦点区域不包括多个点中的任何一个点,并且ii)是两个或更多个区域的适当子集;使用一个或多个非焦点区域为具有比三维模型的较大大小更小的较小大小的对象生成优化的三维模型;并将优化的三维模型存储在非易失性存储器中。该方面的其它实施例包括对应的计算机系统、装置、计算机程序产品和记录在一个或多个计算机存储设备上的计算机程序,每个都被配置为执行方法的动作。一个或多个计算机的系统可以被配置为借助于在系统上安装软件、固件、硬件或它们的组合来执行特定操作或动作,该软件、固件、硬件或它们的组合在操作中导致或引起系统执行动作。一个或多个计算机程序可以被配置为借助于包括指令来执行特定操作或动作,该指令当由数据处理装置执行时使装置执行动作。

通常,本说明书中描述的主题的一个创新方面可以体现在包括以下动作的方法中:对于要优化的对象的三维模型,确定三维模型上的多个点,每个点至少具有作为焦点的阈值可能性,该三维模型具有两个或更多个区域,每个区域包括一个或多个纹理、一个或多个网格或两者;从两个或更多个区域中识别一个或多个焦点区域,其中i)每个都包括多个点中的至少一个点,并且ii)是两个或更多个区域的适当子集;使用一个或多个焦点区域为具有比三维模型的较大大小更小的较小大小的对象生成优化的三维模型;并将优化的三维模型存储在非易失性存储器中。该方面的其它实施例包括对应的计算机系统、装置、计算机程序产品和记录在一个或多个计算机存储设备上的计算机程序,每个都被配置为执行方法的动作。一个或多个计算机的系统可以被配置为借助于在系统上安装软件、固件、硬件或它们的组合来执行特定操作或动作,该软件、固件、硬件或它们的组合在操作中导致或引起系统执行动作。一个或多个计算机程序可以被配置为借助于包括指令来执行特定操作或动作,该指令当由数据处理装置执行时使装置执行动作。

前述和其它实施例可各自可选地包括单独或组合的一个或多个以下特征。该方法可以包括横跨网络接收对对象模型的请求;并且响应于接收对对象模型的请求,向设备并使用网络传输对象的优化的三维模型。该方法可以包括,在向设备发送具有较小大小的优化的三维模型之后,确定向设备发送具有较大大小的三维模型;并且响应于确定向设备发送具有较大大小的三维模型,向设备发送三维模型。

在一些实现方式中,确定向设备发送具有较大大小的三维模型可以包括确定横跨网络以及在系统与设备之间的网络连接具有小于阈值的使用量。向设备发送三维模型可以响应于确定横跨网络以及在系统和设备之间的网络连接具有小于阈值的使用量。确定向设备发送具有较大大小的三维模型可以包括接收对具有较大大小的三维模型的请求。向设备发送三维模型可以响应于接收到对具有较大大小的三维模型的请求。

在一些实现方式中,生成优化的三维模型可以包括对于一个或多个非焦点区域中的每一个而从三维模型中对应的一个或多个纹理、一个或多个网格或两者的质量中降低在相应的非焦点区域中包括的一个或多个纹理、一个或多个网格或两者的质量。对于一个或多个非焦点区域中的每一个,从三维模型中对应的一个或多个纹理、一个或多个网格或两者的质量中降低在相应的非焦点区域中包括的一个或多个纹理、一个或多个网格或两者的质量可以包括:对于一个或多个非焦点区域中的每一个,从三维模型中对应的一个或多个纹理、一个或多个网格或两者的较高分辨率降低在相应的非焦点区域中包括的一个或多个纹理、一个或多个网格或两者中的每一个的分辨率。

在一些实现方式中,从两个或更多个区域中识别一个或多个非焦点区域可包括将一个或多个纹理、一个或多个网格或一个或多个象限识别为一个或多个非焦点区域;以及生成优化的三维模型可包括使用识别的一个或多个纹理或识别的一个或多个网格或识别的一个或多个象限,为具有比三维模型的较大大小更小的较小大小的对象生成优化的三维模型。

在一些实现方式中,确定对象上的每个点都具有至少作为焦点的阈值可能性的多个点可以包括:从存储器中取得对象的多个图像的数据,每个图像描绘在显示器上生成的对象的视图的至少一部分以呈现给观看者;对于来自多个图像中的每个图像确定一个或多个潜在焦点;以及从用于多个图像的一个或多个潜在焦点中选择每个具有至少作为焦点的阈值可能性的潜在焦点并且作为多个点。

在一些实现方式中,选择每个都具有至少作为焦点的阈值可能性的潜在焦点可以包括:i)从多个图像中的第一图像中描绘的多个潜在焦点中选择潜在焦点的第一子集,ii)第一子集中的每个潜在焦点具有至少作为焦点的所述阈值可能性;以及a)从多个图像中的第一图像中描绘的多个潜在焦点中确定跳过对潜在焦点的第二子集的选择,b)第二子集中的每个潜在焦点不具有至少作为焦点的阈值可能性。

在一些实现方式中,潜在焦点中的每一个可以包括来自多个图像中的对应图像中的估计点,观看在显示器上的对象的呈现的观看者可能聚焦在该估计点上。从多个图像的一个或多个潜在焦点中选择每个具有至少作为焦点的阈值可能性的潜在焦点可以包括:使用潜在焦点距对应图像的中心的距离对一个或多个潜在焦点中的至少一个进行加权。更接近对应图像的中心的第一潜在焦点具有比距对应图像的中心更远的第二潜在焦点更高的权重。

在一些实现方式中,该方法可以包括:从在显示器上并横跨网络呈现对象的模型的设备接收用于多个图像中的一个或多个图像的数据;以及在存储器中存储多个图像中的一个或多个图像的数据。

在一些实现方式中,对于来自多个图像的每个图像确定一个或多个潜在焦点可以包括:对于来自多个图像的每个图像并且从由将生成相应图像的相机表示的方向将一条或多条射线投射到对象上;以及对于一条或多条射线中的每一条选择射线与对象相交的点作为对应的焦点。对于来自多个图像的每个图像以及从由将生成相应图像的相机表示的方向将一条或多条射线投射到对象上可以包括:对于来自多个图像的每个图像:确定其内生成射线的一个或多个区域;以及对于一个或多个区域中的每一个,随机生成投射到对象上的射线。

在一些实现方式中,对于来自多个图像中的每个图像,确定在其内生成射线的一个或多个区域可包括对于一个或多个区域中的每一个确定在其内生成射线的参考点的角度偏差范围。对于一个或多个区域中的每一个,随机生成投射到对象上的射线可包括:对于一个或多个区域中的每一个,在角度偏差范围内随机选择角度偏差;以及以随机选择的角度偏差生成射线。参考点可以包括将生成相应图像的相机的位置。对于一个或多个区域中的每一个确定角度偏差范围可以包括:对于一个或多个区域中的每一个,使用该区域距对应图像的中心的距离来确定角度偏差范围的大小。

在一些实现方式中,从多个图像的一个或多个潜在焦点中选择每个具有至少作为焦点的阈值可能性的潜在焦点可以包括:对于对象上的一个或多个点,确定点是用于对应图像的潜在焦点的次数;以及选择对应量满足阈值量的潜在焦点作为多个点。选择对应量满足阈值量的潜在焦点作为多个点可以包括:对于对象上的一个或多个点,使用对象上的点是潜在焦点的最高次数来确定归一化量;以及选择对应的归一化量满足阈值的潜在焦点作为多个点。确定对象上的每个具有至少作为焦点的阈值可能性的多个点可以包括确定对象上的每个具有满足阈值权重的权重的多个点。

在一些实现方式中,第一区域和第二区域可以各自具有第一纹理;来自两个或更多个区域中的第三区域具有不同于第一纹理的第二纹理;并且从两个或更多个区域中识别一个或多个焦点区域可以包括将第一区域识别为包括多个点中具有至少作为焦点的阈值可能性的点的焦点区域。第二区域可以不包括来自多个点中的每个具有至少作为焦点的阈值可能性的任何点。使用一个或多个焦点区域生成对象的优化的三维模型可以包括使用一个或多个焦点区域生成对象的优化的三维模型,其中第一区域的质量较高,并且第二区域的质量高于第三区域的较低质量。

在一些实现方式中,方法可以包括确定第二区域不包括来自多个点的每个具有至少作为焦点的阈值可能性的任何点。从两个或更多个区域识别一个或多个焦点区域可以包括将一个或多个纹理、一个或多个网格或一个或多个象限识别为一个或多个焦点区域;以及生成优化的三维模型可以包括使用识别的一个或多个纹理或识别的一个或多个网格或识别的一个或多个象限,为具有比三维模型的较大大小更小的较小大小的对象生成优化的三维模型。

本说明书中描述的主题可以在各种实施例中实现并且可以产生以下优点中的一个或多个。在一些实现方式中,生成更小大小、优化的3D模型可以使建模系统能够减少3D模型的存储需求、减少网络使用(例如当将3D模型传输到另一个设备或系统时),或两者。通过优化3D模型,可以减少3D模型加载到设备屏幕上的时间。设备可以首先加载较小的优化3D模型,其中包含仅非优化区域的较高分辨率数据和优化区域的较低分辨率数据。然后,设备可以可选地为3D模型加载较高分辨率的数据,例如,当设备稍后从建模系统接收到较高质量的3D模型时。这可以改善加载时间,提高3D模型质量,例如,通过以较高分辨率保持具有较高的焦点的某些区域而不是使用包括仅较低分辨率内容的3D模型,减少传输例如从建模系统到设备(或这些中两个或更多个的组合)的3D模型数据所需的带宽。在一些实现方式中,当在访问3D模型的设备上检测到网络质量较低时,建模系统可以确定使用较小大小的3D模型。例如,与访问Wi-Fi连接上的网页的设备相比,建模系统可以确定向访问3G网络上的网页的设备提供较低质量的3D模型。

在一些实现方式中,建模系统可以确定使用较低质量的3D数据和较高质量的3D数据的组合。例如,建模系统可以基于先前的数据收集,在观看会话开始之前,选择性地加载较低质量的3D数据和较高质量的3D数据的组合。例如基于观看者交互,建模系统可以在观看会话期间选择性地加载和/或更新较低质量的3D数据和较高质量的3D数据的组合。该技术可以改善设备的加载时间,例如,在较低质量的网络上访问网页。

本说明书中描述的主题的一个或多个实现方式的细节在附图和以下描述中阐述。本主题的其它特征、方面和优点将从描述、附图和权利要求中变得明显。

附图说明

图1是用于生成优化的3D模型的环境的示例。

图2是用于生成优化的3D模型的过程的流程图。

图3是包括具有从图像投射的两条射线的3D模型的示例环境的图。

图4是描绘处理的3D模型的聚合观看数据的热图的示例图。

图5是具有较高和较低分辨率区域的优化的3D模型的示例图。

图6是可以与本文件中描述的计算机实现的方法结合使用的计算系统的框图。

各图中相同的附图标记和名称指示相同的元件。

具体实施方式

图1是用于生成优化的3D模型的环境100的示例。3D模型是3D空间中对象的三维表示。环境100具有两个组件:建模系统105和设备115。建模系统105可以生成3D模型,优化3D模型或两者。设备115可以在显示器120上在不同时间显示3D模型、优化的3D模型或两者的组合。环境100可以包括可以在建模系统105和设备115之间传输3D模型的网络110。

在图1的示例中,建模系统105可以通过网络110从设备115接收模型请求125。模型请求125是建模系统105向设备115发送3D模型130以使设备115能够在显示器120上显示3D模型130的请求。在该示例中,建模系统105接收以向设备115发送相机的3D模型130的模型请求125。

建模系统105可以将3D模型存储在数据库中,例如,任何适当类型的数据库。3D模型可以是3D模型135,例如非优化的3D模型、优化的3D模型140或两者。优化的3D模型140的一个示例是相机的3D模型130。3D模型135、优化的3D模型140或两者可以包括区域。

仅举几个示例,3D模型的区域可以是3D模型的一个或多个纹理、一个或多个网格、象限或其它组成。区域可以是例如3D模型的透视图,诸如左侧视图或右侧视图。例如,当透视图是一个区域时,透视图可以包括在相比3D模型的其它纹理和网格观看者可能更关注该纹理和网格的特定透视图中显示的3D模型的纹理和网格。对于相机的3D模型130,区域可以是例如相机的前视图、右侧视图、左侧视图、顶视图、底视图和后视图。

在一些示例中,透视图可以包括一个或多个区域。每个区域都可以包括在一个或多个透视图中。每个透视图可以包括例如可以包括在其它透视图中的一个或多个区域。

对于相机的示例3D模型,例如呈现给观看者的3D模型的图像可以描绘包括快门释放按钮的左侧视图。图像还可以包括镜头的纹理。图像可能不包括3D模型右侧的变焦操作符的任何纹理,例如,如果这些纹理位于3D模型的其它区域(如镜头)后面。在该示例中,透视图(例如,作为一个区域)可以包括快门释放按钮和镜头,而不包括变焦操作符,因为变焦操作符没有被描绘在图像中。

3D模型的每个区域可以包括一个或多个纹理。3D模型130、135可以包括例如在3D模型130、135的生成期间确定的任何适当数量的纹理。纹理可以是包含应用于3D模型135内的多边形的视觉细节的图像文件。例如,相机的3D模型130的前部区域上的纹理可以是相机镜头的图像。相机的3D模型130的顶部区域上的纹理可以是相机的闪光灯安装件的图像。

3D模型130、135的每个区域可以包括一个或多个网格。网格可以是由3D轴定义的3D空间中的点集合定义的多边形,诸如三角形。一个或多个纹理可以应用于每个网格,即在每个网格上包裹。更多数量的网格可以提高图像分辨率。

建模系统105可以包括焦点设备145。焦点设备145可以确定3D模型135的焦点,如下面更详细讨论的。焦点可以是3D模型上的估计的点,例如基于向观看者显示的图像,观看3D模型的一个或多个观看者可能聚焦在该估计的点上。例如,当相机的3D模型130的观看者被示出相机的包括取景器的顶部区域和单独地相机的包括电池舱的底部区域时,建模系统105可以确定例如对于该观看者,3D模型具有两个焦点。第一焦点可以在取景器上,而第二焦点可以在电池舱上。建模系统105可以使用例如呈现在显示器上的图像的中心点来确定焦点。在一些实现方式中,可能没有观看者的任何眼睛跟踪。

建模系统105(例如焦点设备145)可以将识别的焦点存储在焦点数据库150中。焦点中的每个焦点对应于(例如包括在)3D模型135的区域中。焦点数据库150可以包括映射,该映射对于识别的焦点中的每一个指示焦点所对应的3D模型135的区域。焦点数据库150可包括3D模型135的每个潜在焦点或3D模型135的潜在焦点的适当子集的数据,例如当建模系统105确定对于观看者只有一些潜在的焦点是可能的焦点时。

建模系统105可以基于对应于该区域的焦点对3D模型135的区域进行分类,例如,可以在焦点数据库150中存储指示该区域是焦点区域155或者非焦点区域160的数据。数据库150可以包括仅焦点区域155、仅非焦点区域160或两者的数据。

建模系统105可以使用任何适当的方法来确定焦点区域155、非焦点区域160或两者。在一些实现方式中,建模系统105可以确定每个焦点的权重并且使用该区域中的焦点的权重对区域进行分类,如下面更详细讨论的。在一些示例中,建模系统105(例如焦点设备145或模型优化设备165)可以将包含多于阈值数量的焦点的3D模型135的区域分类为焦点区域155。建模系统105(例如焦点设备145或模型优化设备165)可以将包含少于阈值数量的焦点的3D模型135的区域分类为非焦点区域160。例如,相机的3D模型130的焦点区域155可能是相机的前部,该相机的前部可能包括镜头和变焦环的焦点。例如分别基于镜头和变焦环的大小、纹理数量或两者,镜头和变焦环中的每一个可以具有多个可能的焦点。如果相机的底部包含小于阈值数量的焦点,则相机的3D模型130的非焦点区域160可以是相机的底部。

焦点的阈值数量可以是任何适当的阈值。例如,建模系统105可以使用3D模型的大小(例如,以字节或维度、3D模型中的纹理、网格的数量或两者为单位,或这些中两个或更多个的组合)来确定焦点的阈值数量。焦点的阈值数量可被确定为3D模型的焦点的总数的函数。例如,与具有更少焦点的3D模型相比,具有更多焦点的3D模型将具有更高阈值数量的焦点。该函数可以是线性或非线性的。下面描述了关于焦点分析的附加细节。

在一些实现方式中,建模系统105可以确定潜在的焦点。如下面更详细描述的,建模系统105可以使用潜在焦点来确定区域应被分类为焦点区域155还是非焦点区域160。例如,非焦点区域160可以具有少于或不超过潜在焦点的阈值最小值。焦点区域155可以具有不少于或超过潜在焦点的阈值最小值。

模型优化设备165使用焦点数据库150内的焦点、焦点对应的区域或两者来生成与3D模型135相比具有更小大小的优化的3D模型140。当以数据大小(例如,以兆字节、分辨率或两者为单位)测量时,优化的3D模型140可以比3D模型135更小。

为了生成优化的3D模型140,模型优化设备165可以降低非焦点区域160内的纹理质量。为了降低非焦点区域160内的纹理质量,模型优化设备165将非焦点区域160中的纹理中的每个纹理的分辨率从3D模型135中的对应纹理的较高分辨率降低。模型优化设备165可以使用任何适当的方法来降低纹理的分辨率。通过降低非焦点区域160中的纹理质量,模型优化设备165产生优化区域170。

模型优化设备165可以处理焦点区域155的数据或确定跳过3D模型135的焦点区域155的处理数据。例如,模型优化设备165可能不会降低焦点区域155内的纹理的质量,例如,模型优化设备165可以确定不处理焦点区域155的纹理。在一些示例中,模型优化设备165可以将焦点区域155的纹理质量降低小于模型优化设备165降低非焦点区域160的纹理质量的量。这确保焦点区域155的纹理可能具有比非焦点区域160的纹理更高的质量。焦点区域155变成优化的3D模型140内的非优化区域175。

优化的3D模型140包括优化的区域170和非优化的区域175。模型优化设备165将优化的3D模型140存储在建模系统105内的非易失性存储器中。由于优化区域170内的纹理具有降低的质量,例如分辨率,所以优化的3D模型140小于3D模型135。

建模系统105可以在任何合适的时间从3D模型135生成优化的3D模型140。例如,建模系统105可以在接收例如用于确定焦点的观看者数据时生成优化的3D模型140。在一些示例中,建模系统105可以在接收模型请求125时生成优化的3D模型140。

响应于接收模型请求125,建模系统105可以使用网络110将优化的3D模型140(例如,作为3D模型130)发送到设备115。设备115然后可以在显示器120上显示3D模型130。3D模型130在显示器120上的呈现示出了在非优化区域175中具有更高分辨率纹理并且在优化区域170中具有更低分辨率纹理的相机的3D模型130。例如,相机的前视图可以对应于非优化区域175并且具有更高的分辨率,而相机的底视图可以对应于优化区域170并且具有更低的分辨率。

在一些实现方式中,非优化区域175可以在显示器120上呈现期间在优化区域170之前加载。例如,3D模型130(作为优化的3D模型140)可以包括指示呈现设备应加载3D模型130的各区域以供呈现的顺序的加载数据。加载数据可以指示呈现设备(例如设备115)应该首先加载非优化区域175,例如相机的前部,并且然后加载优化的区域170,例如相机的底部。

在向设备115发送优化的3D模型140之后,建模系统105可以确定是否向设备115发送更高质量的3D模型135。向设备115发送3D模型135的确定可以基于3D模型135的大小、建模系统105和设备115之间的网络110的使用(例如网络110带宽)或两者。如果网络110具有小于阈值的使用量,并且具有可用带宽,则建模系统105可以向设备115发送更大的3D模型135。

通过优化3D模型,可以减少将3D模型加载到设备115的显示器120上的时间。设备115可以首先加载更小的优化3D模型140,其包含仅非优化区域175的高分辨率数据以及优化区域170的低分辨率数据。然后,例如当设备115稍后从建模系统105接收更高质量的3D模型135时,设备115可以可选地加载3D模型135的高分辨率数据。这可以改进加载时间,改进3D模型质量,例如,通过以更高分辨率保持具有更高焦点的某些区域而不是使用仅包括更低分辨率内容的3D模型,减少用于(例如从建模系统105到设备115,或者这些中的两个或更多个的组合)传输3D模型数据所需的带宽。

在一些实现方式中,3D模型130的区域可以包括高分辨率数据和低分辨率数据的组合。例如,3D模型130可以包括一些区域的高分辨率数据和低分辨率数据的组合。在一些示例中,3D模型130可以包括区域中的每个区域的高分辨率数据和低分辨率数据的组合。

高分辨率数据可以包括用于区域的更多和/或更小的网格,而低分辨率数据可以包括用于区域的更少和/或更大的网格。基于观看者交互,可用网络带宽和可用处理资源,或者这些中的两个或更多个的组合,系统(例如设备115上的渲染系统)可以为3D模型130的各个区域选择和使用高分辨率数据或低分辨率数据。系统可以在观看会话之前或期间例如基于使用高分辨率数据或低分辨率数据而动态地改变区域的质量。

在一些实现方式中,建模系统105可以同时发送一些区域的低分辨率数据和高分辨率数据,可以在需要时发送一些区域的低分辨率和高分辨率数据,可以发送一些区域的一些低分辨率数据以及然后发送一些高分辨率数据,或这些中的两个或更多个的组合。随后的高分辨率数据可以一次发送或在单独的消息中发送。例如,3D模型130最初可以以低分辨率加载某个区域。当设备115呈现3D模型130时,设备115可以用高分辨率数据替换低分辨率数据,例如,以提高在显示器120上呈现的内容的质量。这样,设备115可以在呈现期间动态地更新3D模型130。

在一些实现方式中,建模系统105可以例如对于观看者会话使用观看者数据、会话浏览行为或两者来确定焦点权重。特定于观看者会话的焦点权重的确定可以使建模系统105能够动态地配置特定于该观看者会话的3D模型130的区域,例如设备115的功能、与请求设备115的网络连接、由请求设备115呈现的特定内容,或者这些中的两个或更多个的组合。例如,对于一些区域,建模系统可以基于焦点权重动态地确定低分辨率数据、中分辨率数据、高分辨率数据或这些中的两个或更多个的组合。在一些实现方式中,建模系统可以基于焦点权重生成和缓存3D模型130的预定制版本,并且为个体观看者和/或个体观看会话选择3D模型130的预定制版本之一。

例如,如果设备115在浏览会话期间呈现某个类别内的多个不同3D模型,诸如衬衫,则建模系统105可以基于在浏览会话期间呈现的内容动态配置衬衫的3D模型130的区域,例如在浏览会话期间呈现的多个不同3D模型的特定视角。建模系统105可以针对会话发送包括低权重焦点的衬衫区域的低分辨率数据。建模系统可以针对会话发送包括高权重焦点的衬衫区域的高分辨率数据。

在一些实现方式中,3D模型130可以包括具有相同的一个纹理或多个纹理的多个区域。例如,当相机的3D模型130包括镜头时,3D模型130可以包括位于镜头顶部的具有特定纹理的第一区域和位于镜头底部的具有特定纹理的第二区域。建模系统105可以确定优化在特定的单独区域(例如镜片底部)中或在包括重复纹理的所有区域中的重复纹理(例如,特定纹理)。在一些示例中,建模系统105可以仅在重复纹理不包括在焦点区域155中时才优化该重复纹理。在一些实现方式中,如果特定纹理位于一个或多个焦点区域155中(例如镜头的顶部),则建模系统105可以确定不优化重复纹理,例如特定纹理。

建模系统105是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中实现本文件中描述的系统、组件和技术。设备115可以包括个人计算机、移动通信设备、增强现实(“AR”)护目镜、虚拟现实(“VR”)护目镜以及可以通过网络110发送和接收数据的其它设备。网络110(诸如本地局域网(LAN)、广域网(WAN)、互联网或其组合)连接设备115和建模系统105。

建模系统105可以使用单个服务器计算机或彼此联合操作的多个服务器计算机,包括例如部署为云计算服务的一组远程计算机。建模系统105可以包括几个不同的功能组件,包括焦点设备145和模型优化设备165。建模系统105的各种功能组件可以作为单独的功能组件或作为同一功能组件的不同模块安装在一个或多个计算机上。例如,建模系统105的焦点设备145和模型优化设备165可被实现为安装在一个或多个位置中的通过网络彼此耦合的一个或多个计算机上的计算机程序。例如,在基于云的系统中,这些组件可以由分布式计算系统的各个计算节点来实现。

图2是用于生成优化的3D模型的过程200的流程图。例如,来自环境100的建模系统105可使用过程200。在一些示例中,过程200的一些步骤可在建模系统105中由焦点设备145、模型优化设备165或两者执行。

建模系统从存储器中取得对象的图像的数据,该图像每个描绘了在显示器上生成的对象视图的至少一部分以呈现给观看者(202)。例如,图像数据可以是虚拟相机的位置、取向、焦距或这些中两个或更多个的组合。在一些示例中,图像数据可以是例如相对于虚拟相机的对象的位置和取向。

对象可以具有两个或更多个区域,每个区域可以包括一个或多个纹理。对象的图像可以描绘向观看者显示的对象视图的各个部分、向多个观看者显示的对象视图的部分,或两者。例如,建模系统或另一系统可以向设备提供对象的3D模型。设备可以使用3D模型呈现对象的一个或多个视图。设备可以采集将这些视图例如表示为图像的数据。

对于相机的3D模型,区域可以是例如相机的前部区域、右侧区域、左侧区域、顶部区域、底部区域和后部区域。相机的3D模型的顶部区域上的示例纹理可以是相机闪光灯安装的图像,而相机的3D模型的底部区域的示例纹理可以是电池舱的图像。

在示例观看者交互期间,第一观看者可以观看包括闪光灯安装纹理的顶部区域和包括电池舱纹理的底部区域。与第一观看者相比,第二观看者可以从不同的角度观看仅顶部区域,包括闪光灯安装纹理。建模系统可以从第一观看者交互中取得顶视图和底视图的第一数据,以及从第二观看者交互中取得顶视图的第二数据。

在一些示例中,图像可以来自多个观看者会话。例如,第一观看者可以在第一会话期间观看相机的3D模型。第二观看者或第一观看者可以在与第一会话不同的第二会话期间观看相机的3D模型。

在一些实现方式中,图像的数据可以来自诸如物理VR工作室的工作室内的观看者会话。例如,观看者可以参与例如在零售店处观看产品的3D模型并与之交互的VR体验。

在一些实现方式中,系统可以随机生成网格和纹理的各种组合,例如潜在优化的网格、纹理或两者。系统可以向观看者显示组合并接收反馈数据。在一些示例中,系统可以为网格和纹理的一些组合收集加载时间数据。建模系统可以使用数据来确定要优化的网格和纹理的组合。

对于每个图像,建模系统确定一个或多个潜在焦点(204)。潜在焦点中的每个潜在焦点可以是来自观看在显示器上呈现的对象的观看者可能聚焦于其上的图像中的对应图像中的估计点。估计点可以是图像中的点、3D模型上的点,或两者。建模系统可以使用例如来自环境100的焦点设备145来识别潜在的焦点。

为了识别潜在的焦点,建模系统可以将来自对象的3D模型的图像的一条或多条射线投射到3D模型上。建模系统可以使用虚拟相机的位置、取向、焦距或这些中两个或更多个的组合来投射射线。建模系统可以使用虚拟相机的位置、取向和/或焦距;3D模型的位置和/或取向;或两者来确定潜在的焦点。对象的3D模型的图像可以描绘3D模型的视野,例如3D模型的一部分。例如,在包括3D模型的虚拟世界中,建模系统从由虚拟相机表示的方向投射来自图像的射线,其将为观看者(例如,为相应图像的视野)生成相应的图像。

图3是包括具有从图像305投射的两条射线304的3D模型302的示例环境300的图。建模系统可以使用图像305中的一个或多个图像的环境300来确定潜在焦点。

例如,对于每一个图像,建模系统可以确定一个或多个区域306、308,在该区域内生成一条射线304或多条射线。为了确定在其内生成射线304的区域306、308,建模系统可以识别一个或多个参考点、距参考点的距离或两者,以定义相应的区域。建模系统可以使用图像305的中心作为参考点。在一些示例中,建模系统可以使用图像305的左三分之一中的点作为参考点,例如以图像的左三分之一为中心的点。在一些示例中,建模系统可以使用虚拟相机的位置,其可以用于创建图像305,以确定参考点。例如,建模系统可以使用虚拟相机相对于图像305、3D模型302或两者的位置来确定参考点。

建模系统可以确定任何适当数量的区域。例如,第一区域306可以是圆形并且在图像305中居中。第二区域308可以是圆形并且在图像305中居中,例如具有与第一区域306相同的中心310。第二区域308可以是与第一区域306不重叠的,例如,第二区域308可以是具有由第一区域306定义的孔的环形。

建模系统可以以任何适当的角度从图像305朝向相机的模型302投射射线。例如,建模系统可以基于射线304从其投射的区域306、308来确定在其内生成射线304的角度偏差范围。建模系统可以使用区域距图像305的中心310的距离来确定角度偏差范围的大小。在一些示例中,更靠近中心310的区域可以比远离中心310的区域具有更小的角度偏差范围。建模系统可以随机选择角度偏差范围内的角度偏差312,并以随机选择的角度偏差312生成射线304。建模系统可以针对每条射线304选择射线与3D模型302相交的点作为对应的潜在焦点314。

潜在焦点314可以是任何合适的大小。建模系统可以基于3D模型302的分辨率、3D模型的大小或任何其它适当的数据来选择潜在焦点的大小。例如,潜在焦点可以小于或大于图3中描绘的潜在焦点314。

返回参考图2,建模系统对于潜在焦点中的每个潜在焦点确定潜在焦点是否至少具有作为焦点的阈值可能性(206)。建模系统可以将至少具有作为焦点的阈值可能性的潜在焦点分类为焦点。例如,建模系统可以将数据存储在将潜在焦点分类为焦点的存储器中,例如,在存储器上实现的数据库中。

为了选择至少具有作为焦点的阈值可能性的潜在焦点314,建模系统可以使用潜在焦点314距从图像305的中心310投射的射线(例如其中射线不具有任何角度偏差)的距离316或者用于确定潜在焦点314距图像305的中心310的射线304的距离316对潜在焦点314加权。例如,与更远离图像305的中心310的潜在焦点314相比,更靠近对应图像的中心310的潜在焦点314可以具有更高的权重。

例如,当观看者与相机的3D模型交互时,系统可以预测观看者聚焦在屏幕上显示的图像305的中心310上。系统可以预测观看者也将聚焦在朝向屏幕边缘显示的点上。与远离图像的中心310的第二点相比,系统可以确定更靠近对应图像的中心310的第一点更有可能是观看者聚焦的点。因此,系统可以向第一点分配比第二点较高的权重。

点是焦点的可能性可以基于在观看者交互期间点是潜在焦点314的图像的数量、在观看者交互期间潜在焦点314和图像的中心310之间的距离316、潜在焦点314的权重,或这些中两个或更多个的组合。

例如,第一点可以在观看者交互期间显示在十个图像的中心310中。与第一点相比,位于距十个图像的中心310距离316处的第二点可能具有更小的作为焦点的可能性。同样地,与第一点相比,作为仅五个图像的中心310的第三点可具有更小的作为焦点的可能性。可替代地,与第一点相比,位于二十个图像的中心310的第四点可具有更高的作为焦点的可能性。

在一些实现方式中,建模系统可以生成潜在焦点的权重。例如,建模系统可以生成加权焦点图表、加权区域图表或两者。建模系统可以生成权重,例如如上所述,并创建包括权重的图表。图表可以表示3D模型并且包括3D模型中每个潜在焦点的权重。例如,图表可以包括网格、顶点、边或这些中的两个或更多个的组合的权重。

建模系统可以使用权重阈值来确定潜在焦点、包括潜在焦点的区域或两者是焦点或焦点区域的可能性。当建模系统使用0和1之间的权重(包括0和1)时,权重阈值可以是0.25。当权重大于或等于阈值权重时,或者当权重大于阈值权重时,权重可以满足阈值权重。在一些示例中,当权重小于或等于阈值权重时,或者当权重小于阈值权重时,例如当更低的值表示更高的作为焦点的可能性时,权重可以满足阈值权重。

例如,当潜在焦点的权重满足权重阈值时,建模系统可以确定潜在焦点是焦点。当区域中包括的潜在焦点的权重满足权重阈值时,建模系统可以确定该区域是焦点区域。在一些示例中,当区域包括多个潜在焦点时,建模系统可以将多个潜在焦点的权重的组合与权重阈值进行比较。例如,建模系统可以将平均权重或权重的总和与权重阈值进行比较。当对权重阈值中的每个权重阈值应用不同级别的优化时,建模系统可以使用多个权重阈值。

在一些实现方式中,建模系统可以对平均权重进行聚类以确定焦点。例如,建模系统可以确定一组权重,每个权重都满足权重阈值并且彼此或距组中的其它点在阈值距离内。建模系统可以确定权重组的中心,例如最接近中心的点,并将中心分类为焦点。建模系统可以使用焦点作为焦点区域,将围绕焦点的更大的区域分类为焦点区域,或两者。

在一些实现方式中,建模系统可以使用网络带宽、设备特定能力或两者来生成权重、确定权重阈值或两者。例如,当请求3D模型的设备的可用网络带宽与更高的可用网络带宽相比较低时,建模系统可以选择更高的权重阈值来确定焦点和焦点区域。类似地,建模系统可以为具有更少处理能力的设备选择比具有更高处理能力的设备更高的权重阈值。这将导致更少的焦点和更优化的区域。

在一些实现方式中,建模系统可以对潜在焦点进行聚类以确定点是否满足作为焦点的阈值。例如,建模系统可以使用潜在焦点生成聚合的观看数据。建模系统可以使用聚合的观看数据来确定潜在焦点是否至少具有作为焦点的阈值可能性。例如,建模系统可以通过创建3D模型的热图来执行聚类分析。热图可以用各种模式、阴影、颜色或所有这些来表示3D模型的区域,以区分相比其它区域观看者更关注的区域。

在一些实现方式中,建模系统可以在3D模型上或周围执行3D坐标路径的聚类。3D坐标路径是由3D轴(例如x、y和z轴)定义的3D空间中一个或多个点之间的路径。建模系统可以基于显示器上呈现的图像确定一个或多个坐标路径。例如,图像的数据可指示设备呈现以坐标点p1=(x1,y1,z1)、点p2=(x2,y2,z2)以及然后点p3=(x3,y3,z3)为中心的图像。使用该数据,建模系统可以确定包括点p1、点p2以及然后点p3的坐标路径。建模系统可以为不同的观看者会话确定多个坐标路径。

建模系统可以使用坐标路径对3D模型的区域进行分类。例如,建模系统可以将具有更少坐标路径的聚类的3D模型的区域识别为非焦点区域。建模系统可以将具有更多坐标路径的聚类的3D模型的区域识别为焦点区域。

建模系统可以聚合例如来自多个观看者或多个观看会话的多个坐标路径,以创建用于3D焦密度锥(focal density cone)的路径。3D焦密度锥可以表示用于呈现3D模型的图像的最优视角。路径可以包括多个3D焦密度锥,每个3D焦密度锥表示3D模型的不同部分的最优视角。建模系统可以确定3D焦密度锥中包括的区域。建模系统可以将包括在3D焦密度锥中的区域分类为焦点区域,确定跳过这些焦点区域的优化,或两者。建模系统可以将不包括在3D焦密度锥中的区域分类为非焦点区域,优化这些非焦点区域,或两者。

图4是描绘处理的3D模型的聚合的观看数据的热图400的示例图。热图400可以表示3D模型中的每个点是潜在焦点的次数、潜在焦点的权重,或两者。例如,3D模型中最暗阴影区域402中的每个点可以至少满足潜在焦点的第一阈值可能性。阈值可能性可以是一个量(例如,大量图像将该点作为潜在焦点)或百分比(例如,10.25%的图像将该点作为潜在焦点),仅举几个示例。中等阴影暗度区域404中的3D模型中的每个点不满足第一阈值可能性但满足潜在焦点的第二阈值可能性。例如,中等阴影暗度区域404中的每个点可以具有多于较低阈值的百分比但小于较大阈值的百分比,例如可以是超过15%但小于25%的图像中的潜在焦点。3D模型中最浅阴影区域406中的每个点不满足第二阈值可能性或第一阈值可能性。在一些示例中,热图400可以仅包括一个阈值可能性或多于两个的阈值可能性。

因为最浅阴影区域406中的点不满足潜在焦点的第二阈值可能性,所以建模系统可以将最浅阴影区域406分类为非焦点区域。因为区域402和404满足第一阈值可能性或第二阈值可能性中的一个或两者,所以建模系统可以将最暗阴影区域402和中等阴影暗度区域404分类为焦点区域。

当建模系统具有多个阈值可能性时,建模系统可以包括多个“焦点区域”分类。例如,建模系统可以对中等阴影暗度区域404使用中等焦点区域分类并且对最暗阴影区域402使用高焦点区域分类。

建模系统可以对区域、点或两者进行分类。例如,建模系统可以将最浅阴影区域406中的点分类为非焦点,例如连同或除了将最浅阴影区域406分类为非焦点区域之外。建模系统可以将最暗阴影区域402中的点分类为焦点,例如连同或除了将最暗阴影区域402分类为焦点区域。

建模系统可以对3D模型中的点中的每个点的值进行归一化。例如,建模系统可以确定3D图像中的点的最高值,例如,一个点是潜在焦点的最高次数。建模系统可以使用最高的次数来对3D模型中的点中的每个点的值进行归一化。例如,当3D模型中的第一点是一百个图像中的潜在焦点,而3D模型中的第二点是63个图像中的潜在焦点时,建模系统可以将第一点指派为1.0的归一化值,并且将第二点指派为0.63的归一化值。建模系统可以使用归一化值来生成热图。

在一些示例中,从多个潜在焦点中,建模系统可以选择或确定跳过对潜在焦点的第一子集的选择,每个潜在焦点至少具有作为焦点的归一化阈值可能性。潜在焦点的第一子集可以包括最暗阴影区域402中的点。建模系统可以选择或确定跳过对每个不具有作为焦点的至少阈值可能性的潜在焦点314的第二子集的选择。潜在焦点的第二子集可以包括最浅阴影区域406中的点。建模系统可以将选择的焦点存储在例如环境100的焦点数据库150中。

返回图2,响应于确定潜在焦点不具有至少作为焦点的阈值可能性,建模系统将潜在焦点分类为不是焦点(208)。例如,参考图4,建模系统对于最浅阴影区域406中的点中的每个点确定该点不是焦点。为了将潜在焦点分类为不是焦点,建模系统可以选择或确定跳过对潜在焦点的选择。当选择潜在焦点时,建模系统可以选择一组潜在点,其中每个都不是焦点。

建模系统确定通过降低包括在非焦点区域中的纹理的分辨率来优化包括不是焦点的点的非焦点区域(210)。建模系统可以使用例如环境100的模型优化设备165来优化非焦点区域。建模系统可以通过降低包括在非焦点区域中的纹理的分辨率来确定优化非焦点区域。例如在图4中,建模系统可以通过降低区域406中包括的纹理的分辨率来优化区域406。通过降低区域406中包括的纹理的分辨率,对于区域406中的点,建模系统可以减少所需的存储空间、传输数据所需的带宽或两者。

响应于确定潜在焦点具有至少作为焦点的阈值可能性,建模系统将潜在焦点分类为焦点(212)。例如,参考图4,建模系统对于最暗阴影区域402中的一个或多个点确定该点是焦点。为了将潜在焦点分类为焦点,建模系统可以选择潜在焦点作为焦点,或确定跳过对潜在焦点的选择,例如并且只选择不是焦点的点。当选择潜在焦点时,建模系统可以选择一组潜在焦点,其中每个都是焦点。

建模系统确定跳过包括是焦点的点的焦点区域的优化(214)。例如,在图4中,建模系统可以确定跳过区域402和404的优化,因为区域402和404是包括是焦点的点的焦点区域。通过跳过区域402和404的优化,建模系统保持区域402和404中纹理的高分辨率。保持区域402、404或两者中内容的高分辨率可以改进区域402、404或两者中的内容的可视呈现。

在一些实现方式中,建模系统可以使用分级方法来优化3D模型的区域。例如,区域404具有比区域402更少的焦点,但是确实包括至少一个焦点。建模系统可以将区域404中纹理的分辨率降低到低于区域402中纹理的分辨率但高于区域406中纹理的分辨率的分辨率。

在一些实现方式中,建模系统可以在不同程度上降低所有区域中的纹理的分辨率。例如,如果可用存储空间、网络带宽或两者都有限,则建模系统可以确定优化或部分优化焦点区域和非焦点区域两者。例如,区域406中纹理的分辨率可以降低到低于原始3D模型分辨率但高于区域404和406的优化分辨率的分辨率。

对于在步骤206处的上述确定的任一分支,建模系统可以使用焦点和非焦点区域生成优化的3D模型(216)。例如,建模系统可以生成具有用于焦点区域的更高分辨率纹理和用于非焦点区域的更低分辨率纹理(例如,降低分辨率的纹理)的3D模型。建模系统可以使用焦点区域的数据、非焦点区域的数据或两者来生成3D模型。组合的焦点和非焦点区域形成具有比原始3D模型更小的大小的优化的3D模型。在一些示例中,代替生成优化的3D模型或除了生成优化的3D模型之外,建模系统可以将焦点区域和非焦点区域的数据存储在存储器中。

图5是具有更高和更低分辨率区域的优化3D模型500的示例图。区域502是更高分辨率的区域,例如对应于焦点区域。在一些示例中,建模系统没有优化区域502或者已经将区域502优化到比更低分辨率区域更小的程度。因此,区域502可以是具有最高分辨率纹理的区域,或者可能是具有最高分辨率纹理的多个区域之一。由于区域504中描绘的内容的部分优化,区域504是具有比区域502更低的纹理分辨率的区域。区域504可以对应于没有区域502那么高的分辨率的焦点区域。区域506是例如对应于非焦点区域的最低分辨率区域。建模系统已优化区域506以使3D模型500具有最低纹理分辨率。与原始3D模型中对应纹理或其它内容的质量相比,在分辨率降低的区域中,一个或多个纹理或其它内容的质量降低。所得的优化3D模型500比原始3D模型具有更小的大小。

3D模型可以具有每个类型的区域中的一个或多个。例如,3D模型可具有两个焦点区域和三个非焦点区域。两个焦点区域可以是非连续的,例如被一个或多个非焦点区域分开。三个非焦点区域中的一些或全部可以是不连续的,例如被两个焦点区域中的一个或多个分开。

建模系统将优化的3D模型存储在非易失性存储器中(218)。生成较低质量的优化3D模型可以使建模系统能够降低3D模型的存储需求,降低网络使用(例如,当将3D模型传输到另一个设备或系统时),或两者。

上述过程200中的步骤的顺序仅是说明性的,并且3D模型优化可以以不同的顺序执行。例如,当建模系统将优化的3D模型存储在非易失性存储器中(218)时,建模系统可以基于例如请求3D模型的设备的可用网络带宽来确定优化的3D模型的大小对于传输到设备而言仍然太大。建模系统然后可以通过降低包括在区域中的纹理的分辨率来确定优化3D模型的附加区域(210)。建模系统然后可以重新生成优化的3D模型,其包括焦点和非焦点区域(216)。在该示例中,建模系统可以基于优化的3D模型的最大大小来选择阈值数量、优化程度或两者。

在一些实现方式中,过程200可以包括附加步骤、更少的步骤,或者可以将一些步骤分成多个步骤。例如,建模系统可以执行步骤204、208、212、216和218而无需执行过程200中的其它步骤。在一些示例中,建模系统可以执行步骤204、208和216而无需执行过程200中的其它步骤。

在一些实现方式中,建模系统可以取得对象的图像,该图像描绘了在显示器上生成的对象的至少一个视图,以在一个观看者交互、若干观看者交互或许多观看者交互之后呈现给观看者(202)。在一些实现方式中,建模系统可以以指定的时间间隔取得对象的图像。在一些实现方式中,建模系统可以在由事件触发时取得对象的图像。例如,建模系统可以在接收到模型请求(例如,来自环境100的模型请求125)时取得对象的图像。

在一些实现方式中,跳过优化焦点区域的确定(214)可以包括将一个或多个焦点区域优化到不同程度的确定。例如,建模系统可以确定部分优化包括少量焦点的焦点区域。建模系统可以将焦点区域的纹理的分辨率降低到低于具有更多焦点的焦点区域的纹理分辨率但高于非焦点区域的纹理分辨率的分辨率。

建模系统可以使用指示在显示器上生成的对象的视图的一部分的任何适当的数据,以呈现给观看者,例如,代替图像或作为图像的补充。在一些实现方式中,设备可以采集3D模型的坐标,其指示呈现给观看者的模型的视图。建模系统可以从设备接收坐标数据,例如x-y-z坐标数据。建模系统可以针对过程200使用坐标的数据。

在一些实现方式中,建模系统可以将权重阈值与加权焦点图表、加权区域图表或两者一起使用,以确定要优化的内容。例如,建模系统可以将焦点权重、区域或两者叠加到3D模型上,以确定3D模型区域中的网格、纹理或两者的层级。建模系统可以使用网格、纹理或两者的层级来确定优化3D模型区域的网格和纹理。例如,当3D模型上的叠加指示区域不包括满足阈值权重的任何焦点权重时,建模系统可以将该区域分类为例如与步骤208和210相关的非焦点区域。当区域包括满足阈值权重的焦点权重时,建模系统可以将该区域分类为例如与步骤212和214相关的焦点区域。

当将区域叠加到3D模型上时,建模系统可以首先确定区域是焦点区域还是非焦点区域。建模系统然后可以从包括在例如与步骤208和210相关的非焦点区域中的叠加的3D模型中选择网格、纹理或两者以进行优化。建模系统可以确定针对例如与步骤212和214相关的焦点区域中所包括的叠加3D模型中的网格、纹理或两者跳过选择或者执行另一个适当的过程。

在一些实现方式中,建模系统可以是呈现3D模型的设备的一部分。例如,设备上的应用(例如建模系统)可以动态地渲染3D模型的优化或非优化区域。应用可以包括建模系统和渲染系统。在一些示例中,当应用是网页浏览器时,应用可以使用JavaScript。建模系统可以使用加权焦点(例如加权焦点图表)智能地预缓存3D模型区域的数据,渲染3D模型的区域的数据,或两者。

例如,建模系统可以从服务器取得3D模型。3D模型可以包括用于最初将在显示器上呈现的焦点区域的更高质量的数据。3D模型可能包括用于最初不在显示器上呈现的非焦点区域的更低质量的数据。模型可以包括非焦点区域的高质量数据。在一些示例中,建模系统可以例如根据请求或在接收模型之后与模型分开接收用于非焦点区域的高质量数据。

当设备第一次渲染3D模型时,设备可以使用优化的3D模型,其具有用于生成显示器的图像的更高质量的数据和用于生成3D模型的最初不呈现的部分的更低质量的数据。更低质量的数据可能仅包括网格而没有任何纹理。当设备接收用户输入时,设备可以动态地确定哪些区域具有至少被显示的阈值可能性并为这些区域渲染更高质量的数据。设备可以从缓存中取得这些区域的更高质量的数据,从服务器动态请求更高质量的数据,或两者。

本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在计算机硬件(包括本说明书中公开的结构及其结构等效物)中或它们中的一种或多种的组合实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂态程序载体上的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。可替代地或另外地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以对信息进行编码从而传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备,或它们中的一种或多种的组合。

术语“数据处理装置”是指数据处理硬件并且包括用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置还可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们的一个或多个的组合的代码。

计算机程序(也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码)可以以任何形式的编程语言编写,包括编译的或解释性语言,或声明性或过程性语言,并且该计算机程序可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。计算机程序可能但不需要对应于文件系统中的文件。程序可以存储在包含其它程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本,在专用于所讨论的程序的单个文件中,或在多个协调文件中,例如,存储一个或多个模块、子例程或代码部分的文件。计算机程序可以部署为在一个计算机上执行,也可以在位于一个站点或分布在多个站点并通过通信网络互连的多个计算机上执行。

本说明书中描述的过程和逻辑流可以由一个或多个可编程计算机执行,该可编程计算机执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流也可以由专用逻辑电路执行,以及装置也可以实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。

适合于执行计算机程序的计算机包括例如通用或专用微处理器或两者,或任何其它种类的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元素是用于履行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从用于存储数据的一个或多个大容量存储设备(例如,磁盘、磁光盘或光盘)接收数据或将数据传输到这些设备或两者。然而,计算机不需要此类设备。此外,计算机可以嵌入到另一个设备中,例如移动电话、智能电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(CPS)接收器,或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅举几例。

适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内置硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。处理器和存储器可由专用逻辑电路补充或并入到专用逻辑电路中。

为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备(例如LCD(液晶显示器)、OLED(有机发光二极管)或其它监测器)的计算机以及用户可以通过其向计算机提供输入的键盘和指向设备(例如鼠标或轨迹球)上实现。也可以使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的以任何形式的输入,包括声学、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文件和从用户使用的设备接收文件来与用户交互,例如,通过响应于从网络浏览器接收到的请求将网络页面发送到用户设备上的网络浏览器。

本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件(例如作为数据服务器),或者包括中间件组件(例如应用服务器),或者包括前端组件(例如,具有用户可以通过其与本说明书中描述的主题的实现方式进行交互的图形用户界面或网络浏览器的客户端计算机),或者一个或多个此类后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是借助于在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如超文本标记语言(HTML)页面)传输到用户设备,例如,出于向与用户设备交互的用户显示数据以及接收来自用户设备的用户输入的目的,该用户设备充当客户端。例如,由于用户交互的结果,可以在服务器处从用户设备接收在用户设备处生成的数据。

图6是可用于实现本文件中描述的系统和方法的计算设备600、650作为客户端或服务器或多个服务器的框图。计算设备600旨在表示各种形式的数字计算机,诸如膝上型计算机、台式机、工作站、个人数字助理、服务器、刀片服务器、大型机和其它合适的计算机。计算设备650旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话、智能手表、头戴式设备和其它类似的计算设备。此处示出的组件、它们的连接和关系以及它们的功能仅是示例性的,并不意味着限制本文件中描述和/或要求保护的实现方式。

计算设备600包括处理器602、存储器604、存储设备606、连接到存储器604和高速扩展端口610的高速接口608,以及连接到低速总线614和存储设备606的低速接口612。组件602、604、606、608、610和612中的每一个使用各种总线互连,并且可以视情况安装在公共主板上或以其它方式安装。处理器602可以处理用于在计算设备600内执行的指令,包括存储在存储器604中或存储设备606上的指令以在外部输入/输出设备(诸如耦合到高速接口608的显示器616)上显示GUI的图形信息。在其它实现方式中,可以视情况使用多个处理器和/或多个总线以及多个存储器和存储器类型。此外,可以连接多个计算设备600,每个设备提供必要操作的部分(例如,作为服务器组、一组刀片服务器或多处理器系统)。

存储器604在计算设备600内存储信息。在一个实现方式中,存储器604是计算机可读介质。在一种实现方式中,存储器604是易失性存储器单元或多个易失性存储器单元。在另一实现方式中,存储器604是非易失性存储器单元或多个非易失性存储器单元。

存储设备606能够为计算设备600提供大容量存储。在一种实现方式中,存储设备606是计算机可读介质。在各种不同的实现方式中,存储设备606可以是软盘设备;硬盘设备;光盘设备;或磁带设备;闪存或其它类似的固态存储器设备,或设备阵列,包括存储区域网络或其它配置的设备。在一种实现方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含在执行时执行一种或多种方法(诸如上述方法)的指令。信息载体是计算机或机器可读介质,诸如存储器604、存储设备606或处理器602上的存储器。

高速控制器608管理计算设备600的带宽密集型操作,而低速控制器612管理较低带宽密集型操作。此类职责分配只是示例性的。在一种实现方式中,高速控制器608耦合到存储器604、显示器616(例如,通过图形处理器或加速器)以及高速扩展端口610,其可以接受各种扩展卡(未示出)。在实现方式中,低速控制器612耦合到存储设备606和低速扩展端口614。低速扩展端口(其可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网))可以例如通过网络适配器耦合到一个或多个输入/输出设备,诸如键盘、指向设备、扫描仪或网络设备,诸如交换机或路由器。

如图所示,计算设备600可以以多种不同的形式实现。例如,计算设备600可以被实现为标准服务器620,或者在一组此类服务器中多次实现。计算设备600也可以作为机架服务器系统624的一部分来实现。此外,计算设备600可以在个人计算机(诸如膝上型计算机622)中实现。可替代地,来自计算设备600的组件可以与移动设备(未示出)(诸如设备650)中的其它组件组合。此类设备中的每一个可以包含计算设备600、650中的一个或多个,并且整个系统可以由彼此通信的多个计算设备600、650组成。

计算设备650包括处理器652、存储器664、诸如显示器654的输入/输出设备、通信接口666和收发器668,以及其它组件。设备650还可以设置有存储设备,诸如微驱动器或其它设备,以提供附加存储。组件650、652、664、654、666和668中的每一个使用各种总线互连,并且组件中的几个可以安装在公共主板上或视情况以其它方式安装。

处理器652可以处理用于在计算设备650内执行的指令,包括存储在存储器664中的指令。处理器还可以包括单独的模拟和数字处理器。例如,处理器可以提供设备650的其它组件的协调,诸如用户界面的控制、设备650的应用运行和设备650的无线通信。

处理器652可以通过连接到显示器654的显示接口656和控制接口658与用户通信。显示器654可以是例如TFT LCD显示器或OLED显示器,或其它合适的显示技术。显示接口656可以包括用于驱动显示器654以向用户呈现图形和其它信息的适当电路。控制接口658可以接收来自用户的指令并且转换指令以便提交给处理器652。另外,可以提供与处理器652通信的外部接口662,以便实现设备650与其它设备的近区域通信。外部接口662可以提供例如有线通信(例如,经由对接程序)或无线通信(例如,经由蓝牙或其它此类技术)。

存储器664在计算设备650内存储信息。在一种实现方式中,存储器664是计算机可读介质。在一种实现方式中,存储器664是易失性存储器单元或多个易失性存储器单元。在另一实现方式中,存储器664是非易失性存储器单元或多个非易失性存储器单元。还可以提供扩展存储器674并通过扩展接口672连接到设备650,该扩展接口672可以包括例如SIMM卡接口。该扩展存储器674可以为设备650提供额外的存储空间,或者也可以为设备650存储应用或其它信息。具体地,扩展存储器674可以包括执行或补充上述过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器674可以作为设备650的安全模块提供,并且可以用允许安全使用设备650的指令来编程。此外,可以经由SIMM卡提供安全应用以及附加信息,诸如以不可破解的方式在SIMM卡上放置识别信息。

如下所述,存储器可以包括例如闪存和/或MRAM存储器。在一个实现方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含在执行时执行一种或多种方法(诸如上述方法)的指令。信息载体是计算机或机器可读介质,诸如存储器664、扩展存储器674或处理器652上的存储器。

设备650可以通过通信接口666进行无线通信,该通信接口666在必要时可以包括数字信号处理电路。通信接口666可以提供各种模式或协议下的通信,诸如GSM语音呼叫、SMS、EMS或MMS消息收发、CDMA、TDMA、PDC、WGDMA、CDMA2000或GPRS等。该通信可以例如通过射频收发器668发生。此外,可以发生短距离通信,诸如使用蓝牙、WiFi或其它此类收发器(未示出)。此外,GPS接收器模块670可以向设备650提供附加的无线数据,该数据可以由在设备650上运行的应用视情况使用。

设备650还可以使用音频编解码器660可听地通信,该音频编解码器660可以从用户接收口头信息并将其转换为可用的数字信息。音频编解码器660可以类似地为用户生成可听声音,诸如通过扬声器,例如在设备650的电话听筒中。该声音可以包括来自语音电话呼叫的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且还可以包括由在设备650上运行的应用生成的声音。

如图所示,计算设备650可以以多种不同的形式来实现。例如,计算设备650可以被实现为蜂窝电话680。计算设备650也可以被实现为智能电话682、个人数字助理或其它类似移动设备的一部分。

这里描述的系统和技术的各种实现方式可以在数字电子电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或它们的组合中实现。这些各种实现方式可以包括在一个或多个计算机程序中的实现方式,该计算机程序在包括至少一个可编程处理器的可编程系统上是可执行和/或可解释的,其可以是专用的或通用的,该可编程处理器耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并将数据和指令传输到存储系统、至少一个输入设备和至少一个输出设备。

这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或以汇编/机器语言实现。如在此所使用的,术语“机器可读介质”、“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。

虽然本说明书包含许多具体的实施细节,但这些不应被解释为对可能要求保护的范围的限制,而是对特定实施例可能特定的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上述特征可能在某些组合中被描述为作用于某些组合,并且甚至最初被要求保护,但在一些情况下,可以从组合中删除来自要求保护的组合的一个或多个特征,并且要求保护的组合可涉及子组合或子组合的变体。

类似地,虽然以特定顺序描绘了在附图中的操作,但这不应理解为要求以所示出的特定次序或顺序次序执行该操作,或者执行所有图示的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中各个系统模块和组件的分离不应理解为在所有实施例中都需要此类分离,并且应当理解,所描述的程序组件和系统一般可以集成在单个软件产品中或打包成多个软件产品。

已经描述了本主题的特定实施例。其它实施例也在所附权利要求的范围内。例如,权利要求中记载的动作可以以不同的次序执行并且仍然达到期望的结果。作为一个示例,附图中描述的过程不一定需要所示的特定次序或连续次序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。

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