虚拟形象
文档翻译未完成
当前文档仍在校对除错阶段,部分内容可能存在谬误。
VRChat 允许您创建和上传自定义虚拟形象!
创建虚拟形象
VRChat Avatar 3.0 SDK(以下简称 Avatar SDK)是 VRChat 为您提供的虚拟形象制作工具。要开始制作虚拟形象,请参阅: 制作您的第一个虚拟形象。
技术上来说,VRChat虚拟形象本质上是一个游戏人物 3D 模型。在左侧的文档目录的“虚拟形象”类别中,您可以找到所有与此有关的知识。对于将模型转化为虚拟形象,我们提供以下重要内容供您参考:
- 角色绑定:将模型导入项目之后,为其指定身体骨骼和运动关节。
- 性能评级:不同的模型可能存在不同的性能评级,例如“Excellent”或“VeryPoor”,在这里您可以了解到哪些因素会导致较差的性能评级。
- 模型优化:这里将会指导您如何改善和优化人物模型的性能表现。
- 继续阅读本页,以进一步了解 Avatar SDK 的特性。
什么是 Avatar 3.0?
Avatar 3.0 是我们为 "VRChat虚拟形象" 推出的一系列全新特性的命名。相比于已经淘汰的 Avatar 2.0,它可以为人物模型嵌入更加丰富的自定义特性,并带来更好的性能表现。
另外,Avatar 3.0 带来了全新功能:模型功能菜单! 强烈建议您先在游戏中试用这个功能,体验其所提供的前所未有的个性化体验!
准备工作
基础概念
为了更好地理解和利用 Avatar SDK 所提供的功能,您需要首先掌握一些基础概念。这些信息将有助于您理解一个 VRChat 虚拟形象 的基本构造、运作方式,以便更好地结合 Avatar SDK 所提供的功能,实现最佳效果。
一、Unity 系统
编写本文档时,我们假定您对 Unity 动画系统 稍有了解。特别是,您应确保自己已了解以下方面的基本概念:
- 动画器和动画
- 动画层、层权重、混合方式
- 动画状态和过渡
- 动画参数
- 状态行为
- Avatar 遮罩
进阶内容:
- 状态退出时间
- 动画的循环时间
- 动画层间的时间同步
- 混合树(BlendTree)
二、SDK基础设置
通过一些简单的设置,您可以快速地将一个人物模型转化并上传为 VRChat 虚拟形象。
- 导入您的人物模型,设置为人形。添加材质等。
- 添加
Avatar Descriptor
组件 - 如果想要模拟眼球运动效果,请定义眼球骨骼。
- 如果需要模拟说话嘴型,请定义嘴型效果类型。在
Rigging 配置界面
中指定下颏骨骨骼,或嘴型形态键。 - 设置视角球位置。
- 点击
Build & Publish For Windows
按钮以上传模型!
如果您导入的是一个非人形的模型,请参阅本文文末的:通用虚拟形象 。
很好! 此时您已为这个模型赋予了作为虚拟形象的基本功能,并已经可以在游戏里使用它。它具备最基本的模型手势,可以在您说话的时候模拟出对应的嘴型,并且自带眼部动画效果。这可以让您的虚拟形象在他人眼中具有表现力。
三、本地调试功能
Avatar SDK 提供了本地调试功能,您无需将其上传至 VRChat 服务器,即可在游戏中对其进行测试。
在 SDK 控制面板的 Builder
选项卡中,找到 Local Test
部分的 Build and Test
选项。点击后,您的人物模型将被打包并保存在一个游戏可以直接读取的文件目录中。
此时启动 VRChat ,您应当可以在 虚拟形象
菜单的 其他模型
界面中看到它!由于本地测试模型文件和您的 Unity 工程是分离的,因此您可以随时修改和更新它,只需再次点击 Build and Test
即可。然后回到游戏中,再次选择它,并点击 更换模型
,即可替换上新的本地测试模型。
在这个过程中,其他人无法看到您的本地测试模型替换过程,会始终维持为您使用的最后一个已上传到服务器的虚拟形象。这个功能旨在加速您的测试迭代过程,希望您喜欢!
若要删除已创建的本地测试模型,请进入 VRChat SDK 控制面板的 Content Manager
选项卡。您将在底部的 Test Avatars
部分看到它们。此时点击 Delete
,并再次进入游戏,您就会发现这些本地测试模型已被移除。
四、模拟眼球运动
模拟眼动是指您的虚拟形象具备眼动效果,会观察周围的事物,并注视其他玩家的功能。请注意它并不是"眼动追踪"——仅仅是内置动画所实现的行为。但这是让您在虚拟世界中的人物看起来更加"生动"的好办法。
您可以在编辑器中预览这些设置,并调整虚拟形象的眼睛在各种状态下的表现,这些状态用于决定您的眼骨是如何设置的。
眨眼效果可以借助人物模型自带的形态键或骨骼实现,形态键是较为常见的实现方法。我们也加入了对骨骼的支持,以改善对某些人物模型的兼容性。
眨眼效果的状态由以下三个参数控制:
Blink
- 控制眼睑闭合程度。LookUp
- 当双眼朝上看时使用的参数——用它来联动调整眼睛/虹膜/眼睑/眉毛的位置。LookDown
- 朝下看时使用的参数,使用方法与LookUp
类似。
如果不想使用后两个额外的参数,可以将 LookUp
和 LookDown
设置为 none
。
此外,您还会注意到在 Eye movements 之下,有两个滑块调整选项————它们两端分别是“Calm”和“Excited”、“Shy”和“Confidence”,代表了“冷静”和“兴奋”、“害羞”和“自信”。 冷静/兴奋选项会影响眨眼动画的频率。害羞/自信选项则会影响模拟眼动注视其他玩家的频率,以及视线在其他玩家脸上停留的时间。
当然,您也可以在动画层中设置一些条件,以便在一些条件下临时禁用眨眼效果。这样一来,您就不必担心模型切换至一些需要闭上双眼的表情动画(例如微笑)的时候,眨眼效果会依然作用于眼部,导致面部表情呈现出错误的效果。
五、基于形态键/骨骼的嘴型动画
VRChat 具备语音识别技术,可辨认您的发音,并将其转化为模型的嘴型动画。在大多数时候,您只需要在 VRC Avatar Descriptor 中指定形态键或下颏骨骨骼,即可为其添加嘴型功能。此外,您还可以指定颚瓣骨骨骼,以实现更加细腻的嘴型效果!
当然,您还可以将其他模型自带的动画与嘴型动画联动,只要利用我们所提供的参数 Viseme
即可!在游戏中,这个参数会始终与嘴型动画的状态相匹配,并始终保持网络同步。
六、Avatar SDK 自带动画
您可能会注意到,SDK 中包含了大量名为 proxy_【动画名称】.anim
的动画文件。这些动画是各种默认 VRChat 动画的 "占位符"。如果您在动画器中创建了以 proxy_
名词为开头的动画,VRChat 会尝试用对应的内置动画替换它。这可以在动画器的任何可播放层中自动进行。
如果名词前缀为 proxy_
的动画的后半部分与我们的内置动画的名称不匹配,SDK 将不会执行替换。但保险起见,最好避免给任何动画起名前缀是 proxy_
的名字。
七、运动系统(Locomotion Animation)
VRChat 自带了一套运动系统,可模拟各种运动状态下的人物模型的姿态表现。
这个功能是 Avatar Descriptor 中的两个可选项,您可以通过它们决定在哪些情境下启用这些动画效果。
- Use Auto-Footsteps For 3 and 4 points tracking
此选项用于开启或关闭下半身的运动逻辑动画 ,若您的双腿部位未配备追踪器,它能为人物模型带来更加自然的步态效果。
若此选项已开启,则您可以通过在动画层中加入 VRC Animator Tracking Control
脚本,以实现在游戏中对运动逻辑动画的控制。关闭此选项不会影响移动时的下半身行走动画。
- Force Locomotion animations for 6 points tracking
此选项用于开启或关闭全身追踪状态下的运动逻辑动画 。开启此选项后,若您的腰部、腿部已配备了追踪器,且在游戏里启用了 全身追踪时启用运动动画
(FBT Locomotion Animation),游戏将在您推动摇杆移动的时候使人物模型播放运动动画。
若游戏中的 全身追踪时启用运动动画
选项为关闭,游戏将不会在您佩戴全身追踪器时为您播放运动动画,您的虚拟形象将始终跟随您的真实身体姿态。因此,如果您希望游戏在您使用全身追踪时依然会“模拟”您的行走动作,这个功能将非常有用。
当然,若您不打算使用这些功能,您需要避免将 Avatar Descriptor/Playable Layer中的Base Layer 和 Additive Layer 设为 Default 状态.
八、写回默认状态(Write Defaults,简称 WD)
写回默认状态 (以下简称:WD)是 Unity 动画器中的一个选项,您可以在点击了动画层中的动画状态(State)、子状态机(State Machine)之后,在检查器显示的选项中见到它。
若 WD 设为开启,Unity 将会在动画退出后,或两个动画前后过渡时,重置与之对应的游戏对象的状态。反之,若 WD 设为关闭,则 Unity 将保持游戏对象的状态,并允许另外一个动画对其叠加效果。
通常情况下,若您与其他开发者在同一个 Unity 工程上进行合作,或您的工程包含了来自其他作者的 Unity 包,为了降低项目整体的复杂性,您应当与他们商定一个标准,在动画器中统一开启/关闭 WD;或遵从您所导入的动画器已有设置,以减少出现问题的可能性。
作为示例参考,Avatar SDK 自带的动画器 WD 属性全部为关闭,这意味着这些动画退出之后不会重置游戏对象的状态。值得注意的是,大部分模型商品的 FX 动画器通常都为开启,这可以改善对某些地图玩法的兼容性 —— 例如 MMD 舞蹈动画。
VRChat 建议将 WD 设置为关闭,并在动画器中指定会受其影响的所有游戏对象的状态信息。相应的,若您希望游戏对象在动画退出后立即恢复原状,这将需要额外录制一个重置动画。
在动画层中创建新的动画状态(State)时,WD 的默认状态是开启,这是 Unity 系统自带的默认值。若您对于动画效果有较高的规划需求,这个选项是您应当重点关注的地方。
九、通用虚拟形象
Avatar SDK 也支持您创建非人类形态的虚拟形象。如果您想为其实现与人物模型类似的功能,需遵循以下三条准则:
- 导入 FBX 文件之后,将其 Rig 类型指定为
泛型
(Generic); - 确保 FBX 文件的
Avatar 遮罩
已被添加至 FX 动画器的相关动画层;(注:此段表述可能有误) - 若模型的游戏对象的父级存在
动画器 (Animator)
组件,您需要将该组件的控制器(Animator)
选项设置设为“None”。没有动画控制器的组件会在游戏中被自动忽略,因此不会影响游戏中的实际表现。
您可以使用 Avatar Descriptor
组件中 Playable Layers
所提供的 Base
、Action
和 FX
动画器,但是无法使用 Additive
和 Gesture
动画器。因为这两个动画器是人形虚拟形象所特有的特性。
如果不遵循这些步骤,您的通用虚拟形象将无法使用许多 Avatars 3.0 所提供的功能,例如自定义的模型功能菜单、手势表情动画等。如果您不介意,可以直接为父级添加一个 动画器 (Animator)
组件。但要注意的是,没有被添加到 Playable Layers
中的动画器将无法与 VRChat 的 参数表 (Expression Parameters)
同步。如果您只是想要在 Unity 中构建一个简单的游戏对象,那么这种方法可能会很有用。
若需了解更多有关动画器和参数表的信息,可参阅: