动态3d环境生成

文档序号:197109 发布日期:2021-11-02 浏览:34次 >En<

阅读说明:本技术 动态3d环境生成 (Dynamic 3D environment generation ) 是由 雅伊梅·格里泽默 马克·波托夫 尼克·古莱兹安 兰德尔·谢弗 马特·萨拉达伊 乔·菲洛梅纳 于 2020-03-10 设计创作,主要内容包括:在一种生成虚拟3D环境(132)的计算机实现的方法中,提供了插槽(120)的层次结构。插槽被组织成从一个或多个顶层插槽(120A)到一个或多个底层插槽(150)的多层。每个插槽定义3D环境的一部分并且包括多个布局(123)。非底层插槽(120A、120B)定义来自下层的至少一个插槽(120B、120C)在3D环境的所述部分内的位置。一个或多个顶层插槽定位(152)在3D环境中。通过随机选择顶层插槽和下层插槽的多个布局中的一个,并且用一个或多个对象填充每个所选择的布局来生成(154)3D环境(124)。渲染(156)3D环境以用于显示。(In a computer-implemented method of generating a virtual 3D environment (132), a hierarchy of slots (120) is provided. The slots are organized in multiple layers from one or more top slots (120A) to one or more bottom slots (150). Each slot defines a portion of the 3D environment and includes a plurality of layouts (123). The non-underlying socket (120A, 120B) defines a location of at least one socket (120B, 120C) from the underlying layer within the portion of the 3D environment. One or more top-level sockets are positioned (152) in a 3D environment. A3D environment (124) is generated (154) by randomly selecting one of a plurality of layouts of a top tier slot and a lower tier slot, and populating each selected layout with one or more objects. Rendering (156) the 3D environment for display.)

动态3D环境生成

技术领域

本公开的实施例涉及虚拟三维(3D)环境的生成,并且更具体地,涉及具有随机化特征的动态虚拟3D环境的生成。

背景技术

3D(3D)视频游戏,如使命召唤或Fortnite,让玩家体验虚拟3D环境或游戏世界,就好像他们通过在场者的眼睛观看一样。这样的游戏世界在计算机或电视屏幕上显示为平面多边形的集合,每个多边形表示一个对象的面,例如墙,并涂成类似于混凝土、砖块或其他一些对象。例如,一个非常简单的矩形房子可能有四个多边形作为它的四面墙,四个多边形作为它的屋顶,一个多边形作为它的地板。墙壁多边形可能被涂成像灰泥,屋顶多边形可能被涂成像屋顶瓦,而地板多边形被涂成像地毯。可以在墙多边形内插入更多多边形以创建门窗。

游戏创作者设计这些游戏世界3D环境很像建筑师设计建筑。他们可以在二维平面上画线来表示墙壁,或者他们可以在三维空间中绘制每个多边形的所有边。游戏创作者使用称为“编辑器”的特殊软件将这些多边形放置在游戏世界中,组装建筑、街道、车辆以及玩家可见的任何其他事物。现代3D游戏一次在屏幕上显示数万个这样的多边形,以使游戏世界看起来尽可能逼真。

设计和构建这些3D环境极其耗时。因此,对于使用这些传统方法创建的游戏,游戏世界的物理结构通常在构建后不会改变。因此,每次重新生成3D环境时,它基本上保持不变。

3D视频游戏旨在为玩家提供一系列挑战以在游戏世界中完成。玩家通常无法在第一次尝试时完成游戏的每个挑战或级别。在某些情况下,玩家可能需要进行数十次尝试才能完成挑战。在传统游戏中,这意味着玩家在尝试完成挑战时将多次穿越相同、一样的游戏世界或游戏世界部分。这会变得乏味并减少悬念和享受。

最近,一些视频游戏,例如“无人深空”,已经创造了允许计算机算法生成游戏世界地形的技术,而不是要求人类手动设计。这种方法称为“程序生成”。在视频游戏使用程序生成在游戏世界中创建地形之前,其他软件(例如Bryce Terrain Editor)允许艺术家程序生成艺术品和电影的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环境用于显示。

提供本发明内容以简化形式介绍在下面的

具体实施方式

中进一步描述的概念的选择。本发明内容无意确定要求保护的主题的关键特征或基本特征,也无意帮助确定要求保护的主题的范围。要求保护的主题不限于解决背景技术中提到的任何或所有缺点的实现方式。

附图说明

图1是图示合适的计算设备或环境的一般化示例的简化图,其中可以实现所描述的方法、实施例、技术和例如与动态虚拟3D环境的生成相关的技术。

图2是根据本公开的实施例的环境生成器模块的示例的简化图。

图3是根据本公开的实施例的由多个分层组织的插槽表示的虚拟3D环境的体积或部分的示例的简化框图。

图4A和4B是根据本公开的实施例的区块插槽的示例性布局的简化图。

图5是根据本公开的实施例的地块插槽的示例性布局的简化图。

图6是根据本公开的实施例的建筑插槽的示例性布局的简化图。

图7是根据本公开的实施例的房间插槽的示例性布局的简化图。

图8是根据本公开的实施例的家具插槽的示例性布局的简化图。

图9是示出根据本公开的实施例的生成3D环境的一部分的示例性方法的流程图。

图10是图示根据本公开的实施例的定义3D环境的种子到多个客户端计算设备的分布的简化图。

具体实施方式

以下参照附图更全面地描述本公开的实施例。使用相同或相似的附图标记标识的元素是指相同或相似的元素。然而,本公开的各种实施例可以以许多不同的形式体现并且不应被解释为限于本文阐述的实施例。相反,提供这些实施例是为了使本公开彻底和完整,并将本公开的范围充分传达给本领域技术人员。

本公开的实施例一般涉及计算机化的方法或软件和计算机系统,被配置为执行用于在显示器上设计和生成动态虚拟3D环境的软件。图1是图示合适的计算设备或系统或计算环境100的一般化示例的简化图,其中可以实现所描述的方法、实施例、技术和例如与虚拟3D环境的生成相关的技术。计算环境100示例并不旨在对本文公开的技术的使用范围或功能性提出任何限制,因为每种技术可以在不同的通用或专用计算环境中实现。例如,每个公开的技术可以用其他计算机系统配置来实现,包括多处理器系统、基于微处理器或可编程的消费电子设备、嵌入式平台、网络计算机、视频游戏控制台、游戏引擎等。每个公开的技术还可以在分布式计算环境中实践,其中任务由通过通信连接或网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程内存存储设备中。

计算环境100可以包括至少一个处理器或处理单元102和存储器104,其可以表示本地或网络可访问的存储器。处理器102执行计算机可执行指令并且可以是真实的或虚拟的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力,因此,多个处理器可以同时运行。存储器104是非暂时性的并且可以是易失性存储器(例如寄存器、高速缓存、RAM)、非易失性存储器(例如ROM、EEPROM、闪存等)或两者的某种组合。存储器104存储诸如环境生成器模块之类的软件106,当由诸如处理器102之类的处理器执行时,该软件106可以实现本文描述的实施例和功能中的一个或多个。

计算环境100可以包括附加特征,例如数据存储108、一个或多个输入设备110、一个或多个输出设备112和一个或多个通信连接114。互连机制(未示出),例如总线、控制器或网络,可用于互连计算环境100的组件。通常,操作系统软件(未示出)提供用于在计算环境100中执行代码的操作环境,并协调计算环境100的组件的活动。

数据存储108和存储器104可以是可移除的或不可移除的,并且可以包括选定形式的非暂时性机器可读介质。通常,机器可读介质包括磁盘、磁带或卡带、非易失性固态存储器、CD-ROM、CD-RW、DVD、磁带和光学数据存储设备,或任何其他机器可读的、非暂时性介质,其可以用于存储信息并且可以在计算环境100内被访问。数据存储108可以存储软件或代码106,其可以实现本文描述的实施例。

数据存储108还可以分布在网络上,从而以分布式方式存储和执行软件指令。在其他实施例中,这些操作中的一些可以由包含硬连线逻辑的特定硬件组件来执行。那些操作可以替代地由编程的数据处理组件和固定的硬连线电路组件的任何组合来执行。

输入设备110可以包括一个或多个触摸输入设备,例如键盘、小键盘、鼠标、笔、操纵杆、触摸屏、触摸板或轨迹球、语音输入设备、手势识别设备输出设备、扫描设备、麦克风或其他声音换能器或向计算环境100提供输入的其他设备。输出设备112可包括显示器,该显示器可用于显示图形用户界面以进行编辑、创建,和/或查看3D环境,诸如根据本公开的实施例形成的那样。可选的输出设备112还包括打印机、扬声器、CD刻录机或提供来自计算环境100的输出的其他设备。

通信连接114使能能够通过通信介质(例如,连接网络)到另一个计算实体(例如服务器、客户端计算设备、数据库和/或其他设备)的有线和/或无线通信。例如,通信介质可用于在调制数据信号中传送诸如计算机可执行指令、压缩图形信息和/或其他数据之类的信息。

图2是根据本公开的实施例的由代码或软件106定义的环境生成器模块116的示例的简化图。然而,应当理解,所示模块116可以由在相同或不同计算设备上执行的不同软件程序来实现。

如上所述,环境生成器模块116的实施例允许游戏设计者和艺术家设计3D环境(例如3D游戏世界)的定制组件或特征,包括每次生成或显示3D环境时改变的随机特征,例如每次玩游戏或玩游戏的级别。可以随机化的3D环境特征的示例包括城市街区、建筑、建筑的内部和外部表面、建筑的或地板层、房间、家具套件、游戏角色、游戏逻辑、人造室外对象例如街道和围栏、以及自然的户外对象例如树木和灌木、和/或3D游戏世界环境的其他特征。设计者还可以指定3D环境中可能随机变化的部分以及每一代3D环境保持不变的部分。因此,游戏设计者可能能够在3D环境中实现多个随机变化的特征,3D环境的范围从沙发的结构到城市街区内整个建筑的位置。

动态虚拟3D环境可以使用插槽120(例如,模板)来设计或构建,插槽120(例如,模板)定义了可以包含在虚拟3D环境内的任何单个3D空间体积内的对象组(例如,对象的列表)。例如,每个空间体积可以大到整个城市街区,也可以小到厨房的桌子。插槽120是分层组织的,这意味着高级(hign-level)或顶层(top tier)插槽(block),例如城市街区,包含较小插槽的层次结构,其定义了顶层插槽内的虚拟3D环境部分的越来越精细的细节。因此,顶层插槽包括下层插槽,而下层插槽又可以包括更下层插槽等。这可以继续直到到达最后一层插槽或底层插槽,定义了在与底层插槽相对应的3D环境部分中渲染的最终对象或Actor(角色)。

环境生成器模块116的编辑器工具122可用于使用插槽120创建和编辑虚拟3D环境(例如,3D环境的架构的布局)。在一些实施例中,编辑器工具122可用于编辑或设计插槽120、编辑或设计与插槽120相关联的布局123、编辑或设计对象124、将对象124与插槽120相关联、编辑游戏玩法特征126(例如,任务对象等),将游戏玩法特征与插槽120相关联,和/或编辑或设计虚拟3D环境的其他特征。创建的虚拟3D环境可以由编辑器作为3D环境包128输出或保存到存储器104。

生成器130基于3D环境包128操作以生成虚拟3D环境132。在一个实施例中,生成器130随机化由插槽120、对象124、游戏玩法特征126和/或3D环境包的其他组件定义的特征,如下文更详细讨论的,以生成3D环境132。生成器130可以用它自己的软件代码补充或替换编辑器工具122的某些软件代码,因此例如,每次玩游戏时,给定游戏的虚拟3D环境或游戏世界的设计都来自生成器130,而不是来自编辑器工具122。

3D环境渲染引擎134操作以在显示器112上渲染3D环境132,模拟游戏世界内的物理,给予游戏世界内的非玩家角色以人工智能,允许人类玩家一起游戏或对抗(例如,通过设备网络)和/或其他功能,以将生成的3D环境132转换为功能游戏。渲染引擎134可以使用传统的3D游戏生成引擎来实现,例如虚幻引擎4(UE4)。

在一些实施例中,3D环境生成模块116可以与现有的3D游戏生成引擎集成,该引擎是一组商用软件库,可在电视、计算机或智能手机屏幕上渲染图形,模拟游戏世界中的物理,给予游戏世界内的非玩家角色以人工智能,并允许人类玩家通过设备网络一起游戏或对抗。如下所述,3D环境生成模块可以集成在虚幻引擎4(UE4)中,或类似地在其他3D游戏生成引擎中实现。

与每个插槽120相关联的一个或多个布局123提供了由插槽120占据的3D环境部分的一种可能设计的独特模板。而插槽120可以定义一组关联对象124和可能包含在与插槽120相对应的三维空间体积内的下层(子)插槽120,每个布局123描述这些对象124和下层插槽120中的每个在该三维体积内的位置。换句话说,布局123示出了每个下层插槽120或对象124在插槽120的三维部分内的物理位置,例如房间位于建筑内的位置或家具位于房间内的位置。例如,定义建筑环境的建筑插槽可以包括定义建筑的地板层或楼层的子插槽(往下第一层),其可以包括定义房间的子插槽(往下第二层),其可以包括子插槽(往下第三层),它可以是定义一个或多个最终对象或Actor(例如桌子和椅子)的底部插槽。

图3是根据本公开的实施例的由多个分层组织的插槽120表示或定义的虚拟3D环境132的体积或部分140(以下称为“部分”)的示例的简化框图。每个插槽120定义3D环境132的对应部分。因此,每个下层插槽120定义下一上层插槽120的体积或部分140的子集。

非底层插槽120使用一个或多个相关联的布局123来定义它们的3D环境的部分140,每个布局定义来自下层的至少一个插槽120在3D环境的部分140内的位置。如图3所示,顶层插槽120A使用相关联的布局123定义了3D环境132的体积或部分140A,布局123定义一个或多个下层插槽(例如插槽120B)在部分140A内的位置,如图3所示。同样,插槽120B使用定义一个或多个下层插槽(例如插槽120C)在部分140B内的位置的相关联的布局123来在部分140A内定义3D环境132的体积或部分140B。与插槽120C相关联的布局123定义一个或多个下层插槽和对象在虚拟3D环境132的部分140B的部分140C内的位置。插槽120的该层次结构可以扩展到附加的下层插槽120,其具有定义上层插槽120的部分或子集直到到达底层插槽的布局。底层插槽不包括下层插槽的布局,并且完成了虚拟3D环境132的那个特定子集的定义。

每次生成3D环境时,生成器130可以随机选择每个插槽的独特布局123之一以形成虚拟3D环境132用于在显示器上渲染。因此,例如,每次渲染虚拟3D环境132时,例如在玩游戏时,3D环境132的特征可以基于随机选择至少部分地定义虚拟3D环境132的插槽120和对象124的布局123而随机改变。

如上所述,除了由多个独特布局123提供的多样性之外,与每个插槽120相关联的对象124(家具、墙壁、地板等)可以包括各种相关联的选项,例如各种表面或材料选项,以及进一步定义虚拟3D环境132的其他选项。例如,墙壁对象可以被“涂漆”以类似于灰泥、砖或混凝土块。类似地,对象124可以包括对象124的不同设计变体。例如,剑对象可以具有定义剑的设计(尺寸、形状、颜色、表面纹理等)的关联选项,灯可以具有定义灯设计的各种关联选项(尺寸、照明元件的数量、形状、装饰特征等)。因此,插槽120的一个或多个对象124可以配置有关联选项,这些关联选项可以由生成器130随机化以在每次生成或渲染3D环境132用于显示时提供对象124的不同变化。

具有多个布局123的插槽120可以由创建者指定为具有在生成3D环境132时(例如,每次玩游戏级别时)随机选择的特征的动态插槽。因此,3D环境可以被重新生成多次(例如,超过100次),同时每次都创建独特的3D环境132。

插槽120也可以被指定为静态插槽,其具有固定布局和固定对象,当生成器130生成3D环境132时,不对这些固定对象进行随机化。这些插槽120可以例如仅在编辑器时间期间生成,有效地“烘焙”具有期望资产或对象124和每次生成3D环境132的相应部分时保持相同的布局123的插槽120。因此,静态插槽120类似于传统的3D环境生成实践。在一些实施例中,将具有多个布局123的插槽120和具有多个关联选项的对象124指定为静态插槽120,冻结插槽120的单个布局。另外,插槽120的静态指定可以冻结对象124和其他功能以只具有一个配置。

虽然生成器130的后端代码可以使用一个标准化系统来生成所有分层插槽120(例如,它是插槽层不可知的并且不依赖于层的类型),但是它有助于将插槽120的不同楼层分解为具有可与现实世界对应的描述的特定层(layer)。以下是根据本公开的实施例的分层插槽120的示例性列表。

区块插槽可以是定义可随机化3D环境132的插槽120的层次结构内的顶层插槽。在一些实施例中,区块插槽表示虚拟3D环境132的区块部分(例如,体积)内的城市街区或游戏的游戏玩法级别。因此,区块插槽可以定义一个完整的城市街区或完整的游戏玩法级别,玩家必须通过它来完成游戏级别。每个区块插槽包括定义下层插槽和/或对象在区块部分内的位置的布局123,例如地块插槽或其他下层插槽在区块部分的3D体积内的布局。

地块插槽可以在相对于区块插槽的下层中。地块插槽定义了3D环境132的地块部分细分,例如区块插槽的区块部分的细分。地块插槽可以定义3D环境132的不同体积,例如定义3D环境的相对较小部分的小地块插槽,定义3D环境的相对较大部分的大地块插槽,以及定义介于由小地块插槽和大地块插槽定义的部分之间的3D环境的一部分的中等地块插槽。地块插槽还可以定义3D环境的对应地块部分内的特定特征,例如道路(道路地块插槽)、巷道(巷道地块插槽)、人行道(人行道地块插槽)和其他特征。每个地块插槽包括一个或多个布局123,每个布局定义了下层插槽和/或对象在对应地块部分的3D体积内的独特位置,例如建筑插槽在地块部分的3D体积内的布局。

地块插槽的对象124可以被固定以提供地块部分的固定特征,每次在3D环境中生成或渲染地块部分时,该特征保持相同。此外,地块插槽的对象可以是动态的,并且具有相关联的选项或特征,允许对象随机化以在每次生成或渲染3D环境时创建地块部分的不同外观。例如,地块插槽可以包括与3D环境中的道路相对应的道路对象,该道路可以采取柏油路、水泥路、碎石路或其他类型的道路的形式。

建筑插槽用于定义或表示虚拟3D环境132的建筑部分细分内的建筑结构。建筑插槽可以位于相对于地块插槽的下层中,并且定义地块插槽的地块部分内的建筑结构。建筑插槽可以定义或表示建筑部分内不同类型的建筑结构,例如完整的建筑、车棚(车棚建筑插槽)、桥梁(桥梁建筑插槽)、房屋(房屋建筑插槽)和其他类型的建筑结构。每个建筑插槽包括一个或多个布局123,每个布局定义下层插槽和/或对象在对应建筑部分的3D体积内的独特位置,例如楼层插槽或楼层插槽和/或房间插槽。

建筑插槽的关联对象124可以被固定以提供建筑部分的固定特征,这些特征在每次在3D环境132中生成或渲染建筑时保持相同。此外,建筑插槽的对象可以是动态的并且具有相关联的选项或特征,这些选项或特征允许对象在每次生成或渲染3D环境132的建筑部分时被随机化以创建建筑结构的不同外观。例如,建筑插槽的关联对象124的示例可以包括各自定义建筑的独特外部形状的外部形状对象、各自定义建筑外部的独特外观的外观对象、和/或各自定义建筑外部的独特窗户的一个或多个窗户对象。

地板层或楼层插槽(以下称为“楼层插槽”)用于定义或表示虚拟3D环境132的楼层部分细分内的楼层。每个楼层插槽可以位于相对于建筑插槽的下层中,并且定义建筑插槽的建筑部分的楼层的特征。每个楼层插槽包括一个或多个布局123,每个布局定义下层插槽和/或对象在对应楼层部分的3D体积内的独特位置,例如房间插槽。

楼层插槽的关联对象124可以被固定以提供楼层部分的固定特征,该特征在每次在3D环境132中生成或渲染楼层时保持相同。此外,楼层插槽的对象可以是动态的并且具有允许对象随机化以在每次生成或渲染3D环境132时创建楼层部分的不同外观的关联选项或特征。例如,楼层插槽的关联对象的示例可以包括各自定义楼层部分内的独特的楼梯的楼梯对象,和/或各自定义楼层部分内的独特的走廊的一个或多个走廊对象。

房间插槽用于定义或表示虚拟3D环境的房间部分细分内的房间。每个房间插槽可以在相对于楼层插槽的下层并且定义楼层插槽的楼层部分的房间的特征。每个房间插槽包括一个或多个布局,每个布局定义一个或多个下层插槽和/或对象在相应房间部分的3D体积内的独特位置,例如家具插槽。

房间插槽可以定义3D环境132的不同体积,例如小房间插槽定义3D环境132的相对较小的房间部分,大房间插槽定义3D环境132的相对较大的房间部分,以及定义介于小房间插槽和大房间插槽定义的部分之间的3D环境132的房间部分的中等房间插槽。房间插槽也可以基于将在3D环境132的房间部分内描绘的房间类型进行分类。例如,办公室房间插槽可以包括表示或定义具有典型办公室特征的房间设计的布局123,卧室房间插槽可以包括表示或定义具有典型卧室特征的房间设计的布局123,厨房房间插槽可以包括表示或定义具有典型厨房特征的房间设计的布局123,餐厅可以包括表示或定义具有典型餐厅特征的房间设计的布局123。

房间插槽的关联对象124可以被固定以提供房间部分的固定特征,该房间部分的固定特征在每次在3D环境132中生成或渲染房间部分时保持相同。此外,房间插槽的对象124可以是动态的并具有允许对象随机化以在每次生成或渲染3D环境132时创建房间部分的不同外观的关联选项或特征。房间插槽的关联对象124的示例可以包括各自定义房间的独特的门的门对象、各自定义房间的墙面的独特类型的墙壁对象、各自定义房间的独特类型的天花板的天花板对象、各自定义房间的独特的光照特征的光照对象、各自定义房间的独特地板的地板对象,和/或各自定义房间的独特的窗户的窗户对象。

家具插槽用于定义或表示3D环境132的家具部分细分内的家具。家具插槽可以在相对于房间插槽的下层中,并且定义房间插槽的房间部分内的家具对象。每个家具插槽可以包括一个或多个布局123,每个布局定义一个或多个下层插槽和/或在对应家具部分的3D体积内的对象的独特位置。家具插槽还可以基于将在3D环境132的家具部分内描绘的家具类型进行分类。例如,办公家具插槽可以包括表示或定义一组典型的办公家具(例如,书桌、办公椅、桌子等),卧室家具插槽可以包括表示或定义一组典型的卧室家具(例如,床、茶几、梳妆台、椅子等)的布局,厨房家具插槽可以包括表示或定义一组典型的厨房家具(例如,餐桌、椅子、自助餐桌、柜台、橱柜等)的布局,餐厅家具插槽可以包括表示或定义一组典型的餐厅家具(例如,餐桌、椅子等)等的布局。

家具插槽的关联对象124可以被固定以提供家具部分的固定特征,每次在3D环境132中生成或渲染家具部分时,这些特征保持不变。此外,家具插槽的对象可以是动态的并且具有允许对象随机化以在每次生成或渲染3D环境132时创建家具部分的不同外观的关联选项或特征,例如不同类型的家具件或一组家具件(例如,不同的椅子或桌子设计),和/或家具的不同外观(例如,不同的颜色、质地等)。

家具插槽的关联对象124的示例可以包括表示或定义独特床的床对象、定义或表示独特椅子的椅子对象、定义或表示独特书桌的书桌对象、定义或表示独特地毯的地毯对象、定义或表示独特梳妆台的梳妆台对象,和/或定义或表示独特床和梳妆台套件的床和梳妆台对象。例如,卧室家具插槽可以包括具有可随机化关联家具对象的布局,例如“C4床”套件、“床和梳妆台”套件、“空卧室”套件等,并且当生成或渲染3D环境的家具部分时,会在对应的家具插槽中产生这些关联家具对象之一。

对象124通常是可以包括在插槽120的布局123内的底层或最终元素。对象124可以用于定义3D环境132的任何物品,并且可以包括当生成3D环境132时被随机选择的相关联的选项,如上所述。因此,建筑插槽的墙壁对象可以是具有关联选项的动态对象,例如涂漆表面、灰泥表面和其他表面类型。当生成或渲染3D环境132时,随机选择墙壁对象的关联选项之一,并且生成具有带选定关联选项的墙壁(例如,灰泥表面)的建筑。

类似地,可以与家具插槽关联的椅子对象或书桌对象可以包括多个关联的椅子和书桌设计。当生成或渲染3D环境132时,随机选择椅子对象或书桌对象的关联选项之一,并且例如生成或渲染具有带选定的关联选项的椅子或书桌的家具部分(例如,躺椅、大办公书桌)。

生成插槽(spawn slot)也可以是可以包括在插槽120的布局123中的底层或最终Actor插槽。生成插槽对应于与游戏玩法相关的生成对象(spawning object),例如敌人,或任务目标或对象。因此,生成插槽可以定义创建游戏玩法挑战所需的角色、对象和逻辑。例如,生成插槽可以包含房间内可能存在的可能敌人类型的列表,以及他们如何与环境、其他角色和玩家互动。因此,例如,生成插槽可能包含一武器位,当玩家进入房间时会自动触发。

图4A和4B的简化图示中示出了区块槽120A的示例性布局123A,其图示了地块槽120B在3D环境132的区块槽部分140A内的定位。如上所述,可选的地块插槽120B包括小地块插槽、中地块插槽(所示)和大地块插槽、以及道路地块插槽、巷道地块插槽(所示)和可用于在对应于区块槽120A的3D环境132的区块部分140A内定义一个或多个地块部分140B的其他类型的地块槽。图4A的地块插槽120A的布局123A包括矩形地块中的四个中等地块插槽120B-1和巷道地块插槽120B-2,而图4B的布局定义了四个中等地块插槽120B-1的区块部分140A(例如,方形块)。区块插槽120A可以包括这些和其他布局。

图5是图4A和4B的中等地块插槽120B-1之一的布局123B的示例的简化图,其包括在地块部分140B内呈中型房屋建筑插槽120C-1形式的一对建筑插槽120C。可以包括在中等地块插槽120B-1的布局123B中的其他建筑插槽120C包括小型和大型房屋建筑插槽、小型、中型和大型建筑插槽以及可以用于进一步定义地块部分140B的其他插槽。因此,地块插槽120B的布局123B通常定义了对应于地块插槽120B的3D环境132的部分140B内的每个建筑的大小和位置。此外,例如,地块插槽120B可以确定外部和非建筑对象124和最终Actor,包括环境声音、光源和3D环境132的其他对象或特性。

图6是对应于建筑部分的建筑插槽120C的布局123C的示例的简化图,例如图5中所示的中型房屋插槽120C-1之一。在图6的示例中,建筑插槽120C-1包括多个楼层,因此,建筑插槽120C-1的图示楼层包括具有布局123D的楼层插槽120D,该布局定义了多个房间插槽120E的位置,包括楼层部分140D内的中等房间插槽120E-1和小房间插槽120E-2。楼层插槽120D(或建筑插槽120C-1)的布局123D可以包括预定义的静态特征或对象和空间,例如连接不同楼层或楼层插槽120D的楼梯间144、开放区域146,并且其他特征可以包括在建筑的楼层中。楼层插槽120D的布局123D还可以包括用于任何非房间区域的最终对象或Actor、游戏逻辑包括用于房间插槽外区域的覆盖物和人工智能节点、房间插槽之间的连接路径以及可以形成完全的虚拟3D环境132的其他特征。

图7是诸如图6的中型房间插槽120E-1之类的房间插槽120E的示例性布局123E的简化图。房间插槽布局123E可以包括家具插槽,例如家具插槽120F,其定义了3D环境132的一部分140F。房间插槽120e包括用于固定或动态对象124的布局123E,例如橱柜家具124A。此外,房间插槽布局123E可以包括房间部分140E的入口点和出口点148、包括人工智能节点和房间部分140E内的覆盖节点149的游戏逻辑、其他对象和最终Actor。

图8是位于对应房间插槽120E内的家具插槽(例如图7的家具插槽120F)的示例性布局123F的简化图。布局123F包括家具对象124,例如桌子124B、椅子124C、床124D和茶几124E,它们可以被随机化为具有不同的关联对象选项,如上所述。布局123F还可以包括其他对象和最终Actor、以及游戏逻辑,该游戏逻辑包括与家具对象相关联的覆盖物和人工智能节点。

用于设计3D游戏及其环境的常规技术包括在整个3D游戏环境中放置“任务对象”。任务对象告诉游戏在哪里放置敌人位置、诱杀装置、武器缓存、高价值目标、任务目标等。通常,任务对象是由游戏设计者精心规划和放置的,以优化玩家的体验。但是,显然,如果每次玩游戏时这些环境都发生变化,那么设计者就无法将任务对象精确地放置在环境中。

本公开的实施例允许游戏设计者向任务对象分配属性和规则,给予每个任务对象其自己的智能,因此每次随机生成或渲染环境132时,每个任务对象都知道如何将自己放置在3D游戏环境132内。在一些实施例中,通过使用编辑器工具122为每个游戏级别分配规则和属性,例如通过合适的界面(例如,弹出菜单等),为每个游戏级别定义任务对象。这些规则和属性告诉系统任务对象必须包含在哪种房间或对象中,它必须与其他架构或其他任务对象相距多远,和/或其他特征。

例如,如果玩家的任务目标是定位和恢复秘密文件,则任务对象的规则可以指定该文件必须位于书桌内的锁定抽屉中。当游戏运行(例如,由处理器执行)时,将当前级别的任务对象规则应用于具有基于插槽120和对象124的随机特征的生成3D环境132,如上所述,以随机确定文档将位于生成或渲染的3D环境132中的哪个书桌对象中。

图9是图示根据本公开的实施例的生成虚拟3D环境的至少一部分的计算机实现的方法的示例的流程图。这个方法可以响应于环境生成模块116或使用一个或多个处理器的其他代码的执行来实现。

在方法的150处,可以提供插槽120的层次结构,如图2所示。插槽120根据上述一个或多个实施例形成。例如,插槽120可以分层地组织成从一个或多个顶层插槽到一个或多个底层插槽的多层,并且每个插槽120可以定义3D环境132的一部分并且包括一个或多个布局123。非底层插槽的布局123定义来自下层的至少一个插槽120在由非底层插槽定义的3D环境132的部分内的位置。

可以使用3D生成器模块的编辑器工具122来设计或创建动态虚拟3D环境。例如,在方法的152处,设计者可以使用编辑器工具122将顶层插槽120之一定位在显示器(例如,图1的显示器(输出设备)112)上的3D环境的设计者视图内。这可能涉及,例如,从一组独特的预定义区块插槽中选择区块插槽120A,并使用传统技术——例如拖动从区块插槽列表中选择的区块插槽并将选择的区块插槽放置在3D环境中的所需位置——来将选择的区块插槽放置在3D环境的设计者视图内(例如图4A和4B)。

在一些实施例中,编辑器工具122允许设计者在所选择的插槽被放置在3D环境的设计者视图中之前或之后修改、复制、重命名预定义插槽120和/或对预定义插槽120执行其他动作。例如,设计者可以调整(例如,修改、添加或删除)顶层或下层插槽中的布局123,调整下层插槽(例如,插槽类型,例如小、中或大房间、插槽指定为动态或静态等),使用编辑器工具122调整在插槽120中可用或与插槽120相关联的对象124,和/或调整上述插槽120的其他特征。此外,设计者可以选择和使用编辑器工具122将游戏玩法特征126添加到3D环境,例如任务对象。创建的动态虚拟3D环境可以作为3D环境包128(图2)保存到存储器(例如,存储器104)。

在方法的154处,例如在创建动态3D环境包128之后,模块116的生成器130可以生成具有随机化特征的3D环境132。在一些实施例中,如上所述,这涉及通过随机选择包128内定义的顶层插槽和包括在顶层插槽内的下层插槽的多个布局123中的一个,并用一个或多个插槽120和/或布置在选择的布局中的与每个插槽相关联的对象124填充每个选择的布局,来处理3D环境包128。

生成器130还可删除未被选择用于形成最终3D环境132的非游戏玩法插槽120、对象124和Actor以减少3D环境的数据文件。这减少了生成的虚拟3D环境132的数据大小。

生成器130还可以运行代码以根据常规技术为3D环境132和链接覆盖节点添加导航网格或“NavMesh”。导航网格是在形成游戏世界的整个3D环境132中放置的一组位置,其通知由计算机控制的友方和敌方角色(“AI”角色)如何在游戏世界中导航。此外,3D环境132的区域可以通过使用传统技术链接3D环境132的部分(例如,城市街区)的“线连接点”来连结。此外,可以使用常规技术进行光照计算以确定如何在3D环境132中的所有事物上动态地放置光和阴影。

在方法的156处,渲染具有随机化特征的3D环境132用于显示,例如在图1的显示器(输出设备)112上,使用合适的渲染引擎134。在一些实施例中,例如,在3D视频游戏(例如类似于Fortnite的游戏)的执行期间生成(步骤154)和渲染(步骤156)3D环境132。

3D环境132也可以响应于重玩游戏级别或其中必须随后重新生成3D环境132的其他实例而生成。3D环境132的这种重新生成可以包括步骤154的重复,从而由于基于3D环境包128的3D环境132的特征的随机化,导致生成独特的3D环境132。结果,基于根据方法步骤150、152、154和156生成和渲染的第一3D环境,可以在显示器112上显示第一3D环境132。随后,可以使用3D环境包128基于方法步骤154的第二次执行而生成不同于第一3D环境的第二3D环境,并且响应于步骤156的执行而渲染以在显示器112上显示。可以重复该过程以生成和显示许多独特的虚拟3D环境132。

在所述方法的步骤154中随机化的3D环境132的特征包括一个或多个上述可随机化特征,例如对于游戏的每个级别。例如,随机特征可以包括:

-具有随机布局的地块和/或路径的城市街区;

-城市街区内具有随机建筑布局的地块;

-地块内具有随机的楼层或楼层布局的建筑;

-建筑内具有随机房间布局的楼层或楼层;

-建筑内具有随机的家具布局的房间;以及/或

-房间内具有随机的家具布局的家具套件。

3D环境的随机化特征,例如对于游戏的每个级别,还可以包括,例如:

-随机对象(例如,最终Actor、物品类型等);以及/或

-与对象相关的随机选项(例如,对象设计、表面处理等)。

随机特征还可以包括随机游戏玩法特征,例如对于游戏的每个级别,例如由生成插槽指定的,其可以包括例如:

-随机游戏角色(例如,敌人);

-与环境、其他游戏角色和/或玩家的随机游戏角色动作;

-随机游戏动作(例如,游戏动作的触发器、武器安置);以及/或

-玩家的随机任务目标

-随机任务对象(例如,任务对象的位置)。

当在3D环境132内生成室外环境时可以采用类似的技术。例如,城市区块插槽可以提供室外对象插槽的布局,例如树木、灌木和草。树插槽可以包括几种不同类型的树,这些树可以在3D环境生成时随机化。类似地,灌木和草插槽可以每个包括灌木和草的若干变体,它们可以在3D环境生成时随机化。

在一些实施例中,3D环境的生成可以使用服务器通过网络生成。游戏的3D环境132的渲染可以是确定性的,例如通过使用变异种子算法。这确保了可以使用相同的种子多次生成3D环境并获得完全相同的结果。

因此,用于显示的3D环境132的渲染(步骤156)可以包括生成定义3D环境的数据种子。然后可以将种子传输到多个客户端计算设备。例如,种子160可以由服务器166通过网络164传输到客户端计算设备162,如图10的简化图中所示。每个客户端计算设备162对3D环境的显示可以是根据常规技术使用种子160同步。这允许多个玩家(在客户端计算设备上执行游戏)在玩相同游戏的同时体验相同的3D环境132。在客户端设备162处生成动态3D环境之后,可以从客户端设备162强制删除复制的对象以确保不创建副本。

如上所述,在一个示例性实施例中,3D环境生成模块116可以集成在UE4内以允许游戏开发者使用虚幻引擎的编辑工具来设计随机游戏级别的布局,其可以由编辑器工具122表示(图2),并且类似于建筑师可能使用CAD软件设计建筑的方式。此外,3D环境生成模块116的实施例还可以修改Unreal Engine(虚幻引擎)技术以允许这些随机化级别作为3D虚拟环境显示在屏幕上、包含计算机控制的角色、对环境事件做出响应以及执行其他与游戏相关的功能.

3D环境生成模块116的实施例还可以利用“Actor”的核心UE4概念用于其实现。UE4中的“Actor”既可以表示3D虚拟环境132中的现实世界对象124,例如墙壁、一件家具、建筑或角色,也可以表示非视觉实体,例如游戏事件触发器、计算机控制的敌人生成点或计算机控制的角色在3D游戏环境中导航所需的信息。从技术/编程的角度来看,Actor被实现为单个面向对象的实体,在本文通常被称为对象,具有对许多不同类型的Actor有用的一组特征。

3D环境生成模块116的实施例还可以利用UE4的能力来支持称为“继承”的面向对象编程技术,其创建具有与Actor相同的行为、数据和特征的子Actor类,但是可以通过向子Actor注入额外的软件代码来更改或扩展其行为。类似地,这些子Actor也可以拥有自己的子Actor,这些子Actor继承了其父级的行为,从而创造了更多专门化或增强行为的机会。

Actor还可以拥有称为“组件”的子对象。和Actor一样,组件也可以通过继承将行为传递给子组件。当游戏运行时,3D环境生成模块的实施例可以利用称为ChildActorComponent的UE4组件来动态生成任何给定Actor类型的Actor,从而构建虚拟游戏世界及其所有部分。

游戏开发者可以使用3D环境生成模块116在UE4编辑器工具内布局随机游戏级别。3D环境生成模块116的实施例可以修改UE4编辑器以允许设计者从UE4编辑器中将Actor放置在屏幕上。

在一些实施例中,开发者通过创建“布局Actor”来设计3D虚拟环境,该“布局Actor”由3D环境生成模块116提供。这可以例如通过选择3D环境生成模块116在UE4编辑器的菜单选项中提供的“创建布局Actor”选项来完成。然后,设计者使用UE4编辑器中的弹出菜单或其他工具将行为和特征分配给该布局Actor。开发者还可以将ChildActorComponents直接添加到布局Actor中,并指示这些ChildActorComponents生成任何所需类型的“插槽Actor”。然后,开发者创建一个插槽Actor并将刚刚创建的布局Actor添加到它能够生成的插槽的布局列表中。开发者可以创建额外的布局Actor并将它们添加到插槽Actor的布局列表中。

然后,开发者可以创建一个新的插槽Actor,其将保存表示3D虚拟环境的下一层的布局Actor,并将该插槽Actor分配给分配给所创建的第一插槽的一个布局Actor的ChildActorComponent。设计者递归地重复这个过程,直到适合设计者想要的环境的任何深度。

然后,一旦创建了这些布局和插槽(包括插槽和布局之间的关系),设计者通过将插槽Actor放置到UE4“地图”中来创建实际的游戏级别,该地图是具有随机特征的3D虚拟环境的2D和3D表示。这些插槽Actor包含可以选择以触发随机化过程的顶层布局列表。

本公开的实施例一般涉及用于使用分层组织的插槽生成具有随机化特征的虚拟3D环境的计算机实现的方法和计算机可读介质。实施例促进了诸如3D视频游戏环境之类的3D环境如何生成和显示的改进,以及游戏玩法的改进。例如,根据本公开的实施例创建和生成的3D环境的随机特征允许每次玩游戏时改变3D游戏世界,同时对如何构造游戏世界保持高度的视觉保真度以及设计者控制。

除了对3D环境或游戏设计和开发的技术领域的这些改进之外,本公开的实施例提供的改进包括计算设备操作的改进。例如,动态分层插槽允许随机创建不同的环境,同时保持在定义3D环境的插槽的范围内。这通过允许设计和存储大量独特的虚拟3D环境而无需为每个3D环境编写单独的程序,并将每个单独的程序存储在系统的内存中,从而改进了计算机的操作。因此,比较如果根据本公开的实施例形成的众多独特的3D环境中的每个都使用常规技术分开存储所需的存储器,本公开的实施例允许计算机使用更少的存储器,从而在不牺牲质量的情况下导致更快的计算时间。此外,本公开的实施例提高了可以生成独特虚拟3D环境的效率。这些进步在该技术领域以及计算机的能力和性能方面非常值得注意并且非常重要。

虽然已经参考优选实施例描述了本公开的实施例,但是本领域技术人员将认识到在不脱离本公开的精神和范围的情况下可以在形式和细节上进行改变。

26页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种提供使用在随机时间点配置的补给箱的大逃杀游戏的方法以及使用其的服务器

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类