用于基于体素的三维建模的系统、方法和设备

文档序号:1876627 发布日期:2021-11-23 浏览:28次 >En<

阅读说明:本技术 用于基于体素的三维建模的系统、方法和设备 (Systems, methods, and apparatus for voxel-based three-dimensional modeling ) 是由 R·奥利里 于 2016-03-14 设计创作,主要内容包括:用于实现体素3D建模技术客户端服务器系统的系统和方法,例如使用网络浏览器作为主要用户界面。(Systems and methods for implementing a voxel 3D modeling technique client server system, for example, using a web browser as the primary user interface.)

用于基于体素的三维建模的系统、方法和设备

本申请是为基于PCT国际申请PCT/IB2016/000415的中国国家阶段申请的、申请日为2016年3月14日、申请号为201680026599.3、名称为“用于基于体素的三维建模的系统、方法和设备”的发明专利申请的分案申请。

对相关申请的交叉引用

本申请要求于2015年3月12日提交的临时专利申请系列No.62/131,974的优先权,该临时专利申请主题的全部内容通过引用并入本文。

技术领域

本发明针对三维(3D)建模和动画方面的改进。

背景技术

计算能力和图形处理器的兴起创造了能够精巧地制作整个虚拟世界和环境的工具,随着能力的提升和图形软件及其他工具的改进,虚拟世界和环境变得越来越真实。一些行业比如游戏行业已经蓬勃发展,特别是涉及大型多玩家在线角色扮演类游戏(MMORG)的游戏,其中多名玩家与游戏同伴玩家对阵/配合玩游戏。

与处理能力的提升步伐保持一致的是图形工具的复杂程度和与现实的接近程度。使用更高分辨率的显示器,动画能够显得越来越逼真。在目前的多玩家在线游戏比如MMORG中,许多不同的玩家参与共同的场景或冒险,并且共享故事线。预测显示,这些类型的“共享”体验将随着更好的技术——比如本文中所示的那些技术——的产生而进一步提升,以更好地促进体验。

现今的三维或3D建模和动画系统通常依赖于用户首先下载通常包括数十亿字节的数据的客户端文件。此外,如本领域中所理解的,3D建模通常利用3D多边形建模技术来执行,导致对3D建模引擎能够将其图形地解释为形象(visualization,可视化)的表面/网孔(mesh)的定义。

应当理解,成像能力的改进远远不仅仅限于游戏方面,这些相同的原理还能够适于并应用于各种其他应用,比如医学成像、建筑或建筑物建模、部件或设备建模以及更多方面的应用,包括对现实世界场景以及想象的或潜在的场景建模方面的各种现有和潜在的用途。

然而,3D建模中所采用的软件工具的技术复杂性越来越高,造成显著的进入障碍:用户必备的技术技能组合如今必须很高。举例而言,大多数的当前3D模型的创建都采用多边形建模技术,这通常要求3D建模人员在大学级别的针对这种多边形3D建模的课程中有过广泛培训,所述课程包括高等数学、数据结构和图形用户界面的计算建模算法。

因此,需要一种替代性的、更简单的建模方法来鼓励用户不必在技术方面、尤其是在当前所采用的复杂的表面建模技术方面如此训练有素。本发明中所采用的提供更简单的操作范例的一种工具使用体素代替上述的表面建模。

体素是体积像素,其具有各种益处,比如快速并且简单。此外,申请人已经发现,根据本发明教导的采用体素的3D建模通常能够由任何适度懂得计算机操作的个体执行。如所讨论的,体素涉及对体积(而不仅仅是表面)的3D建模,使得技术使用和理解起来更简单,即更容易由民众使用。

然而,体素的利用是有代价的,体素技术的主要缺点是所需的处理器负荷。实际上,随着更多的体素被添加,体素间复杂性急剧提升,并且对每个体素即每个体积组成部分的跟踪迅速地演变成对计算机处理器的显著要求——尤其是随着体素和由其描述的对象的数量的增加。此外,几个或许多个客户端连接到一个服务器的服务器客户端解决方案可能会对服务器及服务器与客户端之间的通信提出显著的容量需求。

此外,需要的是一种改进的技术和系统,其解决在诸如本文中所提出的3D建模的富含体素的环境中与处理器负荷相关联的技术问题。

本发明解决涉及客户端架构系统中的体素3D建模和动画系统的各种技术问题,比如,举例而言,涉及利用HTLM5即用于在网络(Web)上构建和呈现内容的最新第五版本的强大的超文本标记语言协议实现系统的技术问题。对现有标准和协议的利用在下述情况下至关重要:许多用户(通常为多达80%的用户)将不会选择下载采用这样的技术的软件客户端文件,或者会没有耐心等待大型软件客户端的下载完成。

因此,现在需要提供一种系统、方法、技术、设备、装置和架构来改进现有的建模方法,并使现有的建模方法更易于使用、更容易下载且更有效率。

因此,本发明的一个目的是提供一种这样的建模系统,其能够由普通用户在未进行(或最多进行有限量的)专门训练的情况下以简单的方式进行编辑。

本发明的另一个目的是提供一种用于以简单有效的方式将由一个用户创建的3D模型和动画分发给其他用户的功能。

发明内容

本发明针对用于在客户端服务器系统中例如使用网络浏览器作为主用户界面来实施体素3D建模技术的系统、装置和方法。

附图说明

虽然本说明书是以特别指出并明确要求保护被视为构成本发明的主题的权利要求来得出结论,但是,相信根据结合附图进行的以下描述能够更好地理解本发明,其中相同的附图标记表示相同的结构及其他要素,在附图中:

图1示出具有限定形状的二进制体素值的简单流形图形形状的图示;

图2示出由多个体素组成的更详细图形形状的一个实施方案,所述多个体素具有多个值以限定多个形状和特性;

图3描述根据本发明将分立(discrete,独立)体素网格(grid)值分层堆放或层叠成单个高维体素网格值;

图4示出根据本发明的原理的用于将体素网格数据从服务器传输到标准网络浏览器以供在浏览器上使用的过程的一个实施方案;

图5示出根据本发明教导的体素环境区域文件结构的一个实施方案,以及根据本发明教导的与所述体素环境区域文件的每个段或块相关联的网孔、体素数据和元数据;

图6示出根据本发明的另一实施方案的用于将体素区域文件从服务器传输到标准网络浏览器以及对其中的网孔、体素数据和元数据进行拆分的机制的一个实施方案;

图7示出本发明的另一实施方案,其中图6中所示的传输机制是分片来完成的;

图8示出用于将体素网格从服务器传输到标准网络浏览器的另一实施方案,其中,浏览器中具有根据本发明教导的用于处理体素数据的主线程和辅助线程;

图9示出用于简化体素表示的技术的一个实施方案;

图10示出根据本发明教导的用于表示人类的类人动力学模型的骨架或框架;

图11示出根据本发明的原理的、体素元数据的在其中存储门户坐标以便于用户导航的示例性用途;

图12示出根据本发明的用于处理多个事件的发生的一个实施方案;

图13示出根据本发明的用于投影图像的优选建模技术;和

图14示出可用于实践本发明的原理的组成部分和装备的示例性配置。

下文的文本中给出的各个图提供了在示例性配置中采用本发明的原理来实现体素3D建模的系统和方法的各个方面和特征的典型视图。

具体实施方式

现在将参考在此给出的附图在下文中更充分地描述本发明,附图中示出本发明的优选实施方案。当然,应当理解,本发明仍可以许多不同的形式来实施,并且不应被解释为限于本文中阐述的实施方案;相反,提供这些实施方案使得本公开内容会是彻底且完整的,并且会向本领域技术人员充分地转达本发明的范围。因此,应当理解,在不脱离本发明的范围的情况下,能够利用其他的实施方案并且能够作出结构改变。

如所讨论的,处理器的提升的计算能力持续使得能够实现更高级的软件工具。然而,由于分立的体素彼此之间以及与环境之间的相互联系,体素的使用可能造成计算复杂性。如下文中所描述和图示的,本发明克服了装备的技术问题,并且还克服了大多数建模软件的用户知识阈值问题,使得不具备先进的软件技能组合的用户能够利用诸如本文中所示的新的软件建模工具的优点。

如下文中阐述的,本文中采用了多个主题类别来试图充分地描述本发明的多个特征。应当理解,所采用的分类描述是示例性的,并且排序等诸如此类的信息并不一定意味着脱离所使用的文本的重要程度。

1.高维体素环境

如所讨论的,体积像素(“体素”)是一种对三维空间和包含在其中的对象建模的方法,所述方法利用3D空间或网格的概念,其中,网格上的每个点都包含值。这些值可以表示体素环境的任何方面——例如,可以使用二进制体素值来表示“实心”和“非实心”以便对简单的流形形状建模。

现在参照附图的图1,示出总体上由附图标记100表示的流形空间和图像的基本表示。易于显而易见的是,所需的体素单位或空间的粒度(granularity,间隔尺寸)足以在视觉上在其中定义为兔子的形状。进一步显而易见地,图像100中的所有体素的值是二进制的:要么没有所示的兔子形状,要么是所示的兔子形状的一部分。因此,图像100的三维空间的网格或阵列将由仅包括1和0的矩阵构成。

当然,应当理解,代替针对体素的简单二进制使用,能够替代性地使用更高基数的编号系统,比如十进制或十六进制的编号系统,来表示环境和对象的体积建模中的更多种类的材料——例如,“草”、“木”、“水”等。换言之,与每个体素相关联的数值能够充分变化以提供界限或差异,从而使得能够实现更高级别的方法用于呈现诸如下文中所示的更加复杂的图像。

现在参照附图的图2,示出总体上由附图标记200表示的具有复杂得多的图像的空间的另一表示。易于显而易见的是,在用于构建图像200并且用于对其上具有对象的环境或场景的分立部分进行不同描绘的体素之间存在多个层次(gradation,渐变,等级),所述对象例如,总体上由附图标记202表示的水,总体上由附图标记204表示的岛(或仅仅是陆地),总体上由附图标记206表示的树,在岛204顶部的冰川(或雪)208,发源于冰川208、穿过陆地204并注入水202中的河210等等。虽然在外观上仍然是简单化的,但是相较于图像100,图像200的复杂度显著提高。

在目前的系统模型中采用使用多重覆加体素网格的体素环境,以便产生单个高维网格,在该高维网格中,每个体素包含多个值。如图2所示,这些值然后用于表示物理和非物理体素属性——例如,材料(上述的“水”、“岛”、“河”等)以及未示出的其他属性,比如温度、湿度水平、压缩水平、密度、重量以及也能够数字地(numerically,数值地)进行建模的任何其他值。

诸如结合图1的图像100所示出及所描述的单维体素网格到图2的图像200中所采用的详细得多的多维网格的扩展提供了更丰富、更复杂的环境。例如,单个体素可能包含多个独立的特性,比如如下值:

材料:水

温度:101摄氏度

压缩:0.1

重量:18.01528

应当理解,上述组合实际上将对蒸汽而并非水进行建模,这是因为针对温度的属性或特性高于水的沸点,并且压缩足够低以便材料具有比空气更低的重量。

通过对高维体素环境而非传统的单维体素环境如此建模,申请人已经发现其能够创造更具表现力的环境,该环境模拟更加复杂的材料和这些材料之间的相互作用。而且,通过使这些工具使用和应用简单,日常软件用户能够更容易地学习这些新技术并应用它们。

现在参照附图的图3,示出在一个优选实施方案中本发明所采用的高维建模如何进行的表示,其总体上由附图标记300表示。例如,为了使特定体素内的属性的堆叠或分层更好地可视化,将各种个体特性或属性显示为被分成多个具有仅一种属性的体素,例如,总体上由附图标记302表示的材料体素网格、总体上由附图标记304表示的温度体素网格、总体上由附图标记306表示的压缩体素网格以及针对其他期望的或必需的特性或属性的体素等。应当理解,针对属性的各种各样的这些分立的一维体素网格可以被如此可视化,它们被组合为总体上由附图标记308表示的单个高维体素网格,其中所有上述特性或属性由该体素的值的矩阵或网格内的相应值表示,形成更高维度表示。

如所讨论的,这些高维体素网格的应用包括复杂的视频游戏环境和对用于医疗或工程环境中的复杂现实世界材料的建模——例如,对动物和植物组织或者复合合金的材料、密度、温度、电阻和压缩进行建模。通过容易地在各个体素或体素组(网格)内充注特性,能够比使用本领域更复杂的表面测绘和建模技术更加容易地对相当复杂并相互关联的结构进行建模。

2.网络浏览器中的体素环境

如所讨论的,体素环境通常需要大量的用于存储的内存并且必须在临时存储器(RAM)中解压缩用于读取——例如在如图14的计算机系统1400中所示的RAM存储器1420中解压缩,或者必须存储在具有低性能读取时间的数据结构(例如,提供O(log(n))的读取时间的八叉树(Octree),而不是提供O(1)的读取时间的简单数组)中。

因此,体素环境的产生和呈现已经被限制于计算环境中,比如其中大量工作内存和处理能力现成可用并且需要定制软件下载和安装的台式计算机,比如图14中的具有硬盘驱动器1425(和其他存储器)、处理器1415的上述计算机系统1400。如所讨论的,大多数软件工具的下载要求是干扰各种用户的期望和担忧的东西,并且他们可能避开任何要求下载潜在地装载有病毒的软件的程序。

然而,本发明允许在无需安装任何定制软件的情况下,代之以在标准的当前网络浏览器中创建和呈现体素环境。体素环境经由超文本传输协议(HTTP)请求从标准网络服务器传送,并且在浏览器中实时交互,优选地不需要插件或其他非标准浏览器或服务器特征。

即时体素环境优选地以高度优化的文件格式存储,所述高度优化的文件格式比如易于使用浏览器中的JavaScript编程语言读取,并且使用网络图形库(WebGL)来呈现,该网络图形库也是所有现代浏览器中的标准编程语言。

因此,如此创建的环境在如图14所示的诸如台式计算机和膝上型计算机之类的传统计算平台以及诸如平板电脑和移动电话之类的平台上的所有现代网络浏览器中都可网上访问和交互,通过此可以改为在在更传统的桌面个人或游戏系统比如图14中的示例性计算机系统1400上执行这些功能。

现在参照附图的图4,示出总体上由附图标记400表示的上述网络可访问性的表示,通过该网络可访问性,本发明的工具允许轻松下载。如所讨论的,总体上由附图标记402表示的、标准网络服务器404上的体素网格经由总体上由附图标记406表示的HTTP或HTTPS(具有传输层安全的HTTP)传送到网络浏览器408,在该网络浏览器处总体上由附图标记410表示的现在可见且交互的体素网格准备好供用户例如在如上文和下文中结合上述图14所描述并示出的网络浏览器408(或图14中的计算机显示器1405上的图形用户界面或浏览器1410)中使用,比如用于进行呈现。

3.网络浏览器中的高维体素环境

将本发明的创建和存储复杂的高维体素环境的能力与通过标准网络通信协议传送这些环境并且使用现代网络浏览器中的标准编程语言来呈现它们的能力相结合,本发明因此能够在网络浏览器408中,比如通过采用上文中结合图4所示出并描述的并且进一步如下文所阐述的协议来提供复杂的高维体素环境。

4.基于网络的体素世界文件格式

尽管所示出和所描述的体素使用具有巨大的优点,但是在以有效并及时的方式将上述体素环境传送至网络浏览器比如网络浏览器408的任何尝试中都呈现出多个挑战。

诸如图4中所示的、其中每个体素都装载有变量层的体素网格通常非常大,因此通常必须从服务器404逐片地传送到浏览器408,以避免在对环境进行加载之前等待很长时间以及避免过度使用工作存储器来存储整个环境。下文中将这些所谓的体素环境片称为“块”,其中块(或其片)的组合使本发明便利。

应当理解,呈现体素环境所需的任何处理如果在浏览器比如浏览器408中执行的话,(由于基于浏览器的编程语言的砂盒性质)将是耗时的,因此这样的处理必须被最小化以便实时传送交互式环境。

从服务器比如服务器404请求多个块将需要多个HTTP请求。这又会在请求的创建和分派方面产生大量的通信开销。相应地,这种通信开销会限制基于网络的体素环境的性能。

为了克服这些吞吐量限制,本发明示出一种对体素环境区域文件格式的开发。

在操作中,体素环境区域文件格式将多个上述块组合在一起,以产生较少数量的区域文件,每个区域文件包含整个环境的一部分。举例而言,申请人于此使用每区域文件32×32块的标准2D网格。虽然这是一个示例性的工作标准,但是,如本领域技术人员所理解的,网格的大小和形状当然可以根据任何区域文件大小改变。

每个块被存储为字节序列。多个块被一起存储在单个区域文件中,该单个区域文件通过单个HTTP 406请求被传送至浏览器408,从而消除(或至少显著地最小化)通信开销的限制因素。

对于每个块,区域文件中的数据段包含:可读体素网孔,块的体素数据网格以及与所讨论的块有关的任何附加数据。下文中更详细地讨论每个数据元素。

现在参照附图的图5,示出总体上由附图标记500表示的上述体素区域文件及其中的部分的表示。如图5所示,总体上由附图标记502表示的示例性体素环境区域文件在其中包含多个分立的块,每个块总体上都由附图标记504表示。如所讨论的,每个块504在其中包含网孔、体素数据和元数据。

如所讨论的以及图5中所示的,每个块504都包含总体上由附图标记506表示的可读体素网孔,该可读体素网孔准备好用于使用WebGL来呈现在网络浏览器408上。应当理解,术语“网孔”是指一组用于表示构成可见对象的一批三角形或四边形的数字(numeric,数值)数据列表。构成网孔所需的最少数据是一组顶点(三维空间中的点)和索引(用于构成三角形、四边形或其他形状的顶点之间的连接)。然而,如上所述,本文中的文件格式允许每顶点包括多个属性,从而允许对高维体素网格的呈现。

如也讨论的并如图5所示,每个块504包含总体上由附图标记508表示的体素数据。该数据508用于促进与环境的交互——例如,在上述浏览器408中或在依赖于关于环境结构的信息的系统比如碰撞系统和基于规则的细胞自动机(通常用于例如人工智能或AI行为的规划或用于液体和气体模拟系统中)中对块504进行编辑。

最后,如讨论的并如图5所示,每个块504包含总体上由附图标记510表示的元数据或用于存储非体素实体的每个块所需的任何附加或额外数据。例如,动画角色或粒子发射器的定位构成这样的元数据510。

现在参照附图的图6,示出总体上由附图标记600表示的上述可访问性的容易性的表示,这是对比如图4中的上文所示的用于使网页可访问性容易的结构和方法的改进。

如图6所示,总体上由附图标记602并且上文中也由502表示的体素区域文件在其中包含多个块——例如在示例性区域文件结构化中包括九个,位于总体上由附图标记604表示的标准网络服务器上。在运行中,体素区域文件602然后经由总体上由附图标记606表示的HTTP或HTTPS传送到网络浏览器608,在该网络浏览器处总体上由附图标记610表示的现在可见且高性能的体素环境被显示并准备好供使用,比如进行呈现。

如结合图5也示出和描述的,总体上由附图标记612表示的体素网孔(来自块504)如所描述地被直接发送到WebGL以进行呈现。还示出总体上分别由附图标记614和616表示的体素数据和元数据,JavaScript系统如上文所述使用所述体素数据和元数据用于交互功能。应当理解,如以下进一步描述的,区域文件502/602中的每个块504的上述体素网孔612、体素数据614和元数据616被收集用于呈现,并被单独地或组合地发送。

应当理解,体素数据优选地以字节序列的形式存储,可使用以下格式寻址:

index=x+(chunkDepth*z)+((chunkWidth*chunkWidth)*y)

以这种方式,块可以具有任何宽度和深度,并且也可以在同一体素环境中具有可变的高度——因为在计算体素数据的索引时,块的高度不是必需的。此外,能够以这种格式存储任何数量的维度,因为多维数据的索引被简单地计算为:

dimension0=x+(modelWidth*z)+((modelWidth*modelWidth)*y);

dimension1=dimension0+1;

dimension2=dimension0+2;

dimension3=dimension0+3;

dimensionN=dimension0+N;

5.基于网络的体素模型文件格式

除了上文中比如结合图1所示和描述的二进制体素块文件格式之外,本发明在此还针对对用于体素模型的二进制文件格式的开发,其中模型是诸如以下的对象,房屋、家具、武器、身体部位(头、手臂、手等)以及其他类型。

该格式包含准备在浏览器中使用WebGL呈现的编码网孔以及用以构成模型的体素数据。

由于WebGL对其将呈现的网孔比如上文的体素网孔506的尺寸规定上限,因此超过这一尺寸的模型优选被分解成文件内的多个网孔,并且这些网孔中的顶点的偏移由相对于模型中心的值组成。

以这种方式,当对模型的一组网孔进行呈现时,模型看起来是单个网孔,而实际上是由多个精确对准的网孔组成。

现在参照附图的图7,示出总体上由附图标记700表示的、形成为体素模型文件的多个上述体素网孔和数据的表示。如所讨论的以及结合图5和图6所示出的,体素网孔506和612当在模型700中时分别被分解以进行传输,并且之后在被重构时可表现为总体上由附图标记702表示的分立的网孔元素,其中,模型700的多个网孔702被直接发送到WebGL以用于呈现。图7中还示出总体上由附图标记704表示的体素数据,其代表模型700的数据(以及任何元数据),其中,如上所述,体素数据被用于交互功能。

在操作中,二进制模型文件700的头部包含网孔702段的数量和大小的列表以及体素数据704的偏移。体素数据704是高维度的,其中文件头部指示分配给每个体素的字节的数量。模型的体素数据存储在尺寸与模型的边界框(模型的宽度、高度和深度)相等的网格中。该数据以使用上述用于体素网格数据的方案寻址的字节序列的形式存储——由此能够存储和呈现高维体素数据的模型。

6.基于JavaScript网络的体素世界文件解释器

特别地,一旦体素块的区域文件602比如文件602已经被下载到浏览器比如图6中的浏览器608,则如所讨论的,需要使用JavaScript编程语言来打开和读取区域文件602。该方法优选由三个步骤组成:

(1)将网孔字节序列,比如体素网孔612,转换到可用的WebGL缓冲区(buffer,缓冲器)中;

(2)将高维体素数据,比如体素数据614,提取到可用的JavaScript单维数组中;和

(3)将块元数据,比如元数据616,提取到可用的JavaScript数据结构中。

如本领域技术人员所理解的,该过程通过定义而高度优化,这是因为区域文件数据在格式和序列方面已经准备好被用于目标编程语言。

然而,WebGL缓冲区可能需要多种数字格式的数据——针对低字母大小的数据的单字节、针对为较大整数格式的数据的整数以及针对需要实数精度的数据的浮点值。将字节序列重新打包到可变大小的数字缓冲区中的这一过程需要将字节序列重新格式化为字节、整数和浮点数,比如可由JavaScript ArrayBuffers采用的字节、整数和浮点数。

为了允许在该打包活动执行时浏览器608的用户界面顺利运行,申请人开发了一种使用Web Worker(工作线程)执行体素数据的这种分割的系统,Web Worker是一种辅助处理线程,其能够利用在台式机和移动设备中存在的现代中央处理单元的多重处理能力,所述台式机和移动设备诸如下文中结合图14所示出并描述的组成部分和装备。

现在参照附图的图8,示出总体上由附图标记800表示的用于将体素模型文件中的数据转换为必需格式的上述简化过程(streamlined procedure,精简程序)的表示。如所示的,总体上由附图标记802表示的、其中包含多个块的高维体素网格(体素区域文件)在总体上由附图标记804表示的标准网络服务器上。在操作中,体素网格802然后经由总体上由附图标记806表示的HTTP或HTTPS传送到标准网络浏览器808,在该网络浏览器处,使总体上由附图标记810表示的现在可见且高性能的体素环境如上所述地可用于进行呈现或用于其他用途。如上文结合图5至7所示出并描述的,对于每个块,比如来自该环境的总体上由附图标记811表示的块,从其中提取数据,提取过程总体上由附图标记813表示。

如上文中及在此针对图8所示出的,由此产生总体上由附图标记812表示的体素网孔(来自块),总体上由附图标记814表示的体素数据一样,并且提取总体上由附图标记816表示的体素元数据。然后,通过总体上由附图标记815表示的格式网孔缓冲区将网孔数据812处理成上述多种数字格式,包括总体上由附图标记818表示的字节(Byte)格式、总体上由附图标记820表示的整型(Int)格式、总体上由附图标记822表示的浮点(Float)格式,以用于WebGL操作。

进一步参照图8,将上述环境810的各个单独块811处理成相应的数据格式的所有上述处理都是在总体上由附图标记809表示的所谓的辅助Web Worker处理线程内完成的,所述辅助Web Worker处理线程是浏览器808内的进程或子例程。还示出总体上由附图标记813表示的主处理线程,其是更高级的(higher-order,更高层次的)或更重要的进程或例程,其中,现在被提取到Byte 818、Int 820和Float 822组成部分中的网孔数据812被如上所述地发送到WebGL以用于呈现。应当理解,如也描述的,体素数据814和元数据816在主处理线程813中被用于上述交互功能。

7.基于网络的体素世界网孔生成器

如所讨论的,为了生成上述体素环境区域文件602和体素模型文件702,有必要创建将体素数据转换成可呈现网孔812的系统。应当理解,这些网孔812必须包含足够的数据以呈现高维体素数据的所有方面,并且必须被格式化供用作WebGL编程语言的顶点缓冲区。

如结合图8所示出并描述的,由多字节数据(即,整数和浮点值)表示的顶点数据必须以字节序列的形式生成以准备好在网络浏览器808的辅助web worker线程809中进行快速解包。

因为体素网孔812可以包含大量的网孔片段(由顶点、索引和高维体素数据缓冲区组成的三角形或四边形),因此网孔被高度优化是必要的。未优化的网孔将导致过大的区域文件602,导致从服务器604到浏览器608的缓慢传输速度以及当加载到客户端图形芯片上的缓冲区中以便经由WebGL呈现时高的顶点计数。大的顶点计数将导致大量系统内存被消耗在显卡(graphics card,图形卡)比如图14中所示的显卡或图形芯片1430上,这将导致在客户端机器1400上的主存储器1425和相对有限的图形存储器1435之间的数据的频繁分页——这将导致严重降低的性能。

此外,大的顶点计数将导致图形芯片1430上的大量处理能力被专用于片段着色(shading,明暗处理)(确定用于表示网孔片段的像素的正确颜色的过程)。这将导致帧速率(呈现3D场景中的每个帧所需的毫秒数)严重降低,这将导致给用户缓慢、无响应的体验。

最后,这些数据必须被格式化以存储在二进制区域文件中和从二进制区域文件读取。

为了给用户提供流畅且有效率的体验,根据本发明的网孔生成器通过首先从三个维度——从上到下、从左到右以及从前到后——扫描每个块或模型来进行操作。检查每个体素的每个面。如果一个体素的面与另一个体素的面相邻——其为实心的(即在浏览器中呈现时不能被看透),则由于该面对于观察者而言不可见,从网孔中移除两个体素面。

现在参照附图的图9,示出总体上由附图标记900表示的上述的体素的面的合并过程的表示。如所示的,总体上由附图标记902和904表示的一对相邻布置的体素在它们之间共享总体上由附图标记903表示的共同的面(common face,公共面)。由于本实施方案中的两个体素902和904都是不透明的,所以其间的面903不能够由观察者看见,因此是无关紧要的。在上述对体素的面的扫描中,将面903移除,得到组合的体素906,其中已经移除了不可见的体素面。

此外,当发现相邻的体素的面与在所有维度上包含相同数据的体素相关联时,表示这些体素的面的三角形被合并以产生较大的网孔段,所述较大的网孔段包含较少的顶点且因此需要较少的内存来存储并且需要较少的处理能力来呈现。

该高维优化网孔的生成,结合在浏览器中对网孔缓冲区的高效多核提取和传送,是在无需任何支持性安装或额外下载的情况下实现体素网孔从服务器到客户端的实时传送和呈现性能的关键,从而解决本发明已经克服的上述问题。

8.基于JavaScript网络的体素世界网孔再生器

一旦区域文件,比如区域文件602/802,已经被传送到浏览器608/808、是未压缩的,并且网孔已经被传送到显卡,则还可以允许用户实时地修改这些网孔。为了提供这一功能,申请人开发了上述网孔系统的一种高度优化版本,其以JavaScript编程语言来实现,从而可在任何现代网络浏览器中执行。在浏览器中重新生成网孔的该过程允许实时编辑网孔,这是因为不存在假设网孔在服务器上被重新生成并被重新下载到浏览器时所需类型的网络延迟。

这一客户端网孔系统在浏览器中在另一个辅助处理线程比如辅助线程809中执行,以防止对主处理线程比如线程813的流畅执行造成任何干扰,该干扰会导致浏览器808的用户界面——比如,如图14中的显示器1405上示出的图形用户界面或浏览器1410——的性能不均衡。

此外,该版本的网孔系统中的所有语义和可变表示都被修改为符合JavaScript编程语言的编程框架,使得本发明相当兼容。

借助对构建本发明的数据结构和处理本发明所采用的一些构建块的以上描述和说明,现在描述来自这些工具的一些特定构建物。

9.基于网络的动画体素角色构建器

为了对不仅仅是体素环境和静态模型(建筑物、家具等)提供实时浏览器内编辑,申请人还开发了一种允许将表示人和生物的身体部位的体素模型附加到动画骨架上的系统,进一步依赖于在上文以及还在下文中阐述的各种工具。

于是,在每个框架的执行后修改该骨架中的关节的旋转、变换和比例,以便产生同步运动的身体部位的可见动画,以产生角色和生物走、跑、游泳、谈话、做手势或任何其他形式的运动的视觉效果。

现在参照附图的图10,示出总体上由附图标记1000表示的上述骨架或主体框架的表示。所示的特定骨架1000本质上是类人动物,从上到下采用了头部1010、上身部1012、右臂部1014、右手部1016、左臂部1018、左手部1020、下身部1022、右腿部1024、右脚部1026、左腿部1028和左脚部1030。如所讨论的,通过使骨架1000的部分的各种运动同步,能够效果很好地实现动画。

当然应当理解,骨架1000的细节程度或粒度可以变化,例如包括手指、脚趾、面部特征、毛发、疤痕、皮肤毛孔、戒指和其他身体装饰品、衣服等等,一切都取决于具体的骨架和期望的细节程度。实际上,以这种方式附加到骨架1000的身体部位模型可以由高维体素数据组成,因此可以在各种各样的情况下组装由复杂材料和复杂动作构成的模型并使其做动作。上述体素模型文件格式用于存储和传输用于附接到上述动画骨架1000上的体素身体部分。

申请人还开发了一种图形用户界面,以允许用户选择体素模型来将细节或特性附加到动画骨架1000上,从而从身体部位目录构建他们自己的动画角色和生物。图14中更详细地示出了优选在其上和内实施本发明的原理的图形用户界面和其他组件和装备。当然应当理解,本文中所讨论的细节仅仅是示例性的,并且根据本发明的教导,能够容易地对各种各样的情况、情绪、动作和事件建模。

10.基于网络的体素世界体积照明系统

当然应当理解,本发明的高维体素模型和块中的维度之一是光的维度——一个微妙的变量,其能够通过简单遮蔽柔光浸染背景。

优选地,使用体积光生成系统来计算构成另一变量或特性的、块或模型中每个体素的垂直(太阳)光值和局部(人造)光值。然后,这些值用于生成在所生成的网孔中的体素面的顶点处的照明数据。将该照明数据连同所有其他网孔和体素数据一起传到网络浏览器808中的WebGL缓冲区,并且使得其可用于顶点和在客户端显卡上运行的片段着色程序。

为了优化用于存储照明值的存储器量,本发明的申请人将每个体素的太阳光值和局部光值的值限制在0至15之间。然后,这些值优选地存储在与每个体素相关联的单个字节的4个高位和4个低位4位中,构成用于太阳值的半字节和用于局部光值的另外半字节。

为了模拟不同程度的阳光,在本发明的一个实施方案中,申请人在WebGL片段着色器(shader,明暗处理器)中提取这两个值,并将第一个值(阳光)乘以全局日光颜色。这种颜色使用用JavaScript编程语言编写的自定义代码来改变,所述自定义代码基于模拟的日/夜循环确定日光的颜色(例如,全天为白色,夜间为蓝色等)。将这种全局日光颜色存储为一维纹理,并且使得其在WebGL片段着色器中可访问,该WebGL片段着色器优选地是也在上述主处理线程813中运行的另一WebGL程序。然后,定期更新该纹理,以便修改全局日光颜色。

无论全局光水平(light level,光级)如何,第二(本地)光值都保持不变。这导致对体素块和模型上的全局日光照射和局部人造照明的有效模拟,而无对照明值的运行时(runtime)计算的任何需要。

11.基于网络的体素世界体积光着色(coloring,上色)系统

除了基础太阳值和局部照明值外,申请人还将局部光的颜色包括在高维体素数据中。将这些局部光颜色值乘以上述WebGL片段着色器中的局部光值,以产生不同颜色的局部照明。

由于颜色值通常由红色、绿色和蓝色(RGB)组成部分组成,因此这些颜色值有可能会在服务器和客户端上消耗大量内存,并导致数据传输速度的显著降低。因此,申请人在本发明的优选实施方案中将减少的原始RGB值引入到有限的216色调色板中,其近似于原色,但是将可能的光颜色值的总数减少到单个字节的可表示范围内。由此,光颜色值可以按每体素一个字节来存储,并且数据大小和传输速度保持足够有效率,以产生表示各种颜色属性或特性的实时交互式体素环境。

12.基于网络的体素世界着色系统

确定适用于体素网孔的每个片段中的每个像素的正确颜色值的过程是复杂的。必须在WebGL程序中正确地计算多个变量并将它们加权,以确保体素呈现系统的一致功能。

申请人已经开发了定制WebGL程序来提供此功能。这些程序提供对基础体素网孔、它们的局部照明和全局照明、局部光颜色和距离模糊的呈现。除了距离模糊之外,任何旨在产生复杂体素数据的呈现的体素呈现环境都需要提供此功能。该程序的核心(不包括距离模糊)以这种方式运行:

vec4 final_color=texture2D(diffuseMap,texCoord0.xy+mod(texCoord0.zw,TILE_SIZE));

float lightCoord=light.y/2.0;

final_color.xyz*=texture2D(lightingMap,vec2(light.x,0.0)).xyz+(lightColor*lightCoord);

gl_FragColor=final_color;

在实施该程序时,有几个要考虑的因素。首先,diffuseMap是体素的面图像的纹理图集。其次,照明图是一维全局光颜色纹理。第三,texCoord0是四分量矢量,其按顺序包含diffuseMap中的体素的面的纹理坐标及以TILE_SIZE的倍数测量的网孔片段的宽度和高度。第四,TILE_SIZE是1/N,其中图集是X和Y轴上都包括N个体素面图像的正方形图像,第五,光是2分量矢量,包含被缩放至0与1之间的太阳光值和局部光值。最后,lightColor是包含局部光的颜色的未压缩的RGB值的3分量矢量。

13.基于网络的交互式体素世界嵌入系统

由于本发明具有在标准现代网络浏览器中加载和呈现体素环境和模型的能力,所以申请人开发了一种系统,其允许使用以下形式的iframe将这些环境嵌入到任何网页中:

<iframe src=″[URL]″frameBorder=″0″></iframe>

其中,[URL]是识别具体体素环境的唯一统一资源定位符(网址)。这导致YouTube或Vimeo视频风格的嵌入式体素环境,用户能够与该嵌入式体素环境交互,并且用户能够以各种方式在该嵌入式体素环境中进行浏览。

14.基于网络的体素世界门户系统

如本文中详细讨论的,本发明针对在无需退出一个体素环境或使用覆盖或其他用户界面控件的情况下允许用户从该环境移到另一个体素环境的系统的开发。该系统允许创建体素世界网络,为用户提供探索性的体验。

门户坐标作为块中的元数据被存储在区域文件中。一旦被加载到网络浏览器中,门户网站就被将其字符导航到与门户坐标相交的位置的用户激活,并且导致区域文件针对目标环境而被加载,然后被插入可见场景,替换当前环境。

现在参照附图的图11,其中示出总体上由附图标记1100表示的对被传输到浏览器的各种体素信息的示例性应用,所述体素信息包括网孔1106、体素数据1108和元数据1110。具体参考元数据1110,总体由附图标记1112表示的该元数据的一部分用于存储用于用户导航的上述门户坐标。

15.基于网络的体素世界分布式事件系统

如上文中详细描述的,体素环境是复杂的,并且是由大量数据和控制数据的加载、卸载和呈现以及各种交互的系统和控制系统组成。此外,应当理解,通过用户与由用户创建的体素结构的交互能够在体素环境中触发事件。所讨论的事件可导致客户端浏览器比如浏览器808中和一个或多个服务器比如服务器804上的系统内的活动。为了便于在该复杂框架内创建和处理定制事件,申请人开发了一种用于体素环境的分布式事件系统。

在这种改进中,事件由中央事件调度系统处理,并且软件组成部分对自身进行注册以监听事件。如本领域技术人员所理解的,事件可以被标记为“局部”或“分布式”,其中分布式事件沿着客户端和服务器之间或服务器和客户端之间的事件流(例如,使用HTML5网络套接字实现的事件流)传播。

现在参照附图的图12,其中示出总体上由附图标记1200表示的示例性分布式事件系统,其中总体上由附图标记1202表示的多个体素网格控制系统驻留在标准网络服务器1204上。当一个上述事件——例如与MMORG中的另一个角色碰撞——发生时,事件涉及体素网格控制系统1202A,则该事件被触发并沿着总体上由附图标记1206表示的事件流传播到总体上由附图标记1210表示的被加载的体素网格控制系统,用于激活总体上由附图标记1210A表示的具体对应事件。应当理解,如本领域所理解的,具有各不相同的触发条件的多种这样的事件能够被如此传播和实现以反映不同的事件。

这种分布式事件系统允许创建任何数量的定制事件并将其在分布式的局部体素环境中进行传播,而不会与被传播的事件的数量和性质或者监听具体事件的组成部分的数量相关地增加整个系统的复杂性。

16.基于网络的体素模型目录系统

为了允许用户选择体素模型以插入到体素环境中,申请人还开发了一种基于网络的体素模型目录系统。这是一种基于Javascript和WebGL的系统,其允许将3维体素模型网孔投影在3维体素环境顶上的二维平面上。

该系统利用放置在相机前面的平坦的矩形网孔,该矩形网孔显示体素模型并且在其他方面是透明的,从而允许体素环境在后面是可见的。

现在参照附图的图13,其中示出总体上由附图标记1300表示的用于创建模型的示例性技术,其中相机1310提供用户的视角。还示出总体上由附图标记1320表示的平坦的矩形网孔或平面,其是总体上由附图标记1330表示的3D投影体素模型的透明2D投影平面。如还示出的,在网孔1320后面存在总体上由附图标记1340表示的3D体素环境。因此,相机1310观看处于期望的体素环境1340中的投影体素模型1320。

17.基于Javascript网络的体素模型缩放系统

需要对一些体素模型进行缩放,以适应体素环境。例如,在标准体素(从用户的角度看)为1立方米的体素环境中,可能需要构造由更小体素组成的家具,以便创建足够的细节来赋予模型可识别的形状和尺寸。

在本发明中,申请人创建了一种在插入到体素环境期间自动缩放体素模型的系统,以便提供由不同大小的体素组成的模型。

块元数据包含对体素模型唯一标识符的参考,其位于块内的局部坐标处,并且占据固定数量的全尺寸体素(通过将模型边界框乘以体素标度来计算)。模型标度总是被计算为1/2ΛΝ(2的N次方之一),其中N是整数值。因此,体素模型可以由大小为全体素尺寸(1)的1/2、1/4、1/8、1/16等的微型体素组成。

18.基于WebGL的体素模型基于射线的呈现系统

除了上述内容之外,在本发明中,申请人还创建了一种允许在表示模型的边界框的网孔内呈现复杂模型的系统。这种方法允许最小化呈现模型所需的顶点数量,代价是在运行时在WebGL程序中执行更多的工作。

在该实施方案中,系统将体素模型加载到三维纹理(或二维纹理阵列)中,创建大小为体素边界框的网孔,并使用WebGL片段着色器来模拟穿过框的光线,该光线与模型相交——其处纹理包含非透明像素。每个像素代表单个体素,所以模型能够在框内缩放。

19.基于网络的Minecraft(我的世界)世界输入系统

如所讨论的,本发明的主要目的之一是改进计算机游戏体验的各个方面,特别是MMORG的各个方面。为此,本发明的各种工具能够用于当前这种游戏中。例如,本发明的系统允许将Minecraft世界输入到引擎(经由网络界面)、转换成上述区域文件系统(带有所包括的网孔)并且随后传送到网络浏览器以供用户查看并与浏览器中的这些世界交互,全部如上文中所详细描述并示出的。

特别地,该系统具有以下能力:读取Minecraft.MCR和.MCA文件以及level.dat文件和设置文件,将该数据加载到我们自己的定制块数据结构中然后输出到我们的区域文件格式。以这种方式,使用本发明的进步,使得在标准的现代网络浏览器中Minecraft世界是可视和交互式的。

20.双模式基于网络的体素世界相机系统

为了允许用户编辑体素环境并且还在这些环境完成时体验这些环境对于其他用户而言看上去是怎样的,申请人还开发了一种在本发明的基于网络的体素环境中起作用的双相机系统,如本文中描述的。用户能够以“制造者模式”移动,其中,重力和碰撞系统被禁用,并且用户能够同时编辑多个体素并访问模型目录以便选择模型并且为环境添加模型,用户还能够在“玩家模式”下移动,其中重力和碰撞系统被启用,并且玩家以第一人称非飞行模式在环境中移动。用户可以通过只按下键盘按钮来在制造者和玩家模式相机之间切换。

21.基于网络的体素世界天空系统

此外,申请人开发了一种复杂的天空系统,以便在基于网络的体素环境比如游戏世界中提供日/夜循环和天气效果。

在一个实施方案中,穹顶形网孔被置于体素环境之上。然后,WebGL顶点和片段着色器基于一组大气变量对该网孔进行着色。通过模拟穿过大气的光来计算天空和太阳的基础颜色。在片段着色器程序中运行的柏林噪声函数(perlin noise functioning)用于模拟云。通过计算从穹顶底部算起的距离并使用2D柏林噪声函数创建起伏的山脉形状来将遥远的山脉添加到穹顶。夜间星星纹理以立方图的形式投影在穹顶上,并且星星纹理的透明度由在浏览器中运行的Javascript程序确定,以使星星在夜晚可见并且在白天不可见。穹顶在日出和日落时在太阳周围被着色,以提供红色的日落和黄色的黎明(尽管能够使用任何颜色)。

现在参照附图的图14,其中示出总体上由附图标记1400表示的示例性计算机系统,其中能够实现并显示本文中详细描述的本发明的各个方面。当然,应当很好地理解,所示出的系统在不同的情况下可能不同,例如,铁杆玩家会具有附加装备比如高级手脚控制系统以引导游戏玩法,以及用于增强可视化的头戴式设备。

计算机系统1400包括显示器1405,总体上由附图标记1410表示的各种图形用户界面或浏览器可以在其上被显示和操作。系统1400包括处理器1415、总体上由附图标记1420表示的RAM或短期存储器、总体上由附图标记1425表示的硬盘或长期存储器。如所讨论的,图形硬件或芯片1430可以具有总体上由附图标记1435表示的其自身的内部存储器。还示出通过线连接的外部存储器1440以及无线连接的外部存储器1445。

由于连接性是重要的——无论是对于电子邮件还是对于玩MMORG而言,因此系统1400通过总体上由附图标记1450表示的因特网连接到外部节点1455或交换机1460以与世界连接。还示出用于数据和命令输入的键盘1465和鼠标1470。

前面的描述是关于用于实施本发明的优选实施方案,并且本发明的范围不必受这些描述限制。应当理解,本文所引述的所有文章、参考文献和引文的全部内容通过引用被明确地并入。本发明的范围由下面的权利要求限定。

29页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种视频生成方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!