给服装创作者的建议
本页旨在为服装创作者提供概述,帮助他们确保其服装与 Modular Avatar 兼容。 通常,Modular Avatar(MA)旨在兼容适用于头像的服装设计中常见的现有规范,但偶尔也会遇到一些采用不同设计方式的服装。 本页将帮助您了解 MA 的期望结果,以及确保您的服装与其兼容。
摘要
对于 MA 兼容
服装,只需要保证 Setup Outfit(适配服装)
正常工作即可。对于 MA 预设
服装,需要提前运行 Setup Outfit(适配服装)
,并且考虑配置以下内容:
- 形态键同步(用于和虚拟形象素体调整身体形状的形态键同步)
- 变形器(用于在服装不同部位启用的时候缩小或隐藏部分身体网格)
- 菜单项和对象开关(允许用户开关服装的不同部位)
兼容 vs 预设
在开始之前,我们需要说明 MA 有两种不同的支持级别。在最低限度下,您可以确保动骨(PhysBone)组件的骨骼名称转换和层级位置达到 MA 的期望,如此一来您的服装就是 MA 兼容
服装了。虽然大部分服装最后都正好能够兼容,但是如果您遇到问题,该文档会带您了解具体要求。
MA 兼容服装其实并不包含任何 MA 组件,所以您不需要使用 MA,用其他服装安装系统也可以进行安装(或者手动安装)。
您可以更进一步,提供一个已经用 MA 组件配置完成的预制件,这个情况下我们称之为 MA 预设
。这种支持级别能让您为您的顾客提供附加功能,并且减少配置步骤和错误风险。举个例子,您可以配置形态键与素体网格同步,或者隐藏被衣服遮盖的素体网格。但是,这个级别需要用户提前安装 MA。您可以准备多个预制件,一个包含 MA 组件,一个不包含,来迎合不同需求。
请注意 MA 兼容
的服装不符合使用 MA logo 的条件。查看 Logo 使用准则 了解详情。
如何检查兼容性/调试的提示
在开始之前,我们来看看典型的配置 MA 兼容
服装的工作流程。大部分用户会将服装放入虚拟形象的游戏对象(GameObject)中,然后对其右键并点击 Modular Avatar -> Setup Outfit(适配服装)
。如果执行成功,必要的 MA 组件会被添加,不需要后续步骤。
有以下几个选项用于检查设定是否正确:
编辑模式同步
适配服装后,服装会被经过配置,使之在编辑模式下能够同步虚拟形象的骨骼。通过旋转虚拟形象本身的骨骼验证服装是否正确跟随。
在播放模式下测试
Modular Avatar 会在播放模式合并虚拟形象,使您可以查看虚拟形象上传时的情况。您可以使用类似 Avatar 3.0 Emulator 或者 Gesture Manager 的工具得到更准确的预览结果。
手动烘焙
您还可以直接让 Modular Avatar 在编辑模式下处理虚拟形象并展示结果。只需要右键虚拟形象,点击 Modular Avatar -> Manual Bake Avatar(手动烘焙虚拟形象)
。点击后一个应用了服装的虚拟形象克隆对象会被创建,您可以检查效果。
适配服装
实现原理
适配服装(Setup Outfit)一般可以对与大部分现有的服装使用,并且可以以合理的预设值进行配置。来详细查看他的原理:
识别骨骼
适配服装(Setup Outfit)首先尝试定位服装中的特定骨骼,并将其作为处理时使用的引用对象。具体来说,它会找到一个像 服装根对象 -> [Armature(骨架)] -> Hips(髋部)
这样的骨骼,同时骨骼 Hips(髋部)
的名称需要包含虚拟形象素体的髋部骨骼的名称。髋部骨骼的名称的开头或结尾附加一些文本是没问题的,但是需要在服装的所有骨骼名称中同样附加一样的文本。注意,Armature(骨架)
对象的名称随意。
如果服装的骨骼命名不符合上述规则,适配服装(Setup Outfit)流程会尝试使用一个骨骼通用名称列表来对应服装和虚拟形象的骨骼名称,如果成功找到对应名称,则会将服装的骨骼重命名成虚拟形象的骨骼名称。由于该模式并不十分可信,最好避免触发该模式;我们推荐将服装的骨骼名称与虚拟形象素体骨骼名称完全对应。
T-pose/A-pose 转换
有些时候,服装和虚拟形象素体的姿态可能不一样。其中一个情况是虚拟形象按照 T-pose 建模,而服装按照 A-pose 建模。适配服装(Setup Outfit)流程会将服装的手臂(Arms)的旋转,将其位置与虚拟形象素体对齐。
创建合并骨架组件
适配服装(Setup Outfit)流程会在服装的骨架上添加一个合并骨架(Merge Armature)组件。该组件会包含之前的步骤中识别到的,骨骼名称前面和后面得到文本(前缀(Prefix)和后缀(Suffix)),以及对虚拟形象骨架的引用。这其实就是骨骼合并到虚拟形象素体上的方法。
适配服装(Setup Outfit)流程中有一些尝试处理服装中有上胸部(Upper Chest)骨骼而虚拟形象中没有的逻辑;这个情况通过使用多个合并骨架(Merge Armature)组件处理。
合并骨架(Merge Armature)组件会尝试避免创建重复的骨骼;它会将服装的骨骼合并到虚拟形象中可能的位置。其中,包含组件(变换(Transform)之外)的骨骼将不会被合并,并且会被移动到虚拟形象素体中相应的骨骼下。
创建网格设置组件
适配服装(Setup Outfit)流程还会创建一个网格设置(Mesh Settings)组件。该组件会为服装中的所有网格(Mesh)配置默认光照探针锚点(Light Probe Anchor),使锚点与虚拟形象素体的网格一致,并添加合理的边界盒(Bounding Box)。
前后差异
以下是服装合并前后的例子:
如您所见,大部分服装的骨骼都被合并了,但是有一部分骨骼因为动骨(PhysBone)配置被保留了。其他虚拟形象素体中没有的骨骼也被保留。保留的骨骼后的附加文本多个服装添加后的命名冲突。
动画修正
合并骨架(Merge Armature)组件会对虚拟形象中的动画做出一定调整。其中包括:
- 调整移动过的骨骼的动画路径
- 在服装经过处理散步到虚拟形象的各个层级后,将原本开关整一个服装的动画改为开关服装的每一个对象。
这意味着用户可以使用他们想要的动画安装工具来开关服装根对象,而动画修正后能自动开关的不仅有网格,还有动骨(PhysBone)组件。
与骨骼代理的区别
如果您比较熟悉骨骼代理(Bone Proxy),您可能比较好奇合并骨架(Merge Armature)有何不同。骨骼代理(Bone Proxy)有以下不同之处:
- 骨骼代理(Bone Proxy)用于将单个对象移动到虚拟形象中另一个独享中。并不会合并骨骼。
- 如果您以一个人型骨骼作为骨骼代理(Bone Proxy)的目标对象,他会以不依赖骨骼名称的形式执行。这能让您创建可以用在任一虚拟形象上的通用小组件(Gimmick)。
- 骨骼代理(Bone Proxy)可以选择对象的位置(Position)和旋转(Rotation)的处理方式;比如说,不论手在哪里,您都可以使一个物体固定到手上。
- 骨骼代理(Bone Proxy)不会和合并骨架(Merge Armature)一样调整开关动画;尽管它会修正动画路径,但是开关骨骼代理所在对象的父对象的动画不会影响骨骼代理所在对象和其子对象。
骨骼代理(Bone Proxy)在您创建一个指向单独一个骨骼的附件时很有用。比如,发夹可以使用骨骼代理使自身锁定在头骨上。在不同虚拟形象的使用上比那些单独适配一个虚拟形象的东西更简单。
可以做的事情
适配服装(Setup Outfit)和合并骨架(Merge Armature)支持一些可能会让人拍案叫绝的功能。以下是几个例子。
前缀和后缀
就如之前提到的,您可以在骨骼名称的前后添加前缀或者后缀。只要您在每一个需要合并的骨骼上都添加完全一样的前缀和后缀就没有问题。任何没有包含该前缀或者后缀的骨骼都不会被合并到虚拟形象的骨骼中。注意,该功能对大小写敏感。
不同的骨骼坐标系
不同的 3D 建模软件使用不同的坐标系;有些时候 X 轴会支出肩膀,有些时候也可能是 Y 轴或者 Z 轴。合并骨架(Merge Armature)可以自动处理这种情况;只要位置(Position)匹配,就没有必要与虚拟形象的旋转(Rotation)一致。
骨架对象命名
适配服装(Setup Outfit)流程并不关系 Armature(骨架)
对象(髋部(Hips)骨骼对象的父对象)的名称。他只会去找服装的髋部(Hips)骨骼。
A-pose 和 T-pose 的转换
服装的手臂姿态与虚拟形象不同是没关系的。如果您要转换,有一些重点需要注意:
- A-pose 和 T-pose 的转换只会在您的手臂长度与虚拟形象素体完全一致时有效。如果长度有一点点区别,该转换都会被跳过。
- 适配服装(Setup Outfit)流程通过骨骼位置(Position)决定旋转角度。因此,如果您的骨骼位置稍有不对,旋转的结果都可能会不尽人意。
应避免的事情
人型骨骼上的动骨
有些服装会在人型骨骼上使用 VRC 动骨(VRC PhysBone)组件,例如说在髋部(Hips)或者胸部(Chest)上。这是不推荐的;虽然某系情况下能够工作正常,但是有些服装会不小心使用从虚拟形象上复制的动骨(PhysBone),而 MA 会试图删除这些动骨组件。这可能会导致不可预料的行为。
这里建议确保所有的动骨(PhysBone)组件都既不在虚拟形象本身存在的对象上,也不在合并骨架(Merge Armature)组件所在对象上。这能保证结果一致。
与虚拟形象的命名完全一致
如果您的所有骨骼,包括骨架(Armature)对象的名称与虚拟形象素体完全一致,可能会触发一些让人头大的 Unity bug。适配服装(Setup Outfit)会在骨架(Armature)对象的名称上添加一个 .1
来防止这些 bug。
但是,最好从最开始就避免命名一致;将髋部(Hips)对象或者骨架(Armature)对象重命名即可避免。
Modular Avatar 预设
我们已经谈论了 MA 支持的最小要求,接下来聊一聊 MA 预设是怎么回事。一般而言,MA 预设的意思是您的预制件已经执行过了适配服装(Setup Outfit)操作。您的顾客现在可以简单地将预制件添加到他们的虚拟形象上,并且不需要进一步配置服装。如果他们重新执行适配服装(Setup Outfit)也没事;适配服装(Setup Outfit)流程会得知所有配置已经完成,并跳过。
使用这种方式配置的服装符合使用 MA logo 来进行宣传的条件。查看 Logo 使用准则 了解详细要求。
您可以更进一步,进行附加配置,更加方便您的顾客。 以下是一些例子。
形态键同步
有些虚拟形象包含一些用于更改不同身体部位尺寸的形态键。您可以使用形态键同步(Blendshape Sync)组件,自动调整服装的形态键,使其与虚拟形象中相应形态键保持一致。对于某些形态键比较有用,比如说胸部大小形态键。
收缩/隐藏形态键
很多虚拟形象包含一些用于防止与服装穿模的,能够收缩并隐藏身体部位的网格的形态键。Modular Avatar 有一个自动执行该操作的功能。通过配置 变形器(Shape Changer) 组件,Modular Avatar 将自动在相应对象启用时收缩或隐藏形态键。该组件对开关服装部件的动画也有反应,甚至可以在确定该组件会一直开启后直接删除形态键影响部位的网格。
物体开关
很多服装包含能够开关的不同部件。您可以通过配置对象开关(Object Toggle)提前为用户设置菜单。查看 对象开关教程 获取配置细节。
您可以将这些开关组合放入单独的一个子菜单中;将这些开关的父对象配置到如下图所示即可:
No Comments