Skip to main content

SPS (Super Plug Shader)

SPS(Super Plug Shader)是专为 VRChat 设计的自由变形着色器,可通过网格朝向目标实现动态形变。作为DPS(Raliv Dynamic Penetration System)与TPS(Thry Penetration System in Poiyomi Pro)的完全向后兼容替代方案,SPS提供更优的稳定性和扩展性。

核心优势

  • 完全开源免费

  • 通用适配性
    ✔️ 支持绑定(rigged)与非绑定(un-rigged)网格
    ✔️ 形变过程中兼容Blendshape动画控制
    ✔️ 动态更新:每周高频迭代优化

  • 技术优势
    ✔️ 消除传统方案导致的拉伸形变问题
    ✔️ 原生适配Avatar Scaling与Mesh Scaling系统
    ✔️ 深度感知Blendshape参数化配置
    ✔️ 无缝兼容主流着色器:Poiyomi Toon/Pro 7/8+、liltoon、UTS、Mochie等

如何设置插头(Plug)

(在其他系统中称为“Penetrator”)
  • 确保 VRCFury 是最新版本(持续功能增强与BUG修复)
  • 菜单路径:Tools > VRCFury > SPS > Create Plug
  • 如果您的网格是绑定的(它具有骨骼):
    • 将插头拖动到最靠近应变形区域的“底部”或“底部”的骨骼子集上。
  • 如果您的网格未绑定(无骨骼):
    • 将插头拖动到期望变形的游戏对象子集。
  • 关键约束:Plug在编辑器内需保持直线展开状态(此为形变基准方向)

    • 若需静态弯曲,可通过动画器实现

  • 放置插头使其位于应变形区域的“底部”
  • 旋转插头使其弯曲端对齐形变区域尖端方向

DPS用户升级

  1. 找到场景内DPS对象
  2. 删除其Light组件

  3. 将材质着色器切换为Raliv/PenetratorStandard(或任意目标着色器)

TPS用户升级

  • 在Poiyomi材质面板中禁用Penetrator功能复选框

如何设置插槽(Socket)

(在其他系统中称为“Orifice”)
  • 确保 VRCFury 是最新的(我们一直在添加功能并修复错误!
  • 菜单路径:Tools > VRCFury > SPS > Create Socket
  • 将新对象拖动到要附加到的骨骼上
  • 定位至插件预期接触点

  • 调整旋转使箭头指向内部空间

已经有 DPS 或 TPS Orifice?

  • DPS/TPS插槽可直接保留(SPS完全向后兼容)

  • 自动化升级工具:Tools > VRCFury > SPS > Upgrade Legacy Haptics

在 Unity 编辑器中测试

  • 安装 Gesture Manager 插件(VCC → Manage Your Project)

  • 创建测试用 Socket 对象(无需绑定至Avatar)

  • 若使用未升级的DPS插件,需通过以下路径添加触点:Tools > VRCFury > SPS > Upgrade Legacy Haptics

  • 确认Unity编辑器顶部3D视图的 场景照明按钮(灯泡图标) 处于启用状态

  • 进入 Play Mode(播放模式)

  • 选择场景中的 Gesture Manager 对象(若无该对象,通过以下路径生成:Tools > Gesture Manager Emulator

  • 在Gesture Manager的 SPS子菜单 中启用目标Socket

  • 四处移动一下,观察观察( •̀ ω •́ )✧

注意:编辑器偶现Bug可能导致Socket禁用后Plug仍持续形变,此问题不会影响游戏内效果。

如何移动/重命名生成的 “SPS” 菜单

您创建的每个SPS Socket会自动生成游戏内菜单开关,用于控制其启用/禁用状态。若需调整菜单位置或名称,按以下步骤操作:

  1. 选择Avatar根对象

    • 在层级视图(Hierarchy)中选中包含 VRC Avatar Descriptor 的Avatar根节点

  2. 添加配置组件

    • 在属性面板(Inspector)底部:

      • 点击 Add Component → 搜索并添加 SPS Options 组件

  3. 设置菜单路径

    • 在组件的 Menu Path 输入框内填写目标路径(默认值:SPS

    • 子菜单示例

      Props/SPS  // 将菜单置于"Props"分类下  

使用切换或其他动画禁用 SPS Plug 形变

基础开关控制

  1. 添加开关组件

    • 在任意位置添加组件:VRCFury | Toggle → Enable SPS

  2. 绑定Plug对象

    • 将需要控制的 SPS Plug 组件拖入该Toggle的 Target 字段

  3. 功能验证

    • 通过菜单开关即可实时启用/禁用该Plug的形变

高级动画控制

  • 在动画剪辑(Animation Clip)中直接对Plug组件的 Animated Toggle 属性添加关键帧

  • 适用场景

    • 仅在特定动作/时间轴区间激活形变

    • 结合Blendshape实现多条件触发

缩放 SPS 插头

在动画中作 SPS 插件的方式存在一些限制。

✔️ 对Plug的 父级对象 进行 均匀缩放动画
✔️ 对Plug渲染器的Blendshape制作动画(需满足以下条件):

  • Blendshape名称已添加到Plug组件的 Animatable Blendshapes 列表

  • 不改变Plug长度
    ✔️ 在编辑器的默认姿态下自由调整位置/旋转/缩放

禁止的操作

❌ 对Plug渲染器骨骼的位置/旋转/非均匀缩放制作动画(除非骨骼是Plug的父级)
❌ 使用影响Plug长度的Blendshape

那么,如何在不增加其周长的情况下“加长”动画中的插件呢?

  1. 在动画中 均匀放大 整个Plug网格

  2. 创建专用Blendshape 缩小半径 以抵消周长增加
    → 确保Blendshape 仅影响径向尺寸,不改变长度

注: 上述限制仅在Plug的 Animated Toggle 启用时生效。若关闭该选项,可完全自由控制Plug的形变与动画。

故障 排除

Plug 似乎在编辑器中工作,但在游戏中不变形?

确保您已在 VRChat 设置菜单中启用 Avatar Self Interact

插头在游戏中适用于自身虚拟形象上的插槽,但不适用于其他虚拟形象上的插槽?

确保其他玩家已允许与您交互。当您的菜单打开时,您应该会在他们的名片上看到一只黄色的手。

您还应该验证它们是否确实在 SPS 菜单中启用了插槽。验证他们的插槽是否适用于其他人,以确定问题是在您这边还是他们这边。

变形有效,但深度动画/声音不起作用?

存储在世界中的插头和插槽,以及其他虚拟形象上未升级的 DPS(不是 SPS)无法触发深度动画,因为它们不包含触点。 让其他玩家安装 VRCFury 并运行Tools > VRCFury > SPS > Upgrade Legacy Haptics以升级其 DPS。 对于存储在世界中的对象,没有解决这个问题的方法。

其他问题?

请在 discord 上询问!