模型缩放
模型缩放允许玩家通过缩放模型的大小,来更改其当前模型的高度。
本页面记录了 VRChat 模型缩放的工作原理,以便为开发社区资源提供有用的信息。
阅读Avatar Events 文档 或我们的示例脚本以了解如何在 Udon 中使用模型缩放。 阅读模型动画参数页面,了解与缩放相关的可用模型参数。
术语定义
- 视角球高度:模型姿势为 T-Pose 时,其视角球距离模型原点的 Y 轴垂直高度。
- 预制体高度:当缩放为默认值时,模型的视角球高度。您可以在 SDK 中 Avatar Descriptor 中的 Viewpoint 里更改这个值。
- 目标视角球高度:由玩家或 Udon 设置的,要缩放到的视角球高度。
- 模型缩放比例:目标视角球高度对预制体高度的比例。例如,如果目标视角球高度为 4.5 米,预制体高度为 1.5 米,则"模型缩放比例"为 3。
高度限制
预制体高度不受限,因此您可以在 SDK 中,为模型视角球设置任意高度。但请注意,这种情况下您的模型缩放比例会影响您的性能等级。
在 Udon 中,目标视角球高度高度限制的上下限分别为 100 米和 0.1 米,而在模型菜单中,它们分别为 5 米和 0.2 米。通过上传超出高度限制的模型 ,且不在其菜单里使用模型缩放功能,那么您的目标视角球高度不受限,且与您模型的预制体高度一致。
因此,您必须在世界的 Udon 脚本中的 “avatar eye height changed” 事件上重新应用缩放,以强制执行模型缩放。否则,玩家可以切换到上传时超出高度限制的模型,以绕过世界 Udon 的高度限制。
您可以在 VRChat 网站中关闭世界的缩放功能,届时世界内玩家模型的目标视角球高度将始终与预制体高度一致。
模型缩放的原理
模型缩放等同于更改玩家模型根变换的 "localScale(本地缩放)" 数值。此类缩放是强制性的。玩家除了利用模型缩放相关的 Udon 函数外,无法通过其他方式覆盖模型的根变换缩放。
每当模型的缩放数值发生变化时(例如切换或重置/重新加载当前模型),将会重新定位您的视角球高度,并重新定位一些内部组件(例如您的声音位置)。
定位完成后,您当前的视角球高度将作为 EyeHeightAsMeters 参数自动同步给每个远端玩家,精度为 3 个小数点。而当远端玩家接收到新的EyeHeightAsMeters参数时,会在短时间内将对应模型平滑缩放到目标视角球高度。
当您在模型菜单中旋转模型高度转盘时,您的模型只在本地客户端的镜子中进行预览性的缩放。在确认目标缩放高度后,新的视角球高度将立即应用于您的玩家模型,并作为 EyeHeightAsMeters 参数同步给远端玩家。