CN118119979A - 用于化身身体的分层服装的隐藏表面移除 - Google Patents

用于化身身体的分层服装的隐藏表面移除 Download PDF

Info

Publication number
CN118119979A
CN118119979A CN202280068564.1A CN202280068564A CN118119979A CN 118119979 A CN118119979 A CN 118119979A CN 202280068564 A CN202280068564 A CN 202280068564A CN 118119979 A CN118119979 A CN 118119979A
Authority
CN
China
Prior art keywords
garment
face
cage
deformed
avatar
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
CN202280068564.1A
Other languages
English (en)
Inventor
谢尔盖·马基耶夫
B·金
陈思
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.)
Robles Corp
Original Assignee
Robles Corp
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 Robles Corp filed Critical Robles Corp
Publication of CN118119979A publication Critical patent/CN118119979A/zh
Pending legal-status Critical Current

Links

Abstract

一种自动笼到笼拟合技术用于将三维(3D)几何形状拟合到3D环境(例如在线游戏)中的3D化身的目标3D几何形状。服装项目的每个图形表示设置有内笼和外笼。服装项目的内笼(当前层)被映射到已经拟合在3D化身上的另一服装项目的外笼(先前层/下层)。该映射使得当前层能够贴合先前层的形状。该技术允许任何身体几何形状与任何服装几何形状拟合,包括使得各服装层能够拟合到服装的下层之上。可以执行隐藏表面移除(HSR)操作来识别被覆盖层隐藏的下层的表面,并且这种隐藏的表面不被渲染。

Description

用于化身身体的分层服装的隐藏表面移除
相关申请的交叉引用
本申请是根据35U.S.C.§119(e)的要求于2021年10月14日提交的申请号为63/255,489的美国临时专利申请和于2022年9月8日提交的申请号为63/404,925的美国临时专利申请的优先权的国际申请,这两个专利申请的全部内容以引入的方式并入本文。
技术领域
本公开一般涉及计算机图形,更具体但不排他地,涉及用于在底层图形对象上提供分层服装(例如用于电子游戏、虚拟体验(virtual experience)、或其他三维(three-dimensional,3D)环境中的3D化身的分层服装)的图形表示的方法、系统、以及计算机可读介质。
背景技术
多用户电子游戏环境或虚拟体验通常涉及使用化身,化身代表电子游戏中的玩家。不同的三维(3D)化身的几何形状/形状因化身而异。例如,化身可以具有不同的身体形状(例如,高、矮、强壮、苗条、男性、女性、人类、动物、外星人等)、不同数量和不同类型的肢体等,并且可以通过化身穿的多件服装和/或配饰(例如,穿在躯干上的衬衫、套在衬衫上的夹克、套在夹克上的围巾、戴在头上的帽子等)来定制。
当将服装分层到化身上时,很难以计算高效的方式获得令人满意的视觉结果。
发明内容
根据第一方面,一种在三维(3D)化身上提供分层服装(layered clothing)的计算机实现的方法,该方法包括:
识别具有化身身体的3D化身的身体笼的身体特征点;
将第一件服装的内笼的内部特征点映射到身体笼的身体特征点,以获得贴合化身身体的变形的第一件服装;
执行第一隐藏表面移除(hidden surface removal,HSR)操作,以识别被变形的第一件服装隐藏的身体笼的面;
通过用变形的第一件服装至少部分地包围化身身体,将变形的第一件服装拟合到化身身体上,其中,对应于身体笼的识别的面的化身身体的面不被渲染;
将第二件服装的内笼的内部特征点映射到变形的第一件服装的外笼的外部特征点,以获得贴合第一件服装的外笼的变形的第二件服装;
执行第二HSR操作以识别被变形的第二件服装隐藏的变形的第一件服装的外笼的面;以及
通过用变形的第二件服装至少部分地包围拟合有变形的第一件服装的化身身体,将变形的第二件服装拟合到化身身体上,其中,对应于外笼的识别的面的变形的第一件服装的面不被渲染。
根据另一方面,提供了一种非暂时性计算机可读介质,该非暂时性计算机可读介质上存储有指令,响应于由处理器执行,指令使处理器执行操作或控制操作的执行,操作包括:
识别具有化身身体的3D化身的身体笼的身体特征点;
将第一件服装的内笼的内部特征点映射到身体笼的身体特征点,以获得贴合化身身体的变形的第一件服装;
执行第一隐藏表面移除(HSR)操作,以识别被变形的第一件服装隐藏的身体笼的面;
通过用变形的第一件服装至少部分地包围化身身体,将变形的第一件服装拟合到化身身体上,其中,对应于身体笼的识别的面的化身身体的面不被渲染;
将第二件服装的内笼的内部特征点映射到变形的第一件服装的外笼的外部特征点,以获得贴合第一件服装的外笼的变形的第二件服装;
执行第二HSR操作以识别被变形的第二件服装隐藏的变形的第一件服装的外笼的面;以及
通过用变形的第二件服装至少部分地包围拟合有变形的第一件服装的化身身体,将变形的第二件服装拟合到化身身体上,其中,对应于外笼的识别的面的变形的第一件服装的面不被渲染。
根据又一方面,提供了一种装置,该装置包括:
处理器;以及非暂时性计算机可读介质,耦合到处理器,并且非暂时性计算机可读介质上存储有指令,响应于由处理器执行,指令使处理器执行操作或控制操作的执行,操作包括:
识别具有化身身体的3D化身的身体笼的身体特征点;
将第一件服装的内笼的内部特征点映射到身体笼的身体特征点,以获得贴合化身身体的变形的第一件服装;
执行第一隐藏表面移除(HSR)操作,以识别被变形的第一件服装隐藏的身体笼的面;
通过用变形的第一件服装至少部分地包围化身身体,将变形的第一件服装拟合到化身身体上,其中,对应于身体笼的识别的面的化身身体的面不被渲染;
将第二件服装的内笼的内部特征点映射到变形的第一件服装的外笼的外部特征点,以获得贴合第一件服装的外笼的变形的第二件服装;
执行第二HSR操作以识别被变形的第二件服装隐藏的变形的第一件服装的外笼的面;以及
通过用变形的第二件服装至少部分地包围拟合有变形的第一件服装的化身身体,将变形的第二件服装拟合到化身身体上,其中,对应于外笼的识别的面的变形的第一件服装的面不被渲染。
附图说明
图1示出了根据一些实施例的示例身体笼(cage)。
图2示出了根据一些实施例的另一示例身体笼。
图3示出了根据一些实施例的被分组为对应身体部位的身体笼的各部分的示例。
图4示出了根据一些实施例的在身体笼上变形的服装层的示例。
图5示出了根据一些实施例的基于图4的服装层和身体笼的各部分形成的外笼的示例。
图6是示出根据一些实施例的网格(mesh)和笼的示例的图。
图7示出了根据一些实施例的服装层及其笼的图。
图8和图9示出了根据一些实施例的在应用隐藏表面移除(HSR)之前和应用隐藏表面移除(HSR)之后的化身。
图10是示出根据一些实施例的用于确定表面是否潜在可见的示例性技术的图。
图11至图14是根据一些实施例的表示执行HSR的方法的图。
图15是根据一些实施例的示例系统架构的示意图,该示例系统架构包括可以支持具有分层服装的3D化身的3D环境平台。
图16是示出根据一些实施例的在3D化身上提供具有HSR的分层服装的计算机实现的方法的流程图。
图17至图19是根据一些实施方式的关于改进HSR的可见性确定(visibilitydetermination)的图。
图20示出了在执行HSR时可能遇到的问题的示例。
图21示出了隐藏笼收缩技术(cage shrinking technique)的示例。
图22是根据一些实施例的示出计算设备的示例的框图。
具体实施方式
在下面的具体实施方式中,参照构成其一部分的附图。在附图中,除非上下文另有规定,否则相似的符号通常标识相似的组件。在具体实施方式、附图、以及权利要求中描述的说明性实施例并不意味着是限制性的。在不脱离本文呈现的主题的精神或范围的情况下,可以使用其他实施例,并且可以进行其他改变。如本文一般描述的并在附图中示出的本公开的各方面可以以多种不同的配置来排列、替换、组合、分离、以及设计,所有这些都纳入本文的考虑范围。
说明书中对“一个实施例”、“实施例”、“一个示例实施例”等的提及表示所描述的实施例可以包括特定的特征、结构、或特性,但是每个实施例不一定包括该特定的特征、结构、或特性。此外,这些短语不一定指同一实施例。此外,当结合实施例描述特定特征、结构、或特性时,无论是否明确描述,这样的特征、结构、或特性都可以结合其他实施例来实现。
本公开描述了用于3D化身的自动笼到笼拟合(cage-to-cage fitting)技术。该技术允许任何身体几何形状与任何服装几何形状拟合,包括使得各服装层能够拟合到服装的底层(underlying layer,也称为下层)上,从而提供定制,而不受预定义的几何形状的限制,也不需要复杂的计算来使服装项目与化身的任意身体形状或其他服装项目兼容。笼到笼拟合还由游戏平台或游戏软件(或操作用于提供3D环境的其他平台/软件)以算法方式执行,而不需要化身创建者(也称为化身身体创建者或身体创建者)或服装项目创建者执行复杂的计算。本文使用的术语“服装”或“一件服装”被理解为包括服装和配饰的图形表示、以及可以相对于化身笼的特定部分放置在化身上的任何其他项目。
当一件服装层叠在化身的身体部分的顶部和/或另一件服装的顶部时,本文公开了用于隐藏表面移除(HSR)的技术。例如,出于计算性能和美学原因,被特定服装层叠/覆盖的表面(底层服装或身体部位的表面)不应被渲染(例如,使其可见)。HSR包括识别哪些表面(或其部分)不能从特定视角被看到,然后执行渲染以使这些表面被隐藏(或以其他方式不被渲染)的过程,从而允许图形的自然可视部分(例如,其上放置有分层服装的化身)是可见的。
仅为了说明和阐述,本文在游戏平台提供的3D游戏中使用的3D化身的背景下描述了各种实施例。应当理解,这样的游戏环境仅仅是示例。本文描述的笼到笼分层技术的其他实施例可以应用于其他类型的3D环境,例如虚拟现实(virtual reality,VR)会议、3D会话(例如,涉及3D化身的在线讲座或其他类型的演示)、增强现实(augmented reality,AR)会话、或其他类型的3D环境(这些3D环境可以包括在3D环境中由一个或多个3D化身表示的一个或多个用户)。
在游戏或其他3D会话期间的运行时(runtime),玩家/用户访问身体库以选择特定化身身体,并访问服装库以选择要穿着在所选身体上的服装。然后,呈现化身的3D环境平台实现笼到笼拟合技术,以调整(通过自动确定的合适变形)一件服装以贴合身体的形状,从而自动将该件服装拟合到身体(以及任何中间层,如果化身穿着的话)上。当服装被贴在身体和/或下面的服装上时,可以执行HSR,使得隐藏的表面在渲染结果中不可见。用户可以进一步选择附加的一件服装以拟合底层的一件服装,附加的一件服装变形以匹配底层的一件服装的几何形状。
本文描述的各实施例基于“笼(cage)”和“网格(mesh)”(或“渲染网格”)的概念。身体“网格”是化身的实际可见的几何形状。身体“网格”包括身体部位(如手臂、腿、躯干、头部等)的图形表示并且可以具有任意形状、大小、以及几何拓扑。类似地,服装“网格”(或“渲染网格”)可以是图形表示一件服装(例如衬衫、裤子、帽子、鞋子等、或其部分)的任意网格。
相比之下,“笼”代表围绕化身身体的特征点的包络,笼比身体网格简单,并且与身体网格的对应顶点的对应性较弱。如下面将进一步详细阐述的,笼还可以不仅用于表示化身身体上的特征点集合,而且还用于表示一件服装上的特征点集合。
图1示出了根据一些实施方式的示例身体笼100。图1的示例中的身体笼100是包围或叠加在充当人体模型的人形身体形状的外表面/轮廓上的外笼。被身体笼100包围的底层人形身体形状(人体模型,未示出)可以由包括多个多边形及其顶点的身体网格来表示或由其组成。身体网格的多边形(以及服装网格的多边形)可以是三角形,每个三角形的表面积提供一个“面(face)”或“网格面(mesh face)”。
身体笼100包括多个特征点102,特征点102定义或以其他方式标识或对应于人体模型的形状。在一些实施例中,特征点102由人体模型上的多个多边形(或其他几何形状)的线段/边104的顶点形成。根据各种实施例(尽管在图1中没有这样描述),多边形可以是三角形,每个三角形的表面积提供“面(face)”或“笼面(cage face)”。在一些实施例中,特征点102可以是离散点,不一定由任何多边形的顶点形成。
图1的身体笼100提供了具有642个特征点(或一些其他数量的特征点)的低分辨率身体笼的示例,该身体笼用于不包括手指的人形身体几何形状。其他示例可以使用具有475个特征点的身体笼。例如,包括手指的人形几何形状的身体笼可能具有1164个特征点(或一些其他数量的特征点)。高分辨率的身体笼可以包括2716个特征点(或一些其他数量的特征点)。特征点的这些数量(及其范围)只是一些示例——特征点的数量可以根据诸如期望的分辨率、3D平台的处理能力、用户偏好、人体模型的大小/形状等因素在不同实施方式之间变化。
可以为任何的任意化身身体形状或服装形状提供笼。例如,图2示出了根据一些实施例的另一示例身体笼200。图2的示例中的身体笼200是包围或叠加在一般游戏化身身体形状的身体网格的外表面/轮廓上的外笼。与图1的身体笼100相比,图2的身体笼200可以具有相同数量的特征点。在一些实施例中,身体笼200的特征点的数量可以与身体笼100的特征点的数量不同,例如由于游戏化身的不同(更简单或更复杂)几何形状和/或基于其他因素而具有更少或更多数量的特征点202。因此,从一个身体笼到另一身体笼,可以选择特征点的数量以适合于不同的身体形状或其他身体属性。
在一些实施例中,出于带宽和性能/效率目的或其他原因,笼的特征点的数量可以减少到比上文提供的数量更小,例如475个特征点(或一些其他数量的特征点)。此外,在一些实施例中,身体笼中的特征点(顶点)可以被布置为多个组(例如,15组),每个组代表身体形状的一部分。图3示出了根据一些实施例的被分组为对应身体部位的身体笼300的各部分的示例。
更具体地,图3所示的15个身体部位(对于人形人体模型)是:头部、躯干、臀部、右脚、左脚、左小腿、右小腿、左大腿、右大腿、左手、右手、左下臂、右下臂、左上臂、以及右上臂。任何身体形状中的多个部位可以大于或小于所示的15个身体部位。例如,因为省略了一只手、下臂、以及上臂,所以“独臂”化身角色可能有12个(而不是15个)身体部位。此外,其他身体形状可能涉及更少或更多数量的身体部位,这取决于诸如身体几何形状、期望的分辨率、处理能力、化身角色的类型(例如,动物、外星人、怪物等)等因素。
图3中的15个组/部位中的每一个包括定义化身身体的该部位的特征点。这样的特征点组又可以映射到对应的一件服装。例如,因为夹克的图形表示由图形网格组成,这些图形网格呈现逻辑上对应地拟合到化身身体的左/右臂和躯干上的夹克的左/右臂和躯干,所以身体笼300中定义左/右下臂、左/右上臂、以及躯干的特征点可以用作要与夹克的内笼映射的外笼。
此外,这样分离为多组(如图3所示)使得一件服装能够定制地拟合到非典型体型上。例如,3D化身可以是缺少左臂的“独臂”化身角色的形式。因此,该3D化身的身体笼将缺少对应于左手、左下臂、以及左上臂的特征点组。当夹克随后被选择用于拟合到该3D化身上时,夹克的右下臂、右上臂、以及躯干可以变形以拟合到3D化身(身体人体模型)的对应右下臂、右上臂、以及躯干上,并且因为在身体人体模型中没有左臂笼来变形,所以夹克的左下臂和左上臂不会变形(例如,保持来自其父空间的原始形式的刚性)。
图4示出了根据一些实施例的在身体笼(例如图3所示的身体笼300)上变形的服装层400的示例。服装层400是夹克的图形表示(在图4中以灰色阴影示出),服装层400具有可以使用多边形网402(例如,服装网格)生成/渲染的部分,多边形网402由顶点、边、以及面(可以是三角形面或其他多边形面)的集合组成。
服装层400包括内笼(图4中未示出),该内笼具有对应于身体笼300的特征点的特征点。具体地,服装层400的内笼的特征点被映射到构成左下臂、右下臂、左上臂、右上臂、以及躯干的身体笼300的特征点。在一些实施例中,该映射包括将服装层400的内笼的特征点直接映射到身体笼300的手臂和躯干的对应特征点的坐标位置上。当两个笼具有相同数量的特征点时,这种映射可以涉及1:1对应,并且映射可以是n:1或1:n(其中n是大于1的整数),在这种情况下,一个笼中的多个特征点可以映射到另一笼的同一特征点(或者一些特征点可以不映射)。
服装层400还包括外笼,该外笼具有与服装层400的内笼的对应特征点隔开并链接到对应特征点的特征点。服装层400的外笼的特征点限定夹克的外表面轮廓/几何形状或以其他方式沿着夹克的外表面轮廓/几何形状定位,以定义夹克的特征(例如兜帽404、袖口406、直筒躯干408等)。
根据各种实施例,在将服装层400拟合到现有层(或化身身体)的外笼上的过程中,空间距离(例如,服装层400的内笼的特征点和服装层400的外笼的对应特征点之间的空间距离)保持恒定。这样,服装层400的内笼的特征点可以映射到身体笼300的特征点,以将夹克的内部“拟合”到化身的躯干和手臂上。然后,在服装层400的内笼的特征点和服装层400的外笼的对应特征点之间的距离保持不变的情况下,夹克的外部轮廓也可以变形以匹配化身身体的形状,从而使得至少部分保持夹克的兜帽、袖口、直筒躯干、以及其他表面特征的视觉外观(图形表示),同时匹配如图4所示的化身身体的形状。这样,服装层400可以以任何适当的方式变形,以拟合化身身体(身体笼)的任何的任意形状/大小,例如高、矮、苗条、强壮、人形、动物、外星人等。
在一些实施例中,可以在其他服装层上放置附加的服装层(例如,响应于用户选择)。图5示出了根据一些实施例的服装层和图4的身体笼300的部分被用于形成外笼500的示例。更具体地,图4的服装层400的外笼的特征点现在与身体笼300的特征点组合,从而产生由身体笼300的暴露部分的特征点和沿着夹克的外表面的特征点组成的复合外笼500。例如,夹克的暴露外表面502(由夹克的主体、兜帽、以及袖子形成)提供一组特征点,并且未被夹克覆盖的暴露的腿、手、头、以及身体的部分胸部提供另一组特征点,并且这两组特征点(组合)提供外笼500的特征点。
图5中的外笼500中对应并定义夹克的外表面/形状的特征点可以是图4的服装层400的外笼的相同特征点。在一些实施例中,与图4的夹克(服装层400)的外笼的特征点相比,不同的特征点和/或附加的特征点和/或更少的特征点可以用于图5中的外笼500中的夹克区域。例如,如果外笼500上方的下一层服装需要更高的分辨率或更精确的拟合,则可以计算夹克区域包围的外笼500的附加特征点(与图4的服装层400的外笼相比)。类似地,如果外笼500上方的下一层服装需要较低的分辨率或精确度较低的拟合和/或由于其他考虑(例如通过尽可能使用较少的特征点来提高处理/带宽效率),则可以计算夹克区域包围的外笼500的特征点(与服装层400的外笼相比)。
在操作中,如果用户提供输入以在夹克(服装层400)和/或化身身体的其他部分上拟合附加的服装层(例如大衣或其他服装),则这种附加的服装层的内笼的特征点被映射到外笼500的对应特征点。因此,可以以类似于参考图4所描述的方式来执行变形。
因此,根据图4和图5的分层服装的示例,通过将化身身体的“外笼”(身体笼300)的特征点与第一层服装的“内笼”的特征点匹配,将第一层服装(服装层400)包裹在身体周围。这种匹配可以在笼的UV空间(其中,UV指坐标系)中进行,从而不必依赖于内笼和外笼之间精确匹配的特征点的数量。例如,特征点可以是具有位置和纹理空间坐标的顶点。纹理空间坐标通常用范围[0,1]来表示,每个范围用于U,V坐标。纹理空间可以认为是顶点的“未包裹的(unwrapped)”归一化坐标空间。通过在UV空间中执行两组顶点的对应并且不使用这些顶点的位置,可以通过消除精确的顶点到顶点索引映射的硬性要求,在归一化空间中完成顶点到顶点的对应。
根据本文描述的技术,每个化身身体和服装项目因此与“内笼”和“外笼”相关联。在化身身体的情况下,内笼表示默认的“人体模型”(并且可以为不同的化身身体形状提供不同的人体模型),并且化身身体的“外笼”表示围绕化身身体形状的外壳。对于服装项目,“内笼”表示用于定义服装项目如何包裹在下面的身体周围(或包裹在已经拟合有先前服装层的身体周围)的内包络,而“外笼”表示当穿在化身身体上时,下一层服装包裹在该特定服装项目周围的方式。
如前所述,网格是化身和/或其服装的实际可见几何图形。例如,身体网格包括化身身体的手臂、腿、躯干、头部等的图形表示,服装网格包括服装的图形表示。相比之下,如上所示和描述的笼代表围绕化身的身体和/或服装的特征点的包络(envelope),其可以与底层网格的相应顶点具有一定量的对应。
图6是示出根据一些实施例的网格602和笼604的示例的图600。更具体地,图600表示覆盖/包围网格602的笼604的侧视图。
网格602可以是身体网格(例如,图形地描绘了化身身体的一部分,例如手、手臂等)或者可以是服装网格(例如,图形地描绘了一件服装的一部分,例如袖子、兜帽等)。网格602可以包括由多边形(例如,三角形)的朝外表面形成的网格面606。网格602可以包括多个多边形及其对应的网格面,多边形在其线段边和顶点处彼此连接。
类似地,例如,如前面示出和上面描述的,笼604可以包括多个多边形(例如,三角形)和这些多边形对应的笼面。图6的图600示出了由笼604的各个多边形的朝外表面形成的两个笼面608和610。这些多边形可以在612彼此连接,其可以是线段或顶点。
网格或笼的面606、608、610和/或其他面或其部分可以被隐藏或潜在地隐藏,因为附加的服装被层叠在网格602和笼604上。如下面还将描述的,本文公开的HSR技术确定这样的面/表面或其部分是否应该被隐藏,然后执行隐藏表面的移除,使得隐藏表面不被渲染。
如图6的图600所示并如上文所述,笼604覆盖/包围网格602。根据各种实施例,当笼604被生成并放置在网格602上时,网格602和笼604之间可以存在距离S(例如,在相对于网格602的表面的法线/垂直方向上以像素表示的距离)。
距离S可以在网格602和笼604的不同区域上变化。例如,在笼604接触网格602的一些区域,距离S可以基本上为零,而在网格602和笼604之间存在空间间隔的其他区域,距离S可以大于零。
此外,图600示出了单个网格面606被两个笼面608和610包围。这只是一个示例。在一些区域中,笼面与网格面可能存在一对一的重叠,在一些区域中,笼面与网格面可能存在一对多的重叠,在一些区域中,笼面与网格面可能存在多对一的重叠,等等。此外,网格面和笼面的边缘不一定需要彼此对齐。例如,在图6的图600中,笼面608的左边缘基本上与网格面606的左边缘对齐。相比之下,笼面610的右边缘延伸超过网格面606的右边缘,或者不与网格面606的右边缘对齐。
根据各种实施例,如上面关于图1至图5所示和描述的,笼被包裹在身体和/或服装网格(例如,一件或一层服装)上,因此这种笼成为贴合下表面的形状和轮廓的外笼。下一层服装可以设置有内笼和外笼,使得下一层服装的变形是通过映射、匹配、或以其他方式将下一层服装的内笼的点与下面的身体或服装层的外笼的相应点相关联来实现的。在一些实施例中,下面的身体或服装层的外笼本身是下一层服装的内笼或成为下一层服装的内笼。
对于特定服装/层的内笼和外笼,这些内笼和外笼的点可以相互映射,使得当该特定层的内笼的点相对于下一层的外笼的点相关联/定位时,当其外笼的点跟踪/跟随其内笼的点的位移时,特定服装层的变形发生。
根据一些实施例,服装层的变形(从而贴合下面的身体部分或服装层的)可以涉及使用径向基函数(radial basis function,RBF)技术。可用于变形和顺序分层的RBF技术的一些示例在美国专利申请17/375,066中描述,该专利申请通过引用并入本文。
接下来参考图7,图700示出了单个服装层702的表示。层702由一对笼(例如,外笼704和内笼706)限定、包括、或包围。层702还包括突起(protrusion)708,以及具有示为实心点的特征点(顶点)的外笼704和具有示为空心点的特征点(顶点)的内笼706。在一些层几何图形中,其中,内笼706中的特征点和外笼704中的特征点之间可能不存在一对一的对应关系(例如,特征点之一不存在或未对准),插值技术可以用于定义缺失的特征点(例如,重建或填充缺失的值)。
对应点(突起708之外)之间的距离D1是外笼704中的特征点和内笼706中的对应特征点之间的距离。例如,距离D1的值可以等于或大于0个像素或更多像素。距离D2是沿突起708的外笼704中的特征点和内笼706中的对应特征点之间的距离。例如,距离D2的值可以是一个像素、两个像素、或多于两个像素,使得距离D2大于距离D1。
当新的层一致地拟合在现有层上时,距离D1和距离D2可以保持。这样,当该层变形时,可以至少部分地保留服装层的表面特征的视觉外观。例如,拟合在化身身上的一条“宽松”裤子仍然会显得“宽松”,即使化身的身体或下面的服装层可能具有不同的形状/轮廓(苗条或不宽松)。作为另一示例,“带钉夹克”可以拟合在化身上,然后围巾可以一致地拟合在带钉夹克上,以便提供围巾被夹克的“钉”悬挂的视觉外观,而不是沿着每个钉的峰和谷。
在一些情况下,将一件或多件服装层叠在下面的层上会导致化身具有膨胀(“浮肿”)的外观,这看起来不自然或不真实。根据各种实施例,浮肿(puffiness)控制技术可用于消除或以其他方式减少浮肿外观。
例如,距离D1和/或D2的值可以沿着层702的一些部分进行调整,以便在整个层702中不是均匀的。例如,可以通过向RBF函数添加插值或方差值或以其他方式操纵/改变RBF函数使用的值来执行该调整。
在一些实施例中,可以提供浮肿的一个或多个阈值。例如,如果在现有层上添加层702导致超过膨胀阈值,则可以减小层的距离D1和/或D2,使得得到的膨胀值低于阈值。可以使用各种技术来设置或确定浮肿阈值,例如最底部表面(例如,身体表面)和最上面表面(例如,最后一层的服装的外表面)之间的最大允许距离、一层相对于另一层的百分比厚度、允许的层的数量、或其他方法及其组合。
图8和图9示出了根据一些实施例的在应用HSR之前和应用HSR之后的化身。在图8中,几件服装(或其他资产,例如头发)已经变形,以贴合化身的底层身体形状和/或服装的底层,然后贴合/放置(例如,渲染)到化身上。图8所示的服装包括靴子、裙子、毛衣、以及夹克。
关于服装的分层,分层可以包括覆盖化身身体的内衣、覆盖内衣的裙子、覆盖内衣和裙子的至少一部分的毛衣、以及覆盖毛衣和裙子的至少一部分的夹克。在不执行HSR的情况下,图8示出了由于被服装的覆盖层覆盖而预期不可见的底层服装层的至少一些部分/表面已经被渲染并且因此实际上是可见的。各种服装的透明度设置也可能影响这些底层表面的可见性(visibility,也称为可见度、可视性)。
除了低效的图形处理(例如,不必要地渲染不应该可见的各种表面)之外,在图8的示例中缺少HSR也提供了不期望的外观。例如,预期隐藏的底层服装表面的露出(例如,可见性)导致不自然的外观。
与图8中所描绘的相比,图9示出了应用了本文所述的HSR之后的化身。图9中的化身层和服装层已经被渲染,使得被遮挡的底层身体部分和服装的表面没有被渲染,因此不可见。接下来描述用于执行HSR以实现如图9所示的视觉外观的技术。
图10是示出根据一些实施例的用于确定表面是否潜在可见的示例性技术的图1000。更具体地,笼的一个或多个面1002形成面的潜在可见集合(potentially visibleset,PVS)的一部分,并且图10中描绘的技术确定如果被包括具有多边形1004至多边形1010的服装网格的层/服装覆盖,笼的面1002是否可见。
根据各种实施例,与处于其原始(变形前)状态相反,图10的层/服装已经变形,以便以如上文所述的方式贴合在下面的层上。通过在执行可见性确定/计算时处于变形状态,变形的层/服装更紧密地匹配下面的笼面的多边形的布置和/或位置,从而能够准确评估这些笼面的可见性。
如上所述,笼(具有包括面1002在内的多个面)包围下层身体网格和/或服装网格,因此可以被认为是下层身体/服装网格的代表。图10的示例性服装网格(服装层)的多边形1004至多边形1010被布置和成形以在服装层中限定开口1012。例如,开口1012可以是服装边缘处没有织物的间隙、织物上的孔等。开口1012也可以是透明元件,例如护目镜的镜片、面罩、塑料/玻璃部分等。
为了确定如果面1002被服装网格的多边形1004至多边形1010,覆盖面1002是否可见,从面1002的点1028(或多个点)沿大致圆锥形方向投射多个射线1014至射线1026。点1028可以是面1002上的多个点之一。这些点可以随机位于面1002上和/或可以位于预定的位置。
如图8所示,射线1020和1022未击中多边形,因此穿透开口1012,而其他射线1014、1016、1018、1024、以及1026击中服装网格的多边形1004、1006、以及1010中的一个或多个。根据各种实施例,如果至少一个射线未击中服装网格的多边形(面),则面1002被认为是可见的。在其他实施例中,可以使用最小数量的射线(例如,大于1的数量)来判断面是可见的。
根据各种实施例,通过按顺序从一个点投射射线,然后重复从另一个点投射射线等来执行上述可见性确定。如果没有来自特定点的射线穿透服装网格,那么射线从下一个点投射。在来自特定点的一条或多个射线被确定未击中服装网格之后,面1002被确定为可见,并且不需要从面1002上的其他点投射额外的射线。
图11至图14是根据一些实施例的示出执行HSR的方法的图,该方法可以至少部分地基于网格和笼的布置、变形、以及分层技术、可见性确定技术等。首先参考图11,一件服装(例如,用粗实线描绘为长袖衬衫的服装网格1100)已经变形,以拟合化身身体的躯干1102和每个手臂1104。
使用图10的可见性确定技术,对应于躯干1102和手臂1104并且位于服装网格1100的下面的化身身体的身体笼的笼面被确定为不可见(隐藏)。因此,对应于躯干1102和手臂1104的身体笼的部分被设置为不可见(在图11中用虚线表示),而身体笼的部分(位于服装网格1100的外部)被设置为可见。因此,与头部1106、每条腿1108、以及每只手1110相对应的身体笼的面以及服装网格1100的面被设置为可见(在图11中由实线描绘)。
接下来,在图12中,形成、覆盖、或以其他方式提供用于服装网格1100、用于身体网格(例如,头部1106、每条腿1108、以及每只手1110)的可见部分、和/或用于化身身体的任何其他可见表面的外笼1200(由粗实线描绘),所有这些在图12中共同由非粗实线描绘。接下来参照图13描述套筒和手部(以圆圈1202示出)作为示例,涉及作为HSR的一部分执行的操作,以将网格的面映射到上层笼的相应面。
具体地,在图13中,服装网格1100的套筒被设置用于臂1104。如上文在图12中所描述的,并且也如图13所示,外笼1200包围服装网格1100和手1110。
服装网格1100包括多个网格面,包括在袖子的手端(hand end)的特定面1300(以粗实线示出)。类似地,外笼1200包括多个笼面,包括也以粗实线示出的面1302和面1304。面1302在袖子处包围面1300,并且面1304在袖子处包围面1300的一部分以及手1110靠近/在手腕处的部分。
对于服装网格1100的每个面,HSR方法确定外笼1200的哪些面与服装网格1100的面相关(或以其他方式与之相关联或映射到该面)。因此,对于图13的示例,HSR方法确定外笼1200的面1302和面1304与服装网格1100的面1300相关。
面之间关系的确定对应于外笼1200的面1302和面1304影响服装网格1100的面1300的确定。根据一些实施例,可以通过识别面1300的每个顶点,然后识别外笼1200上最接近顶点的面来识别相关的面1302和1304。例如,面1302和1304最接近面1300的顶点1306。到服装网格1300的每个面的顶点的距离可以基于距离S(如图6所示)和/或基于到服装网格1300的面的一些其他非法线距离或法线距离。
在确定了图13中的相关面之后,相应的数据可以被保存为服装网格1100的一个或多个向量、配置数据、元数据、或其他数据结构。例如,向量可以具有两个值:服装网格1100的特定面1300的标识符,以及与面1300相关的外笼1200的面1302和1304的标识符。此外,与身体笼的隐藏部分(例如在图11中用虚线描绘的)和/或被服装网格1100隐藏的任何其他下表面相关的数据也可以存储为服装网格1100的向量或其他类型的数据结构。服装网格1100和其他网格、笼、面等的所有这些数据可以存储在服务器和/或其他位置中以供将来使用,从而减少每当服装网格1100被装载/重装时,可见性确定、相关表面确定等的重新计算(重复)的次数。
使用上面关于图11至图13确定的数据(例如,可见性和相关面),HSR方法然后可以在对随后的服装分层时利用这些数据。根据各种实施例,当将外层服装施加到下层(内层)服装(或化身身体)上时,HSR方法考虑三个分量:内层的网格、内层的外笼、以及外层的内笼。
例如,图14示出了前文描述的服装网格1100和服装网格1100的外笼1200。服装网格1100包括覆盖身体笼的隐藏部分(图14中未示出,图11中示为虚线)的可见面1300。外笼1200包括相关面1302和1304。
图14然后描绘下一层(外层)服装的内笼1400(例如,下一层服装网格,未示出)。当外层服装变形以贴合服装网格1100(例如,长袖衬衫)时,外层服装的内笼1400的面1402和1404被映射到外笼1200的相应面1302和1304。在一些实施例中,外笼1200本身是内笼1400或成为内笼1400。内笼1400的笼面1402和1404可以对应于外层服装的一个或多个网格面或网格面部分。
然后可以执行可见性确定(例如上面关于图10描述的),以确定面1302和1304是可见的还是被对应于内笼1400的外部服装网格隐藏。在图14的示例中,外笼1200的面1302被确定为被对应于内笼面1402的一个或多个网格面(外部服装网格的一个或多个网格面)隐藏,例如由图14中的虚线表示。外笼1200的面1304(并且对应于内笼面1404)被确定为透过外部服装网格可见,例如由图14中的实线表示。
因为面1302和1304是服装网格1100的可见面1300的相关面,并且因为当外层服装(具有内笼1400)被拟合时,这些相关面中的至少一个(例如,面1304)被确定为可见,所以当外层服装被拟合到化身身体上时,内部服装/下层服装网格的整个面1300被认为是可见的并且被渲染。在外笼1200的面1302和面1304被外层服装的网格面确定为隐藏的不同情况下,服装网格1100的整个面1300被标记为不可见/隐藏,并且当外层服装拟合在化身身体上时不被渲染。
然后,可以重复/迭代上述针对HSR方法的操作,用于附加的网格面,并且用于使附加的服装层变形并拟合在化身身体和/或其现有的服装层上。
图15是根据一些实施例的示例系统架构1500的图,示例系统架构1500包括3D环境平台,该3D环境平台可以支持具有分层服装的3D化身。在图15的示例中,将仅出于阐述的目的在游戏平台1502的背景下描述3D环境平台,并且各种其他实施例可以提供其他类型的3D环境平台,例如在线会议平台、虚拟现实(virtual reality,VR)或增强现实(augmentedreality,AR)平台、或可以提供3D内容的其他类型的平台。本文为游戏平台1502和系统架构1500的其他元件提供的描述可以适于与这样的其他类型的3D环境平台一起操作。
例如当用户正在玩电子游戏时,在线游戏平台(也称为“用户生成内容平台”或“用户生成内容系统”)为用户提供了多种相互交互的方式。例如,在线游戏平台的用户可以朝着共同的目标一起努力、共享各种虚拟游戏项目、相互发送电子消息等。在线游戏平台的用户可以使用角色(例如具有如上所述的具有HSR特征的分层服装的3D化身)来玩游戏,用户可以通过在电子游戏中呈现的3D世界来引导这些角色。
在线游戏平台还可以允许该平台的用户创建化身并使其动画化,并允许用户创建放置在3D世界中的其他图形对象。例如,可以允许在线游戏平台的用户创建、设计、以及定制化身,并且允许创建、设计各种服装项目并将各种服装项目拟合到化身上。
在图15中,示例系统架构1500(本文也称为“系统”)包括在线游戏平台1502、第一客户端设备1510A、以及至少一个第二客户端设备X 1510X(本文通常称为“客户端设备1510”)。在线游戏平台1502可以包括游戏引擎1504和一个或多个电子游戏1506。提供系统架构1500以示出一种可能的实施例。在其他实施例中,系统架构1500可以包括以与图15所示相同或不同的方式配置的相同、更少、更多、或不同的元件。
通信网络1522可用于在线游戏平台1502和客户端设备1510之间的通信和/或系统架构1500中的其他元件之间的通信。网络1522可以包括公共网络(例如,互联网)、专用网络(例如,局域网(local area network,LAN)或广域网(wide area network,WAN))、有线网络(例如,以太网)、无线网络(例如,802.11网络、Wi-Fi网络或无线LAN(WLAN))、蜂窝网络(例如,长期演进(long term evolution,LTE)网络)、路由器、集线器、交换机、服务器计算机或其组合。
客户端设备15101510A可以包括游戏应用1512和一个或多个用户接口1514(例如,音频/视频输入/输出设备)。类似地,客户端设备X 1500X可以包括游戏应用1520和用户接口1518(例如,音频/视频输入/输出设备)。音频/视频输入/输出设备可以包括麦克风、扬声器、耳机、显示设备、照相机等中的一个或多个。
系统架构1500还可以包括一个或多个存储设备1524。存储设备1524可以是例如位于在线游戏平台1502内或经由网络1522通信耦合到在线游戏平台1502的存储设备(如图15所示)。存储设备1524可以存储例如由游戏引擎1504或由游戏应用1512/1520在游戏1506中呈现的图形对象、以及图形对象的配置/属性信息(例如,如上所述的可用于生成笼和用于变形的特征点的坐标信息、大小维度等)。在一些实施例中,存储设备1524可以还存储HSR相关信息,例如识别可见或不可见表面、用于服装网格和身体网格以及服装笼和身体笼的彼此相关的面等的向量或其他数据结构。
在一些实施例中,存储设备1524可以是一个或多个单独的内容交付网络的一部分,内容交付网络提供在游戏1506中呈现的图形对象。例如,化身创建者可以在可在第一存储设备访问的库中发布化身模板,并且服装创建者可以(独立于化身创建者)在可在第二存储设备访问的库中发布服装模板。然后,游戏应用1512可以拉取(或已经推送)存储在第一存储设备/第二存储设备中的图形对象(化身和服装项目),用于在运行时进行计算/编译/变形,从而在玩游戏的过程中呈现。
在一个实施例中,存储设备1524可以是非暂时性计算机可读存储器(例如,随机存取存储器)、高速缓存、驱动器(例如,硬盘驱动器)、闪存驱动器、数据库系统、或能够存储数据和其他内容的另一类型的组件或设备。存储设备1524还可以包括多个存储组件(例如,多个驱动器或多个数据库),这些存储组件也可以跨多个计算设备(例如,多个服务器计算机)。
在一些实施例中,在线游戏平台1502可以包括具有一个或多个计算设备的服务器(例如,云计算系统、机架式服务器、服务器计算机、物理服务器集群等)。在一些实施例中,服务器可以包括在在线游戏平台1502中,可以是独立的系统,或者可以是另一系统或平台的一部分。
在一些实施例中,在线游戏平台1502可以包括一个或多个计算设备(例如机架式服务器、路由器计算机、服务器计算机、个人计算机、大型计算机、膝上型计算机、平板计算机、台式计算机等)、数据存储(例如,硬盘、存储器、数据库)、网络、软件组件、和/或硬件组件,这些组件可用于在在线游戏平台1502上执行操作并向用户提供对在线游戏平台1502的访问。在线游戏平台1502还可以包括网站(例如,网页)或应用后端软件,其可以用于向用户提供对在线游戏平台1502提供的内容的访问。例如,用户可以使用客户端设备1510上的游戏应用1512来访问在线游戏平台1502。
在一些实施例中,在线游戏平台1502可以是提供用户之间连接的一种社交网络,或者是允许用户(例如,终端用户或消费者)与在线游戏平台1502上的其他用户通信的一种用户生成内容系统,其中,通信可以包括语音聊天(例如,同步和/或异步的语音通信)、视频聊天(例如,同步和/或异步的视频通信)、或文本聊天(例如,同步和/或异步的基于文本的通信)。在本公开的一些实施例中,“用户”可以被表示为单个个体。然而,本公开的其他实施例涵盖的“用户”(例如,创建性用户)是由一组用户或自动化源控制的实体。例如,在用户生成内容系统中作为社区或组联合起来的一组单独的用户可以认为是“用户”。
在一些实施例中,在线游戏平台1502可以是虚拟游戏平台。例如,游戏平台可以向用户群体提供单人或多人游戏,用户群体可以使用客户端设备1510经由网络1522访问游戏或与游戏交互。在一些实施例中,游戏(本文也称为“视频游戏”、“在线游戏”或“虚拟游戏”等)可以是二维(two-dimensional,2D)游戏、三维(3D)游戏(例如,3D的用户生成游戏)、虚拟现实(VR)游戏、或增强现实(AR)游戏。在一些实施例中,用户可以与其他用户一起参与游戏。在一些实施例中,可以与游戏的其他用户实时玩游戏。
在一些实施例中,游戏性(gameplay)可以指在游戏(例如,游戏1506)中使用客户端设备(例如,客户端设备1510)的一个或多个玩家的交互,或者在客户端设备1510的显示器或其他用户接口(例如,用户接口1514/1518)上呈现交互。
在一些实施例中,游戏1506可以包括电子文件,该电子文件可以使用用于向实体呈现游戏内容(例如,数字媒体项目)的软件、固件或硬件来执行或加载。在一些实施例中,可以结合游戏引擎1504执行游戏应用1512并呈现游戏1506。在一些实施例中,游戏1506可以具有一组公共规则或公共目标,并且游戏1506的环境共享一组公共规则或公共目标。在一些实施例中,不同的游戏可以具有彼此不同的规则或目标。
在一些实施例中,游戏可以具有一个或多个环境(本文也称为“游戏环境”或“虚拟环境”),其中,多个环境可以被链接。环境的一个示例可以是3D环境。游戏1506的一个或多个环境在本文可以统称为“世界”或“游戏世界”或“虚拟世界”或“宇宙”。例如,用户可以构建链接到由另一用户创建的另一虚拟环境的虚拟环境。虚拟游戏的角色(例如,如本文所述具有分层服装的3D化身,使得隐藏的表面被移除)可以穿过虚拟边界以进入相邻的虚拟环境。
可以注意到,3D环境或3D世界使用图形,这些图形提供表示游戏内容的几何数据的三维表示(或者无论是否使用几何数据的3D表示,至少呈现游戏内容以显示为3D内容)。2D环境或2D世界使用提供表示游戏内容的几何数据的二维表示的图形。
在一些实施例中,在线游戏平台1502可以托管一个或多个游戏1506,并且可以允许用户使用客户端设备1510的游戏应用1512与游戏1506进行交互。在线游戏平台1502的用户可以玩、创建、与游戏1506交互或构建游戏1506、与其他用户通信、和/或创建和构建游戏1506的对象(例如,本文也称为“项目”或“游戏对象”或“虚拟游戏项目”或“图形对象”)。例如,在生成用户生成虚拟项目时,用户可以创建角色、角色的动画、角色的装饰(例如,服装、皮肤、配饰等)、交互式游戏的一个或多个虚拟环境、或构建游戏1506中使用的结构等。在一些实施例中,用户可以与在线游戏平台1502的其他用户购买、出售、或交易游戏虚拟游戏对象,例如平台内货币(例如,虚拟货币)。
在一些实施例中,在线游戏平台1502可以将游戏内容传输到游戏应用(例如,游戏应用1512)。在一些实施例中,游戏内容(本文也称为“内容”)可以指与在线游戏平台1502或游戏应用相关联的任何数据或软件指令(例如,游戏对象、游戏、用户信息、视频、图像、命令、媒体项目等)。在一些实施例中,游戏对象(例如,本文也称为“项目”或“对象”或“虚拟游戏项目”)可以指在线游戏平台1502的游戏1506或客户端设备1510的游戏应用1512或1520中使用、创建、共享、或以其他方式描绘的对象。例如,游戏对象可以包括部件、模型、角色或其部位(例如脸、手臂、嘴唇等)、工具、武器、服装、建筑物、车辆、货币、植物群、动物群、上述对象的组件(例如建筑物的窗户)等。
可以注意到,提供托管游戏1506的在线游戏平台1502以供说明。在一些实施例中,在线游戏平台1502可以托管一个或多个媒体项目,这些媒体项目可以包括从一个用户到一个或多个其他用户的通信消息。媒体项目可以包括但不限于数字视频、数字电影、数字照片、数字音乐、音频内容、旋律、网站内容、社交媒体更新、电子书、电子杂志、数字报纸、数字有声书、电子期刊、网络博客、简易信息整合(real simple syndication,RSS)提要、电子漫画书、软件应用等。在一些实施例中,媒体项目可以是电子文件,该电子文件可以使用用于将数字媒体项目呈现给实体的软件、固件或硬件来执行或加载。
在一些实施例中,游戏1506可以与特定用户或特定用户组相关联(例如,私人游戏),或者对在线游戏平台1502的用户广泛可用(例如,公共游戏)。在一些实施例中,在线游戏平台1502将一个或多个游戏1506与特定用户或用户组相关联,在线游戏平台1502可以使用用户账户信息(例如,诸如用户名和密码的用户账户标识符)将特定用户与游戏1502相关联。
在一些实施例中,在线游戏平台1502或客户端设备1510可以包括游戏引擎1504或游戏应用1512/1520。在一些实施例中,游戏引擎1504可用于游戏1506的开发或执行。例如,游戏引擎1106可以包括用于2D、3D、VR、或AR图形的渲染引擎(“渲染器”)、物理引擎、碰撞检测引擎(和碰撞响应)、声音引擎、脚本功能、动画引擎、人工智能引擎、网络功能、流式功能、存储器管理功能、线程功能、场景图功能、或用于电影艺术的视频支持等特征。游戏引擎1504的组件可以生成有助于计算和渲染游戏的命令(例如,渲染命令、碰撞命令、动画命令、物理命令等),包括用于选择化身、定制化身、选择服装项目、将服装项目变形为化身上的层、执行HSR、以及本文描述的各种其他操作的命令。在一些实施例中,客户端设备1510的游戏应用1512/1518可以独立工作和/或与在线游戏平台1502的游戏引擎1504协作,以在运行时执行本文描述的与对移除隐藏表面的分层服装进行变形和渲染相关的操作。
在一些实施例中,在线游戏平台1502和客户端设备1510都执行游戏引擎或游戏应用(分别为1504、1512、1520)。使用游戏引擎1504的在线游戏平台1502可以执行部分或全部游戏引擎功能(例如,生成物理命令、动画命令、渲染命令等,包括如上所述的服装层的变形和隐藏表面的移除),或者将部分或全部游戏引擎功能分流到客户端设备1510的游戏应用1512。在一些实施例中,在在线游戏平台1502上执行的游戏引擎功能和在客户端设备1510上执行的游戏引擎功能之间的比例对于每个游戏1506可以是不同的。
例如,在线游戏平台1502的游戏引擎1504可用于在至少两个游戏对象之间存在碰撞的情况下生成物理命令,而附加的游戏引擎功能(例如,生成渲染命令,包括对移除隐藏表面的分层服装进行变形和显示)可以被分流到客户端设备1510。在一些实施例中,在在线游戏平台1502和客户端设备1510上执行的游戏引擎功能的比例可以基于游戏条件而改变(例如,动态地改变)。例如,如果参与特定游戏1506的游玩的用户数量超过阈值数量,则在线游戏平台1502可以执行先前由客户端设备1510执行的一个或多个游戏引擎功能。
例如,用户可以在客户端设备1510上玩游戏1506,并且可以向在线游戏平台1502发送控制指令(例如,用户输入(例如右、左、上、下)、用户选择、或角色位置和速度信息等)。在从客户端设备1510接收到控制指令之后,在线游戏平台1502可以基于控制指令向客户端设备1510发送游戏性指令(例如,参与组游戏的角色的位置和速度信息或命令,如渲染命令、碰撞命令等)。例如,在线游戏平台1502可以对控制指令执行一个或多个逻辑操作(例如,使用游戏引擎1504),以生成用于客户端设备1510的游戏性指令。在其他实例中,在线游戏平台1502可以将来自一个客户端设备1510的一个或多个控制指令传递到参与游戏1506的其他客户端设备。客户端设备1510可以使用游戏性指令并渲染游戏以在客户端设备1510的显示器上呈现(包括如上所述具有HSR的分层服装的化身)。
在一些实施例中,控制指令可以指指示用户角色的游戏中动作的指令。例如,控制指令可以包括控制游戏中动作的用户输入(例如右、左、上、下)、用户选择、陀螺仪位置和方向数据、力传感器数据等。控制指令可以包括角色位置和速度信息。在一些实施例中,控制指令被直接发送到在线游戏平台1502。在其他实施例中,控制指令可以从客户端设备1510发送到另一客户端设备,其中,该另一客户端设备使用本地游戏引擎1504生成游戏性指令。控制指令可以包括在音频设备(例如,扬声器、耳机等)上播放来自另一用户的语音通信消息或其他声音的指令,例如语音通信或使用本文描述的音频空间化技术生成的其他声音。
在一些实施例中,游戏性指令可以指允许客户端设备1510渲染游戏(例如多人游戏)的游戏性的指令。游戏性指令可以包括用户输入(例如,控制指令)、角色位置和速度信息、或命令(例如,物理命令、渲染命令、碰撞命令等)中的一个或多个。
在一些实施例中,客户端设备1510可以各自包括计算设备,例如个人计算机(personal computer,PC)、移动设备(例如,笔记本电脑、移动电话、智能电话、平板计算机、或上网本计算机)、联网电视、游戏控制台等。在一些实施例中,客户端设备1510也可以称为“用户设备”。在一些实施例中,一个或多个客户端设备1510可以在任何给定时刻连接到在线游戏平台1502。可以注意到,提供客户端设备1510的数量仅为了说明而非限制。在一些实施例中,可以使用任意数量的客户端设备1510。
在一些实施例中,每个客户端设备1510可以包括游戏应用1512或游戏应用1520的实例。在一个实施例中,游戏应用1512或游戏应用1520可以允许用户使用在线游戏平台1502并与之交互,例如控制由在线游戏平台1502托管的虚拟游戏中的虚拟角色,或者查看或上传内容(例如游戏1506、图像、视频项目、网页、文档等)。在一个示例中,游戏应用可以是网络应用(例如,结合网络浏览器操作的应用),网络应用可以访问、检索、呈现、或导航由网络服务器服务的内容(例如,虚拟环境中的虚拟角色等)。在另一示例中,游戏应用可以是在客户端设备1510本地安装并执行、并且允许用户与在线游戏平台1502交互的本地应用(例如,移动应用、app、或游戏程序)。游戏应用可以向用户渲染、显示、或呈现内容(例如,网页、媒体观看器)。在实施例中,游戏应用还可以包括嵌入在网页中的嵌入式媒体播放器(例如,播放器)。/>
根据本公开的各方面,游戏应用1512/1520可以是在线游戏平台应用,供用户构建、创建、编辑、上传内容到在线游戏平台1502以及与在线游戏平台1502交互(例如,玩由在线游戏平台1502托管的游戏1506)。因此,游戏应用1512/1520可以由在线游戏平台1502提供给客户端设备1510。在另一示例中,游戏应用1512/1520可以是从服务器下载的应用。
在一些实施例中,用户可以经由游戏应用登录到在线游戏平台1502。用户可以通过提供用户账户信息(例如,用户名和密码)来访问用户账户,其中,用户账户与可用于参与在线游戏平台1502的一个或多个游戏1506的一个或多个角色相关联。
通常,如果适当的话,描述为由在线游戏平台1502执行的功能也可以在其他实施例中由客户端设备1510或服务器执行。此外,归属于特定组件的功能可以由不同或多个组件一起操作来执行。在线游戏平台1502还可以作为通过适当的应用编程接口(applicationprogramming interface,API)提供给其他系统或设备的服务而被访问,因此不限于在网站中使用。
图16是示出根据一些实施例的在3D化身上提供具有HSR的分层服装的计算机实现的方法1600的流程图。为了简单起见,在执行操作的客户端设备1510处的游戏应用1512的背景下描述方法1600中的各种操作。然而,如上文参照图15所述,一些操作可以全部或部分地由游戏平台1502处的游戏引擎1504替代地或附加地执行。示例方法1600可以包括由一个或多个块(例如块1602至块1612)示出的一个或多个操作。方法1600和/或本文描述的任何其他过程的各种块可以基于实施例组合成更少的块、分成附加的块、用其他的块补充、和/或消除。
本文参照图1至图15以及其他图所示的元件来阐述图16的方法1600。在一个实施例中,方法1600的各操作可以以流水线顺序方式执行。在其他实施例中,一些操作可以无序执行、并行执行等。
在块1602(“识别3D化身的身体笼的身体特征点”),用户已经启动游戏应用1512并且已经访问化身身体的库以选择要在3D环境(例如在线游戏或虚拟体验)中使用的化身。所选化身可以是具有一般形状/大小的通用模板,或者可以是具有皮肤的特定类型(例如,人形、外星人、动物等)的更具体的化身模板。从库中选择的化身可以已经具有配置在其上的身体笼(参见例如图1至图3),和/或游戏应用1512可以在运行时生成至少一些身体笼。游戏应用识别身体笼的特征点,这些特征点限定了化身的形状。块1602之后可以是块1604。
在块1604(“将第一件服装的内笼的内部特征点映射到身体笼的身体特征点”),用户已经访问了服装项目库并且已经选择了第一件服装。与块1602处的化身身体一样,库中的第一件服装可以在其上配置有笼,和/或游戏应用1512可以在运行时生成至少一些笼。用于第一件服装的这种笼包括内笼和外笼(参见例如图7)。在块1604,游戏应用1512可以使用RBF技术将第一件服装的内笼的内部特征点映射到身体笼的身体特征点,以使第一件服装变形(例如,使第一件服装的网格变形)以贴合化身身体。块1604之后可以是块1606。
在块1606(“执行第一HSR:确定可见性和相关面”),可以执行第一组迭代的HSR相关操作。例如,使用图10的可见性技术,HSR方法可以确定身体笼的面(对应于身体网格的面或以其他方式充当身体网格的面的代理)是否将被第一件服装的网格的一个或多个面隐藏。对于身体笼的每个面迭代地执行该确定(或者对于身体笼的各个面并行地执行该确定),并且例如通过将多边形的顶点设置为可见或不可见,身体笼的面被标记为可见或隐藏(不可见)。
在一些实施例中,还可以在块1606处确定身体笼的哪些面与身体网格的特定面相关。该确定与上面关于图13和图14所示和描述的类似/相似。在其他实施例中,不需要执行身体网格面和身体笼面之间的这种关系确定。块1606之后可以是块1608。
在块1608(“将第一件服装拟合到化身身体上”),游戏应用1512将第一件服装拟合到化身身体上。该拟合可由游戏应用1512在块1608通过用变形的第一件服装至少部分地包围化身身体的渲染过程来执行。例如,当变形的第一件服装的服装网格渲染在化身身体上时,(第一件服装的内笼的)至少一些内部特征点的坐标位置假定为身体笼的身体特征点的坐标位置的值。
如通过图11中的示例所示,服装网格1100因此可以在化身身体上渲染并标记为可见,而化身身体的底层隐藏表面(以虚线示出并预先标记/确定为隐藏)不被渲染。同样在块1606和/或块1608,对于第一件服装的网格的每个面,确定第一件服装的外笼的哪个(哪些)面与第一件服装的网格的面相关。以上参照图12和图13描述了该操作,并且可以包括(例如)将外笼的相关多边形的顶点添加到第一件服装的网格的相应面的数据中。块1608之后可以是块1610。
在块1610(“将第二件服装的内笼的内部特征点映射到第一件服装的外笼的外部特征点”),用户从库中选择第二件服装(或者可以自动选择第二件服装)。与块1604处的第一件服装一样,块1608处的第二件服装具有内笼和外笼。游戏应用1512将(第二件服装的内笼的)内部特征点映射到已经拟合到化身身体上的变形的第一件服装的外笼的外部特征点,以使第二件服装变形以贴合拟合有第一件服装的化身身体。块1610之后可以是块1612。
在块1612(“执行第二HSR:确定可见性和相关面”),可以执行第二组迭代的HSR相关操作。再次使用图10的可见性技术,HSR方法可以确定外笼的面(对应于第一件服装的网格的面或以其他方式充当第一件服装的网格的面的代理)是否将被第二件第一件服装的网格的一个或多个面隐藏。对第一件服装的外笼的每个面迭代/重复地执行该确定,并且网格第一件服装的面被标记为可见或隐藏(不可见)。
如上面关于图14所解释的,第一件服装的网格的特定面的可见或不可见的标记/识别是基于第一件服装的外笼的相关面。如果这些相关面中的至少一个被确定为透过第二(下一)件服装可见,则第一件服装的网格的特定面被标记/识别为可见。块1612之后可以是块1614。
在块1614(“将第二件服装拟合到化身身体上”),游戏应用1512将第二件服装拟合到化身身体上(其上拟合有第一件服装)。该拟合可由游戏应用1512在块1614通过用变形的第二件服装至少部分地包围化身身体(其上拟合有第一件服装)的渲染过程来执行。例如,当变形的第二件服装的服装网格渲染在其上拟合有第一件服装的化身身体上时,(第二件服装的内笼的)至少一些内部特征点的坐标位置假定为变形的第一件服装的外笼的外部特征点的坐标位置的值。
因此,第二件服装的服装网格可以在化身身体上(其上拟合有第一件服装)渲染并被标记为可见,而第一件服装和/或化身的底层隐藏表面不被渲染。此外,在块1612和/或块1614,对于第二件服装的网格的每个面,确定第二件服装的外笼的哪个(哪些)面与第二件服装的网格的面相关。如上文参照图12和图13所述,(第二件服装的)外笼的这些相关面可用于确定当第三件服装层叠在第二件服装的顶部时,第二件服装的网格的相应面是否可见。
块1614之后可以是块1616。
在块1616(“迭代”),可以执行类似于上述操作的操作,以在现有层上层叠附加的服装并使其变形,以及当需要时执行可见性确定和其他HSR相关操作以排除隐藏表面的渲染。例如,在如上所述参照块1602至块1608的第一次迭代中,第一服装(具有HSR)被拟合在身体笼上。在可以在块1610至块1614执行的第二迭代中,可以在覆盖在身体笼上的第一服装上拟合附加的(第二)服装(具有HSR)。可以执行迭代以适应任意数量的附加服装项目。在一些实施例中(例如,当连续拟合中的服装项目在该阶段涉及外笼的不同的、不重叠的部分时),拟合可以平行进行(例如,帽子的拟合可以与鞋子的拟合同时进行,衬衫的拟合可以与裤子的拟合同时进行,袜子的拟合可以与手套的拟合同时进行等)。
可以对上述HSR技术进行各种改进,以便改进性能和结果。例如,图17至图19是根据一些实施方式的关于改进HSR的可见性确定的图。
首先参考图17作为上下文,图1700示出了笼的多边形(例如,三角形)的面1702的前视图。以类似于上面图10所示的方式,从面1702上的采样点1706射出多个射线1704。图1708(侧视图)示出大多数/许多射线1704击中/相交于服装网格1710。然而,一个射线1712未击中了网格1710,从而使得面1702对位置1714的观察者可见。因此,从图1700和1708可以得出结论,面1700的可见性可以取决于观察者的位置和/或被射出的射线的起源和方向。
下面参照图18,图1800示出了笼1802和覆盖笼1802的一些(但不是全部)部分的服装网格1804。如图18所示,射线1806(从笼1802的面1810上的点1808射向点1812)可能未击中服装网格1804,但击中笼1802的其它面。
通常使用图10的可见性确定技术,射线1806未击中服装网格1804的事实可以导致面1810被认为是可见的。然而,在HSR技术的一些实施例中,可见性确定考虑到射线1806撞击/相交于笼1802的其他部分。因此,面1810可以被认为是不可见/隐藏的,而不是可见的。例如,当化身的一个身体部分被化身的另一个身体部分部分覆盖,并且存在具有位于被覆盖的身体部分附近的间隙的覆盖的一件服装时,图18中描绘的情况可以适用。
图19涉及通过对射出射线的方向进行编码来改进可见性计算。对于上下文,上述可见性确定技术包括从下面的笼的表面发射射线,并检测这些射线是否与上面的服装相交/击中网格。射线可以从随机方向射出,如果这些射线中的任何一条未击中了上面一件服装的网格,那么下面笼的表面就被标记为可见。
然而,并且作为示例,可能存在当仅穿着裤子时化身身体上的区域(例如,身体网格的多个面中的特定面)是可见的或者当仅穿着衬衫时是可见的,但是当同时穿着裤子和衬衫时身体网格的面变得隐藏的情况。例如:当化身身体只穿着裤子时,当从顶部向下看时,身体网格的面是可见的;当只穿衬衫时,从底部向上看时,身体的网格是可见的;当裤子和衬衫都穿上时,身体网格的面可能因此被标记为可见,这将是不准确的。因此,用于HSR技术的可见性确定的增强结合了裤子和衬衫的可见性方向/确定,以这样的方式,当裤子和衬衫(或其他服装)同时穿着时,身体网格的面(和/或下面的服装网格的面)被确定为隐藏。
基于图19所示的示例球体1900,可以通过对可见性计算的射线方向进行编码来执行这种改进。示例球体1900已经围绕其南北轴被细分为10个切片,在图19中突出显示了单个特定切片1902。每个切片依次沿着其高度被细分为10个区域1904。
球体1900表示所有可能的射线方向,并且每个切片覆盖落在构成切片的二面角内的预定方向范围。例如,切片1902可以表示对应于10个区域1904中的每一个的10个不同的射线方向。
每个切片使用单个位值(bit value)进行编码:值0表示隐藏,值1表示可见。因此,对于切片1902,可以存在对应于区域1904的射线方向的0和1的串。因此,不是在随机方向上发射射线(如图10所示),而是可以为每个切片发射射线,并为该切片标记可见性。因此,内笼的网格可以被标记为从一些方向可见,而从其他方向被标记为隐藏,所有这些都可以被编码到每个切片的1和0数组中。
在前面仅穿着裤子的化身的示例中,因为切片1902的数组将具有至少一个编码方向值1(可见),所以身体区域/面可以被标记为可见。类似地,当化身仅穿着衬衫时,因为切片1902的数组也将具有至少一个编码方向值1(可见),所以身体区域/面可以被标记为可见。然后,当检查多层布置(例如,同时穿着裤子和衬衫)上的可见性时,可以对两个切片的编码位串执行逻辑与运算。如果与操作的值为0,则相应的身体区域/面被标记为隐藏。否则,因为与操作的结果值为1,则该身体/网格面被标记为可见。
根据各种实施例,可以执行图19的技术的进一步优化。例如,可以通过仅对可见的切片拍摄射线来优化可见性计算,这可以降低计算成本。这可以通过首先在面的法线和切片方向(例如,从其中点)之间执行点积并忽略面后面的切片(例如,负点积值)来完成。
作为HSR技术的改进的又一示例,参见图20。图20示出了在执行HSR时可能遇到的问题的示例。具体地,当执行HSR时,化身2000至化身2004的身体或服装的一些面可能被移除,即使这些面不应该被移除,从而留下奇怪或不自然的外观结果。在图20中,化身耳朵的部分已经被移除,而同一耳朵的其他部分可以(或可以不)被呈现为可见,例如在2006至2012中所示。
为了解决图20中描述的问题,HSR技术的各实施例可以执行聚类操作(clusteringoperation),其中,一起隐藏(或显示)的面被放置到单个组中。聚类算法的示例如下:
1.计算阈值:
a.对于外笼上的每个面(calculateCloseToCageThreshold)
i.计算外笼上的面和渲染网格上最近的面之间的距离
b.取距离的中间值作为阈值
2.查找渲染网格上需要聚类的所有面(meshFacesOutsideOfOuterCage)
a.该算法只期望在渲染网格上的面在外笼之外时进行聚类
b.对于渲染网格上的每个面:
i.如果面到最近的外笼的距离大于阈值
ii.并且当射线从面射出时,至少有一个射线不会击中外笼,
iii.然后需要对面进行聚类,因为面可能在外笼之外
3.将上面确定为在外部笼外部的渲染网格的那些面组合在一起(generateClusterForFacesOnMeshOutsideOfOuterCage)
a.对于渲染网格上需要聚类的每个面:
i.在渲染网格上查找面的相邻面
ii.如果相邻面需要聚类,则将这些面添加到一个组中
4.将渲染网格的图更新到相关的外笼::
a.对于每个渲染面的聚类:
i.对于聚类中的每个渲染面:
1.查找所有相关的外笼面
2.将这些外笼面添加到一组相关的外笼面中
3.将相关外笼面聚类中所有面的相关外笼面更新为渲染面聚类中的每个渲染面
接下来,当执行HSR时,聚类中的所有面在渲染网格上被视为一个“大面(bigface)”,并在外笼上共享相同的相关面。因此,渲染网格中聚类的面一起显示或隐藏。
在一些情况下,执行聚类时可能会遇到对称性问题(symmetry issue)。例如,一个化身可能有两只耳朵和头发。如果头发覆盖了一只耳朵,但没有覆盖另一只耳朵,那么化身可以在一只耳朵被覆盖(隐藏/移除)的情况下被渲染。参见例如图20中的化身2004。
作为另一个示例,聚类可以基于面是彼此连接还是断开。然而,一些化身的问题是,一些部分可能看起来是连接的,但这些部分并没有连接,或者一些部分并不旨在连接,但仍然隐藏或显示在一起。HSR的结果是渲染的化身可能具有“浮动的”断开的部分,或者可能具有奇怪的/不自然的连接部分。
仍作为示例:一些面可能太靠近外笼,这可能导致聚类,导致这些面的不适当露出/可见性,而事实上这些面是隐藏的;阈值(参见上述聚类算法中的步骤1)可能被设置或计算得过大或过小;一些面可能被完全覆盖,但是用户不希望隐藏这些表面,因为这些表面/部分对于化身来说可能是特殊的,等等。
在一些实施例中,通过在用户界面(user interface,UI)上提供工具来解决上述聚类问题和其他聚类问题,以使用户(例如,开发者、创建者等)能够选择要聚类在一起的面。例如,用户可以:定义哪些面对于HSR应该总是可见的:可以用颜色绘画或者以其他方式识别要隐藏或显示的面,或者使用顶点进行识别;导入定义哪些面始终可见或不可见的网格;等等。
关于在一些实施例中提供的又一改进,可以通过收缩笼的隐藏区域(面)来执行HSR。对于上下文,如前所述,HSR移除了大多数被外层覆盖的多边形,如三角形(面)。然而,有些部分可能无法移除,因此这些部分可能会导致不期望的露出,表现为穿透、夹持问题、不合适的变形等。
上述问题的解决方案是收缩笼的隐藏区域/面,使得这些区域下的网格的面/三角形不会露出。理想情况下,隐藏的笼的面下的三角形被HSR移除,但是一些三角形可能不会被移除(例如,由于射线通过外层服装的网格和下面笼的表面之间的狭窄间隙露出,这种三角形被确定为可见)。通过收缩下面的笼,笼下面相应的网格也收缩了,从而减少了露出问题。
当只有一层服装时,收缩可能只适用于身体的底层面。当有两层或两层以上的服装时,除了最上面的一层,每一层的面都可能收缩。可以从顶层(最外层)到底层(最内层)进行这种收缩,直到露出被消除或以其他方式减少到可接受的水平。
为了执行收缩,第一操作可以包括确定要收缩的笼的三角形(面)。为了执行该确定,可以存在已知的三角形,或者该三角形的至少一个顶点可以是已知的。例如,如果已知一个三角形,则该三角形的顶点是已知的。然后,与已知三角形相邻的三角形可以被确定为共享已知顶点的至少一个子集的三角形。该过程可以从一个顶点/三角形迭代到另一个顶点/三角形,直到识别出所有要收缩的适当三角形。
在识别三角形之后,使用任何适当的方法(包括上述过程),可以执行三角形的收缩。根据各种实施例,可以使用伞状拉普拉斯(umbrella-Laplacian)收缩技术和/或法线收缩技术(normal shrink technique)。
法线收缩技术沿着负法线方向移动顶点。因此,法线收缩可以用于位于单个平面上的单个三角形、位于公共平面上的两个或多个三角形,或者用于笼的非锐特征顶点(non-sharp feature vertice)。但是,法线收缩技术可能无法很好地处理一些尖锐的特征顶点,这可能会导致露出。
伞状拉普拉斯收缩技术可用于平滑尖锐特征,以减少露出的机会。图21示出了隐藏笼收缩技术(hidden cage shrinking technique)的示例,具体地,是伞状拉普拉斯收缩技术(umbrella-Laplacian shrink technology)。
图2100示出了多个三角形,其顶部在尖顶点V处连接在一起。伞状计算符(umbrella operator)用于计算从顶点V到点C的向量2102。点C可以是相邻顶点0、1、2、3、以及4的平均值。
如果顶点V被伞状计算符向下移动到顶点V’(如图2104所示),则由顶点V提供的尖锐特征被减小。然后可以对所有其他顶点0、1、2、3、以及4执行类似的操作,以便获得收缩的笼/网格。伞状拉普拉斯收缩技术也可以产生平滑的笼/网格。
根据一些实施例,如果渲染显示已经发生了一些露出,则可以执行笼的面的收缩。在其他实施例中,可以在渲染之前执行收缩,然后如果存在露出或可以通过调整收缩来减少的其他不期望的视觉效果,则可以在该渲染之后执行对收缩的调整。
图22是可用于实现本文描述的一个或多个特征的示例计算设备2200的框图。图15的客户端设备1510和/或游戏平台1502可以以图22的计算设备2200的形式提供。在一个示例中,计算设备2200可以用于执行本文描述的方法。计算设备2200可以是任何合适的计算机系统、服务器或其他电子或硬件设备。例如,计算设备2200可以是大型计算机、台式计算机、工作站、便携式计算机、或电子设备(便携式设备、移动设备、手机、智能手机、平板电脑、电视、电视机顶盒、个人数字助理(personal digital assistant,PDA)、媒体播放器、游戏设备、可穿戴设备等)。在一些实施例中,计算设备2200包括处理器2202、存储器2206、输入/输出(input/output,I/O)接口2206、以及音频/视频输入/输出设备2214。
处理器2202可以是一个或多个处理器和/或处理电路,以执行程序代码并控制计算设备2200的基本操作。“处理器”包括处理数据、信号、或其他信息的任何合适的硬件和/或软件系统、机制、或组件。处理器可以包括具有通用中央处理单元(central processingunit,CPU)、多个处理单元、用于实现功能的专用电路或其他系统的系统。处理不必局限于特定的地理位置,也不具有时间限制。例如,处理器可以以“实时”、“离线”、“批处理模式”等方式执行其功能。处理的各个部分可以由不同的(或相同的)处理系统在不同时间和不同位置执行。计算机可以是与存储器通信的任何处理器。
存储器2204可以设置在计算设备2200中以供处理器2202访问,并且可以是任何合适的处理器可读存储介质,例如随机存取存储器(random access memory,RAM)、只读存储器(read-only memory,ROM)、电可擦除只读存储器(electrical erasable read-onlymemory,EEPROM)、闪存等,存储器2204适用于存储供处理器执行的指令,并且与处理器2202分离和/或与处理器2202集成。存储器2204可以存储可由处理器2202在计算设备2200上执行的软件,包括操作系统1308、一个或多个应用2210、以及相关联数据2212。应用2210是可用于实现游戏应用1512/1520或游戏引擎1504的工具的示例。在一些实施例中,应用2210可以包括指令,响应于处理器2202的执行,该指令使处理器2202能够执行本文描述的关于在化身身体上对分层服装进行变形/拟合的操作或控制本文描述的关于在化身身体上对分层服装进行变形/拟合的操作的执行以及执行HSR相关操作。
存储器2204中的任何软件可以替代地存储在任何其他合适的存储位置或计算机可读介质上。此外,存储器2204(和/或其他连接的存储设备)可以存储在本文描述的特征中使用的指令和数据。存储器2204和任何其他类型的存储(磁盘、光盘、磁带、或其他有形介质)可以认为是“存储区”或“存储设备”。
I/O接口2206可以提供使服务器计算设备2200能够与其他系统和设备接口的功能。例如,网络通信设备、存储设备(例如,存储器和/或数据存储区108)、以及输入/输出设备可以经由接口2206与计算设备2200进行通信。在一些实施例中,I/O接口2206可以连接到接口设备,该接口设备包括输入设备(键盘、指向设备、触摸屏、麦克风、相机、扫描仪等)和/或输出设备(显示设备、扬声器设备、打印机、电机等),其统称为至少一个音频/视频输入/输出设备2214。
音频/视频输入/输出设备2214可以包括可用于接收音频消息作为输入的音频输入设备(例如,麦克风等)、音频输出设备(例如,扬声器、耳机等)、和/或可用于提供图形和视觉输出(例如上述具有分层服装的示例渲染的3D化身)的显示设备。
为了便于说明,图22对处理器2202、存储器2204、I/O接口2206、应用2210等中的每一个示出了一个块。这些块可以代表一个或多个处理器或处理电路、操作系统、存储器、I/O接口、应用、和/或软件模块。在其他实施例中,计算设备2200可以不具有所示的所有组件和/或可以具有包括其他类型元件的其他元件而不是本文所示的那些元件,或除了本文所示的那些元件之外还包括这些其他元件。
用户设备也可以实现本文描述的特征和/或与本文描述的特征一起使用。示例用户设备可以是包括一些与计算设备2200相似的组件(例如处理器2202、存储器2204和I/O接口2206)的计算机设备。可以在存储器中提供适用于客户端设备的操作系统、软件、以及应用并由处理器使用。用于客户端设备的I/O接口可以连接到网络通信设备,以及输入和输出设备,例如用于捕捉声音的麦克风、用于捕获图像或视频的相机、用于输出声音的音频扬声器设备、用于输出图像或视频的显示设备、或其他输出设备。例如,音频/视频输入/输出设备2214内的显示设备可以连接到(或包括在)计算设备2200,以显示如本文所述的预处理和后处理的图像,其中,这种显示设备可以包括任何合适的显示设备,例如LCD、LED、或等离子显示屏、CRT、电视、监视器、触摸屏、3D显示屏、投影仪、或其他视觉显示设备。一些实施例可以提供音频输出设备,例如语音输出或阅读文本的合成音。
本文描述的一个或多个方法(例如,方法1600)可以由能在计算机上执行的计算机程序指令或代码来实施。例如,代码可以由一个或多个数字处理器(例如,微处理器或其他处理电路)实施,并且可以存储在包括非暂时性计算机可读介质(例如,存储介质)的计算机程序产品上,例如磁性、光学、电磁、或半导体存储介质,包括半导体或固态存储器、磁带、可移动计算机软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存、硬磁磁盘、光盘、固态存储驱动器等。程序指令还可以包含在电子信号中并作为该电子信号提供,例如以从服务器(例如,分布式系统和/或云计算系统)交付的软件即服务(software as a service,SaaS)的形式。或者,一种或多种方法可以用硬件(逻辑门等)或硬件和软件的组合来实现。示例硬件可以是可编程处理器(例如,现场可编程门阵列(field-programmable gate array,FPGA)、复杂可编程逻辑器件)、通用处理器、图形处理器、专用集成电路(applicationspecific integrated circuit,ASIC)等。一种或多种方法可以作为在系统上运行的应用的一部分或组件来执行,或者作为与其他应用和操作系统一起运行的应用或软件来执行。
本文描述的一种或多种方法可以在能在任何类型的计算设备上运行的独立程序、在网络浏览器上运行的程序、在移动计算设备(例如,手机、智能手机、平板电脑、可穿戴设备(手表、臂章、首饰、头饰、护目镜、眼镜等)、笔记本电脑等)上执行的移动应用(“app”)中运行。在一个示例中,可以使用客户端/服务器架构,例如,移动计算设备(作为客户端设备)将用户输入数据发送到服务器设备并从服务器接收最终输出数据以用于输出(例如,用于显示)。在另一示例中,在移动计算设备上的移动应用(和/或其他应用)内执行所有计算。在另一示例中,可以在移动计算设备和一个或多个服务器设备之间拆分计算。
虽然已经针对其特定实施方式描述了说明书,但是这些特定实施例仅仅用于说明而非限制。各示例中说明的概念可以应用于其他示例和实施例。
注意,如本领域技术人员已知的,本公开中描述的功能块、操作、特征、方法、设备、以及系统可以集成或划分到系统、设备、以及功能块的不同组合。可以使用任何合适的编程语言和编程技术来实现特定实施例的例程。可以采用不同的编程技术,例如,面向过程式或面向对象式。例程可以在单个处理设备或多个处理器上执行。虽然可以按照特定顺序呈现步骤、操作、或计算,但是在不同的特定实施例中可以改变顺序。在一些实施例中,在本说明书中显示为顺序的多个步骤或操作可以同时执行。

Claims (20)

1.一种在三维(3D)化身上提供分层服装的计算机实现的方法,所述方法包括:
识别具有化身身体的3D化身的身体笼的身体特征点;
将第一件服装的内笼的内部特征点映射到所述身体笼的所述身体特征点,以获得贴合所述化身身体的变形的第一件服装;
执行第一隐藏表面移除(HSR)操作,以识别被所述变形的第一件服装隐藏的所述身体笼的面;
通过用所述变形的第一件服装至少部分地包围所述化身身体,将所述变形的第一件服装拟合到所述化身身体上,其中,对应于所述身体笼的识别的面的所述化身身体的面不被渲染;
将第二件服装的内笼的内部特征点映射到所述变形的第一件服装的外笼的外部特征点,以获得贴合所述第一件服装的所述外笼的变形的第二件服装;
执行第二HSR操作以识别被所述变形的第二件服装隐藏的所述变形的第一件服装的所述外笼的面;以及
通过用所述变形的第二件服装至少部分地包围拟合有所述变形的第一件服装的所述化身身体,将所述变形的第二件服装拟合到所述化身身体上,其中,对应于所述外笼的识别的面的所述变形的第一件服装的面不被渲染。
2.根据权利要求1所述的方法,其中,执行所述第二HSR操作包括:
对于所述变形的第一件服装的网格的隐藏的第一面,识别与所述变形的第一件服装的所述隐藏的第一面相关的所述第一件服装的所述外笼的至少第一面;以及
对于所述变形的第一件服装的网格的可见的第二面,识别与所述变形的第一件服装的所述可见的第二面相关的所述第一件服装的所述外笼的至少第二面,
其中,相关的所述至少第二面用于关于第三件服装的后续的可见性确定,并且其中,相关的所述至少第一面相对于所述第三件服装被隐藏。
3.根据权利要求1所述的方法,其中,执行所述第二HSR操作以识别所述变形的第一件服装的所述外笼的隐藏的面包括:
从所述第一件服装的所述外笼的面上的至少一个点射出多个射线;
如果所述多个射线中的至少一个射线未击中所述第二件服装,则确定所述面可见;以及
如果所述多个射线中的所有射线都击中所述第二件服装,则确定所述面被隐藏。
4.根据权利要求1所述的方法,其中,执行所述第一HSR操作和所述第二HSR操作包括:
对于所述第一件服装,使用球体的至少第一切片对所述身体笼的特定面的第一可见性进行编码;
对于所述第二件服装,使用所述球体的至少第二切片对所述身体笼的所述特定面的第二可见性进行编码;以及
在编码的所述第一可见性和编码的所述第二可见性之间执行逻辑操作,以确定当所述第一件服装和所述第二件服装都被拟合到所述化身身体上时所述身体笼的所述特定面的可见性。
5.根据权利要求1所述的方法,其中,执行所述第一HSR操作包括执行聚类技术,使得隐藏在一起的所述化身身体的第一面被聚类到第一组中,并且一起显示的所述化身身体的第二面被聚类到第二组中。
6.根据权利要求1所述的方法,还包括收缩所述第一件服装的所述身体笼和所述外笼中的至少一个,其中,所述收缩减少了下层的面的露出。
7.根据权利要求1所述的方法,还包括调整由所述变形的第二件服装拟合在所述变形的第一件服装上而引起的浮肿。
8.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质上存储有指令,响应于由处理器执行,所述指令使所述处理器执行操作或控制所述操作的执行,所述操作包括:
识别具有化身身体的3D化身的身体笼的身体特征点;
将第一件服装的内笼的内部特征点映射到所述身体笼的所述身体特征点,以获得贴合所述化身身体的变形的第一件服装;
执行第一隐藏表面移除(HSR)操作,以识别被所述变形的第一件服装隐藏的所述身体笼的面;
通过用所述变形的第一件服装至少部分地包围所述化身身体,将所述变形的第一件服装拟合到所述化身身体上,其中,对应于所述身体笼的识别的面的所述化身身体的面不被渲染;
将第二件服装的内笼的内部特征点映射到所述变形的第一件服装的外笼的外部特征点,以获得贴合所述第一件服装的所述外笼的变形的第二件服装;
执行第二HSR操作以识别被所述变形的第二件服装隐藏的所述变形的第一件服装的所述外笼的面;以及
通过用所述变形的第二件服装至少部分地包围拟合有所述变形的第一件服装的所述化身身体,将所述变形的第二件服装拟合到所述化身身体上,其中,对应于所述外笼的识别的面的所述变形的第一件服装的面不被渲染。
9.根据权利要求8所述的非暂时性计算机可读介质,其中,执行所述第二HSR操作的操作包括以下操作:
对于所述变形的第一件服装的网格的隐藏的第一面,识别与所述变形的第一件服装的所述隐藏的第一面相关的所述第一件服装的所述外笼的至少第一面;以及
对于所述变形的第一件服装的网格的可见的第二面,识别与所述变形的第一件服装的所述可见的第二面相关的所述第一件服装的所述外笼的至少第二面,
其中,相关的所述至少第二面用于关于第三件服装的后续的可见性确定,并且其中,相关的所述至少第一面相对于所述第三件服装被隐藏。
10.根据权利要求8所述的非暂时性计算机可读介质,其中,执行所述第二HSR操作以识别所述变形的第一件服装的所述外笼的隐藏的面的操作包括以下操作:
从所述第一件服装的所述外笼的面上的至少一个点射出多个射线;
如果所述多个射线中的至少一个射线未击中所述第二件服装,则确定所述面可见;以及
如果所述多个射线中的所有射线都击中所述第二件服装,则确定所述面被隐藏。
11.根据权利要求8所述的非暂时性计算机可读介质,其中,执行所述第一HSR操作和所述第二HSR操作的操作包括以下操作:
对于所述第一件服装,使用球体的至少第一切片对所述身体笼的特定面的第一可见性进行编码;
对于所述第二件服装,使用所述球体的至少第二切片对所述身体笼的所述特定面的第二可见性进行编码;以及
在编码的所述第一可见性和编码的所述第二可见性之间执行逻辑操作,以确定当所述第一件服装和所述第二件服装都被拟合到所述化身身体上时所述身体笼的所述特定面的可见性。
12.根据权利要求8所述的非暂时性计算机可读介质,其中,执行所述第一HSR操作的操作包括以下操作:
执行聚类技术,使得隐藏在一起的所述化身身体的第一面被聚类到第一组中,并且一起显示的所述化身身体的第二面被聚类到第二组中。
13.根据权利要求8所述的非暂时性计算机可读介质,其中,所述指令还使所述处理器执行以下操作:
收缩所述第一件服装的所述身体笼和所述外笼中的至少一个,其中,所述收缩减少了下层的面的露出。
14.一种装置,包括:
处理器;以及非暂时性计算机可读介质,耦合到所述处理器,并且所述非暂时性计算机可读介质上存储有指令,响应于由所述处理器执行,所述指令使所述处理器执行操作或控制所述操作的执行,所述操作包括:
识别具有化身身体的3D化身的身体笼的身体特征点;
将第一件服装的内笼的内部特征点映射到所述身体笼的所述身体特征点,以获得贴合所述化身身体的变形的第一件服装;
执行第一隐藏表面移除(HSR)操作,以识别被所述变形的第一件服装隐藏的所述身体笼的面;
通过用所述变形的第一件服装至少部分地包围所述化身身体,将所述变形的第一件服装拟合到所述化身身体上,其中,对应于所述身体笼的识别的面的所述化身身体的面不被渲染;
将第二件服装的内笼的内部特征点映射到所述变形的第一件服装的外笼的外部特征点,以获得贴合所述第一件服装的所述外笼的变形的第二件服装;
执行第二HSR操作以识别被所述变形的第二件服装隐藏的所述变形的第一件服装的所述外笼的面;以及
通过用所述变形的第二件服装至少部分地包围拟合有所述变形的第一件服装的所述化身身体,将所述变形的第二件服装拟合到所述化身身体上,其中,对应于所述外笼的识别的面的所述变形的第一件服装的面不被渲染。
15.根据权利要求14所述的装置,其中,执行所述第二HSR操作的操作包括以下操作:
对于所述变形的第一件服装的网格的隐藏的第一面,识别与所述变形的第一件服装的所述隐藏的第一面相关的所述第一件服装的所述外笼的至少第一面;以及
对于所述变形的第一件服装的网格的可见的第二面,识别与所述变形的第一件服装的所述可见的第二面相关的所述第一件服装的所述外笼的至少第二面,
其中,相关的所述至少第二面用于关于第三件服装的后续的可见性确定,并且其中,相关的所述至少第一面相对于所述第三件服装被隐藏。
16.根据权利要求14所述的装置,其中,执行所述第二HSR操作以识别所述变形的第一件服装的所述外笼的隐藏的面的操作包括以下操作:
从所述第一件服装的所述外笼的面上的至少一个点射出多个射线;
如果所述多个射线中的至少一个射线未击中所述第二件服装,则确定所述面可见;以及
如果所述多个射线中的所有射线都击中所述第二件服装,则确定所述面被隐藏。
17.根据权利要求14所述的装置,其中,执行所述第一HSR操作和所述第二HSR操作的操作包括以下操作:
对于所述第一件服装,使用球体的至少第一切片对所述身体笼的特定面的第一可见性进行编码;
对于所述第二件服装,使用所述球体的至少第二切片对所述身体笼的所述特定面的第二可见性进行编码;以及
在编码的所述第一可见性和编码的所述第二可见性之间执行逻辑操作,以确定当所述第一件服装和所述第二件服装都被拟合到所述化身身体上时所述身体笼的所述特定面的可见性。
18.根据权利要求14所述的装置,其中,执行所述第一HSR操作的操作包括以下操作:
执行聚类技术,使得隐藏在一起的所述化身身体的第一面被聚类到第一组中,并且一起显示的所述化身身体的第二面被聚类到第二组中。
19.根据权利要求14所述的装置,其中,所述指令还使所述处理器执行以下操作:
收缩所述第一件服装的所述身体笼和所述外笼中的至少一个,其中,所述收缩减少了下层的面的露出。
20.根据权利要求14所述的装置,其中,所述指令还使所述处理器执行以下操作:
调整由所述变形的第二件服装拟合在所述变形的第一件服装上而引起的浮肿。
CN202280068564.1A 2021-10-14 2022-10-13 用于化身身体的分层服装的隐藏表面移除 Pending CN118119979A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US63/255,489 2021-10-14
US63/404,925 2022-09-08

Publications (1)

Publication Number Publication Date
CN118119979A true CN118119979A (zh) 2024-05-31

Family

ID=

Similar Documents

Publication Publication Date Title
KR102623730B1 (ko) 허위 가상 오브젝트의 검출
US11238667B2 (en) Modification of animated characters
KR20220070032A (ko) 위조의 가상 오브젝트의 검출
US11645805B2 (en) Animated faces using texture manipulation
US20230298297A1 (en) Layered clothing that conforms to an underlying body and/or clothing layer
US20230124297A1 (en) Hidden surface removal for layered clothing for an avatar body
CN118119979A (zh) 用于化身身体的分层服装的隐藏表面移除
US11978152B2 (en) Computer-assisted graphical development tools
CN115719305A (zh) 图像溶解处理方法、装置、存储介质及电子装置
CN114269442A (zh) 电子游戏中摄像机视图的调整方法

Legal Events

Date Code Title Description
PB01 Publication