CN115209966A - 以编程的方式配置材料 - Google Patents

以编程的方式配置材料 Download PDF

Info

Publication number
CN115209966A
CN115209966A CN202080086226.1A CN202080086226A CN115209966A CN 115209966 A CN115209966 A CN 115209966A CN 202080086226 A CN202080086226 A CN 202080086226A CN 115209966 A CN115209966 A CN 115209966A
Authority
CN
China
Prior art keywords
game
space
objects
texture
environment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080086226.1A
Other languages
English (en)
Inventor
丹尼尔·小费斯勒
布兰顿·莫罗
亚历山德拉·巴里什尼科娃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Manticore Games Inc
Original Assignee
Manticore Games Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Manticore Games Inc filed Critical Manticore Games Inc
Publication of CN115209966A publication Critical patent/CN115209966A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/53Controlling the output signals based on the game progress involving additional visual information provided to the game scene, e.g. by overlay to simulate a head-up display [HUD] or displaying a laser sight in a shooting game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • A63F13/63Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by the player, e.g. authoring using a level editor
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/847Cooperative playing, e.g. requiring coordinated actions from several players to achieve a common goal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Optics & Photonics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

提供了利用智能材料进行的改进的纹理化过程,以在纹理化多维环境,特别是3D环境内的对象时提高开发人员生产效率。开发人员可以生成对象,选择要应用的智能材料,并操控该对象的尺寸,以使得应用了材料的至少一个表面的长宽比变化,而不改变在该对象的表面上渲染的材料的纹理片的长宽比。基于对象顶点的映射在共享材料空间中确定来自所选择的智能材料的对象表面的纹理化,这些对象顶点保持原始材料品质(例如,纹理的所定义的长宽比)并减轻应用于相邻表面(包括不同对象的那些表面以及当这些对象被重新定位时)的材料中的不连续性。

Description

以编程的方式配置材料
技术领域
本公开总体而言涉及对几何对象进行建模的计算机实施的技术,并且更具体而言,涉及通过复杂纹理过程中的变量减少来增强应用于几何对象的游戏材料的开发。
背景技术
目前,游戏开发环境(如游戏(和其他应用)中的三维(3D)环境)相对容易初始化为空白画布。这些环境通常填充有几何对象,这些几何对象可以是静态的、交互式的或动态的,或者是用户可玩的。静态对象的示例可以是在环境内给定位置中的树或墙。目前,几何对象较容易创建和操控以创建由多个几何对象构成的几何元素。示例几何元素可以包括例如城堡、山脉、角色模型等等,其中的每一个都可以由多个几何对象构成。多个几何元素可以构成3D环境,诸如具有多山背景的城堡。交互式或动态对象的示例可以是城堡的门,该门基于预先配置的规则或响应于用户交互而打开并关闭。其他示例可以包括不可玩的角色模型。用户可玩对象(或元素)的示例可以是化身(例如,用户可玩角色模型),用户通过该化身探索3D环境并与3D环境中的其他对象(或元素)交互。例如,用户可以经由环境中的化身来导航3D环境(如上所述的3D环境)以探索城堡(例如,通过打开门并进入城堡)或山脉(例如,通过打开门并离开城堡进入更大的空间并朝向山脉移动)等。
初始化这样的环境并利用对象来填充它们(这些对象中的许多在各种编辑器中预配置,诸如定义墙的形状的3D块或矩形形状、或定义山脉形状的四面体或三角形等)对于具有最低限度技能的开发人员来说是直接且方便的。然而,这些对象必须通过应用纹理来细节化从而对这些对象赋予它们的角色,例如纹理化矩形形状以具有作为城堡的墙壁的视觉外观。
对不熟练的开发人员来说,对象进行纹理化通常带来巨大挑战。纹理化将视觉特征应用于对象或形状,使得建筑物的矩形形状看起来像砖墙或石墙,或者山脉的三角形或四面体形状看起来像真正的山。在许多情况下,对象的纹理是应用于对象的一个或多个表面的图像并且可以通过在表面上平铺图像来重复提供表面覆盖。将纹理应用于环境中的大量对象的过程是耗时且困难的,同时在构成元素的多个对象之间希望一致外观的情况下难度增加。因此,对开发游戏感兴趣的开发人员——尤其是独立开发人员——花费了过度量的时间尝试创建视觉上吸引人的环境,而不能够将其工作量集中在开发游戏性上。
发明内容
以下是本技术的一些方面的非穷举列表。这些和其他方面在以下公开内容中描述。
一些方面包括用于实施智能材料的过程,例如利用编辑器。在一些实施例中,智能材料可以根据从标准化的一组纹理中选择并被应用于来自标准化的一组对象中的一个或多个对象的纹理、由模型代码(其可以包括智能材料实例)定义的所得到的一组模型以编程的方式配置,通过该模型代码,包括标准化的该组纹理和标准化的该组对象的应用可以在不接收所得到的该组模型的情况下渲染该组模型。智能材料的一些示例实现跨同一平面中的对象的表面的纹理化方面的无缝重叠。智能材料的一些示例实现对象的表面或不同对象之间的纹理沿着边缘的无缝接合。智能材料的一些示例被映射到环境空间,并与对象缩放无关且取决于对象位置地被投影到对象的表面上。智能材料的一些示例被映射到环境空间并在连续平铺指定的样本纹理或样本纹理的所选择的部分的情况下被投影到不同对象的共面或平行表面上。智能材料的一些示例被映射到环境空间,并在连续平铺指定的样本纹理或样本纹理的所选择的部分的情况下被投影到不同平面中的相邻表面上。
一些示例实施例包括可以通过其实施智能材料或材料的编辑器。一些示例实施例包括基于与编辑器中的智能材料相关联地提供的参数或设置,根据环境内的相同纹理片的一部分以编程的方式配置智能材料。编辑器的一些示例包括环境参数,以独立于对象来全局缩放智能材料(例如,通过缩放由智能材料所使用的纹理片)和修改智能材料的像素密度(例如,通过下采样或以其他方式调节由智能材料所使用的纹理片的质量)。编辑器的一些示例包括可以通过其对智能材料实例进行分组并为智能材料实例的子集指定环境参数的窗格。编辑器的一些示例包括可以通过其选择智能材料实例并将其应用于对象的窗格。编辑器的一些示例包括可以通过其选择样本纹理的一部分来定义用于在环境内以编程的方式配置智能材料的纹理片的窗格。编辑器的一些示例包括可以通过其为纹理片选择智能材料的一个或多个平铺方向的窗格,智能材料被配置为通过纹理片的相邻定位来定义纹理片在相对应的(多个)方向上的投影。编辑器的一些示例包括具有指定片方向的智能材料实例可以通过其基于对象的特征(例如,边缘、顶点或取向向量中的一个或多个)的位置和取向在相对应的方向上进行投影的窗格。编辑器的一些示例包括保持选择以捕获智能材料(映射到环境空间)在对象的表面上的当前投影(基于映射)并将所捕获的投影绑定到对象的表面,绑定到对象的表面的所捕获的投影取决于对象缩放并且独立于对象位置。编辑器的一些示例包括保持切换选择,以交替智能材料的所捕获的投影和智能材料在对象的表面上的当前投影的视觉显示。编辑器的一些示例包括这样的窗格,通过该窗格可以为对象的表面选择多个智能材料,通过该窗格可以指定多个智能材料的层级排序以基于相应的智能材料形成纹理的分层,保持选择是可选择性操作的(例如,针对每个智能材料、智能材料的子集或所有智能材料单独地),并且保持切换选择是可选择性操作的(例如,单独地、按照子集或全部根据具有活动保持选择的智能材料)。编辑器的一些示例包括冻结选择,其可以被提供为保持选择的一方面,其中移动对象并相对于3D模型的坐标系改变平铺的空间相位响应于该移动,并且编辑器接收冻结平铺的空间相位的命令,并且响应于该命令,将通过其指定平铺的坐标系从世界空间坐标系改变到3D模型的坐标系,其中环境空间包括各自具有不同的模型特定的坐标系的多个3D模型。
一些方面包括存储指令的有形的、非暂时性机器可读介质,这些指令在由数据处理装置执行时使得数据处理装置执行包括以上提及的过程中的一个或多个的操作。
一些方面包括一种系统,该系统包括:具有一个或多个处理器的一个或多个计算设备;该一个或多个计算设备包括存储指令的至少一个存储器,这些指令在由处理器执行时使得处理器实现包括以上提及的过程中的一个或多个的操作。
附图说明
当基于以下附图阅读本申请时,将会更好地理解本技术的以上提及的各方面和其他方面,在附图中,相似的数字表示相似或相同的元件:
图1是示出了可以通过其实施本技术的计算环境的示例的框图。
图2是示出可以通过其利用示例计算环境实施智能材料的编辑器的示例的图。
图3A是示出用于将智能材料应用于对象的过程的示例的图。
图3B是示出用于定义智能材料的过程的示例的图。
图3C是示出用于操控具有一个或多个所应用的智能材料的对象的材料性质的过程的示例的图。
图4是示出了用于发布利用标准化的一组对象和纹理的并且在其内实施智能材料的游戏的过程的示例的图。
图5A是示出了当如一些示例中所指示的那样操控对象的表面时应用于这些表面的传统纹理的示例反应的图。
图5B是示出了具有用于应用于图5A中示出的对象表面的传统纹理的比例变量的示例用户界面的图。
图6A是示出了当如一些示例中所指示的那样操控对象的表面时应用于对象的表面的智能材料的示例反应的图。
图6B是示出了具有用于应用于图6A中示出的对象的表面的智能材料的单个比例变量的示例用户界面的图。
图7是示出了可以通过其实施本技术的实施例的示例计算系统的图。
虽然本技术易于进行各种修改和替代性形式,但是其具体实施例在附图中以示例的方式示出并且将在此详细描述。附图可能不是按比例绘制的。然而,应当理解的是,附图及其详细描述并不旨在将本技术限制于所公开的特定形式,而是相反,本发明旨在覆盖落入由所附权利要求书限定的本技术的精神和范围内的所有修改、等同物和替代性方案。
具体实施方式
为了减轻本文所描述的问题,诸位发明人必须发明解决方案,并且在某些情况下同样重要的是,认识到软件游戏开发工具领域中被其他人忽略(或尚未预见)的问题。事实上,诸位发明人希望强调,如果行业趋势如发明人预期那样继续,那么就很难认识到那些新出现的并且将在未来变得更加明显的问题。进一步,因为解决了多个问题,所以应该理解的是,一些实施例是特定于问题的,并且不是所有实施例都解决了本文描述的传统系统的每个问题或者提供了本文描述的每个益处。也就是说,下面描述了解决这些问题的各种排列的改进。
由于当纹理与模型对齐时(例如,通过UV映射,其中U和V对应于2D纹理图像的像素空间中的正交轴),特别是当模型移动时由于拉伸和深度冲突经常发生,纹理(如应用于模型的多边形的表面的材料)在游戏设计中难以配置。一些实施例通过使用改进形式的世界空间投影纹理化,在被设计为支持AAA质量游戏的外行构建的平台中减轻了这个问题。世界空间投影纹理化的传统使用要求大量的技能来完全指定映射,但是诸位发明人认识到,当例如游戏开发工具提供商为游戏中的角色提供现成的模型来定义世界的比例时,可以为开发人员计算某些方面。一些实施例利用对世界空间投影的纹理的低维参数约束从这种方法中概括出来,例如在设计期间使用世界空间并且然后在设计完成之后或者在开发人员输入时冻结(或者部分冻结,例如,除了利用角色模型的大小进行缩放之外的冻结)(例如,将通过其配置纹理的坐标系从游戏中世界的坐标系移位到模型的坐标系)。
如上所述,几何对象相对容易创建和操控以创建由多个几何对象构成的几何元素。反过来,对这些对象进行纹理化以将视觉特征应用于对象或形状(例如,使得墙看起来像砖墙或石墙,或者山脉看起来像计算机屏幕上的真正的山),从而创建环境的和环境内的所希望视觉效果。虽然应用纹理通常很容易(例如,选择纹理并将其应用于对象),但在正确配置纹理时有效且高效地对对象进行纹理化是耗时且困难的。换句话说,在没有大量开发人员投入的情况下,上述应用过程是不够的。在许多情况下,盲目地将纹理应用于对象是不够的。对对象进行纹理化包括应用过程期间的许多步骤和修改,使得当如此应用时纹理在对象和构成几何元素的对象(例如,构成城堡的各种墙)的表面上视觉上是一致的。例如,对对象进行缩放涉及配置适当纹理分辨率的比例,而对(例如,一个对象或多个对象的)相邻表面进行纹理化涉及配置纹理使得在它们相遇的地方存在外观上的连续性。对对象的比例或位置的随后操控通常破坏当前的纹理化,通常要求开发人员重复应用过程的步骤和修改中的所有或一些,以校正分辨率或校正不连续性。开发人员花费时间来解决这些问题,因为无效的纹理化除了较差的分辨率和环境内的不连续之外,还导致性能问题。对于技术纯熟的开发人员来说,解决和校正这些问题最差地是非常耗时的,但是对于技术不熟练的开发人员来说,这个过程也非常困难。
开发人员通常将创建一个或多个对象,诸如以便构建3D环境的元素。通常,将对象放置、缩放到希望的尺寸,并且随后将表面纹理化到希望质量水平(例如,像素密度)。然而,一旦对象被纹理化,其比例的操控可能导致大量的问题。例如,对象尺寸的操控会改变对象的不同几何表面的长宽比并且因此改变应用于这些曲面的纹理的长宽比。因此,当渲染具有纹理化后的经操控的尺寸的对象时,应用于表面的纹理看起来在法向于表面的面的一个或两个方向上拉伸或收缩,从而导致一个或多个维度上的细节损失或细节方面的增加。换句话说,当纹理被拉伸或收缩时,由于像素密度变化(例如,在任一方向上),对象在被渲染时可能表现出较差的图形质量或不必要的高图形质量(导致性能损失)。此外,对对象的尺寸的这种操控改变了纹理的长宽比,使得应用于被操控对象的纹理与具有相同纹理的其他对象的纹理不匹配。换句话说,构成建筑物的被操控成具有砖纹理的较大块(例如,2Lx2Wx2D)的块(例如,具有LxWxD)可能看起来具有也比构成建筑物的其它块大两倍的组成砖。这些问题的校正(其通常涉及复杂得多的对象)要求大量的开发时间和程序员技能来修改其应用于每个几何形状中的纹理,以便在对其应用该纹理的对象的表面上以及跨对其应用该纹理的多个对象保持纹理的一致的长宽比。
类似地,通常的情况是开发人员将创建一个或多个对象,诸如以便构建3-D环境的元素。通常,将对象放置、缩放到希望的尺寸,并且将表面随后纹理化到希望质量水平(例如,像素密度)。然而,一旦对象被纹理化,则对该对象的位置的操控可能导致大量问题,尤其是在该对象被定位为与其他对象相邻的情况下。例如,操控对象的位置会改变该对象相对于其他对象的不同几何表面的位置,并且因此改变应用于该对象的表面的纹理相对于其他对象的纹理的位置。因此,当渲染具有纹理化后的经操控的位置的对象时,应用于表面的纹理相对于其先前匹配的一个或多个相邻纹理化表面在法向于该表面的面的一个或两个方向上出现偏移或者被旋转(例如,围绕法线轴),从而导致相邻对象的纹理之间的连续性的损失。进一步,除了在纹理化之后移动对象(例如,道路或墙的位置)之外,当最初应用纹理时,在两个对象的表面共面的同一平面中(例如,两条砖路的交叉点)、或者在两个或更多个几何对象的表面相遇的边缘或顶点处(例如,形成砖房的角部的墙),可能存在缺乏连续性。换句话说,当应用纹理时、或者当在应用纹理之后移动对象时,在构成元素的多个对象中,对象可能表现出不连续的纹理。这种不连续性问题的校正(其通常涉及复杂得多的对象)要求大量的开发时间和程序员技能来修改其应用于每个表面中的纹理(及其几何形状),以便在应用了至少一个相同纹理的不同对象的相邻表面之间以及对于同一对象的相邻表面保持一致的视觉连续性。
通过本文描述的各种实施例减轻了传统纹理化过程的上述问题中的一些。具体而言,本文描述的各种实施例提供了对多维环境内的,以及特别是利用3-D对象模型填充的3-D环境内的对象进行纹理化的改进。一些实施例包括对其应用了纹理的对象的操控的改进,诸如通过在缩放对象时减轻纹理在一个或多个维度上的拉伸或收缩。因此,例如,开发人员可以生成对象、应用纹理、并操控对象的尺寸,以使得应用了纹理的至少一个表面的长宽比改变,而不改变纹理的长宽比(例如,当渲染对象时)。换句话说,本文描述的技术使得能够操控具有所应用的纹理的对象的尺寸,同时保持原始纹理质量(例如,所定义的纹理长宽比)。一些实施例包括对其应用了纹理的对象的操控的改进,诸如通过减轻应用于相邻表面的纹理中的不连续性,这些相邻表面可以是不同对象的相邻表面。因此,例如,开发人员可以生成第一对象,将纹理应用于第一对象的表面,并且操控第一对象相对于具有也应用了纹理的表面的第二对象的位置,以使得这些表面邻接而没有表现出不连续的纹理,而不管这些表面是在同一平面中相邻定向、形成边缘还是顶点。
在一些实施例中,通过智能材料提供了以上提及的改进。在一些实施例中,智能材料是根据纹理片以编程的方式配置,以在游戏或其他3D环境的开发期间提供如以上描述的对纹理化和操控对象的那些改进的改进。在一些实施例中,智能材料可以根据从标准化的一组纹理中选择并被应用于来自标准化的一组对象中的一个或多个对象的纹理、由模型代码(其可以包括智能材料实例)定义的所得到的一组模型以编程的方式配置,通过该模型代码,包括标准化的该组纹理和标准化的该组对象的应用可以在不接收所得到的该组模型的情况下渲染该组模型。智能材料可以在环境中以编程的方式配置,并且在被选择用于对象时,基于环境内的智能材料的配置,使得对象被渲染有视觉纹理化。例如,可以基于对象的位置和取向为对象的表面确定在环境内配置的智能材料的投影,并且映射到对象的相对应的表面的投影的一部分被确定用于利用该部分材料渲染相对应的表面。智能材料的一些示例实现跨同一平面中的对象的表面的纹理化(例如,材料的纹理化)方面的无缝重叠。智能材料的一些示例实现对象的表面或不同对象之间的纹理沿着边缘的无缝接合。智能材料的一些示例被映射到环境空间,并与对象缩放无关且取决于对象位置地被投影到对象的表面上。智能材料的一些示例被映射到环境空间并在连续平铺指定的纹理片或纹理片的纹理的所选择的部分的情况下被投影到不同对象的共面或平行表面上。智能材料的一些示例被映射到环境空间,并在连续平铺指定的样本纹理或样本纹理的所选择的部分的情况下被投影到不同平面中的相邻表面上。一些示例实施例包括可以通过其实施智能材料的编辑器。一些示例实施例包括基于与编辑器中的智能材料相关联地提供的参数或设置,根据环境内的相同纹理片的一部分以编程的方式配置智能材料。编辑器的一些示例包括环境参数,以独立于对象来全局缩放智能材料(例如,通过缩放由智能材料所使用的纹理片)和修改智能材料的像素密度(例如,通过下采样或以其他方式调节由智能材料所使用的纹理片的质量)。编辑器的一些示例包括可以通过其对智能材料实例进行分组并为智能材料实例的子集指定环境参数的窗格。编辑器的一些示例包括可以通过其选择智能材料实例并将其应用于对象的窗格。编辑器的一些示例包括可以通过其选择样本纹理的一部分来定义用于在环境内以编程的方式配置智能材料的纹理片的窗格。编辑器的一些示例包括可以通过其为纹理片选择智能材料的一个或多个平铺方向的窗格,智能材料被配置为通过纹理片的相邻定位来定义纹理片在相对应的(多个)方向上的投影。编辑器的一些示例包括具有指定片方向的智能材料实例可以通过其基于对象的特征(例如,边缘、顶点或取向向量中的一个或多个)的位置和取向在相对应的方向上进行投影的窗格。编辑器的一些示例包括保持选择以捕获智能材料(映射到环境空间)在对象的表面上的当前投影(基于映射)并将所捕获的投影绑定到对象的表面,绑定到对象的表面的所捕获的投影取决于对象缩放并且独立于对象位置。编辑器的一些示例包括保持切换选择,以交替智能材料的所捕获的投影和智能材料在对象的表面上的当前投影的视觉显示。编辑器的一些示例包括这样的窗格,通过该窗格可以为对象的表面选择多个智能材料,通过该窗格可以指定多个智能材料的层级排序以基于相应的智能材料形成纹理的分层,保持选择是可选择性操作的(例如,针对每个智能材料、智能材料的子集或所有智能材料单独地),并且保持切换选择是可选择性操作的(例如,单独地、按照子集或全部根据具有活动保持选择的智能材料)。编辑器的一些示例包括冻结选择,其可以被提供为保持选择的一方面,其中移动对象并相对于3D模型的坐标系改变平铺的空间相位响应于该移动,并且编辑器接收冻结平铺的空间相位的命令,并且响应于该命令,将通过其指定平铺的坐标系从世界空间坐标系改变到3D模型的坐标系,其中环境空间包括各自具有不同的模型特定的坐标系的多个3D模型。
图1示出了可以在其内实施和分布智能材料的示例计算环境100。在一些实施例中,计算环境100可以包括开发人员设备120、客户端设备130、发布者150和游戏服务器160。这些组件可以经由网络101(诸如因特网和各种其他局域网)彼此通信。此外,示例计算环境100的实施例可以包括储存库,智能材料或它们的配置和其他资产(诸如包括标准对象和标准纹理的标准模型)可以存储和分布在该储存库内。
在一些实施例中,本文描述的技术可以通过在类似以下参考图7描述的那些计算设备的计算设备上执行以下参考图3至4描述的、作为示例在图6A和图6B中示出的、或在本申请中以其他方式描述的过程,在图1中示出的计算环境100(例如,包括所示出的组件中的每一个)内实施。在一些实施例中,类似参考图7描述的那些计算设备的计算设备可以包括特定于本文讨论的配置的附加和/或其他组件。例如,开发人员设备120可以包括类似于参考图7描述的支持游戏环境和其中使用的资产的开发的那些组件的组件,但也可以表示具有类似于参考图7描述的那些组件的组件的计算设备的集合,这些组件中的一些可以被配置用于特定的任务,通过这些任务开发人员团队开发游戏环境或资产的各种不同方面。类似地,客户端设备130、服务器150、160和储存库170可以包括除了图7中示出的那些组件之外的一些附加或其他组件(例如,客户端设备可以是个人计算机、移动电话、平板电脑、游戏系统或便携式手持游戏系统)。然而,这些设备中的每一个可以根据类似于下文中并且参照图7讨论的那些原理的原理来操作,诸如通过将指令和其他数据加载到存储器中并由处理器运行这些指令来执行各种操作。
开发人员设备120可以是可操作来执行由开发人员所使用的开发人员应用121或者支持由开发人员或开发人员团队所使用的一个或多个设备上的开发人员应用的执行的个人计算机,如膝上型或台式计算机、服务器系统,或者在一些情况下是前述类型的客户端设备中的一个。例如,在一些实施例中,开发人员设备120可以是由用户用于利用开发人员应用121开发游戏、游戏模组、游戏资产等以供客户端设备130(其中的一些也可以是开发人员设备120或其他用户的开发人员设备)消费的个人计算机。在一些实施例中,开发人员应用121是被配置为用于由可以用作开发人员设备的一个或多个客户端设备执行的本地应用,这并不意味着所有客户端设备130需要包括开发人员应用,因为一些(或全部)客户端设备可以仅包括加载和执行游戏(例如,玩游戏而不是开发游戏,诸如最小化游戏应用的所安装的大小)的那些组件。不同的开发人员设备可以执行开发人员应用121的相应版本,诸如基于客户端设备的类型和客户端设备的操作系统的给定版本。在一些情况下,相同类型或不同类型的多个开发人员设备可以执行开发人员应用121的那些不同版本,并且为相同或不同类型的设备开发游戏。例如,如个人计算机的开发人员设备120可以执行开发人员应用121,通过该开发人员应用可以为相同的设备(例如,PC游戏)或不同的设备(例如,游戏控制台系统或移动设备)生成游戏、游戏模组或游戏资产。
在另一示例中,在一些实施例中,开发人员设备120可以是由开发人员团队用来开发游戏、游戏模组、游戏资产等以供客户端设备130消费的服务器系统,其中开发人员应用121可以是开发人员能够访问的分布式应用(尽管这并不意味着团队中的不同开发人员使用的计算设备也可以不执行开发人员应用121的实例)。上述场景的常见上下文可能包括雇员使用工作或个人计算机(例如,膝上型或台式计算机)执行开发人员应用的实例(本地或经由服务器)来开发游戏或游戏模组的各部分(诸如资产的某一部分(如对象、纹理等)或其版本(如游戏的构建版本)),这些部分被上传到雇主的托管可在其他受雇开发人员的计算设备上访问的分布式开发人员应用(或资产和构建的储存库)的服务器或由该服务器存储。类似地,开发人员应用121可以可操作以为特定类型的设备(例如,PC、游戏控制台系统或移动设备)开发游戏、游戏模组或游戏资产。
在一些实施例中,开发人员应用121包括用于创建游戏、游戏模组或资产的编辑器123。一般而言,开发人员可以利用编辑器123组件来生成游戏的特征(如纹理(或材料)、对象和其他资产),配置环境特征以及游戏设置。特别地,编辑器123可以包括模型模块125,在该模型模块中可以定义游戏资产,如智能材料、纹理和对象,并且可以生成定义对象或由多个对象构成的元素的特性(如可以基于智能材料实例的纹理化性质)用于渲染对象或元素的游戏文件。这种游戏文件可以进一步定义对象或元素的特性,诸如移动、管控移动的规则等。在一些实施例中,模型模块125可以包括多个预先填充的对象(例如,多边形和多面体的相对应的多边形网格对应于对象,如块、球形多面体等)和预先填充的纹理,如预先填充的对象和纹理的库,这并不意味着用户定义的对象和纹理(或材料)可以不被定义和存储在模型模块中。开发人员诸如经由编辑器123可以选择(例如,经由拖放、双击或其他交互)预先填充的对象中的不同的对象,以利用所选择的对象填充环境,并根据对象的子集构建元素,诸如通过定位、合并或经由编辑器以其他方式与对象交互。类似地,开发人员诸如通过编辑器123可以选择要应用的对象(或对象或元素)和纹理。对象(或多个对象)以及对其应用的任何纹理可以由编辑器来渲染,如同它将出现在环境中一样(例如,城堡可以由被定位以在给定位置形成城堡的对象、应用于形成城堡的对象并被操控的纹理、以及利用所应用的纹理来渲染的各种对象来构建,以在开发人员设备的屏幕上可视地显示城堡)。除了利用预先填充的对象之外,开发人员可以诸如通过编辑器123,手动地或利用自动化工具来构建新的对象和纹理。在一些实施例中,开发人员可以通过编辑器123选择纹理化或未纹理化的对象的特定配置来存储特定模型(例如,以进行复制)。
如本文所述,对象和元素中的各个对象和元素(例如作为3D模型)可以表示为网,其描述了3D模型的多边形网格的2D表示。例如,对象或元素可以是3D实体,如具有啮合在一起以形成3D实体的形状(例如,以相对精度来近似对象,如球体)的平坦的多边形面、直边和尖锐的角或顶点的多面体。给定多面体的网可以在单个平面中指定边接合的多边形的布置,该单个平面可以(沿着边)折叠以成为多面体的面。纹理可以是应用于多面体的面的2D片,如图像或图像的一部分。因此,例如,可以将纹理应用于网(边接合的多边形的布置),类似于覆盖,并且然后网被重新折叠以根据2D纹理创建纹理化的3D对象。换句话说,纹理可以被映射到对象。在如以上描述的映射的这种映射中,2D纹理被应用于网,该网可以以给定的方式定义(例如,存在定义立方体的网的多种方式,并且对于复杂得多的对象,网中使用的多边形的数量方面的增加指数地增加了可以定义网的方式的数量),通常手动地,以最小化组成多边形的变形(例如,最小化拉伸)。以这种方式的纹理化允许构成3D对象的多边形被浸染有来自普通图像的表面属性,诸如通过将图像中的像素分配到多边形上的表面映射(例如,坐标),这些像素根据它们的坐标来渲染。然而,因为像素坐标是基于网中的面上的像素的2D位置逐面应用于,所以沿着网中没有相邻边的每条边,当网被向后折叠在一起时,相邻像素之间存在不连续性,因为面对应于2D纹理上的完全不同的位置(这是根据在平放与折叠时组成多边形的任何失真在面上的一个或多个方向上拉伸或压缩像素映射的折衷,以便最小化这种失真,固有地存在没有相邻边的更多边)。因此,沿着这些边缘中的每一个,在纹理被映射到2D平面表示时,在纹理中存在不连续性。因此,开发人员基于对象取向手动调节网,以限制可视显示的这种边的数量,从而最小化这些不连续性。而且,因为纹理被应用于单个对象的网,所以在具有相同纹理的相邻对象之间也存在不连续性。因此,开发人员必须手动调节相对于一个或两个对象的网的纹理位置,以最小化不连续性。
在一些实施例中,编辑器123实施用于创建游戏、游戏模组或资产的智能材料(其也可以被称为或以其他方式被描述为环境空间内以编程方式配置的纹理实例)。与遭受各种缺点的以上描述的冗长的每对象网定义和纹理化过程相反,智能材料最小化在纹理化对象时的开发人员时间投入,以及纹理化对象中的不连续性。基于环境内的对象的任何给定顶点可以映射到的位置,在环境空间(例如,对象被取向和定位在其中)中定义和投影智能材料。例如,对应于多面体的给定多边形的一组顶点(例如,任意3个)标识该多边形在环境空间内的相对应的平面(例如,多面体的面)。反过来,应用于对象的智能材料可以被投影在相对应的平面中。该组顶点(例如,每个顶点)可以进一步标识多边形的尺寸,使得智能材料被渲染在多边形的边界内。换句话说,给定平面中的多边形占据该平面内智能材料投影的相对应的有界部分(注意,该投影(诸如在给定平面中多边形的边界内的投影)可以以编程的方式确定)。因此,例如,当具有相同应用的智能材料的多边形在同一平面内相邻定位或重叠时,智能纹理的材料部分(例如,2D纹理)被映射到多边形,而没有它们的边缘相遇或面重叠的任何不连续性。进一步,因为智能材料被投影在多边形的平面中,所以基于对象的取向来定义多面体的网以隐藏孤立边缘之间的不连续性、减少2D纹理的拉伸或收缩以及其他视觉伪像的各种复杂性对于视觉质量和性能来说并不重要。具体而言,在一些实施例中,知道多边形的取向及其尺寸(例如,在3D环境中取向的2D形状)就足以将智能材料的给定部分投影在多边形上,并且这些变量中的每一个可以相对于参考系(例如,基于环境空间的X、Y、Z轴)来确定。因此,当智能材料被应用于对象时,多边形取向和尺寸在UV空间(例如,2D空间,其中U和V表示2D维度,类似于纹理的维度)中被确定,对象的任何给定顶点可以映射到该UV空间。作为示例,智能材料被定义在环境空间内,并且可以基于纹理片(如用于材料的纹理(像图像)的样本选择),其中纹理片的编程复制被确定,例如该片在U或V维度上重复(例如,如无限延伸的片条)、在作为U的函数的V维度(反之亦然)上重复(例如,如对角线条)、或者在U和V维度上重复(例如,如无限平面)。反过来,可以确定智能材料在环境空间内的投影,诸如在基于平铺选择性地对其应用智能材料的对象的多边形上的投影(例如,智能纹理被投影在多边形的面的其中纹理片的投影与多边形的面重叠(这可以基于平铺和平铺性质以及多边形性质以编程方式确定)的一部分上)。如上所述,对象包括环境空间内的不同平面中的多边形,在此智能材料基于参考系和投影被转换到多边形的面(例如,法向于该面)。换句话说,多面体的表面在被转换到给定的平面时“占据”智能材料而不是适于该形状的纹理。例如,当多面体的表面在其平面内移动时,它“占据”被转换到环境空间内的平面的该部分的智能材料的部分。从概念上讲,基于智能材料到从其中选择平面内的材料的相对应的部分的平面的映射,所应用的智能材料使得材料在视觉上出现在该平面内的多面体的表面的边界内。参考图2更详细地描述了编辑器123的示例实施例。
在一些实施例中,开发人员应用121包括游戏模块127。游戏模块127可以包括类似于游戏应用125的特征,这将在下面更详细地讨论。即,游戏模块127可以可操作来本地执行游戏代码,请求游戏服务器160上的游戏实例165的初始化,以及请求加入游戏实例165(例如,玩游戏)。因此,如本文所讨论的那样,开发人员应用121可以包括游戏应用125的一些或所有特征,反之亦然。然而,在一些实施例中,游戏应用135可以包括开发人员应用121的特征的子集(如游戏模块127),而没有编辑器123特征,诸如以减少只对玩游戏感兴趣而不是开发它们的用户的客户端设备130上或者某些客户端设备(例如,模块设备或用户不可能在其上开发游戏、模组或资产的其他设备,这并不意味着放弃这种设备上的编辑器版本或编辑器功能的子集,诸如用于智能材料的纹理片编辑)上的安装占用空间(例如,存储空间)。
客户端设备130可以是个人计算机,如可操作来执行游戏应用135的膝上型或台式计算机,或者移动电话、平板电脑、游戏系统或便携式手持游戏系统。在一些实施例中,游戏应用135是被配置为由一个或多个客户端设备执行的本地应用。不同的客户端设备可以执行游戏应用135的相应版本,诸如基于客户端设备的类型和客户端设备的操作系统的给定版本。在一些情况下,相同类型或不同类型的多个客户端设备130可以执行游戏应用135的那些不同版本,并且参与由游戏服务器160托管的相同游戏实例165,诸如在多人游戏中。在其他情况下,客户端设备130可以在本地游戏实例中下载并执行独立的游戏应用135,诸如以单人模式。在一些实施例中,游戏应用135向用户提供对各种不同游戏的访问,这些游戏中的一些可以是客户端设备本地的单人游戏(并且其可以可选地在没有网络101访问的情况下可玩)、具有托管在服务器160上的游戏实例165的单人游戏、以及具有托管在服务器160上的游戏实例165的多人游戏(但是其可以可选地在局域网上或通过网络101利用托管游戏实例的给定客户端设备130而不是专用服务器160可玩)。在一些实施例中,游戏应用135包括用于执行游戏文件的引擎,或者与驻留在客户端设备中的用于执行游戏文件的引擎对接。在任一情况下,客户端设备130获得游戏文件(以及可选的引擎)以执行游戏或游戏的客户端侧组件。不同的游戏可以以不同的方式分布,诸如通过物理媒体、通过网络或两者,并且除了多玩家活动或模式之外,还包括本地可玩的活动或模式。因此,例如客户端设备130可以获得包括游戏的版本的游戏应用135,或者利用所获得的游戏应用135来获得游戏的版本,并且给定的游戏可以以各种不同的方式来玩。可以类似地获得对游戏的更新,例如通过游戏的一个或多个新的或经更新的游戏文件。在一些实施例中,这些更新可以在玩时获得,诸如当加入由游戏服务器160托管的游戏实例165时。进一步,在一些实施例中,当加入由游戏服务器160托管的游戏实例165时,可以获得构成游戏的游戏文件。例如,游戏应用135可以包括游戏引擎,并且在尝试加入给定游戏的实例时可以获得给定游戏的游戏文件。在各种不同的游戏(如游戏模组)利用相同的底层引擎,但是可以包括定义给定游戏(或模组)的不同资产(例如,对象、纹理等)、约束、可玩性特征等的新的或不同的游戏文件的情况下,可以利用这样的过程。换句话说,虽然两个不同的游戏或一个游戏的两个不同的模组可能在视觉上看起来和玩起来完全不同,但是它们可以利用相同的底层引擎并共享根据其创建不同的视觉效果的各种标准对象或纹理。
在一些示例实施例中,如游戏服务器160或发布者服务器150的服务器可以包括应用编程接口,该应用编程接口被配置成从在客户端设备或开发人员设备上执行的元件(例如,给定的应用、模块或接口)接收对本文所述的可用游戏、游戏文件等的列表的请求。在一些实施例中,游戏服务器160的API被配置成接收实例化游戏实例或加入游戏实例的请求(例如,从由客户端设备130执行的游戏应用135或由开发人员设备120执行的开发人员应用121的游戏模块137)。反过来,当设备120、130请求实例化或加入实例时,API可以以游戏实例所需的游戏文件的列表进行响应,使得设备120、130可以请求(例如,从游戏服务器、发布者或储存库)或指示先前未获得的任何所需的游戏文件,使得它们可以被推送到(例如,从游戏服务器、发布者或储存库)设备。在一些实施例中,游戏服务器160是自组织游戏服务器,在该自组织游戏服务器上游戏实例165由发布者服务器150实例化。因此,例如,发布者150可以包括人员所描述的API的API,客户端设备130通过该API请求实例化游戏实例或者请求加入游戏实例。反过来,发布者150可以启动游戏服务器160和游戏实例165,并且以客户端设备可以加入游戏实例的指令进行响应。在任一配置下,游戏实例所需的游戏文件可以被提供给请求游戏的实例化或者请求加入实例化的游戏实例的客户端设备。
在一些实施例中,发布者150的API被配置成接收发布(或更新)游戏的请求(例如,从由开发人员设备120执行的开发人员应用121)。在一些实施例中,该请求包括游戏的游戏文件(例如,及其散列)的列表。反过来,API可以以不包括在储存库中的一个或多个游戏文件的指示进行响应,其可以包括对所指示的游戏文件的请求或者将游戏文件上传到储存库的指令。在处理发布游戏的请求时,发布者应用155可以处理游戏的发布,诸如通过在游戏的列表中列出游戏和相对应的游戏信息。在一些实施例中,游戏被列在与开发人员(例如,所请求的发布)或授权开发人员团队相关联的私有列表中,如在给定账户下,并且可由授权方访问(例如,演示、游戏测试等,诸如通过启动私有游戏实例165)。在一些实施例中,游戏的列表是客户端设备30可经由游戏应用135访问的游戏的公共列表。在一些实施例中,开发人员可以最初发布游戏,并且随后指示该游戏是否应该向客户端设备130公开列出。在一些实施例中,设备可以请求玩所列出的游戏,并且发布者150可以响应于该请求启动包括游戏的实例165的游戏服务器160,并且可以与游戏相关联地指示游戏实例165,使得多个设备可以加入给定的游戏实例165。在一些实施例中,发布者150可以在公开列出游戏之前利用发布者应用155来审查游戏文件,诸如通过审查不包括在储存库中的一个或多个游戏文件。具体而言,发行人应用155可操作以审查由游戏文件指定的资产以确定是否存在令人反感的内容,或者分配收视率或者拒绝以移除令人反感的内容为条件的发布。例如,各种游戏文件可以指定对象的配置及其纹理,这些配置和纹理可以由发布者应用155渲染并针对令人反感的内容进行审查。
如上所述,游戏服务器160可以托管游戏实例165。当设备请求玩游戏时,游戏服务器160可以由发布者150提供来托管游戏实例165,诸如按需托管。例如,游戏服务器160可以被提供来执行包括在储存库170中的游戏171。当游戏实例165活动时,其他设备可以可选地加入游戏实例165。游戏171可以包括各种游戏文件,如游戏代码和模型代码。游戏171的模型代码可以标识游戏中包括的各种标准模型(例如,利用标准纹理和对象的模型)175,其可以包括在提供给客户端设备130的游戏应用135和提供给开发人员设备120的开发人员应用121中。因此,例如,加入特定游戏实例165所需的游戏文件可以是相对轻量的(诸如各种脚本等)、具有相对小的文件大小(例如,与3D模型相比)。换句话说,模型代码可以描述如何根据游戏引擎已经可用的标准对象和纹理构建模型。然而,开发人员也可以生成其他非标准模型(本文中称为用户模型173),诸如通过创建和利用非标准对象或纹理。在这种情况下,游戏文件还可以为游戏指定不能仅根据标准模型175构建的一个或多个用户模型173。因此,不包括在标准模型175中的一个或多个对象或纹理连同用于根据对象或纹理构建模型的模型代码可以被传送到客户端设备。在一些实施例中,游戏的列表指示游戏是基于标准模型175还是包括用户模型173,并且还可以指示运行游戏所需的与用户模型173相关联的文件大小。
用于启动游戏服务器160或游戏实例165的信息中的一些或所有可以存储在储存库170中。例如,当发布者150从开发人员设备120接收发布游戏的请求时,诸如响应于经由开发人员应用121的界面发布游戏的用户选择,发布者150可以获得游戏文件并存储游戏171。在一些实施例中,发布者应用155可以解析游戏文件以标识不能根据标准模型175信息构建的用户模型173。发布者150可以从开发人员设备120请求对应于用户模型的信息,并将用户模型173存储在储存库170内。在一些实施例中,储存库170可以包括关于开发人员账户的信息,诸如个人开发人员或开发人员团队的组成成员的信息。用户模型173和游戏171可以与给定的开发人员账户或相应团队成员的账户相关联,使得开发人员可以管理已发布的游戏的各方面。
图2示出了在其内可以实施智能材料的编辑器123的示例配置。这种编辑器可以被包括在被分发给开发人员的设备并在其上执行的开发人员应用(如本地应用)中。编辑器123的各种示出的块示出了3D编辑器的示例组件,在该3D编辑器内,环境空间可以被初始化、利用对象以及添加到那些对象的纹理或材料性质进行填充。在各种实施例中,可以基于为对象选择的智能材料实例将材料应用于对象。编辑器123的附加方面可以包括定义游戏设置方面等。
在一些示例实施例中,编辑器123包括引擎210,如游戏引擎,该引擎执行计算机程序代码,如模型代码213和游戏代码215。例如,引擎210可以包括执行模型代码213来显示视觉图形(诸如在计算设备的屏幕上)的渲染引擎或渲染器。模型代码213可以描述由数据结构中的多个对象构成的一个或多个对象或元素,该数据结构包含用于渲染3D对象(例如,在2D内从给定的视点)的视图的几何信息。渲染引擎将模型代码213和其他信息(例如,视点位置)取为输入,以在一个或多个屏幕上渲染3D对象或包括各种3D对象的环境的视图。在一些实施例中,引擎210初始化其中可以放置对象223的环境空间。在对象被放置时,模型代码213可以由引擎210生成以定义它们相对于环境空间内的参考系的位置、取向等,并且随后基于相对于参考系的视点(例如,开发人员经由编辑器UI模块230所生成的编辑器UI从该视点观看对象)来渲染。可以利用诸如纹理(或材料)、点亮和阴影信息的附加信息来扩充数据结构,以增强3D对象的视觉渲染。例如,材料或纹理可以被应用于3D对象(或基于智能材料为对象的面确定材料或纹理),并且关于纹理化的信息存储在数据结构中。光源(例如,强度、位置、颜色等)可以在环境中定义并且这些光源的效果可以相对于3D对象进行确定(诸如通过阴影),这些效果可以在纹理或材料上分层使得对象的某些部分在被渲染时看起来比其他部分更暗(或更亮)。游戏代码215可以包括信息(如规则),以及按照其移动模型的信息和用户如何与游戏的元素交互的信息(如用户可以探索、与其交互的区域等)。在一些实施例中,游戏代码215可以以类似于对象的方式生成,诸如通过对应于对象的位置、依赖性和其他因素方面的变化的开发人员输入。
在一些示例实施例中,引擎210还可以与编辑器123的物理引擎220对接。物理引擎220可以确定3D对象如何响应于用户输入(例如,被推出边的3D对象是落下还是浮置、轨迹等)、游戏代码中定义的事件、碰撞等。与对象中的不同对象相关联的变量可以被定义为模拟诸如重量的因素(例如,当被用户的化身等推动时,重块应该比轻块移动得更慢),并且这样的变量可以被编码在数据结构中,该数据结构由物理引擎220处理以响应于如以上描述的那些事件的事件来确定对象的位置和取向。
在一些示例实施例中,编辑器123包括通过其生成用户界面的编辑器UI模块230。例如,编辑器UI模块230可以生成用户界面,如环境界面231、模型界面235和智能材料界面237等,如显示由引擎210渲染的环境和其中的对象的当前视图的查看窗格。
环境界面231可以包括一个或多个窗格,用户可以通过该一个或多个窗格窗格定义或调节与环境空间相关联的全局参数。全局参数可以包括环境空间的参考系,通过该参考系可以定义对象及其多边形表面的取向和位置(例如,在X、Y、Z 3D空间中)。智能材料也可以基于参考系被转换到平面,诸如将在3D空间中具有给定取向和位置的材料的一部分投影到其上的表面的平面。例如,参考系可以具有原点,并且智能材料的2D纹理片从原点平铺。从概念上讲,通过旋转、转动或以其他方式操控锚定在原点的2D纹理来调节智能材料性质,智能材料进而可以被转换到3D空间中的平面。更具体地,智能材料可以被定向为具有由X、Y和Z坐标定义的给定法向量。在一些实施例中,对对象特征执行这种转换(诸如基于对象的节点(例如,用于对象的3D描述符)),以确定界定了映射到智能材料的平面内(诸如在为其定义了智能纹理的材料的平铺的2D UV空间内)的区域的子节点(例如,2D描述符)的分组。
模型界面235可以包括用户可以通过其选择对象以便放置在环境空间内并调节对象的性质的一个或多个窗格。开发人员可以利用多个对象来创建多个对象的元素。例如,模型界面235可以包括包含在模型模块125中并且用户可以在环境中对其进行选择和定位(诸如通过拖放)的对象223的列表。因此,例如,对象的实例可以被添加到环境中,并且多个不同的对象可以如所希望那样被添加并分组以在环境内创建元素。对象实例可以被分组并且通过界面以其他方式进行管理。
智能材料界面237可以包括用户可以通过其选择纹理225(或材料)以便在环境空间内使用并调节该纹理的性质的一个或多个窗格。在一些实施例中,除了纹理样本之外,纹理可以包括一组预先配置的智能材料。智能材料界面237可以包括用户可以通过其定义环境内的智能材料的实例的窗格。在一些实施例中,给定的纹理或材料(或预先配置的智能材料)可以用于定义智能材料的多个不同实例,诸如在与其他区域相比,发散的缩放对于环境的一些区域是希望的情况下。在一些实施例中,窗格包括纹理或材料的图像,如纹理片。在一些实施例中,可以从图像中选择纹理片,诸如通过选择图像的对应于纹理片的区。还可以指定用于根据纹理片以编程方式配置智能材料的平铺性质,诸如应该复制原始纹理片的方向(例如,在平面中水平地、竖直地或水平和竖直地)。在一些实施例中,诸如在环境内渲染平铺的预览,并且用户可以调节平铺方向的斜率、偏移或其他方面。进一步,窗格可以包括缩放选项,诸如以调节环境内的纹理片的相对大小(例如,砖纹理的砖对于类人类世界环境中的蚂蚁来说应该看起来非常大,而对于巨人来说则相反;类似地,从类人类世界角色的角度来看,蚂蚁可以利用小砖块来构建房屋,而巨人可以使用大砖块。窗格可以列出开发人员可以从其中选择以便应用于对象的所定义的智能材料(其也可以包括基于通用缩放的默认智能材料,其在被改变时被指示为所定义的智能材料实例)。反过来,当智能材料被应用于对象时,对应于对象的模型代码被引擎210分析,诸如以便将对象的表面转换到智能材料空间中(反之亦然)。基于智能材料的配置,将对象的表面映射到所应用的智能材料的2D材料区域,以获得面的边界内的材料的像素(例如,来自纹理片内的像素位置)的映射。引擎210进而将所映射的像素渲染在对象的面上。因此,例如,当引擎210读取为指定所应用的智能材料的对象生成的模型代码时,引擎210获得智能材料实例的性质(例如,平铺性质、纹理性质等),并基于智能材料的性质在对象的多边形内渲染材料各方面。
在一些实施例中,开发人员应用121包括用于创建游戏、游戏模组或资产的编辑器123。一般而言,开发人员可以利用编辑器123组件来生成游戏的特征(如纹理、对象、智能材料实例和其他资产),配置环境特征以及游戏设置。特别地,编辑器123可以包括模型模块125,在该模型模块内可以定义像纹理和对象的游戏资产,并且可以生成定义由多个对象构成的对象或元素的用于渲染对象或元素的特性(如纹理(诸如通过配置智能材料的实例)的游戏文件。这种游戏文件可以进一步定义对象或元素的特性,诸如移动、管控移动的规则等。在一些实施例中,模型模块125可以包括多个预先填充的对象(例如,多边形和多面体的相对应的多边形网格对应于对象,如块、球形多面体等)和预先填充的纹理,除了预先填充的纹理图像之外(但是可以基于预先填充的纹理图像),其可以包括预先填充的智能材料。开发人员诸如经由编辑器123可以选择(例如,经由拖放、双击或其他交互)预先填充的对象中的不同的对象,以利用所选择的对象填充环境,并根据对象的子集构建元素,诸如通过定位、合并或经由编辑器以其他方式与对象交互。类似地,开发人员诸如通过编辑器123可以选择对象(或对象或元素)和要应用的纹理(或者智能材料)。对象(或多个对象)以及对其应用的任何纹理(或智能材料)可以由编辑器来渲染,如同它将出现在环境中一样(例如,城堡可以由被定位以在给定位置形成城堡的对象、应用于形成城堡的对象的纹理、以及利用所应用的纹理(或基于所应用的智能材料的材料)来渲染的各种对象来构建,以在开发人员设备的屏幕上可视地显示城堡)。除了利用预先填充的对象之外,开发人员可以诸如通过编辑器123,手动地或利用自动化工具来构建新的对象和纹理。在一些实施例中,开发人员可以通过编辑器123选择纹理化或未纹理化的对象的特定配置来存储特定模型(例如,以便进行复制)。
图3A是示出用于将智能材料应用于对象的过程300A的示例的图。过程300A可以发生在诸如图1中示出的示例计算环境100的示例计算环境中,并且可以利用如参考图2描述的编辑器的编辑器来实施。
在一些实施例中,该过程包括建立环境空间的参考系和参数305。参考系可以定义X、Y和Z方向以及环境空间内的原点的位置。在一些实施例中,环境空间的参数可以定义环境内的对象的平面的一组可能取向或者顶点位置的密度。在一些实施例中,与环境空间相关联的质量参数可操作来调节该组顶点位置的可能取向或密度的大小,较大的组或较高的密度指示较高的质量,以及较小的组或较低的密度指示较低的质量。
在一些实施例中,该过程包括在UV空间310中建立用于智能材料的2D纹理片。例如,可以从2D图像中选择可以包括材料的视觉性质的纹理片,并且可以选择(例如,在纹理片的角部处、在纹理片的中心选择自动选择,或者手动选择)锚点(其可以映射到3D空间中的点)。在一些实施例中,2D图像或纹理片可以从标准的一组纹理中选择,该标准的一组纹理可以是纹理片或2D图像,其整个图像或子集可以被选择作为纹理片。可以定义UV空间内的纹理的复制性质,诸如纹理是否在U或V方向上复制、在两者上幅值,或者作为一个方向或另一方向的函数复制。在一些实施例中,材料的视觉表示(例如,作为纹理片的平铺)在配置过程期间被显示,诸如在原点处的环境中、或者在处于基于原点的给定距离(例如,可变的或预定义的)的法向于渲染的视点的位置被投影(例如,用于材料的纹理片的锚点可以基于3D空间内相对于原点的偏移而被定位在3D空间内,并且纹理片被渲染为法向于视点)。材料的视觉表示还可以传达给定距离处的材料的大小,并且窗格可以包括比例变量,开发人员可以通过该缩放变量来调整材料的缩放(例如,按照纹理片的相对大小)。在一些实施例中,开发人员可以操控纹理的视觉表示来调节平铺和投影材料的纹理片的方向(例如,作为UV空间中U和V的函数)(例如,具有斜率、偏移等)。例如,开发人员可能期望具有法向于表面投影并且其中砖与环境的水平轴齐平(例如,对于水平砖房)的砖材料,并且还或者替代性地,具有法向于表面投影并且其中砖相对于环境的水平轴倾斜(例如,对于倾斜的砖塔)的砖材料。反过来,智能材料实例可以基于如以上的那些性质的配置性质进行实例化。
在一些实施例中,该过程包括获得对象315。例如,可以由开发人员从标准的一组对象中选择对象,并将其放置在环境空间中。例如,用户界面的窗格可以包括标准集中的对象的列表或预览,开发人员可以从该列表或预览中将对象拖放到环境中。在一些实施例中,开发人员可以创建或加载用户对象,该用户对象可以显示在包括用户对象的列表或预览的用户界面的窗格内,开发人员可以从该用户对象的列表或预览拖放到环境中。开发人员可以如所期望那样在环境中确定对象的大小、定位和定向对象。
在一些实施例中,该过程包括确定对象的节点和子节点到UV空间和在UV空间内的映射以建立顶点320。在一些实施例中,节点对应于可以定义对象在3D空间中的位置、取向和大小的对象的一组顶点。例如,每个对象可以包括至少三个节点。子节点可以对应于不需要作为节点被跟踪的对象的各种多边形表面(例如,立方体的3个顶点足以定义大小、取向和位置)。也可以以其他方式描述节点,例如,可以通过特定面的法向量和向量的大小(例如,对应于比例)、或者基于对应于立方体的特定原点顶点的一组向量来描述立方体。因此,例如,节点可以是描述如多面体的对象的位置、取向和大小并且根据其可以确定关于对象的其他信息的缩减的一组信息。在一些实施例中,确定多个子节点,并且子节点的分组可以对应于多面体的相应多边形面。在一些实施例中,基于子节点确定每个面的一组顶点,并且可以根据该组顶点确定面和面边界的法向矢量。因此,例如,基于顶点中的一个或多个和法向量,3D环境空间中的面可以基于环境空间的参考系被映射到UV空间。
在一些实施例中,该过程包括将智能材料应用于对象325。例如,开发人员可以选择环境空间内的对象,并选择应用于该对象的智能材料。如前所描述的那样,智能材料可以包括定义在UV空间内的材料和3D环境空间内的用于基于参考系投影材料的性质,并且对应于对象的面的顶点可以基于参考系被映射到UV空间。例如,UV映射可以基于描述平面的法向量,并且顶点作为描述平面内的2D坐标的U、V坐标。反过来,基于智能材料的配置(例如,基于相对于参考系的倾斜方向、取向等),平面内的表面的2D坐标可以映射到同一平面内材料的投影(反之亦然)。因此,例如,对象的给定面可以被转换成材料的UV空间内的一组2D坐标,并且这些2D坐标被一致地映射到具有相同法向矢量的面上(例如,在平面内使得当应用相同的智能材料时,在相同平面中具有被取向为与给定面相邻或重叠的另一面的另一对象不表现出材料纹理化方面的不连续性)。因此,例如,UV空间内的材料的像素(例如,根据纹理片的平铺确定的)可以被映射到面的边界内。换句话说,对于相同的平面,诸如由法向矢量指示的平面,平面内相同的2D坐标位置映射到材料的相同像素位置(其对应于纹理片的给定像素),甚至跨越不同的对象映射。因此,面在UV空间内的移动使边界移位,并且像素映射方面的变化导致面占据在新位置的材料投影。在一些实施例中,因为顶点被映射,所以共享顶点或边(例如,共享两个顶点)的面可以被映射到UV空间内的相同位置,并且不同的法向矢量指示基于法向矢量的在对象的不同面上映射材料内的像素位置(其基于平铺性质对应于纹理片的像素)的智能材料的材料投影的取向(如平分平面)。
图3B是示出用于定义智能材料的过程300B的示例的图。过程300B可以发生在诸如图1中示出的示例计算环境100的示例计算环境中,并且可以利用如参考图2描述的编辑器的编辑器来实施。
在一些实施例中,该过程包括:在3维轴上(如在对应于环境31的X、Y、Z 3D空间内)定义参考系;定义材料和表面性质33,诸如在用户界面的材料窗格内;点亮并将用于材料的纹理片平铺到环境35,诸如通过基于环境内的点位置和取向确定照明性质和阴影;获得在3D环境空间内定向的表面37的选择;以及确定表面37的节点,诸如对应于点位置并且对应于在点位置具有确定的照明和阴影性质的材料或纹理的节点、以及对应于用于渲染材料的相对应的区域(例如,从其内定义了纹理片的平铺的区域)的对象的面的子节点。
图3C是示出用于操控具有一个或多个所应用的智能材料的对象的纹理化性质的过程300C的示例的图。过程300C可以发生在诸如图1中示出的示例计算环境100的示例计算环境中,并且可以利用如参考图2描述的编辑器的编辑器来实施。
如上所述,对于具有所应用的智能材料的对象,对象的面在UV空间内的移动使映射到该面的2D纹理的边界移位,并且因此导致像素映射的改变。从概念上讲,这可以被认为是在智能材料被投影在其上的更大的屏幕上移动一张白纸;这张纸在给定位置占据被投影在边界内的材料的部分。通常,这种配置是优选的,诸如利用多个片材来建造带有用于门的开口的城堡的墙壁。然而,城堡的一些元素(如隐藏的滑动墙壁)(其可以被认为是上面的纸)应该保持材料远离其原始位置而不是基于新位置的变化投影。因此,一些实施例包括当前智能材料投影可以被对象保持的过程。
在一些实施例中,该过程包括接收保持选择41和从原始UV空间(例如,像当前UV空间)捕获与对象的面相关联的智能材料投影43。继续前面提及的示例,这可以被视为捕获被投影在该张纸上使得当该张纸移动时它带走材料的该部分的材料的当前部分。换句话说,该面响应于保持选择41而保留智能材料像素映射位置,诸如通过与该面相关联地存储原始映射信息(例如,该面在UV空间中映射到的材料的部分)。在一些实施例中,可以选择对象的单个面或面的集合来保持智能材料纹理,并且面的集合可以包括对象的每个面或面的子集。值得注意的是,不需要存储用于空间的材料的实际部分,而是存储可以通过其参考该部分的原始UV空间信息。
一些实施例可以提供冻结选择作为保持选择的一方面,其中移动对象响应于该移动而相对于3D模型的坐标系改变平铺的空间相位。例如,可以将平铺的空间相位冻结到对象的一个或多个坐标,就像先前投影到模型的面上一样,并且模型或对象的移动(诸如用于对受到冻结选择的一个或多个面进行定向或重新定位)可以导致从原始UV空间修改所投影的平铺。例如,平面内的所投影的平铺可以基于响应于当编辑器接收冻结平铺的空间相位(如偏移)的命令时捕获的对象的面的坐标而修改的UV空间。换句话说,响应于该命令,该过程可以将通过其指定平铺的坐标系从世界空间坐标系改变为至少部分地基于3D模型的坐标系的坐标。在一些实施例中,冻结选择可以将智能材料的期望平铺绑定为基于为其选择了冻结的对象,如修改可以扩展到对其应用了智能材料的相同实例的其他对象的平铺投影的偏移,或者冻结选择可以在每个对象的基础上执行。在一些实施例中,冻结选择之后的对象的纹理性质(例如,平铺到面的一个或多个纹理)可以被用户选择为进行存储,以导致从世界空间坐标系(或基于任何偏移的修改的UV空间)到3D模型的坐标系存储所指定的平铺,诸如从而捕获特定于该模型的UV包,该UV包可以不再绑定到世界空间投影,并且通过该UV包,该模型可以利用所捕获的纹理化性质进行复制。环境空间可以包括各自具有不同的模型特定的坐标系的多个3D模型。
在一些实施例中,该过程包括接收切换选择45;由此材料到面的所存储的原始映射可以利用基于面的新位置的新映射来切换。响应于切换选择45,该过程可以包括确定面的新UV空间(例如,基于对象的新位置),并且在面上渲染新的像素材料映射。取消选择切换导致基于材料到面的所存储的原始映射渲染材料像素。
在一些实施例中,该过程包括接收在层49中映射多个材料的请求。因此,在一些实施例中,可以将多个智能材料应用于对象或对象的面,诸如顺序地或成批地,并且通过用户界面的窗格,可以指定层的层级。每个层可以包括相对应的性质,如透明度等,以及用于保持当前智能材料投影和切换所捕获的投影的独立选择。在一些实施例中,可能期望的是保持一些材料而不保持其他材料。
图4是示出用于发布包括一组标准化的对象和纹理的游戏的过程400的示例的图。过程400可以发生在示例计算环境(诸如图1中示出的示例计算环境100)中。
在一些实施例中,该过程包括:诸如从开发人员设备获得游戏文件405;标识非标准文件410,诸如包括不在标准组中的对象或纹理的模型;发布游戏的列表415,诸如在响应于对游戏的列表的API请求而提供的游戏列表中;接收实例化游戏的请求420,诸如经由指示游戏的API请求,并响应于游戏文件启动自组织游戏服务器;以及将非标准文件410和游戏文件,而不是包含标准对象或纹理的标准文件,发送给请求通过API加入游戏的客户端请求。游戏文件包含游戏所需的所有信息,游戏文件中引用的包括不同于标准模型的元素的任何用户模型可以通过API获得。
在一些实施例中,步骤410包括:通过解析游戏文件以提取未在标准的一组对象和纹理中表示的用户对象和纹理,基于用户生成的对象或纹理来标识用户模型;确定所提取的用户对象的大小,并且可以将其与阈值(诸如平台相关的阈值)进行比较;基于参考至少一个用户对象或纹理的、可能经过批准的模型代码(例如,模型代码可以包括用于渲染对象的信息、用于对象的所选择的智能材料以及可以通过其确定对象表面上的材料渲染的智能材料实例)来渲染所提取的对象和纹理;以及存储可允许的用户对象和纹理(例如,不超过阈值大小的对象和纹理)。
图5A是示出了当如所指示的那样操控对象的表面时应用于这些表面的传统纹理的示例反应的图。例如,各种对象O1A、O2A、O3A可以具有所应用501的相同的传统纹理505,其被单独归因于不同的对象。因此,当这样的对象被重新定位511或以其他方式定位(诸如定位成重叠)时,即使相同的纹理被应用于每个对象,也存在不连续性。例如,对象可以被定位成重叠,如由O1B、O2B、O3B表示的对象,这些对象在位置515、513处重叠。如所示出的那样,在重叠位置515处跨越对象O1B、O2B以及在重叠位置513处跨越O2B、O3B的纹理表现出纹理方面的不连续性,即使单独应用于每个对象的纹理505保持处于相同的比例。这是因为单独应用于每个对象的传统纹理505单独地与该对象关联。缩放和旋转531也导致不连续性以及其他问题,因为所应用的传统纹理的像素密度随着对象比例而改变,并且单独属性化的纹理随着对象旋转。因此,当由开发人员操控531这样的对象(诸如在环境内并且被定位成相邻或重叠,如由O1C、O2C、O3C表示的对象一样)时,长宽比一致的缩放533、拉伸535和旋转537使得每一个对象相对于其他对象表现出纹理方面的不连续性。因此,开发人员必须通过各种变量单独调整每个对象的纹理,以最小化这种不连续性。
图5B是示出了具有用于应用于图5A中示出的对象表面的传统纹理的比例变量的示例用户界面的图。如所示出的那样,编辑器的用户界面540可以包括各种不同的窗格。其示例可以包括库窗格541,该库窗格包括可从模型模块获得的资产列表,如对象、纹理、模型等,该模型模块可以利用本地资产或通过网络获得的资产,诸如从储存库获得的资产来填充库。例如,编辑器的模型模块可以包括可以在库窗格541内表示的多个预先填充的对象(例如,多边形和多面体的相对应的多边形网格对应于对象,如块、球形多面体等)和预先填充的纹理(以及用户定义的对象或纹理或模型)。
环境窗格542可以显示所渲染的环境,其可以包括在环境内渲染的一个或多个资产,或者以其他方式显示资产的渲染。例如,作为对象集合的对象或模型可以在环境内利用任何所应用的纹理、阴影等来渲染。用户可利用库窗格541来浏览资产,如对象或模型,以添加到环境窗格542中显示的环境中,并浏览库窗格中的纹理以纹理化那些对象(这并不意味着不能在另一窗格中选择纹理,如提供对应于对象或模型的细节的窗格)。例如,用户可以从库541向环境窗格542内显示的环境拖放、选择添加或以其他方式添加多个对象,如O1C、O2C和O3C。用户可以经由环境窗格542配置环境内的那些对象,诸如通过选择对象并修改环境内的对象的性质,如位置、缩放、取向等,并且那些修改可以根据在环境窗格内查看环境的视角来渲染。例如,图5B示出了选择550对象O2C以便进行操控,并且对象O2C可以如用户所期望的那样在环境内旋转、缩放和定位,并且根据环境窗格542内的环境的当前视图来渲染。图5B还示出了将纹理应用于三个对象O1C、O2C和O3C,诸如通过从库窗格541(或者替代性地,在另一窗格内,如对象细节窗格)中进行选择,其中每个对象如用户所期望的那样在示例环境内被定位、缩放或定向。对应于环境内的资产(如对象)的细节可以显示在另一窗格(如对象细节窗格544A)中。用户可以询问资产,如对象,诸如通过在环境窗格542或对象细节窗格544A内进行选择550,或具有用于查看对应于该对象的细节(如对象细节544B)的对象细节窗格544A的下拉菜单。
在所示的示例中,当创建环境时,对象O1C、O2C和O3C各自以用户可能期望的某种方式被配置。例如,一个或多个对象可以如所示出的那样被定位为重叠,或者可以被定位为彼此相邻。它们可以如所期望那样缩放,无论是一致地保持长宽比(例如O1C)、还是不保持长宽比(如在一个轴上比另一轴更多,例如O2C)、或者相对于其他对象旋转(例如O3C)。参照对象O2C的以便进行配置的示例选择,示出了示例对象细节544B。对象细节窗格544B可以指示所选择的对象的信息,如对象性质和纹理性质,后者指示当应用纹理时对象的U-V平铺缩放性质和纹理性质。对于所应用的纹理,可以指示U 547和V 548平铺缩放性质两者,其修改应用于对象的纹理实例。这些变量单独地与对象O1C、O2C和O3C中的每一个关联。因此,当由开发人员操控这样的对象(诸如在环境窗格542内并且被定位成相邻或重叠,如由O1C、O2C、O3C表示的对象一样)时,长宽比一致的缩放、拉伸和旋转分别使得每一个对象相对于其他对象表现出纹理方面的不连续性。因此,开发人员必须通过各种变量单独调整每个对象的纹理,以最小化这种不连续性。本文描述的实施例提供了用于配置智能材料的过程,如545所指示那样,这些只能材料在应用于对象(例如,O1C、O2C和O3C)时减轻了所示出的问题等,如参考下面描述的示例所描述和示出的那样。
图6A是示出了当如所指示的那样操控对象的表面时应用于这些表面的智能材料的示例反应的图。例如,各种对象O1A、O2A、O3A可以应用651相同的智能材料655(例如,相对传统应用的纹理)。智能材料655可以单独选择用于不同的对象或批量应用于不同的对象。智能材料655可以从UV空间内的U和V方向上的纹理片平铺,并且对象O1A、O2A、O3A被定位成使得所示出的表面对应于UV空间内的材质化区域。因此,例如,不同对象的顶点被映射到对应于面的平面的材料的UV空间内的位置。因此,当这样的对象被重新定位661诸如定位为重叠时,如由O1B、O2B、O3B表示的对象,由于在材料的相同UV空间内对象的顶点之间的映射,对象的面之间的重叠位置665、663没有表现出不连续性。同样地,当由开发人员以其他方式671操控应用了智能材料的这种对象(诸如在环境中并且被定位成相邻或重叠,如由O1C、O2C、O3C表示的对象)时,对象O1C缩放同时保持从维度673A(例如,对应于对象O1A)到维度673B的长宽比、对象O2C拉伸而不保持从维度675A(例如,对应于对象O2A)到维度675B的长宽比、以及对象O3C从取向677A(例如,对应于对象O3A)旋转到取向677B、以及定位由于在材料的相同UV空间内的对象的顶点之间的映射而不会导致对象的面表现出不连续性。进一步,智能材料缩放可以批量应用于每个对象,诸如通过调节对应于已经应用于每个对象的智能材料的单个缩放变量。
图6B是示出了具有用于应用于图6A中示出的对象的表面的智能材料的单个比例变量的示例用户界面的图。如所示出的那样,编辑器的用户界面640可以包括各种不同的窗格。其示例可以包括库窗格641,该库窗格包括可从模型模块获得的资产列表,如对象、纹理、模型等,该模型模块可以利用本地资产或通过网络获得的资产,诸如从储存库获得的资产来填充库。库可以包括可以应用于对象的智能材料。例如,编辑器的模型模块可以包括可以在库窗格641内表示的多个预先填充的对象(例如,多边形和多面体的相对应的多边形网格对应于对象,如块、球形多面体等)和预先填充的纹理(连同用户定义的对象或纹理或模型),并且可以提供各种智能纹理以便应用于对象。
环境窗格642可以显示所渲染的环境,其可以包括在环境内渲染的一个或多个资产,或者以其他方式显示资产的渲染。例如,作为对象的集合的对象或模型可以利用任何所应用的纹理、阴影等以及可以应用于对象或模型的智能材料在环境中渲染。一些实施例可以根据本文描述的过程从库窗格642获得的现有纹理配置一个或多个智能材料。由模型模块实施的库的一些实施例可以将纹理链接到智能材料实例或配置,由此可以利用纹理的智能材料实例来配置对象。因此,例如,在一些实施例中,可以提供诸如对象细节窗格内的选项,以从所应用的纹理切换到用于该纹理的智能材料的实例。用户可以利用库窗格641来浏览资产(如对象或模型)以添加到环境窗格642内显示的环境中,并且浏览库窗格内的纹理或智能材料,以选择用于那些对象的纹理(这并不意味着纹理或智能材料,或者在智能材料和纹理之间的切换不能在另一窗格内执行,如提供对应于对象或模型的细节的窗格)。例如,用户可以从库641向环境窗格642内显示的环境拖放、选择添加或以其他方式添加多个对象,如O1C、O2C和O3C。用户可以经由环境窗格642配置环境内的那些对象,诸如通过选择对象并修改环境内的对象的性质,如位置、缩放、取向等,并且那些修改可以根据在环境窗格内查看环境的视角来渲染。例如,图6B示出了选择650对象O2C以便进行操控,并且对象O2C可以如用户所期望的那样在环境内旋转、缩放和定位,并且根据环境窗格642内的环境的当前视图来渲染。图6B还示出了将智能材料(与图5B的纹理形成对比)应用于三个对象O1C、O2C和O3C,诸如通过从库窗格642(或者替代性地,在另一窗格内,如对象细节窗格)中进行选择,其中每个对象如用户所期望的那样在示例环境内被定位、缩放或定向。对应于环境内的资产(如对象)的细节可以显示在另一窗格(如对象细节窗格644A)中。用户可以询问资产,如对象,诸如通过在环境窗格642或对象细节窗格644A内进行选择650,或具有用于查看对应于该对象的细节(如对象细节644B)的对象细节窗格644A的下拉菜单。
在所示的示例中,当创建环境时,对象O1C、O2C和O3C各自以用户可能期望的某种方式被配置。例如,一个或多个对象可以如所示出的那样被定位为重叠,或者可以被定位为彼此相邻。它们可以如所期望那样缩放,无论是一致地保持长宽比(例如O1C)、还是不保持长宽比(如在一个轴上比另一轴更多,例如O2C)、或者相对于其他对象旋转(例如O3C)。参照对象O2C的以便进行配置的示例选择,示出了示例对象细节644B。当应用智能材料时,对象细节窗格644B可以指示用于所选择的对象的信息,如对象性质和智能材料性质(例如,而不是纹理U-V平铺缩放性质)以及用于对象的智能材料名称。如所示出的那样,对象细节窗格644B可以指示智能材料645被应用于对象。还可以指示用于智能材料646的缩放。缩放可以全局应用于智能材料,并且对应于智能材料实例的缩放。可以通过对象的(例如,单个)变量来调节缩放(例如,如果改变的话,其可以对应于新的智能材料实例),或者可以修改用于智能材料的实例的缩放(例如,其可以应用于如所示出的多个对象)。对于所应用的智能材料645,缩放性质(而不是对象长宽比一致的缩放、拉伸和旋转)可以管控所渲染的纹理外观。而且,缩放不需要单独地与对象O1C、O2C和O3C中的每一个关联,而是用于智能材料实例,智能材料实例可以在多个对象之间保持一致。因此,当这样的对象被用户操控时,诸如在环境窗格642内并且被定位成相邻或重叠,如由O1C、O2C、O3C表示的对象(分别具有长宽比一致的缩放、拉伸和旋转),智能材料可以在UV空间内在U和V方向上跨具有相同所应用的智能材料实例(例如,其中其缩放可以通过用于实例的示例缩放变量646进行调节,从而批量缩放具有所应用的智能纹理的多个对象的表面上的智能材料或者从而配置用于对象的智能材料的另一实例)的对象一致地从纹理片平铺。在此,对象O1C、O2C、O3C的表面可以被映射到UV空间内的材质化区域(基于智能材料纹理和缩放)。因此,例如,不同对象的顶点被映射到对应于面的平面的材料的UV空间内的位置。因此,当应用了智能材料的这种对象(诸如在环境内并且被定位成相邻或重叠)被用户操控、在保持长宽比的同时被缩放、或者被拉伸、被旋转或以其他方式被配置时,像由O1C、O2C、O3C表示的那些对象的对象的这种操控由于材料投影而在其表面上表现出一致的纹理化。具体而言,将智能材料645(例如,在一些实施例中,其链接到基础纹理的实例可以在对象细节窗格644B内选择,或者根据这里讨论的示例过程以其他方式配置)应用于对象(如示例对象O1C、O2C、O3C)不会由于智能材料(例如,如其应用于那些对象的实例)的相同UV空间内的对象的顶点之间的映射而导致对象的面表现出不连续性。进一步,智能材料缩放可以批量应用于每个对象,诸如通过调节对应于已经应用于每个对象的智能材料的单个缩放变量。结果,开发人员不需要单独调整每个对象的纹理,而是将智能纹理应用于对象集合以一致地纹理化那些对象,其中智能材料(或其实例)的缩放可以跨那些对象被均匀地调节,即使当它们以导致传统纹理化过程中的不连续性的方式被操控时。根据这里提供的用于配置和应用智能材料以减少复杂游戏环境的开发时间的过程的实施例,智能材料645(如所示的示例砖块材料)可以被配置和应用于环境窗格642内的对象。
图7是示出根据本技术的实施例的示例计算系统1000的图。本文描述的系统和方法的各个部分可以包括类似于计算系统1000的一个或多个计算机系统或在类似于计算系统1000的一个或多个计算机系统上执行。例如,图1的所展示的组件或设备中的一个或多个(诸如120、130、150、160和170)可以是或包括下文描述的示例计算系统1000的一个或多个组件。如图7中示出的计算系统可以例如包括并执行开发者应用的编辑器的模块,如图2中示出的那些模块。因此,例如,本文描述的过程和模块可以由类似于计算系统1000的一个或多个处理系统或设备的一个或多个处理系统或设备来执行。
计算系统1000可以包括经由输入/输出(I/O)接口1050耦接到系统存储器1020、输入/输出I/O设备接口1030和网络接口1040的一个或多个处理器(例如,处理器1010a至1010n)。处理器可以包括单个处理器或多个处理器(例如,分布式处理器)。处理器可以是能够运行或以其他方式执行指令的任何合适的处理器。处理器可以包括实行程序指令以执行计算系统1000的算术、逻辑和输入/输出操作的中央处理单元(CPU)。处理器可以执行为程序指令创建执行环境的代码(例如,处理器固件、协议栈、数据库管理系统、操作系统或其组合)。处理器可以包括可编程处理器。处理器可以包括通用或专用微处理器。处理器可以从存储器(例如,系统存储器1020)接收指令和数据。计算系统1000可以是包括一个处理器(例如,处理器1010a)的单处理器系统,或者包括任何数量的合适处理器(例如,1010a至1010n)的多处理器系统。可以采用多个处理器来提供本文描述的技术的一个或多个部分的并行或顺序执行。本文描述的诸如逻辑流程的过程可以由运行一个或多个计算机程序以通过对输入数据进行操作并生成相对应的输出来执行功能的一个或多个可编程处理器执行。本文描述的过程可以由专用逻辑电路系统来执行,并且装置也可以实施为专用逻辑电路系统,例如FPGA(field programmable gate array,现场可编程门阵列)或ASIC(applicationspecific integrated circuit,专用集成电路)。计算系统1000可以包括多个计算设备(例如,分布式计算机系统)来实施各种处理功能。
I/O设备接口1030可以提供用于将一个或多个I/O设备1060连接到计算机系统1000的接口。I/O设备可以包括接收输入(例如,来自用户)或输出信息(例如,给用户)的设备。I/O设备1060可以包括例如呈现在显示器(例如,阴极射线管(cathode ray tube,CRT)或液晶显示器(liquid crystal display,LCD)监控器)、定点设备(例如,计算机鼠标或轨迹球)、键盘、小键盘、触摸板、扫描设备、语音识别设备、手势识别设备、打印机、音频扬声器、麦克风、照相机等上的图形用户界面。I/O设备1060可以通过有线或无线连接连接到计算机系统1000。I/O设备1060可以从远程位置连接到计算机系统1000。例如,位于远程计算机系统上的I/O设备1060可以通过网络和网络接口1040连接到计算机系统1000。
网络接口1040可以包括提供计算机系统1000到网络的连接的网络适配器。网络接口1040促进计算机系统1000和连接到网络的其他设备之间的数据交换。网络接口1040可以支持有线或无线通信。网络可以包括电子通信网络,诸如互联网、局域网(local areanetwork,LAN)、广域网(wide area network,WAN)、蜂窝通信网络等。
系统存储器1020可以被配置成存储程序指令1100或数据1110。程序指令1100可以由处理器(例如,一个或多个处理器1010a至1010n)执行,以实施本技术的一个或多个实施例。指令1100可以包括计算机程序指令模块,用于实施本文针对各种处理模块描述的一个或多个技术。程序指令可以包括计算机程序(其在某些形式中被称为程序、软件、软件应用、脚本或代码)。计算机程序可以以编程语言编写,包括编译或解释语言、或者声明性或过程性语言。计算机程序可以包括适用于在计算环境中使用的单元,包括作为独立程序、模块、组件或子例程。计算机程序可能对应于也可能不对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、存储在专用于所讨论的程序的单个文件中、或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在本地位于一个位点或者分布在多个远程位点并且通过通信网络互连的一个或多个计算机处理器上执行。
系统存储器1020可以包括其上存储有程序指令的有形程序载体。有形程序载体可以包括非暂时性计算机可读存储介质。非暂时性计算机可读存储介质可以包括机器可读存储设备、机器可读存储基底、存储器设备或其任意组合。非暂时性计算机可读存储介质可以包括非易失性存储器(例如,闪存、ROM、PROM、EPROM、EEPROM存储器)、易失性存储器(例如,随机存取存储器(random access memory,RAM)、静态随机存取存储器(static randomaccess memory,SRAM)、同步动态RAM(synchronous dynamic RAM,SDRAM))、大容量存储存储器(例如,CD-ROM和/或DVD-ROM、硬盘驱动器)等。系统存储器1020可以包括其上可以存储有可由计算机处理器(例如,处理器1010a至1010n中的一个或多个)执行以引起本文描述的主题和功能操作的程序指令的非暂时性计算机可读存储介质。存储器(例如,系统存储器1020)可以包括单个存储器设备和/或多个存储器设备(例如,分布式存储器设备)。提供本文描述的功能的指令或其他程序代码可以存储在有形的非暂时性计算机可读介质上。在一些情况下,整个指令集可以同时存储在介质上,或者在一些情况下,指令的不同部分可以在不同时间存储在同一介质上。
I/O接口1050可以被配置成协调处理器1010a至1010n、系统存储器1020、网络接口1040、I/O设备1060和/或其他外围设备之间的I/O流量。I/O接口1050可以执行协议、定时或其他数据转变,以将来自一个组件(例如,系统存储器1020)的数据信号转换成适合由另一组件(例如,处理器1010a至1010n)使用的格式。I/O接口1050可以包括对通过各种类型的外围总线附接的设备的支持,诸如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变体。
本文描述的技术的实施例可以使用计算机系统1000的单个实例或被配置为托管实施例的不同部分或实例的多个计算机系统1000来实施。多个计算机系统1000可以提供本文描述的技术的一个或多个部分的并行或顺序处理/执行。
本领域技术人员将会理解,计算机系统1000仅仅是说明性的,并不旨在限制本文描述的技术的范围。计算机系统1000可以包括可以执行或以其他方式提供本文描述的技术的性能的设备或软件的任何组合。例如,计算机系统1000可以包括云计算系统、数据中心、服务器机架、服务器、虚拟服务器、台式计算机、膝上型计算机、平板计算机、服务器设备、客户端设备、移动电话、个人数字助理(personal digital assistant,PDA)、移动音频或视频播放器、游戏控制台、车载计算机或全球定位系统(Global Positioning System,GPS)等,或者是它们的组合。计算机系统1000也可以连接到未示出的其他设备,或者可以作为独立系统操作。此外,在一些实施例中,由所示出的组件提供的功能可以被组合在更少的组件中或者分布在附加组件中。类似地,在一些实施例中,可以不提供所示出的组件中的一些的功能,或者其他附加功能是可用的。
本领域技术人员还将理解,尽管各种项目被示出为在使用时存储在存储器中或存储装置上,但是出于存储器管理和数据完整性的目的,这些项或它们的一部分可以在存储器和其他存储设备之间传输。替代性地,在其他实施例中,软件组件中的一些或所有可以在另一设备上的存储器中执行,并且经由计算机间通信与所示出的计算机系统通信。系统组件或数据结构中的一些或所有也可以存储(例如,作为指令或结构化数据)在计算机可访问的介质或便携式物品上,以由适当的驱动器读取,其各种示例如在上文中描述。在一些实施例中,存储在与计算机系统1000分离的计算机可访问介质上的指令可以经由传输介质或信号(诸如电、电磁或数字信号)传输到计算机系统1000,经由通信介质例如网络或无线链路传送。各种实施例还可以包括在计算机可访问介质上接收、发送或存储根据前述描述实施的指令或数据。因此,本技术可以利用其他计算机系统配置来实践。
在框图中,所示出的组件被描绘为离散的功能块,但是实施例不限于其中如所示出的那样组织本文描述的功能的系统。由组件中的每一个提供的功能可以由软件或硬件模块来提供,这些软件或硬件模块与当前描述的不同地进行组织,例如,这种软件或硬件可以混合、结合、复制、分解、分布(例如分布在数据中心内或地理上分布)、或者以其他方式不同地组织。本文描述的功能可以由执行存储在有形的、非暂时性机器可读介质上的代码的一个或多个计算机的一个或多个处理器来提供。在一些情况下,尽管使用了单数术语“介质”,但是指令可以分布在与不同计算设备相关联的不同存储设备上,例如其中每个计算设备具有指令的不同子集,这是与本文中的单数术语“介质”的使用相一致的实施方式。在一些情况下,第三方内容递送网络可以托管通过网络传送的信息中的一些或所有,在这种情况下,在信息(例如,内容)被供应或以其他方式提供的程度上,可以通过发送指令从内容递送网络检索该信息来提供该信息。
读者应该理解,本申请描述了几种独立有用的技术。申请人不是将这些技术分离多个独立的专利申请,而是将这些技术分组到单个文件中,因为它们的相关主题对申请过程中的经济性有用。但是这些技术的不同优点和各方面不应该混为一谈。在一些情况下,实施例解决了本文提到的所有缺陷,但是应当理解的是,这些技术是独立有用的,并且一些实施例仅解决了这些问题的子集或者提供了对于阅读本公开的本领域技术人员来说是显而易见的其他未提及的益处。由于成本限制,本文公开的一些技术目前可能不要求保护,而可能在以后的申请中要求保护,诸如继续申请或通过修改本权利要求。类似地,由于篇幅限制,本文件的发明部分的摘要和发明内容不应被视为包含所有这些技术或这些技术的所有方面的全面列表。
应当理解,说明书和附图并不旨在将本技术限制于所公开的特定形式,而是相反,本发明旨在覆盖落入由所附权利要求限定的本技术的精神和范围内的所有修改、等同物和替代性方案。鉴于此描述,本技术的各个方面的进一步修改和替代性实施例对于本领域技术人员将是显而易见的。因此,该描述和附图仅被解释为说明性的,并且出于教导本领域技术人员的目的是实行本技术的一般方式。应当理解,本文示出和描述的本技术的形式将被视为实施例的示例。元件和材料可以替代本文示出和描述的那些元件和材料,零件和过程可以颠倒或省略,并且本技术的某些特征可以独立使用,所有这些对于受益于本技术的描述的本领域技术人员来说是显而易见的。在不脱离所附权利要求中描述的本技术的精神和范围的情况下,可以对本文描述的元素进行改变。本文使用的标题仅用于组织目的,并不意味着用于限制描述的范围。
如在整个申请中所使用的那样,单词“可以”是在许可的意义上使用的(即,意味着有可能),而不是强制的意义上使用的(即,意味着必须)。词语“包括(include、including、includes)”等意味着包括但不限于。如贯穿本申请所使用的那样,单数形式“一”、“一个”和“该”包括复数指示物,除非内容明确地另外指出。因此,例如,对“元素”的引用包括两个或更多个元素的组合,尽管对于一个或多个元素使用了其他术语和短语,例如“一个或多个”。除非另有说明,术语“或”是非排他性的,即包括“和”和“或”。描述条件关系的术语,例如,“响应于X,Y”,“在X时,Y”,“如果X,Y”,“当X,Y”等涵括了这样的因果关系,其中先行条件是必要的因果条件,先行条件是充分的因果条件,或者先行条件是结果的促成的因果条件,例如,“状态X发生在条件Y获得时”是“X仅在Y时发生”和“X在Y和Z时发生”的类属。这种条件关系不限于直接跟随先行条件获得的结果,因为一些结果可能被延迟,并且在条件语句中,先行条件与它们的结果相连,例如,先行条件与结果发生的可能性相关。多个属性或功能被映射到多个对象(例如,一个或多个处理器执行步骤A、B、C和D)的陈述涵括所有这些属性或功能被映射到所有这些对象,以及属性或功能的子集被映射到属性或功能的子集(例如,所有处理器各自执行步骤A至D,以及其中处理器1执行步骤A,处理器2执行步骤B和步骤C的一部分,以及处理器3执行步骤C的一部分和步骤D的情况),除非另有说明。类似地,对执行步骤A的“计算机系统”和执行步骤B的“计算机系统”的引用可以包括执行这两个步骤的计算机系统内的相同计算设备或执行步骤A和B的计算机系统内的不同计算设备。进一步,除非另有说明,否则一个值或动作“基于”另一条件或值的陈述涵括条件或值是唯一因素的情况和条件或值是多个因素中的一个因素的情况。除非另有说明,否则某些集合的“每个”实例具有某些性质的陈述不应被理解为排除较大集合的某些相同或相似成员不具有该属性的情况,也就是说,每个不一定意味着每一个。关于所陈述的步骤的序列的限制不应被理解为权利要求,除非明确规定,例如利用明确的语言,如“在执行X之后,执行Y”,与可能被不适当地认为暗示序列限制的陈述相反(如“对项执行X,对X过的项执行Y”)用于使权利要求更可读的目的,而不是规定序列。涉及“A、B和C中的至少Z个”等(例如,“A、B或C中的至少Z个”)的陈述是指所列类别(A、B和C)中的至少Z个,并且不要求每个类别中至少Z个单元。除非特别声明,否则从讨论中显而易见的是,应该理解的是,贯穿本说明书讨论,利用诸如“处理”、“计算(computing或calculating)”、“确定”等术语是指特定装置的动作或过程,诸如专用计算机或类似的专用电子处理/计算设备。参照几何构造描述的特征(如“平行”、“垂直/正交”、“正方形”、“圆柱形”等)应被解释为涵括基本体现几何构造的性质的项,例如,对“平行”表面的引用涵括基本平行的表面。参照说明书中的范围来确定这些几何构造的与柏拉图理想的偏离的允许范围,并且在没有参照使用领域中的工业规范说明这些范围的情况下,并且在参照指定特征的制造领域中的工业规范的情况下没有定义这些范围,并且在没有定义这些范围的情况下,基本上体现几何构造的特征应该被解释为包括该几何构造的定义属性的15%以内的那些特征。术语“第一”、“第二”、“第三”、“给定”等(如果在权利要求中使用的话)是用于区分或以其他方式标识,而不是示出顺序或编号限制。如在本领域的普通使用中的情况,参考对人类而言显著的用途描述的数据结构和格式不需要以人类可理解的格式呈现来构成所描述的数据结构或格式,例如文本不需要以Unicode或ASCII呈现或甚至编码来构成文本;不需要显示或解码图像、地图和数据可视化来分别构成图像、地图和数据可视化;语音、音乐和其他音频不需要通过扬声器发出或被解码来分别构成语音、音乐或其他音频。计算机实施的指令、命令等不限于可执行代码,并且可以以使得功能被调用的数据的形式来实施,例如,以函数的自变量的形式或API调用。
在本专利中,在任何美国专利、美国专利申请或其他材料(例如,文章)通过引用结合到本文中的程度上,这些材料的文本仅通过引用结合到这些材料与本文阐述的陈述和附图之间不存在冲突的程度。在这种冲突的情况下,以本文件的文本为准,并且本文件中的术语不应由于那些术语在通过引用并入的其他材料中的使用方式而被给予较窄的解读。

Claims (20)

1.一种存储指令的有形的、非暂时性机器可读介质,所述指令在被一个或多个处理器执行时实现包括以下操作:
利用计算机系统建立包括参考系的三维(3D)环境空间,其中,将对象添加到所述环境空间并且基于相应的位置信息和视点来渲染所述对象;
利用所述计算机系统基于材料的纹理片建立二维(2D)材料空间,所述纹理片在至少一个维度上被复制;
利用所述计算机系统接收将所述材料应用于添加到所述环境空间的对象的选择;
利用所述计算机系统获得对应于对象的位置信息;
利用所述计算机系统基于所述位置信息,确定对应于所述对象的面的顶点群组到所述材料空间的映射,所述顶点群组界定至少一个纹理片的一部分,如同它将出现在所述材料空间中一样;以及
利用所述计算机系统渲染具有所述至少一个纹理片的部分的所述对象的面,其中,基于所述至少一个纹理片或所述材料空间内的所述材料的另一纹理片,基于对应于所述面的顶点群组的相应映射,对在3D空间中与所述对象的面共享相同法向量的其他对象的面进行纹理化。
2.根据权利要求1所述的介质,其中,所述操作还包括:
利用所述计算机系统接收保持选择;
利用所述计算机系统从与对象的面相关联的原始UV空间捕获智能材料映射;
在检测到环境空间内的所述对象的新位置信息之后,利用计算机系统用所捕获的映射来渲染所述对象的面;
利用所述计算机系统接收标识所述智能材料和对象的切换选择;
响应于所述切换选择,利用所述计算机系统标识所述顶点群组到所述材料空间的新映射,所述顶点群组界定所述至少一个纹理片的不同部分或不同纹理片的一部分;以及
在所述切换选择有效的同时,利用所述计算机系统用所述至少一个纹理片的不同部分或所述不同纹理片的部分来渲染所述对象的面。
3.根据权利要求1所述的介质,其中,所述操作还包括:
用于配置世界空间材料映射的步骤。
4.根据权利要求1所述的介质,其中:
所述3D环境是包括在世界空间坐标系中具有姿势的多个3D模型的游戏的3D环境;
所述纹理片是2D图像;
所述纹理片具有在所述世界空间坐标系中的比例;以及
所述纹理片平铺在所述多个3D模型之一的至少多个多边形上。
5.根据权利要求1所述的介质,其中:
所述对象是所述材料的纹理片的部分平铺在其上的3D模型;
所述操作包括:
移动所述对象并且响应于所述移动,相对于所述3D模型的坐标系来改变所述平铺的空间相位;
接收冻结所述平铺的空间相位的命令;
响应于所述命令,将通过其指定所述平铺的坐标系从世界空间坐标系改变到所述3D模型的坐标系,其中,所述环境空间包括各自具有不同的模型特定的坐标系的多个3D模型。
6.根据权利要求1所述的介质,其中:
所述对象是从托管游戏开发应用的服务器系统获得的3D模型;
所述3D模型与所述比例相关联;并且
所述3D模型上的所述纹理的世界空间材料映射在游戏开发期间使用所述游戏开发应用基于所述比例进行配置。
7.根据权利要求6所述的介质,其中:
所述游戏开发应用被配置成接收发布具有所述对象的游戏的游戏开发人员请求,并且作为响应,托管游戏玩家可访问的所述游戏的可玩实例。
8.根据权利要求7所述的介质,其中,所发布的游戏是在线多人游戏。
9.根据权利要求6所述的介质,其中,所述操作包括:
利用所述服务器系统接收从游戏开发用户界面中显示的多个材料中进行的对材料的用户选择;以及
基于所述环境空间和所述对象的已知比例在世界空间坐标系中将所述材料应用于所述对象。
10.根据权利要求9所述的介质,其中,所述操作包括:
在所述环境空间中移动所述对象,并且作为响应,重新配置所述纹理化;
冻结所述纹理化;以及
在冻结之后,在所述环境空间中移动所述对象,而不重新配置所述纹理化。
11.一种方法,包括:
利用计算机系统建立包括参考系的三维(3D)环境空间,其中,将对象添加到所述环境空间并且基于相应的位置信息和视点来渲染所述对象;
利用所述计算机系统基于材料的纹理片建立二维(2D)材料空间,所述纹理片在至少一个维度上被复制;
利用所述计算机系统接收将所述材料应用于添加到所述环境空间的对象的选择;
利用所述计算机系统获得对应于对象的位置信息;
利用所述计算机系统基于所述位置信息,确定对应于所述对象的面的顶点群组到所述材料空间的映射,所述顶点群组界定至少一个纹理片的一部分;以及
利用所述计算机系统渲染具有所述至少一个纹理片的部分的所述对象的面,其中,基于所述至少一个纹理片或另一纹理片在所述材料空间内的所确定的位置,基于对应于所述面的顶点群组的相应映射,对在3D空间中与所述对象的面共享相同法向量的其他对象的面进行材质化。
12.根据权利要求11所述的方法,其中,所述操作还包括:
利用所述计算机系统接收保持选择;
利用所述计算机系统从与对象的面相关联的原始UV空间捕获智能材料映射;
在检测到环境空间内的所述对象的新位置信息之后,利用计算机系统用所捕获的映射来渲染所述对象的面;
利用所述计算机系统接收标识所述智能材料和所述对象的切换选择;
响应于所述切换选择,利用所述计算机系统标识所述顶点群组到所述材料空间的新映射,所述顶点群组界定所述至少一个纹理片的不同部分或不同纹理片的一部分;以及
在所述切换选择有效的同时,利用所述计算机系统用所述至少一个纹理片的不同部分或所述不同纹理片的部分来渲染所述对象的面。
13.根据权利要求11所述的方法,其中,所述操作还包括:
用于配置世界空间材料映射的步骤。
14.根据权利要求11所述的方法,其中:
所述3D环境是包括在世界空间坐标系中具有姿势的多个3D模型的游戏的3D环境;
所述纹理片是2D图像;
所述纹理片具有在所述世界空间坐标系中的比例;并且
所述纹理片平铺在所述多个3D模型之一的至少多个多边形上。
15.根据权利要求11所述的方法,其中:
所述对象是所述材料的纹理片的部分平铺在其上的3D模型;
所述操作包括:
移动所述对象并且响应于所述移动,相对于所述3D模型的坐标系改变所述平铺的空间相位;
接收冻结所述平铺的空间相位的命令;
响应于所述命令,将通过其指定所述平铺的坐标系从世界空间坐标系改变到所述3D模型的坐标系,其中,所述环境空间包括各自具有不同的模型特定的坐标系的多个3D模型。
16.根据权利要求11所述的方法,其中:
所述对象是从托管游戏开发应用的服务器系统获得的3D模型;
所述3D模型与所述比例相关联;并且
所述3D模型上的所述材料的世界空间材料映射在游戏开发期间使用所述游戏开发应用基于所述比例进行配置。
17.根据权利要求16所述的方法,其中:
所述游戏开发应用被配置成接收发布具有所述对象的游戏的游戏开发人员请求,并且作为响应,托管游戏玩家可访问的所述游戏的可玩实例。
18.根据权利要求17所述的方法,其中,所发布的游戏是在线多人游戏。
19.根据权利要求16所述的方法,其中,所述操作包括:
利用所述服务器系统接收从游戏开发用户界面中显示的多个材料中进行的对材料的用户选择;以及
基于所述环境空间和所述对象的已知比例在世界空间坐标系中将所述材料应用于所述对象。
20.根据权利要求19所述的方法,其中,所述操作包括:
在所述环境空间中移动所述对象,并且作为响应,重新配置所述纹理化;
冻结所述纹理化;以及
在冻结之后,在所述环境空间中移动所述对象,而不重新配置所述纹理化。
CN202080086226.1A 2019-11-11 2020-11-11 以编程的方式配置材料 Pending CN115209966A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962933821P 2019-11-11 2019-11-11
US62/933,821 2019-11-11
PCT/US2020/060047 WO2021096982A1 (en) 2019-11-11 2020-11-11 Programmatically configuring materials

Publications (1)

Publication Number Publication Date
CN115209966A true CN115209966A (zh) 2022-10-18

Family

ID=75847001

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080086226.1A Pending CN115209966A (zh) 2019-11-11 2020-11-11 以编程的方式配置材料

Country Status (5)

Country Link
US (4) US11043021B2 (zh)
EP (1) EP4058162A4 (zh)
CN (1) CN115209966A (zh)
CA (1) CA3157677A1 (zh)
WO (1) WO2021096982A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11615579B1 (en) * 2020-01-28 2023-03-28 Apple Inc. Surface attribute transfer
US20210247967A1 (en) * 2020-02-06 2021-08-12 Figma, Inc. Design interface object manipulation based on aggregated property values
US11816798B1 (en) * 2020-03-17 2023-11-14 Apple Inc. 3D surface representation refinement
US10979672B1 (en) * 2020-10-20 2021-04-13 Katmai Tech Holdings LLC Web-based videoconference virtual environment with navigable avatars, and applications thereof
KR102398839B1 (ko) * 2020-12-01 2022-05-17 서울과학기술대학교 산학협력단 객체의 표면에 영상을 투영시키는 장치
CN114842118A (zh) * 2022-04-18 2022-08-02 北京达佳互联信息技术有限公司 三维模型贴图方法、装置、电子设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426708A (zh) * 2011-11-08 2012-04-25 上海交通大学 基于基元重组的纹理设计与合成方法
US20150325044A1 (en) * 2014-05-09 2015-11-12 Adornably, Inc. Systems and methods for three-dimensional model texturing
CN107209950A (zh) * 2015-01-29 2017-09-26 微软技术许可有限责任公司 从现实世界材料自动生成虚拟材料
EP3246880A1 (en) * 2016-05-20 2017-11-22 Thomson Licensing Method and device for rendering an image of a scene comprising a real object and a virtual replica of the real object
CN109344902A (zh) * 2018-10-12 2019-02-15 吉林大学 一种基于局部时空连续性聚合描述的视频纹理描述方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6191794B1 (en) * 1998-04-08 2001-02-20 Nvidia Corporation Method and apparatus for scaling texture maps for graphical images
US7874921B2 (en) * 2005-05-11 2011-01-25 Roblox Corporation Online building toy
US9536344B1 (en) 2007-11-30 2017-01-03 Roblox Corporation Automatic decoration of a three-dimensional model
US8667404B2 (en) * 2008-08-06 2014-03-04 Autodesk, Inc. Predictive material editor
US8593475B2 (en) 2010-10-13 2013-11-26 Qualcomm Incorporated Systems and methods for dynamic procedural texture generation management
US9589386B2 (en) 2013-03-15 2017-03-07 Robert Bosch Gmbh System and method for display of a repeating texture stored in a texture atlas
WO2016036425A1 (en) 2014-09-05 2016-03-10 Ballcraft, Llc Motion detection for portable devices
US10567449B2 (en) 2016-02-17 2020-02-18 Meta View, Inc. Apparatuses, methods and systems for sharing virtual elements
US10706612B2 (en) 2017-04-01 2020-07-07 Intel Corporation Tile-based immediate mode rendering with early hierarchical-z
AU2017204504A1 (en) 2017-06-30 2019-01-17 Canon Kabushiki Kaisha System and method of rendering a graphical object with modification in structure
JP7182863B2 (ja) 2017-11-02 2022-12-05 キヤノン株式会社 情報生成装置、情報処理装置、制御方法、プログラム、及びデータ構造
US11650354B2 (en) 2018-01-14 2023-05-16 Light Field Lab, Inc. Systems and methods for rendering data from a 3D environment
AU2018201472A1 (en) 2018-02-28 2019-09-12 Canon Kabushiki Kaisha System and method of rendering a surface
US11717760B2 (en) * 2018-03-12 2023-08-08 Roblox Corporation Chat application using a gaming engine
US10737184B2 (en) 2018-09-11 2020-08-11 Roblox Corporation User-generated content system for the creation of friends

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426708A (zh) * 2011-11-08 2012-04-25 上海交通大学 基于基元重组的纹理设计与合成方法
US20150325044A1 (en) * 2014-05-09 2015-11-12 Adornably, Inc. Systems and methods for three-dimensional model texturing
CN107209950A (zh) * 2015-01-29 2017-09-26 微软技术许可有限责任公司 从现实世界材料自动生成虚拟材料
EP3246880A1 (en) * 2016-05-20 2017-11-22 Thomson Licensing Method and device for rendering an image of a scene comprising a real object and a virtual replica of the real object
CN109344902A (zh) * 2018-10-12 2019-02-15 吉林大学 一种基于局部时空连续性聚合描述的视频纹理描述方法

Also Published As

Publication number Publication date
US20240233241A1 (en) 2024-07-11
WO2021096982A1 (en) 2021-05-20
US11398071B2 (en) 2022-07-26
EP4058162A4 (en) 2023-10-25
US11961174B2 (en) 2024-04-16
US20210142547A1 (en) 2021-05-13
US11043021B2 (en) 2021-06-22
US20230012480A1 (en) 2023-01-19
US20210272350A1 (en) 2021-09-02
EP4058162A1 (en) 2022-09-21
CA3157677A1 (en) 2021-05-20

Similar Documents

Publication Publication Date Title
US11961174B2 (en) Programmatically configuring materials
US10325399B2 (en) Optimal texture memory allocation
KR101086570B1 (ko) 동적 윈도우 구조
US7978205B1 (en) Systems and methods for providing an enhanced graphics pipeline
EP1594091B1 (en) System and method for providing an enhanced graphics pipeline
Parisi Programming 3D Applications with HTML5 and WebGL: 3D Animation and Visualization for Web Pages
US7564460B2 (en) Systems and methods for providing intermediate targets in a graphics system
US20130300740A1 (en) System and Method for Displaying Data Having Spatial Coordinates
MXPA06012368A (es) Integracion de jerarquia de escena tridimensional en sistema de composicion bidimensional.
Klein Rendering Textures Up Close in a 3D Environment Using Adaptive Micro-Texturing
US20040169671A1 (en) Effects framework pipeline integration with programmable shader
KR102579463B1 (ko) 확장현실 기술 기반 미디어아트 시스템
Bateman et al. The Essential Guide to 3D in Flash
Inzerillo et al. Optimization of cultural heritage virtual environments for gaming applications
Álvarez et al. EZ3. js: A robust and flexible WebGL-based 3D engine
Stemkoski et al. Introduction to 3D Graphics
Stemkoski et al. Introduction to 3D Graphics and Games
Chin et al. JavaFX 3D
Gün Interactive editing of complex terrains on parallel graphics architectures
Algma Edge Chamfering Algorithm
CN117839206A (zh) 数据处理方法、装置及电子设备
Olsson et al. The Essential Guide to 3D in Flash
CN117351126A (zh) 虚拟场景中雨雪特效的生成方法、装置及电子设备
Jackson et al. 3D New Media: Concepts and Terminology
CN118331572A (zh) 一种基于WebGL零代码构建混合现实空间的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination