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)
- 确保 VRCFury 是最新版本(持续功能增强与BUG修复)
菜单路径
:Tools > VRCFury > SPS > Create Plug- 如果您的网格是绑定的(它具有骨骼):
- 将插头拖动到最靠近应变形区域的“底部”或“底部”的骨骼子集上。
- 如果您的网格未绑定(无骨骼):
- 将插头拖动到期望变形的游戏对象子集。
-
关键约束:Plug在编辑器内需保持直线展开状态(此为形变基准方向)
-
若需静态弯曲,可通过动画器实现
-
- 放置插头使其位于应变形区域的“底部”
-
旋转插头使其弯曲端对齐形变区域尖端方向
DPS用户升级
- 找到场景内DPS对象
删除其
Light
组件将材质着色器切换为
Raliv/PenetratorStandard
(或任意目标着色器)
TPS用户升级
在Poiyomi材质面板中禁用
Penetrator
功能复选框
如何设置插槽(Socket)
- 确保 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会自动生成游戏内菜单开关,用于控制其启用/禁用状态。若需调整菜单位置或名称,按以下步骤操作:
-
选择Avatar根对象
-
在层级视图(Hierarchy)中选中包含
VRC Avatar Descriptor
的Avatar根节点
-
-
添加配置组件
-
在属性面板(Inspector)底部:
-
点击
Add Component
→ 搜索并添加SPS Options
组件
-
-
-
设置菜单路径
-
在组件的
Menu Path
输入框内填写目标路径(默认值:SPS
) -
子菜单示例:
Props/SPS // 将菜单置于"Props"分类下
-
使用切换或其他动画禁用 SPS Plug 形变
基础开关控制
-
添加开关组件
-
在任意位置添加组件:
VRCFury | Toggle → Enable SPS
-
-
绑定Plug对象
-
将需要控制的
SPS Plug
组件拖入该Toggle的 Target 字段
-
-
功能验证
-
通过菜单开关即可实时启用/禁用该Plug的形变
-
高级动画控制
-
在动画剪辑(Animation Clip)中直接对Plug组件的
Animated Toggle
属性添加关键帧 -
适用场景:
-
仅在特定动作/时间轴区间激活形变
-
结合Blendshape实现多条件触发
-
缩放 SPS 插头
在动画中作 SPS 插件的方式存在一些限制。
✔️ 对Plug的 父级对象 进行 均匀缩放动画
✔️ 对Plug渲染器的Blendshape制作动画(需满足以下条件):
-
Blendshape名称已添加到Plug组件的
Animatable Blendshapes
列表 -
不改变Plug长度
✔️ 在编辑器的默认姿态下自由调整位置/旋转/缩放
禁止的操作
❌ 对Plug渲染器骨骼的位置/旋转/非均匀缩放制作动画(除非骨骼是Plug的父级)
❌ 使用影响Plug长度的Blendshape
那么,如何在不增加其周长的情况下“加长”动画中的插件呢?
-
在动画中 均匀放大 整个Plug网格
-
创建专用Blendshape 缩小半径 以抵消周长增加
→ 确保Blendshape 仅影响径向尺寸,不改变长度
注: 上述限制仅在Plug的
Animated Toggle
启用时生效。若关闭该选项,可完全自由控制Plug的形变与动画。
故障 排除
Plug 似乎在编辑器中工作,但在游戏中不变形?
确保您已在 VRChat 设置菜单中启用 Avatar Self Interact
。
插头在游戏中适用于自身虚拟形象上的插槽,但不适用于其他虚拟形象上的插槽?
确保其他玩家已允许与您交互。当您的菜单打开时,您应该会在他们的名片上看到一只黄色的手。
您还应该验证它们是否确实在 SPS 菜单中启用了插槽。验证他们的插槽是否适用于其他人,以确定问题是在您这边还是他们这边。
变形有效,但深度动画/声音不起作用?
存储在世界中的插头和插槽,以及其他虚拟形象上未升级的 DPS(不是 SPS)无法触发深度动画,因为它们不包含触点。 让其他玩家安装 VRCFury 并运行Tools > VRCFury > SPS > Upgrade Legacy Haptics
以升级其 DPS。 对于存储在世界中的对象,没有解决这个问题的方法。
其他问题?
请在 discord 上询问!
No Comments