虚拟形象
涵盖从基础到高级的关于虚拟形象上传和创建的文章。
基础上传指南
以下是使用 Pumkin’s Avatar Tools[github.com] 的一份(稍显过时)的替代指南。
- 将 VRCSDK 和 Pumkin’s Avatar Tools 导入到你的 Unity 项目中,只需将它们从 Windows 资源管理器拖拽至 Unity 底部的“项目”窗口。Unity 界面的顶部将新增选项:VRCSDK > Show Control panel & Tools > Pumkin’s Avatar Tools。
- 导入你的模型 FBX 文件及其所有纹理。
- 在项目窗口中右键点击,选择“创建 > 材质”。在检查器窗口中,将着色器更改为 VRChat>Mobile>Toon Lit 或 VRChat>Mobile>Standard Lite. 根据纹理数量,复制(Ctrl+D)这个材质,直到每个纹理都有可对应的材质。
- 点击一个空白材质,将纹理拖拽至检查器窗口中的相应位置。对所有纹理重复此操作。
- 点击项目窗口中的 FBX 文件,在检查器中点击“Rig”,在下拉菜单中选择“Humanoid”(如果头像是人形),然后点击“应用”。
- 在FBX文件的“材质”标签下,将材质拖拽至相应的材质槽,然后点击“应用”。
- 将FBX拖拽至“场景”窗口,点击齿轮图标并选择“重置变换”,这将使模型居中并设置其缩放比例为1。
- 在顶部工具栏中,选择 Pumkin>Tools>Avatar Tools. 点击 “Select from Scene”,然后点击 “Quick Setup Avatar”. 同时记得把 “Fill Visiemes” 和 “Fill Eye Bones”点上。
- 在顶部工具栏中,打开 VRCSDK>Show Control Panel. 登录后,进入构建器标签页,自动修复所有红色错误,然后点击“Build and Publish for Windows”。
- 稍等片刻,填写必要的信息,完成上传。
(如果右侧头像不正确,你可以去场景窗口,拖动 VRCCam 并返回游戏窗口).
你可以通过 Pumkin's tools 调整头像的尺寸/缩放。
如果您不使用工具,而直接缩放,请记得重新定位视点。
设置纯色背景非常简单!在相机组件下,将清除标志更改为“纯色”,并点击颜色框选择自定义颜色。
你也可以通过 Pumkin’s Avatar Tools 来更轻松的制作自定义的模型头像!
通过导入图片,并将检查器中的纹理类型从“默认”更改为“精灵”,相机从“透视”更改为“正交”,将这张图片作为模型的头像上传。
(对于初学者来说,上传为虚拟形象可能会有些复杂。我计划在收集反馈后制作一个简洁的视频教程,解释用户可能遇到的错误以及如何克服它们。该视频将主要针对完全初学者,教授如何在Unity中上传预制模型,以及如何在 Blender 中进行修改。遵循最佳实践,最终你的头像应获得优秀的性能评级[浅绿星, Good 评级])
( VRChat 官方文档中也有一份针对上传第一个头像的初学者指南[docs.vrchat.com],但我认为它不够充分,并且部分内容已经过时,因为它涉及已经被取代的Avatars 2.0。)
故障排除
如果你的头像出现未着色的紫红色区域:
- 找到有问题的材质(文件图标是球形的)。
- 更换其他着色器(靠近检查器顶部的下拉菜单),如 Poiyomi、VRChat > Mobile > Standard Lite 或 VRChat > Mobile > Toon Lit。
这种情况通常是因为 Unity 在寻找一个不存在的自定义着色器。你可以更改为另一个存在的自定义着色器或 Unity 的标准着色器,但建议首先使用 VRChat 的着色器,因为它们简单且优化良好,并且即使在玩家的安全设置中屏蔽了着色器时,看起来也完全相同。
之后,你可以根据需要决定是否使用更高级的着色器 (Silent’s, Xiexie’s or Poiyomi) 当然,这些着色器更复杂,需要学习和熟悉它们的功能以发挥最大潜力。
另外, Silent’s Cel Shader 是 Cubed’s Cel Shader 的重写后版本(后者现已弃用)。
你可能还需要在模型的骨架中取消映射下巴。点击 FBX 文件,转到 rig 标签,选择 Head,找到分配给 jaw 的骨骼并删除,然后应用更改。
确保你的模型 ARMATURE(而不是模型本身)的 XYZ 缩放比例设置为1,1,1。
转换与上传至 Quest
你可以通过 VRChat 官方的方式[docs.vrchat.com]进行转换和上传,这需要维护两个独立的项目;或者,你可以使用我提供的单项目方法。
- 复制你的模型。
- 按F2并在层级结构中的名称后添加"Quest"。
- 导入 EasyQuestSwitch [github.com]。
- 设置所有材质,使它们在 Quest 上切换到 VRChat/Toonlit 着色器。
- 在 VRCSDK 窗口的上传标签下,选择 "Switch Build Target to Android" (会花一点时间)
- 使用 Pumkin's Avatar Tools 从模型中移除不兼容的组件,如 Dynamic Bones 和 constraints。
- 打开 VRCSDK 窗口,修复任何其他错误并上传。
- 完成后,在 VRCSDK 窗口中切换回 Windows 构建
以下是如何制作一个为 Quest 端优化的虚拟形象的视频教程:
或者,你也可以使用 Blender CATS 插件中的"Bake"设置来快速生成一个可能略逊一筹的 Quest 端优化虚拟形象。Quest 端优化的虚拟形象可以用作非 Quest 兼容形象的后备选项。
自定义虚拟形象工作流
VRoid
对于那些不愿意深入处理 MMD 组件及随后创作虚拟形象过程中的繁琐细节,而是希望以一种更统一、更传统的艺术手法来创作 3D 虚拟形象的用户,VRoid 提供了一个绝佳的选择。
您所需做的就是通过 VRoid Studio[vroid.com] 创建一个模型,然后使用 Unity工具, VRM Converter for VRChat[booth.pm]将其上传。
(如果对此部分有更多需求,我可能会进一步扩展它的内容。由于我不太喜欢VRoid的风格,所以我并没有太多使用它的经历。)
拼接一个模型
将不同的组件,如基础躯体、面部、发型、服装等,组合成一个具有统一骨架的单一模型。这些组件通常来源于MMD模型。
以下内容由 Tupper 发布:
MMD 模型是什么,我该如何获取它们?
“MMD”是什么?
MMD 是由 MikuMikuDance(MMD)程序使用的模型文件。该程序通常用于制作音乐视频、动画等。在YouTube上搜索"MMD舞蹈",你将找到许多使用这些模型的示例。它们是导入模型的理想选择,因为它们配备了完整的骨架、纹理和 UV 贴图。你所要做的只是将其设置为适用于 VRChat ,这正是我在指南中所涵盖的内容。
如果你不想成为一个二次元人物,那么很遗憾,MMD 模型通常是动漫风格的。你可能需要考虑导入 Source Filmmaker 或GMOD 模型,或者访问 Models Resource[www.models-resource.com],这是一个包含从游戏中提取的模型的大型资源库。
我该如何获取 MMD 模型?
许多人建议在 DeviantArt 上寻找模型,但大多数模型都是“缝合怪”——也就是说,有人将多个部件组合起来创造一个原创角色。这些模型可能看起来独特且有吸引力,但它们的多边形数往往非常高。这就是为什么我推荐以下两个网站来寻找 MMD 模型:Nicovideo[3d.nicovideo.jp] - 提供极高质量模型的绝佳资源,尤其是 Kancolle 系列。
Bowlroll[bowlroll.net] - 同样是一个优秀的资源站,但可能稍微难以查找资源。
这两个网站都是日语的,因此我建议使用 Google Chrome 的自动翻译功能来浏览页面。此外,这两个网站都需要注册账户——我只需用我的 Twitter 账号登录 Bowlroll,但为 Nicovideo 。我需要创建一个账户来登录。
非常重要 - 尊重协议
艺术家们投入了大量的努力来制作他们的模型,并且他们通常对模型的使用有特定的许可协议。请确保已阅读,并尽可能严格遵守这些许可协议。虽然使用不符合许可条款的模型并不会导致你被 VRChat 封禁,但艺术家可能会向 VRChat 发出 DMCA 下架请求,以移除该模型。在这种情况下,模型将从服务器中移除,而 VRChat 可能会通知你。
通常,如果你通过社交网络工具联系创作者,并解释你打算如何使用该模型,他们会同意的。你没有通过该模型获利,所以有时艺术家们会乐意让你“扮演”他们的角色。
例如,我在 VRChat 中使用的模型是 electrica2014 制作的东方角色 Cirno。我通过 Google 翻译在 Twitter 上联系了 electrica2014 ,并解释了我的用途。他很高兴让我使用该模型,因为我征得了他的同意。
就东方的许可而言,ZUN 对东方的许可非常开放——他允许使用(甚至销售)粉丝作品。VRChat 在许可方面最接近的概念是“cosplay”,所以如果许可中提到 cosplay 是允许的,那么你很可能是没问题的。
最后,违反 MMD 的许可规则还有一个副作用——如果这种情况变得普遍,MMD 艺术家将不太可能在未来公开发布他们的模型。显然,我们不希望看到这样的结果——所以,请征得同意再使用!
Tupper 的教程 - 从 MMD 创建自定义虚拟形象
VRChat 指南
作者: Tupper
本指南包含了我制作的一系列不断更新的视频,涉及从 MMD 源导入、优化和设置自定义虚拟形象。
(我直接复制粘贴了这部分内容,而没有提供链接,因为指南的其他部分已经过时)
免费模型指南[gitlab.com]
模型素体与配件选择[vrchat.fandom.com]
拼接模型的过程包括收集所有你想要的部件,通过 CATS 将它们导入到同一个.blend文件中(别忘了点击“Fix Model!”),将它们摆放到与基础模型重叠的位置,并通过 CATS 在 Custom Model Creation 标签下进行合并。
在多边形数量高的对象上应用简化修改器。在制作纹理图集之前,记得保存一个新文件(在Blender的“另存为”菜单中点击+号可以方便地另存为)。
在 Blender 中制作模型时,除非绝对必要,否则不要应用破坏性更改!
破坏性更改是指那些无法通过简单的 Ctrl+Z 撤销的操作,比如点击修改器上的“应用”,或者制作纹理图集。
在进行破坏性更改之前,请务必另存为新文件!
你可以在Blender的“另存为”菜单中通过点击+号轻松另保为新文件。
这种工作流程使得你的模型在导出到 Unity 时易于定制,同时也保持了优化。
此外,你还可以拥有多个存档点,以便在制作过程中发生意外时可以及时撤回,而不用从头开始。
如果出现问题,Blender还会自动保存备份文件(通过“文件>恢复>自动保存...”访问)。
学习自定义虚拟形象创作
CATS 文档(在此处学习 CATS)[github.com]
Twist Bones(扭曲骨骼)
Lip sync(口型同步)
若要通过 CATS 自动生成口型同步,请访问“Visemes”下拉菜单。您至少需要3个基本口型键:AA、OH 和 CH。具备这些条件后,启动 CATS,打开“Visemes”菜单,选择相应的形状键,并点击“创建 Visemes”。[这将生成 VRChat 中进行唇形同步所需的15个 Visemes]
如果 3 个插槽未自动填充对应的口型键,请尝试通过“Model Options”下拉菜单对您的模型进行转换。如果您的模型中尚未包含形状键,则必须使用 Blender 创建它们。
在 Unity 中,可以通过 Pumkin's Tools 来填充 Visemes。
https://youtu.be/ZB2aXKkwXuA - (不常见,需要额外工作)
Eyetracking(眼部追踪)
允许模型的眼睛四处游移并聚焦在感兴趣的物体上。您可通过 CATS 配置这个功能。弹出的工具提示将为您提供指导。
在 CATS 中配置好后,首先通过使用 Pumpkin's tool 在 Unity 中启用这个功能,然后在 VRC Avatar Descriptor(虚拟形象描述符) 中设置 Eye Rotation(眼部旋转)。
删除外表不可见的多边形面
如果基础网格上有衣服,请删除下方应覆盖的多边形!这不仅能提高性能,还能防止穿模!
选择基本网格,进入线框模式并选择要删除的面。然后转到网格的数据属性选项卡(的绿色倒三角形选项上),创建一个新的顶点组,并只选中要删除的面,然后点击分配。完成后重命名该顶点组为您容易记住的名字,然后取消选择。
在删除这些面之前,请先保存一个新文件!
自定义手势/表情(Avatar 3.0)
在 Unity 的 SDK 中找到 Examples3 文件夹。点击 vrc_AvatarV3HandsLayer.controller 并复制它(Ctrl+D),然后重命名为您容易记住的文件名。在模型文件夹中新建一个用于放置动画的子文件夹,并将新控制器放在其中。
在 VRC Avatar Descriptor 中的 Playable Layers(可播放层)下单击 Customize(自定义),然后在 FX 栏右侧的 Default Non-Transform 按钮上单击,将控制器拖入该插槽。
在场景中复制你的模型。打开动画窗口(Ctrl+6)。创建一个新动画(如微笑)。点击录制。然后点击层次结构中的身体网格,在蒙皮网格渲染器中打开 Blendshapes 下拉栏(形态键)。拖动它们做出你想要的表情(在本例中,Blendshapes 包括眨眼快乐、微微一笑和微微扬起的眉毛。)
完成后,在动画制作器中点击第 0 帧顶部的菱形,按住 Ctrl+C,然后在第 1 帧按住 Ctrl+V。
在动画控制器窗口中,导航到手的动作(本例中为 "Open"),并在检查器窗口的 Motion 槽中拖入设置动画文件。
AV3 演练 - 第 3 部分 - 权重、混合和跟踪 - Avatar 3.0[ask.vrchat.com]。
装配
可以在 Blender 中使用 rigify 进行装配。
还可以通过网站 mixamo.com 快速、轻松地完成装配。
快速入门 - Mixamo 模型创建[vrchat.fandom.com]。
重量绘制
骨骼映射到网格的方式是通过权重。骨骼权重可以通过权重绘制绘制到网格上。
权重绘制很难。没有完美的权重绘制。在绘制权重时,你会吃很多苦头。
没关系,这是每个 3D 艺术家在正确装配角色时必须承受的痛苦。
编辑纹理
找到要编辑的图像纹理(如头发纹理),并将其带入图像编辑器(如 GIMP 或 Photoshop)。如果要编辑颜色,请选择要编辑的内容,然后在颜色设置上做文章。如果完全想改变颜色,先将其设置为灰度,然后再改变色调。
服装
服装模特可在 DeviantArt 上搜索,搜索 "MMD(服装名称)"。
然后,您就可以使用 CATS 对服装进行母版化。
别忘了尊重规则,很多规则都明确规定不得在 VRChat 中使用。
在 Blender 中创建自定义服装最简单快捷的方法是:选中模型上所有希望有服装的面孔,标记接缝、UV 展开、添加纹理并添加固化修改器,使服装看起来有深度,而不是收缩包裹在模型上。
此外,您还可以根据自己的喜好雕刻服装网格。对于简单的编辑,您只需使用抓取笔刷(键盘上的 G)即可。
您也可以使用 Blender 基于物理原理的布料笔刷进行雕刻,并将额外的细节烘焙到法线贴图中。
在 Blender 中,通过 "拼接 "应用了布料物理特性的 2D 平面,可以更真实地创建服装。 [https://youtu.be/HPz5gk\_AT6w](https://youtu.be/HPz5gk_AT6w) [https://youtu.be/7ULae\_1GVpc](https://youtu.be/7ULae_1GVpc) 我不推荐这种方法,因为它很繁琐。
如果你对制作 3D 服装特别感兴趣,你可以购买 bartoszstyperek 提供的 Blender 服装工具,或者定制你的服装模型。为特定模型定制服装模型通常会让装配变得更简单、更精确,而且通常会减少多边形数量。遗憾的是,Marvelous Designer 不再出售永久许可证,所以即使是真正想设计 3D 衣服的人,我也不推荐使用它。
头发
对于动漫风格的 3D 角色,您需要基于几何图形的头发(而不是基于粒子的头发)。根据您想要的最终效果,有不同的头发建模方法。
纹理绘画
在模型上绘制纹理的过程。对于非 PBR 纹理绘制(只是漫反射纹理),Blender 可以很好地完成。可以通过 GIMP 或 Photoshop 编辑预制的图像纹理(如 MMD 面等)。
迄今为止,Substance Painter 是最强大的 PBR 纹理绘制应用程序,但也是最昂贵的。替代软件包括 ArmorPaint(预编译版本 16 欧元)和免费的 Quixel Mixer。
同样,如果您只是绘制漫反射纹理,只需使用 Blender 即可。
Avatar 3.0
AV3 攻略索引 - Avatars 3.0[ask.vrchat.com]。
全身跟踪
VRChat 建议不要使用钻机黑客,因为它们可能会在未来的更新中被破解。
完成模型创建(初学者勿用!!!)
你是否有足够的受虐倾向,想要自己制作模型的每一个部分?
Rainhet 的模型课程似乎是在 Blender 中从头开始制作模型的最精简、最简单的课程。
(DATED, Avatars 2.0) 自定义动画
Avatars 2.0 现已废弃。请勿将其用于新项目。
要添加这些动画,请在 VRCSDK 中找到 CutsomOverrideEmpty 文件。复制该文件(ctrl+D)并重命名(类似 CustomOverride)(按 F2)。
单击该文件后,动画槽将出现在检查器窗口中,但其中没有任何内容。 空。如果是空的,动画将是 VRChat 的默认动画;如果填充的是 .anim 文件,它将被覆盖并使用该动画。
要将动画应用到模型上,请单击模型并将自定义覆盖拖到检查器窗口中模型动画组件的自定义站立动画和自定义坐姿动画插槽上。
有关模型优化的注意事项
模型制作之”切勿“事项
切勿在模型上设置自动播放的音频(如加载时播放的音乐)。这种音频会在玩家重载模型时再次重放,比如每次更改安全设置时。这是您可以在模型上安装的最令人讨厌的组件之一,因为世界上的每个人都能以相同的,非空间化的音量听到它,所以请避免使用它。
切勿在模型中添加实时灯光。
切勿使用粒子特效;这些没有必要的特效会降低帧率,而且易使玩家恶心、癫痫和焦虑。
切勿在模型上使用屏幕扭曲效果。这是模型上最糟糕的组件,因为它同样易使玩家恶心、癫痫和焦虑。
模型优化技巧
请首先了解模型性能限制
并阅读 VRChat 官方模型优化技巧文档
尽量使用 Blender CATS 插件!
以及 Pumkin’s Avatar Tools ,它可以让您非常轻松地删除模型中不必要的内容!
模型下载大小
- 在每个纹理文件(图像,通常为 .jpg 或 .png)的对应检查器窗口上,
在压缩选项中,选择中等质量或 Normal - 开启 crunch compression
- 点击应用
(您可以在多选纹理的情况下进行此操作,以提高效率)
多边形数量
您可通过网格简化来降低模型面数。您可以直接使用 CATS 对模型进行快速减面,或者使用 CATS 将模型分为数个独立网格(如按松散部件),然后对这些网格单独应用精简修改器,以获得更好的效果。
材质数量
您可打开 CATS 侧边栏,在其中的 Optimization 下拉菜单中, 在“材质"选项卡中,一键合并相同的材质。
合并不同的材质,同时把多个纹理合并为一个图集,这样可以减少绘制调用并提高性能。
骨骼数量
越少越好。您可以通过将骨骼的权重并入父骨骼来减少骨骼的数量。许多 MMD 模型的衣服等部位的骨骼数量远远超过 VRChat 的最佳值。CATS 有一个骨骼合并部分。
Dynamic Bones
Dynamic Bone 来自一个付费的 Unity 插件,它允许骨骼利用物理原理延迟回到默认静止位置,并主要用于头发或动物耳朵。它们通常是模型上最耗费性能的组件,因此如果您想使用它们,请首先适当合并您的骨骼链,并尽可能将 Dynamic Bones 的使用量保持在较低的水平。
请注意,Oculus Quest 不支持 Dynamic Bone。
Dynamic Bone 组件
您应当将该组件,放在需被动态化的骨骼的父级骨骼上,组件数量越少越好。例如,如果你想在头发上设置 Dynamic Bone,可以在头部骨骼上设置一个 Dynamic Bone 组件(并排除所有非头发骨骼),而不是在每一串头发骨骼上设置一个单独的 Dynamic Bone 组件。
Dynamic Bone collider 组件
可使模型上的 Dynamic Bone 与该组件发生碰撞。一般情况下效果不佳,且对性能影响很大,最好不要使用,如果您确实需要使用它,推荐最多使用 2 个,每只手一个。
请注意,该组件的碰撞形状是一个胶囊,而不是一个球体。
您可通过 Pumkin’s Avatar Tools. 可以轻松移除碰撞器。
在 "安全设置 "的 "性能选项 "中有一项名为 "限制动态骨骼使用 "的功能,该功能默认已启用,可将 Dynamic Bone 骨骼数量的最大数量限制为 32 个,Dynamic Bone 组件的最大数量限制为 8 个。您可通过合并骨骼权重和使用较少的 Dynamic Bone 组件,并在这些组件上设置排除项(例如,在头部骨骼上设置一个用于头发的排除项,但排除所有非头发组件),尽量将骨骼与组件数量量控制在限制内。
针对 Quest 端的模型优化
请首先在这里,查看所有 Quest 端的模型限制。
并阅读针对 Quest 端的 VRChat 官方优化技巧文档
总结:渣优化模型之九宗罪
-
过于离谱的材质数量 (在 CAT 中合并相同的材质,并使用 CATS 推荐的 Matcombiner 合并不同的材质)
-
未指定的 dynamic bone 碰撞检查
-
过于离谱的 dynamic bone collider 数量与碰撞检查数量
-
过于离谱的 dynamic bone 组件数量
-
过于离谱的 dynamic bone 骨骼变换数量 (请事先用 CATS 适当合并骨骼链!!!)
-
容易让人发生眩晕与不舒服的特效
-
过于离谱的多边形数量
-
过于离谱的粒子数量
-
实时灯光
模型材质与着色器
标准着色器不适合用于硬表面,也不适合用于许多角色模型上的一些特征,如皮肤、头发、眼睛或布料。如果您要追求逼真的风格,最好寻找更专业的 PBR 着色器来满足您的需求。
通常您应避免在模型上使用高度贴图。(高度贴图在观察角度较大时会出现破损,而且对性能要求较高。它们更适用于世界中的某些环境模型,而不应当用在玩家模型上)。有关高度贴图的更多信息,请查看 "世界材质 "页面。
Quest 模型需要使用 VRChat 的着色器,主要是 Standard Lite 和 Toon lit。如果您不打算制作 Quest 模型,则一般应避免使用这些着色器。
用于模型的两种最流行、最通用的卡通着色器是 Poiyomi's 和 Silent's 。
Poiyomi 有很多功能,并有丰富的 视频文档。
Silent 的着色器也有很多功能和书面文档。
您可以亲自试用这两种着色器,看看自己更喜欢哪一种。
Thickness map(厚度贴图)
用于次表面散射(SSS),模拟光线穿过材质的情况。例如皮肤、树叶或布料。
您可以在 Blender 中通过反转法线并烘焙环境光遮蔽来生成此贴图。
您需要一个自定义着色器来应用它,比如 Poiyomi,或者 Silent 的 photorealistic SSS 和 toon 着色器。