Skip to main content

关于虚拟形象缩放的 Technical 考量

虚拟形象缩放允许玩家改变当前虚拟形象的高度。

本页记录了 VRChat 虚拟形象缩放的内部工作原理,其详细程度可能对围绕此功能开发社区资源有所帮助。

阅读虚拟形象事件文档或我们的示例脚本,了解如何将虚拟形象缩放与 Udon 配合使用。 阅读虚拟形象参数页面,了解与缩放相关的可用虚拟形象参数。

术语定义​

  • 眼睛高度(Eye Height):虚拟形象在 T-Pose 状态下视点高于地面 0 点的高度(变换位置的 Y 分量)。
  • 预制体高度(Prefab Height):缩放在默认值时虚拟形象的眼睛高度。这是你在 SDK 中通过放置"视角位置"来配置的值。
  • 目标眼睛高度(Target Eye Height):虚拟形象希望缩放到的眼睛高度,由玩家或 Udon 设置。
  • 虚拟形象缩放比例(Avatar Scale):"预制体高度"与"目标眼睛高度"之间的比率。例如,如果目标是 4.5 米,预制体高度是 1.5 米,则"虚拟形象缩放比例"为 3。

值的范围​

"预制体高度"不受限制。你可以在 SDK 中将虚拟形象的"视角位置"放在任何高度。但请注意,你的整体虚拟形象缩放比例会影响你的性能评级。

对于 Udon,"目标眼睛高度"被限制在 0.1 到 100 米之间,而操作菜单中缩放的可使用范围是 0.2 到 5.0 米。但通过上传超出此范围且_不_使用缩放拨盘的虚拟形象,你仍然可以超过这些限制。在这种情况下,"目标眼睛高度"将与不受限制的"预制体高度"一致。

这一限制意味着 Udon _必须_在"虚拟形象眼睛高度改变"事件上重新应用缩放,以完全强制执行缩放。否则,用户可以切换到更矮或更高的虚拟形象来绕过世界设置的限制。

在通过网站禁用了缩放的世界中,"目标眼睛高度"将_始终_与"预制体高度"一致。

缩放的应用方式​

缩放虚拟形象是通过更改虚拟形象根变换的 "localScale" 来实现的。此缩放是强制执行的。除了与虚拟形象缩放相关的 Udon 函数之外,没有用户可访问的方法来覆盖虚拟形象根部的缩放。

每当缩放发生变化时(即,每当你切换虚拟形象,或重置/重新加载当前虚拟形象时),虚拟形象都会在本地"重新测量"。此过程会调整你的视角位置以匹配新的高度,并重新定位一些内部组件,例如你的语音位置。

缩放比例会自动作为"眼睛高度"为每个玩家同步,量化为 3 位小数。对于远程用户,每当接收到新的高度值时,缩放变化会在短时间內平滑过渡。

在操作菜单中使用缩放拨盘时,你的虚拟形象仅在镜子中缩放。当在拨盘上确认缩放后,新的缩放比例将立即应用于你的虚拟形象,然后发送给远程用户。