开始制作 Quest 内容

听起来是时候为 VRChat 制作一些 Quest 内容了!有很多内容需要讨论,但它并不会像以前一样那么难。顺带这个月会有 Spookality 活动,让我们开始制作一些 Quest 世界吧!

开始

坏坏怕怕时节已经到来,与此同时也是 VRChat 的 Spookality 节日狂欢。

当然,随着一堆人开挖新项目的坑,这给了我们一个完美的机会来谈论 Quest 兼容和其他使用案例。至少现在,VRChat 的相关文档还未更新太多,并且依旧侧重于让用户同时维护两个 Unity 项目。

叛逆一点,不要这样做。

如果你比较好奇这些建议到底有多老清朝,这么说吧,Udon 已问世近三年,而这篇文章仅仅提到了触发器。

上车!让我们开始吧。

Unity Android 支持

首先,上传内容到 Quest 将需要 Unity 的 Android 支持。

Creator Companion 会自行安装此功能,但您也可以通过 Unity Hub 进行安装。

image.png

在“安装”选项卡中,找到 VRChat 使用的 Unity 版本,单击齿轮并选择“添加模块”,然后在 platforms 下安装“Android Build Support”。

image.png

此过程不需要 NDK 工具或 OpenJDK。

接下来!让我们打开那个 Unity 项目。

资产管道(Asset Pipeline) 2

接下来的步骤仅适用于使用 2018 版本或更早版本创建的项目,因此大多数用户可以跳过此步骤。

但是,如果您有,请确保打开“项目设置(Project Settings)”窗口,转到“编辑器(Editor)”,并确保“资产管道模式(Asset Pipeline Mode)”设置为版本 2。

在执行此操作时,请确保禁用缓存服务器(Cache Server)。

image.png

所以!现在我们来解释一下转换为 Android 的过程。

转换为 Android

由于 Windows 和 Android 是截然不同的平台,Unity 会以不同的方式去压缩和格式化文件。

而每当您在 PC 和 Android 之间切换时,Unity 会存储文件的状态或将其“缓存”下来,以便让您转换回另一个版本。

image.png

这正是 SDK 面板中叫做 “Switch Build Target to Android” 的按钮所做的事情。

然而!在进行此操作之前,我们还需要更改一个设置,该设置位于“文件(File)”>“构建设置(Build Settings)”下。

此窗口为我们提供了 Unity 允许构建到的每个平台的设置,因为 VRChat 只支持 PC 和 Android,所以我们只需关心这两个平台。

实际上,我们只需打开 Android。

您需要将“纹理压缩(Texture Compression)”更改为 ASTC

image.png

通常,Unity 为 Android 使用的压缩会使纹理变得模糊,而将此设置保留为 ASTC 将解决此问题。

关闭该窗口后,单击“Switch Build Target”按钮将会使 Unity 进行缓存。

第一次转换可能会需要一段时间,具体程度取决于您资产的复杂性,通常会是纹理、音频和模型数量,此后的每次转换都会比第一次更快,Unity 只会转换新资产或修改后的资产。

对于世界来说,您可能需要在切换后重新烘焙照明。

Quest 限制

为了让 Quest 正常运行,VRChat 目前在上传内容方面做了一些您需要遵循限制。

当前 Avatar 的限制最为严格,而世界制作的额外自由度让您不得不自己考虑很多因素。

我不会详细介绍所有要求,您可以在文档中查看这些(本文档已更新并准确无误),但我会尽量涵盖最大的限制。

首先,文件大小。

上传时,世界不能超过 100mb(原始限制 50mb 的两倍),Avatar 的大小限制为每个 10mb。

虽然这对于习惯了没有限制的创作者来说听起来很有束缚感,但您的 PC 构建也无需做到内容与 Quest 相同。

例如,纹理和其他资源可以在不同平台上以不同方式导入。

image.png

尽管在 PC 上,一个详细的 2k 纹理可以导入为 1k 或甚至更少,但对于 Android,我确信您希望地图的各种体验尽可能相似,因此请尝试调整成您认为最适合您使用例的设置。

文件大小和社区工具

使用一些社区工具实际上可以很轻松地减少文件大小。

Making Quest Content _ VRChat SDK Tutorial 3-49 screenshot.png

一个名为 VRWorld Toolkit 的工具可以为您提供每次构建后上传到 VRChat 的所有文件完整报告,因此,在测试您的世界或虚拟形象一次后,它将为您提供可能占用空间的所有内容的完整列表,并且还提供了许多其他非常有帮助的建议。

Making Quest Content _ VRChat SDK Tutorial 4-1 screenshot.png

EasyQuestSwitch 是另一个有用的工具,尽管它仅适用于世界。

它允许您在两个不同版本之间交换材料、设置或活动 GameObject 设置一系列选项,尽管其UI可能一开始会有些令人头大。

image.png

image.png

Lox 的 AssetBundleStatis 是另一种用于了解哪些文件占用空间的方法,包括文件大小和显存大小。

这个工具基于浏览器,您需要选择您意图构建的世界或虚拟形象文件,而它会为您提供 Unity 存储的这些构建文件路径。

着色器和面数

对于 Quest 来说,处理透明度是最最困难的任务之一,您也许会注意到,能够为 Avatars 上传的着色器中没有一个允许使用透明度。

针对于世界,大多数(如果不是全部)Unity 附带的着色器都可以正常工作,但请注意,一些自定义着色器可能无法正常工作(如果未经其创建者验证)。

单层透明度本身通常没有问题,但 Quest 难以处理的是重叠透明度。

在世界中,这种情况最常见于树叶和窗户玻璃。

而另一个重要的限制是后处理,它在 Quest 根本不存在。

视觉效果被认为对于 Quest 来说太难以处理,所以虽然您在 Unity 中测试时可以使用它,但请了解当您在 Quest 游戏中时,该效果将不存在。

面数是另一个重要的因素,显然面数是“越多越糟糕”,VRChat 为面向约 50,000 个面数的世界提供了具体的建议,并为面向 10-15,000 个面数的 Avatars 提供了严格的排名。

一个 Quest 备用模型必须排名为“良好(Good)”或更高,而这要求面数不超过 10,000。

视频链接

当然,对于世界来说,最后一个大限制便是,非文件 URL 在视频播放器中无法正常工作。

让我们再详细解释一下。

YouTube DL 是 VRChat 用于将视频 URL(如 YouTube 链接或SoundCloud 歌曲)转换为可播放文件的程序。

该程序无法在 Quest 上运行,因此 VRC 仅能播放那些本身已经是文件的链接,例如以.mp4或类似方式结尾的链接。

有个简单的解决方案,您可以使用您所在的会员 Discord 服务器,只需将您的视频或音乐文件发布到那里并复制其链接,您就可以基本上将该服务器用作分发服务器。

这确实绕了个大弯,但它真的很有效。

结尾

完事!

请记住,这绝不是详尽的列表,本文章仅仅只是让人们了解 Quest 项目需要什么样的条件以及如何开始的一个起始点。

我希望这对你有所帮助,我期待在未来看到更多的 Quest 内容,因为几乎 60% 的 VRChat 用户群都使用一体机 Quest。