Axi's Blog
VRChat 上手纪实

前言#

由于过了新年,所以说购买了一些新的设备,因为生产力的需求,需要大量的屏幕。本来其实想要使用 Vision Pro 的,但是因为价格太贵了,所以说就暂时放弃了这个选择,而是选择购买 Quest 3,尽管画质低了一些,但是胜在便宜,可以作为一个初体验。(当然事实上现在笔者已经购入了 QLED 大屏幕,使用 VR 进行办公不再是一个存在的需求)

尽管说本来只是一个生产力需求,但是在寻找了相关的一些信息之后,发现 Quest 3 更多的功能可能是作为 VRChat 的常见设备,而 VRChat 我其实一直都很感兴趣,但是一直都没机会去接触,所以这次就打算去尝试一下。

本篇内容会逐渐更新,直到我完全适应 VRChat 的游玩为止。会包括体验经历以及各种教程,当然,主要以如何上手使用 VR 设备以及如何进行 VRC 改模为主。

设备需求#

VRChat 还是需要比较多的设备的,本身这个软件是可以使用 PC 直接进行游玩的,但是依然存在若干的问题。

首先,VR 设备本身存在两种不同的分类,一种是纯粹的头显,本质上就是一个附带若干传感器的头戴显示器;另一种则是一体机,也就是可以作为计算平台使用。不过尽管 Quest 3 是作为一体机使用的,但是由于 VRChat 需要的性能开销,大概率还是要通过 PC 串流进行游玩。

同时,VRChat 可以让你不能动也能游玩,或者只有局部是可以活动的。比如说你只有头显以及手柄,那么你只能进行上半身的动作,而假如说使用 PC,则会出现被戏称为「人棍」的尴尬情况。

一般来说愉快地游玩 VRC 需要你的 VR 设备具有一定的自由度,这样才可以更加灵活地动作,而同时包括跳舞在内的玩法也自然是需要类似的全身动作捕捉。

从而也就不难列出清单了:

设备品牌数量价格
Quest 3Meta14088
面罩+头戴+指虎AMVR1328
Valve Index 指虎手柄Valve22388
面部捕捉模块Cat Pie1300
HTC Vive 追踪器3.0×\times3 + 基站1.0×\times2 套装HTC14199
PC-1-
总计11303

目前我已经买了 Quest 3,但是过一段时间就要开学了,自然不会买动捕相关的内容,这些等到更加熟悉相关设备之后再说。

VR 头显配置#

设备到货之后需要进行一套初步的配置。先总结一下我的需求,然后再来看应该如何操作。我使用 Quest3 说白了只有一个需求,就是串流的需求,我并不是很喜欢大多数的 VR 游戏,所以 Quest3 一体机的效果我并不会很充分的使用,无论是办公还是游玩 VRChat,使用电脑进行串流都可以获得最优的体验。

我的需求大概如下:

  • Quest3 安装最新的版本。
  • 使用 Virtual Desktop 进行串流。
  • 支持安装自己的 apk 文件,来解决网络问题。
  • 除此之外,Steam 可以使用 Steam link 串流,直接在 Steam 以及 Meta 的应用商店安装软件就可以使用,不需要过多配置。

在这里推荐 B 站 UP 主南七月的教程,此处给出其文档链接。以下是我个人按照南七月教程的一些实践。

验机#

首先到货之后肯定是要先验机,也就是看是不是有什么损坏之类的,Quest3 的左下角有一个电源键,长按可以关机,关机之后充电,就可以获得一个发光的纯黑背景,可以看是否有坏点,一般来说都没有,我这边也没有出现问题。

初始化与更新#

首先先进行基础的配置,选择了语言之类的选项,然后开始连接 WiFi。

Quest3 不同于其他设备,因为是 Meta 的设备,所以说在国内需要使用加速器等才可以登入。在一开始没有必要做其他事情,选完语言之后就直接,此处使用 UU 加速器直接代理了路由器。缺点是需要花钱,但是也不贵,而且很方便。不过多介绍。

然后该怎么选怎么选,Quest3 会开始更新最新版本,因为我的网络不太好,这个过程持续了一个多小时。

Virtual Desktop 配置#

另外需要安装的软件就是 Virtual Desktop 的软件,这个软件是用来进行串流的,具体来说就是将你的电脑的画面投射到 Quest3 上。这一部分直接在应用商店里面安装就好。Virtual Desptop 也需要一些配置,主要就是电脑相关的部分。

在电脑上打开 Virtual Desktop 官网 下载 Windows 客户端,安装之后打开,这里面出现了几个 Issue,需要处理一下。

前两个按照说明来就好,第一个在 GeForce Experience 中设置,依次选择 设置->常规->游戏内覆盖,然后关闭。第二个在设置里面,网络和Internet->WLAN->管理已知网络,然后选择你正在连接的路由器,在网络配置文件类型里面选择专用网络。

最后这个是 killer 程序的问题,这个是一个经典问题,在卸载里面你会发现找不到这个程序,但是事实上是存在的,需要用一个软件来杀,见 killer_software_uninstaller,启动之后卸载就好。

此时只要电脑和 VR 在一个网络下面,就可以进行串流了。

VRChat 注册账号#

VRChat 需要注册一个账号,同时因为后续我需要上传模型,所以需要一定的信任等级。

账号本身直接前往官网,使用邮箱注册账号,但是因为网络问题,可能会出问题。这个时候可以去一个一个换 UU 加速器的服务器,记得是路由模式的,总有一个可以。而且从经验上来说,你可以去类似的教学视频下面看,会有人分享自己在哪个服务器上成功了,选择相同的服务器,成功概率很大。

之后我是因为很急,直接充值了 VRC+,这样可以快速提升信任等级,这个可以直接用 Steam 支付,然后玩了几个小时,用公模去了新手房,等级就够了。之后就可以上传模型了。

模型编辑#

VRChat 的模型编辑是基于 Unity 的,所以如果你有 Unity 的开发经验,那么上手会非常快,但是显然我还没有。

本身本质的原理可以大致理解为你需要在 Unity 里面编辑一个模型,这个人物(其实似乎也可以不是人)模型具有骨骼以及许多的基础功能包括本身的体型与身材,同时也支持了比如说面捕之类的东西,一般称之为素体,并且支持了一点点的体型调整的功能。对于新手来说,一般来说要做的事情就是直接将一些衣服的模型和素体绑定在一起。

同时这些模型里面其实绑定了一些脚本开关之类的内容,其实就是一些 int 和 bool 的条件判断作为基础内容(应该也有更复杂的内容),那么一些数字的变换就可以实现比如说换衣服或者调用出来某个道具了。至于这些道具之类的内容或者更复杂的互动是怎么做出来的,就不在这里的讨论范围之内了。

环境配置#

如上所述,不难理解我们需要基于 Unity 来进行模型编辑,也涉及了一些环境配置,来管理各种插件以及着色器之类的内容。

首先需要安装 Unity Hub,直接前往 Unity 下载即可,然后之后在其中注册账号,并且申请许可证,安装 2022.3.22.f1 版本的 Unity 软件,这是 VRChat 主要支持的一个版本的 Unity,另一个则是 2019 的。在安装界面中额外选择 Visual Studio 的开发套件以及中文语言,并且安装即可。

在这个过程中需要注意自己的网络环境,不然如果说退化到了 f1c1 的国区特供版可能会有一些不方便。

接下来需要安装 VCC,也就是 VRChat 官方提供的一种插件和项目管理工具,简单来说它可以帮助你打开不同的人物或者地图项目,在安装完毕之后会自动检测你的 Unity 版本,关联了之后直接创建项目即可。

在这里直接选择 22 版本的 Avatar 项目创建即可。之后可以点击 Manage Project 来安装一些官方就给出的插件:

这里面默认的几个插件是可以将模型上传到 VRChat 使用的,然后 Gesture 可以在 Unity 里面调用 VRC 里面的菜单,而 Av3 可以做一下 FX 层的操作之类的,在这里先不介绍。

之后则可以安装一些非常便捷的插件,其中首当其冲自然是 Modular Avatar,直接点击官网的安装按钮就可以跳转到 VCC 的安装界面,然后安装即可。

Image

MA 主要负责的就是一键绑定衣服的骨骼,对于目前市面上绝大多数的衣服都是适用的,使得一般不需要古法绑骨,也就是把衣服一个个拖动到对应模型的部位下面。

同样可以安装的包括 FaceEmo 来管理表情动画等,lilToon 是日模主要使用的着色器,AAO 来进行 Mesh 以及骨骼的优化从而达到 VRC 实机允许的范围,VRCFury 则用来提供 SPS 的支持来实现 ERP。

以上的这些插件都是通过 VCC 来安装的,使用的是一种叫做 vpm 也就是 VRChat Package Manager 的方式来进行安装的,本质上是在管理 Unity Package 文件,也就是 .unitypackage 文件的安装和卸载。

如果读者在打开一个 Unity 项目之后,双击 .unitypackage 文件,Unity 会自动打开一个安装界面,选择安装即可,这从本质上和 VCC 的安装方式是一样的,只不过 VCC 可以管理不同的项目,并且可以直接在 VCC 中进行安装和卸载。除此之外还有一些我们需要手动安装的插件。

手动安装的插件包括 VRAM 用于压缩模型的贴图尺寸。

后续还会有一些需要安装的插件以及需要配置的内容,我们在使用到的时候再进行介绍。

购买资产#

对于 VRChat 来说,根据上文的描述,读者不难理解,改模的过程本质上有点类似于奇迹暖暖一样的换装游戏。

本身我们需要一个基础的人物模型,一般称之为素体;然后我们可以购买一些衣服,并且制作菜单,这样在游戏中可以召唤菜单,从而实现衣服的切换;同样衣服或者饰品还可能自己就有一些可以切换的功能,同样在游戏中可以用菜单来控制;另外可以购买的包括道具或者一些插件,来实现比如说一把可以拔出的刀,或者不同玩家之间可以接吻,更有甚者比如说大名鼎鼎的 ERP,也就是成人向的玩法,不过在这里不进行展开。

一个显然的事情是,这些资产都是社区产出的,而这个社区并不像编程社区一样开源居多(然而还是有很多优秀的工具是开源的,不过资产大多数都是收费的),所以说我们需要购买这些资产。主要 VRChat 的资产市场是 Booth,是日本的一个二次元社区,一般来说读者可以通过 Pixiv 的账号直接登录 Booth,然后购买资产,并且使用 Visa 卡或者 Paypal 进行支付。当然,值得一提的是,这些资产由于高度可复制,事实上在国内的闲鱼平台上存在大量的倒卖现象,可以通过 Booth 的商品 ID 便捷地找到对应的闲鱼商品,但是笔者并不推荐读者这样做,还是尽量在有能力的基础上支持一下原作者吧。

在介绍了 Booth 之后,补充上述同样建议读者购买的几个插件的 Booth 链接。分别是 PCSS4VRC 来实现更加真实的光影渲染,PCS 可以实现 ERP 中的打击音效,SPS MA 使用 MA 来支持快速绑定 SPS。所谓我可以不做但是我不能没有,虽然笔者对于 ERP 并没有兴趣,但是还是有必要研究一下如何给自己的模型增加 SPS 以及相关的内容。

在此之后我们就可以去选择一个自己喜欢的素体并且进行购买。

值得一提的是,对于大多数的改模新手来说,一般也不涉及一些日常衣服的混搭,而是直接购买一套完整的 3D 服装并且加在自己的角色上,也不会涉及角色适配以及模型尺寸相关的改动(事实上笔者也不是很了解这部分应该如何处理),因此在选择素体的时候也有必要选择大多数衣服都有适配的素体,这样可以避免一些不必要的麻烦。

可以简单理解为衣服需要对于不同的素体进行适配,一些热门或者比较老资历的素体一般来说受到的支持会比较多,比如说 Airi, Shinano 以及 Chocolat 等等,读者可以自己看一些素体本身的外形以及找一些衣服的适配情况来综合选择一个自己喜欢的素体。

了解了这些内容之后,读者就可以开始购买素体了,笔者选择了 Shinano 作为自己的素体。

处理素体#

在购买素体之后,素体会包含很多内容,比如说原装的衣服以及头发,和之前自己基础的菜单,我们希望先整理一下已有的东西,把现有的内容打包整理,以便后续的管理。

导入素体#

在打开 Unity 的一个项目实例了之后,解压素体的文件夹,双击里面的 .unitypackage 文件,Unity 会自动打开一个安装界面,选择安装即可。

Image

等待一段时间导入之后,你可以在下方的 项目 中找到对应的内容,并且可以给他拖入左边栏。一般来说,项目栏中会包括很多内容,除了本身可以去使用的模型之外,也包括这个模型引用的资产,比如说一些菜单、动画以及贴图等,这里找到对应的模型的经验是,寻找名为 Prefab 或者你的角色名的文件夹,往往可以找到。

Image

一般来说可以看到这里会包含多个文件,笔者建议读者选择名称中包括 kisekae 的文件,这个文件是便于后续换装的,一般不会包含原版角色的外衣而是可能只有内衣。这样的选择是因为在 VRC 的角色中包括一些参数限制,比如说角色里面维护的变量数量不能超过一定限度,同样的限度也包括比如说贴图的体积以及动骨的数量。

原版角色的原版衣服会包括一些菜单和动画,从而占据参数量以及各种体积,而我们多半之后会使用自己的衣服来替换原版衣服,所以说选择 kisekae 的文件可以避免一些不必要的麻烦。如果读者想要用原版的服装,那自然其实也没必要学习改模了。

Image

在将模型拖入之后,可以发现本身模型的图标是一个蓝色的,这是因为模型是一个预制件,大概可以理解为是一个被打包的东西。对预制件进行修改之后有可能会有一些奇怪的影响,在这里可以直接选择对于这个预制件右键,然后选择 完全解压缩 将其解压缩为一个普通的模型。

Image

通过鼠标中键以及右键和 WASD 可以实现在 Unity 里面的相机视角移动,拉近角色可以发现角色大概率现在只有内衣,并且呈现一个经典的 T Pose。展开左边栏的内容之后可以发现其中包括几个比较重要的内容,包括 Body, Body_base, Armature 以及一些衣服或者头发的内容。在这里面 BodyBody_base 中可以其中的参数,在选中之后在右侧的检查器中可以看到可以展开的 BlendShapes,也就是模型的形态参数,可以通过这些参数来调整模型的体型。我们后续可能唯一会调整的就是 Body_base 中的一些参数,比如说角色的腰部和胸部的尺寸等;Body 中则主要是一些面部的参数,在这里不进行赘述。

Image

我们可以简单先上手把玩一下这个模型,然后理解我们后续需要进行什么修改。

Image

在这里我们在上边栏选择 Gesture Manager 可以在场景中添加一个对应的组件,在选中这个组件之后选中 Enter Play-Mode,就可以进入播放状态,这个时候点击上方的 场景,即可从 游戏 这个较远视角拉近。同时,当你选中 Gesture Manager 的时候,也可以注意到角色不再为 T Pose,而是一种正常双手下放的状态,因此你也可以以此判断角色是否成功和衣服绑定在了一起。

Image

在菜单中绝大多数内容是不重要的,我们仅关注 Expression 部分里面的内容,这也是在游戏中我们可以编辑的菜单,可以看到里面现在可能包含一些原版的菜单内容,我们先需要进行的就是将原版的菜单内容处理掉,这其实也是现代改模中最麻烦的一个环节了,其他的环节实际上早都已经出现了大量的轮椅工具,在后续使用 MA 的时候读者会更加便捷地感受到。此时先点击上边的播放按钮来退出 Play Mode。

整理菜单#

在这里我们讲解如何整理菜单,以 Shinano 的为例,我们点击素体的最外侧,在检查器中寻找类似于 Expression 的字样,然后展开,在其中找到 Menu 的后面跟着的内容,单击一下,就可以跳转过去。

然后再次点击对应的菜单,可以在检查器中查看对应的内容,可以发现这个内容本身是一个 Menu,并且其中引用了另外两个 Menu,和刚才我们展开 Expression 之后看到的内容其实是一致的。

一个初步的想法是我们把这个 Menu 变为在里面的一个 Sub Menu,并且重命名为 原版菜单,以保留原版菜单的内容,之后也方便建立别的并列的菜单。这里我们直接将这个菜单复制一份,然后对于原来的菜单,连续点击两次那个减号,将本来绑定的两个 Sub Menu 删除掉,之后点击一次加号添加一个 Sub Menu,命名为 原版菜单,然后将刚才复制的菜单拖入这个 Sub Menu 中。

再次通过 Gesture Manager 进入 Play-Mode 并且查看菜单,可以发现菜单已经整理好了。

整理目录#

在整理完菜单之后,接下来我们就可以尝试整理本身的模型了,就像我们之前说到的,在左边栏可以看到不少的部件,对于 Shinano 来说,除了身体之外主要有内衣以及头发以及猫耳。直接对于目录中的最大的角色那部分右键,可以选择创建空对象。

尽管我们其实可以给空对象很多的属性,但是在这里我们简单理解为这就像是新建文件夹一样,所以我们可以将这些衣服之类的直接扔进去。因为本身在其他地方有绑定关系,直接对这些 Mesh 进行拖动是不会影响任何内容的。进行简单的整理,最后得到这样的结果。

Image

至此我们得到了一个整理好的素体,可以备份一下项目,之后或许新的项目可以复用。

制作菜单#

接下来我们讲述如何制作菜单。在这里我们使用 MA 制作菜单,我们对于菜单只有最基础的需求,就是制作衣柜。这包含几个需求,一方面我需要可以在不同的衣服之间进行切换,另一方面我希望各种东西被很好地分类起来。

于是在这里,我们只需要认识三个东西。其一是 Sub Menu,这很好理解,就是可以点击打开并且展开的子菜单;其二是切换,也就是一种可以点击的按钮,点一下可以开,之后可以关之类的;其三是变量,也就是一个值,用于逻辑判断。

例如我们可以使用一个变量 cloth,然后使得这边变量为 1 的时候激活第一套衣服,2 的时候激活第二套衣服,在这个过程中就是通过切换来改变变量的。本身其实这个过程涉及了一些类似录制动画之类的内容,但是 MA 十分的伟大,省略了很多的环节。我们在角色下建立一个新对象命名为 菜单,然后就可以在这个的下面用 MA 创建一个 Toggle。

Image

在右边我们可以看到三个内容,其中两个是 MA Object Toggle 以及 MA Menu Item,这两个是一些 Menu 的正常属性设置,而 MA Menu Installer 则涉及会将菜单安装到哪里。如果选择安装的位置,可以看到展开的里面有我们之前整理的菜单。

一般来说我们只在最外侧使用 Menu Installer,因为在移除这个组件之后,且如果这个对象是一个 Sub Menu 的子对象,其天然就会放到这个 Sub Menu 的下面,因此我们建议把这个 Installer 移除掉,并且可以在目录里面按照层级方便地组合。

我们可以在 MA Menu Item 里面将类型切换为 SubMenu。

我们建立若干的 SubMenu,其中都只包括空的 MA Object Toggle 以及 MA Menu Item,并且组成层级关系。然后最里面一层也是只有 MA Object Toggle 以及 MA Menu Item 但是类型不换为 SubMenu 而是依然为切换。

Image

这里面我们设置最里面一层的 MA Menu Item 里面的变量为对应的名字,比如说内衣的都是 underwear,然后头发都是 hair,这样子如果我们在一个东西下面有多组切换,他们之间变量名字一样就会互斥,从而实现切换。

Image

然后我们可以在左侧将我们整理的默认内衣拖到右侧的 MA Object Toggle 里面,并且勾选了反转条件,可以注意到内衣本身消失了。如果我们再勾选下方的默认启用,内衣就再次出现了。这里值得一提的是,可以发现素体都是没有关键部位的贴图的,如果读者有类似的需求可以购买相关的贴图。

默认启用对于同一个变量同一时间只会有一个被激活,同时对于反转条件我们始终对于无论哪个衣服,都默认开启,我们完成全部内容的拖拽,然后再次进入 Play-Mode。在轮盘中进入 Expression 可以看到我们新的制作的衣柜,点进去可以展开并且找到我们的切换菜单之后可以点击来开关头发或者内衣或者猫耳猫尾。

Image

导入衣服以及 MA 绑骨#

最后我们简单介绍如何导入衣服以及进行 MA 绑骨,在这里我们使用 SummerPrincess 这件衣服。一般来说可能衣服会包括很多的文件,或者两个文件或者单个文件。我们首先寻找是否有名为 Material 或者 Texture 的文件或者压缩包,解压并且双击导入,之后找到你的素体对应的衣服的压缩包,同样导入,注意这个顺序很重要。另外,也可能没有 Material,那么或许贴图已经包含在衣服本身里面,或者可能有一个 full 的 Unity package,没有分角色。

在导入衣服之后,还是找到 Prefab,然后直接拖入左侧的目录,新建一个名为衣服的对象,并且直接放在我们刚才创建的衣服这个对象下面,并且同样预制件完全解压缩。对于预制件本身也可以重命名。同样创建名为衣服的菜单。在这里我们引入两个不同颜色的衣服,来进行更好地说明,而不引入更多的衣服,对于不同的衣服同样是适用的。按照上述内容同样导入 Menu,以及两个切换,可以注意到点击切换里面的始终启用的时候,角色的衣服会切换。如果没有切换,需要进入一次 Play-Mode 来刷新一下,这是一种常见的 Bug。

Image

点击衣服,可以注意到右侧已经有了很多的 MA 组件,这个是衣服自带的,现代的商品中都基本已经提前支持了 MA。而对于一些老商品,没有 MA 且进入 Play-Mode 切换到衣服确实不跟着人物移动,你可以右键点击衣服,选择 MA 然后 setup outfit,就可以实现自动绑骨。

看上去一切已经结束了,然而实际上还有不少的问题需要解决,我们有必要介绍 MA 的几个其余的组件。

首先我们在 Play-Mode 的时候其实会发现这个模型其实同时激活了两个游泳圈以及草帽,换句话来说,我们切换的时候衣服被切换到了,但是一些部件没有被切换到,这是因为 MA 的一些设置使得这些组件被单独控制,我们只需要找到对应的部件也添加到切换的 Object Toggle 的列表中即可。

Image

其次我们会发现 Play-Mode 下最外侧菜单中包括了一些我们不期望的属于这个衣服的菜单。本身我们希望保留这些菜单,但是依然整理起来,放到衣柜的下面。

Image

这些菜单的出现其实就是因为 Menu Installer 导致的,因此我们还是在本来的衣柜菜单下建立新的 Sub Menu,叫做衣服功能,然后寻找衣服层级下的 Menu Installer。一般要不然在最外层,要不然就可能需要一层层耐心找一下了。在 Menu Installer 里面选择 选择菜单,并且安装到我们的新 Sub Menu 下面,同时我们也可以修改 Menu Item 的名称来改变安装到新地方的菜单的名称,需要先改名再安装,或者先安装到别的地方再安装回来刷新一下。

Image

可以看到对应的地方也出现了 Install Target 对象。

另外一点关于身体同步。我们之前提到过 Body_base 中可以修改比如说胸部尺寸(虽然听上去有些奇怪,但是这确实是玩家们最经常修改的参数,同时这也是对于模型的 shape 修改最显著的,也最可能导致穿模),我们希望这些衣服跟着身体同步变化,大多数的衣服都有类似的功能。

Image

在这里点击角色的上衣,可以看到其中名为 Blendshape Sync 的组件,其中绑定了几个组件,与上方的 Blendshapes 里面包含的参数以及 Body 下面的 Blendshapes 对应,不难理解这里做的就是同步。如果你的衣服本身没有支持这些东西,你可以手动添加一个 MA Blendshape Sync,就可以实现一样的同步功能了。

最后是关于 Shape 的修改。对于一些衣服来说,角色包括高跟鞋,而高跟鞋对应 Body_base 中的 heel 以及 highheel 两个变量,但是高跟鞋里面本身可能不包含这两个变量的 Blendshapes(毕竟如果高跟鞋可以关闭高跟,那为啥叫做高跟鞋呢),有的时候如果作者没有仔细设置,就会导致角色的脚有穿模。如果角色只有一件衣服,自然可以直接修改 Body 里面的参数,但是如果多件,我肯定希望这件衣服本身在这个衣服里面解决 shape 的变化。另一种常见的是一些衣服会修改角色的胸部尺寸,而且在其他的衣服下面依然生效,导致其他衣服穿模,我们希望把这种功能删掉。这两个本质的解决方案都是 MA 的 Shape Changer。

Image

如图所示,这件衣服其实会对于角色的胸部设置一个值,如果不想要,直接删掉就行,或者把对应的东西拖入切换的 List 就可以实现不同衣服之间的隔离。对于高跟鞋类似的场景,则是需要手动添加一个这个组件,并且 set 一下对应高跟鞋的值即可。

由此我们得以中场休息。按照这种方案,我们可以疯狂的添加不同的衣服,建立巨大的菜单,并且实现很好的衣柜。不过接下来则会面临一个问题,VRC 其实要求角色的一些内容需要符合参数限制,比如说贴图大小不能太大,因此我们需要使用 VRAM 来进行修改,同样的限制在于动态骨骼的数量,可以使用 AAO。当然最显然的事情就是先导入少量的衣服在一个角色上,或者建立一个巨大的角色项目文件,包含一切东西,后续需要上传的时候再删除对应的不需要的内容。

不过至少现在读者的角色可以上传,通过 VRChat SDK,然后选择 Show Control Panel,即可登录然后上传。期间需要确保自己的网络可用。

另外值得一提的是另一种模型美化方式,也就是更换模型的贴图,这在一定程度上也可以替换,比如说模型的眼睛,或者为模型的身体部位增加细节。这些内容读者可以自行在 Booth 上寻找对应的商品,不同的贴图或者各种内容的导入方式其实各不相同,但是商品中一般会有教程。

同样包含说明的也有道具,比如一些可以用于互动的内容,像是可以发出剑气的刀,或者可以投掷的匕首,这些东西一般来说,商品也会有各自的教程,绝大多数也是捆绑了 MA 的物品,可以直接使用。对于一些道具来说,可能并不具有对具体素体的适配,这个时候我们需要通过拖动一些组件的位置,将其放到模型对应的地方,一般教程中也会有说明。这些道具本身的使用需要依赖VRC里面的手势控制,这可能需要读者进行进一步的学习,但是本身和修改模型无关,因此在这里也不再进行更多赘述。

模型优化#

所谓模型优化,主要就是对于一个做好的模型的各种参数进行优化,其中包括通过修改菜单使得参数量变小,这些在某种意义上可能也属于整理的范畴,在这里其实不会过多讨论。在本章节,我们主要介绍 VRChat 中包含的一种对于模型质量的衡量标准,可以统称为“绿模”或者“红模”。

“绿模”指的是那些在各方面模型开销较小的模型,比如更小的贴图尺寸、较少的动骨数量或者较低的三角形面数。笔者事实上并非这方面的专家,因此在这里只进行简单的介绍:如何尽量删减一些相关的体积,但是也很难将模型优化到完全绿模。

与此同时,值得注意的是,我们在制作如上的模型过程中,其实追求的是另一个相反面,也就是所谓的“衣柜模”:角色可以切换不同的衣服,甚至包含很多很炫酷的道具。这在很大程度上与“绿模”的要求是完全相反的,我们很难在其中获得任何的共存点。事实上,即使对于那些最原始但是带有衣服的素体进行一些优化,使其达到“绿模”的程度也是需要费很大功夫的。在这里,我们可能会简单介绍他们的组件,但是不会展开如何去使用。

贴图优化#

首先介绍 VRAM,在上文中已经给出了安装它的指示,就像正常安装 Unity package 一样,双击下载的文件并安装即可。之后读者可以在上边栏找到 Thry->Avatar->VRAM,就可以点击并打开窗口。

Image

如图中可以看到,我们将整个角色拖到了 VRAM 的 avatar 界面,就可以看到分析出来的贴图以及 mesh 的体积。在这里,因为我们只导入了两件衣服,所以体积其实相当少,在某种程度上可能也是这些衣服的布料比较少的原因。同时,在展开 textures 之后,我们可以看到很多贴图具体的文件体积以及对应的分辨率。

一般来说,我们建议将 4096 的分辨率降为 2048,这对于大多数的 VR 眼镜以及正常的距离不会造成任何明显的影响;而事实上,降低到 1024 同样是可以接受的。这样我们就可以看到贴图体积的显著下降,由此完成了这个环节。

AAO 优化#

对于 AAO 优化,则主要优化的是关于比如说动态骨骼数量等绿模其他内容的插件。值得注意的是,AAO 不像 VRAM 一样会直接对模型进行修改,而是作为一个组件放在模型里面,只有在你上传模型以及进入 Play-Mode 的时候,才会进行编译并且实现其效果。这也使得你很难在 VRChat 的上传界面,直观地了解目前模型距离绿模的距离。

所以说,对于 AAO,我们添加了其 vpm 之后,可以同样在 VCC 中选中并且加载 anatawa12’s gists pack 这个插件。之后如图中所示选择 Actual Performance Window 这个内容,再进入 Play-Mode 之后就会出现一个窗口来显示目前的模型性能了。

第一个介绍 AAO Trace and Optimize,可以理解为一种自动优化,直接加到角色下面。

可以看到,模型的各种性能确实已经具有了显著的优化,但是其实对于绿模还是具有很大的差距。

接下来介绍另一个组件,用于合并网格,也就是 Merge Skinned Mesh。这里可以简单理解为,事实上,对于 VRC 的正常模型来说,这些不同的网格是分离开的,并且可以通过菜单等进行分别控制。当然,合并成一个网格并不等于消除了其中的动态骨骼以及面数,这些东西依然会保持,同时也可以去切换它的贴图等内容。不过区别在于,合并后的网格只会计算为一次 mesh,你不能单独切换一套衣物中的几件。

我们本来在进行上述的衣柜制作时,其实就是将不同的衣服单独成套进行整理。如果你真的想分类一件衣服里面的多个组件,就应该在制作衣柜时也把它们放在不同的空对象下,这样会更方便管理。因此,这里我们仅讨论将整套衣服合并网格的做法。如果你将一整套衣服分成了不同的部分,事实上这套原理也是通用的。

我们在已有的衣物下面新建一个空对象,并且赋予这个组件。之后可以将衣服里面全部的网格组件都拖入到这个组件的蒙皮网格渲染器中,值得一提的是,在这里我们只导入了那些衣物的部分,没有将这套衣服的帽子以及泳圈进行分别的导入。这是因为这些本质上从属于这套衣服的道具,其实在过程中涉及了更多的一些切换,如果需要进行导入,则需要进行更加严谨的处理。与此同时,导入具有层级结构的物体时,需要将层级结构完全展开,并将里面的内容全部依次拖入,而不是只拖入最外侧的内容。在这里,对于衣服的 Armature 对象,这其实是一个负责维护 MA 在后续的映射的一个组件,并不涉及实际的任何网格,所以不需要 Merge。

当然,事实上这个过程的意义也没有那么大。现在大多数衣物、头发的面数以及各种内容已经过于精细,追求绿模事实上基本上只适用于小模型,而不是现代的资产。在大多数时候,我们只需要象征性地导入 AAO Trace and Optimize 即可。对更多内容,如果读者有兴趣,则可以前往其 文档 查看。

导入插件#

在这里我们简单介绍如何在目前的模型中导入 SPS 以及 PCS。在前序的准备工作中,我们已经让读者安装了 VRCFury,这里面事实上已经包括了 SPS,但是我们需要将其绑定在角色上。至于 PCS 的通过前面介绍的链接购买。事实上,PCS 以及 SPS MA 这两个商品的价格不是很贵,并且非常方便。它提供了类似于 VRAM 的交互,只需要将模型拖入,就可以在菜单栏中进行自动配置。在这里指路这两个链接,也依然没有展开的必要。

Image

同样的交互流程也包括 PCSS4VRC,也就是所谓的真实光影,可以使得你的角色看上去更加好看。

Image

阶段性成品#

至此,我们得以得到一个完全的阶段性成果。我们可以制作一个基于某种素体进行大量的添加衣物组成衣柜,并且可以添加一些道具,尽管在这一部分我们没有进行详细的阐述,同时使用组件来支持 ERP,并且添加光影来对模型进行美化。最后,还可以通过 VRAM 以及 AAO 来对模型的性能进行一定程度的优化。

以下是笔者自己做的模型在 VR 中的一个效果。

希望你看的开心。

VRChat 上手纪实
https://axi404.github.io/blog/vrchat
Author阿汐
Published atAugust 11, 2026
Comment seems to stuck. Try to refresh?✨