一个小工具,通过接受 VRChat Avatar 的 OSC 消息,使用 WebSocket 协议联动郊狼 DG-LAB 3.0,达到游戏中 Avatar 被别人/自己触摸就会被郊狼电的效果。
我们的 VRChat 群组:ShockingVRC https://vrc.group/SHOCK.2911
Caution
您必须阅读并同意 安全须知 (Safety Precautions in English) 后才可以使用本工具!
- 🎮 多种工作模式:距离、电击、触摸、Combo 组合
- 📈 自定义强度曲线:可视化编辑 OSC 参数到输出强度的映射
- 🧪 波形预设系统:导入/预览 DG-LAB 社区波形,实时波形测试
- 🔄 实时 WebSocket 推送:波形可视化、设备状态实时同步
- ⚙️ Web 管理界面:所有配置通过浏览器完成,无需手动编辑文件
- 🔁 热重载:修改配置后自动生效,设备连接不断开
- 📦 自动更新:一键检测并下载 GitHub 最新版本
- 前往 Releases 下载最新版本
- 解压并运行
shocking_vrchat.exe,浏览器将自动打开管理页面 - 在管理页面的「参数管理」中添加 OSC 参数(或使用初始设置向导)
- 在「强度设置」中调整强度上限(初始默认值很低,请逐步提高)
- 启动 DG-LAB 3.0 APP,使用「Socket 控制」功能扫描页面上的二维码
- 确认 Windows 防火墙弹窗中选择「允许」
- 进入 VRChat,享受!
- 根据与触发区域中心的距离线性控制波形强度
- 越接近中心,强度越强
- 支持自定义强度曲线(非线性映射)
- 支持波形预设纹理
- 触发后电击固定时长(默认 2 秒)
- 持续触碰时延续到触碰离开后的固定时长
- 支持自定义电击波形
- 根据触摸动作的变化率控制波形强度
- 支持多阶导数:速度(1阶)、加速度(2阶)、急动度(3阶)
- 适合持续抚摸场景
- 短触发 → 电击(一激灵)
- 持续触摸 → 触摸模式(柔和)
- 可配置切换时长
程序启动后自动打开 http://127.0.0.1:8800,所有功能均可在网页中操作:
| 页面 | 功能 |
|---|---|
| Dashboard | 实时波形、设备状态、OSC 事件监控 |
| 参数管理 | 添加/编辑 OSC 参数、分配工作模式 |
| 强度设置 | 调节强度上限(自动保存、±1 微调) |
| 模式 > 电击 | 电击时长、波形预设、触发阈值 |
| 模式 > 距离 | 波形参数、触发阈值、强度曲线编辑 |
| 模式 > 触摸 | 导数阶数、波形参数 |
| 模式 > Combo | 组合逻辑配置 |
| 波形测试 | A/B 通道实时波形测试 |
| 设置 | 端口配置、配置导入/导出、软件更新 |
程序使用两个 YAML 配置文件(首次运行自动生成):
settings-v0.2.yaml— 基础配置(参数、模式、强度上限)settings-advanced-v0.2.yaml— 进阶配置(端口、日志、mode_config)
推荐通过 Web 界面管理配置,无需手动编辑文件。配置修改后自动热重载。
dglab3:
channel_a:
avatar_params:
- /avatar/parameters/pcs/contact/enterPass
- /avatar/parameters/Shock/*
mode: distance
strength_limit: 100
channel_b:
avatar_params:
- /avatar/parameters/lms-penis-proximityA*
mode: shock
strength_limit: 100
version: v0.2SERVER_IP: null # null = 自动检测,或手动填写 IP
dglab3:
channel_a:
mode_config:
distance:
freq_ms: 10
wave_preset: null # 波形预设名称
wave_scale: 1.0 # 波形强度系数
texture_floor: 0.0 # 底噪(0=允许静默)
shock:
duration: 2
wave_preset: null
wave_scale: 1.0
touch:
wave_preset: null
wave_scale: 1.0
n_derivative: 1 # 导数阶数
combo:
enabled: false
shock_threshold: 0.9
shock_hold_ms: 200
trigger_range:
bottom: 0.0
top: 0.8
channel_b:
mode_config:
# 与 channel_a 结构相同
log_level: INFO
osc:
listen_host: 127.0.0.1
listen_port: 9001
web_server:
listen_host: 127.0.0.1
listen_port: 8800
ws:
listen_host: 0.0.0.0
listen_port: 28846
master_uuid: (自动生成)
version: v0.2- PCS (Poiyomi Contact System)
/avatar/parameters/pcs/contact/enterPass— 最常用,触发入口/avatar/parameters/pcs/sps/pussy|ass|boobs|mouth— 指定部位/avatar/parameters/pcs/smash-intensity— 碰撞强度
- LMS
/avatar/parameters/lms-penis-proximityA*— LMS 1.2/avatar/parameters/lms/contact/proximity— LMS 1.3
- 支持通配符
*,如/avatar/parameters/Shock/* - 支持 float (0-1)、int、bool 类型
程序内置自动更新功能:
- 打开设置页面,自动检查 GitHub Releases 最新版本
- 如有更新,点击「下载并更新」
- 程序自动下载、替换文件并重启
配置文件和波形预设不会被覆盖。
CI 使用 GitHub Actions 自动构建(push v* tag 触发),产出两个版本:
| 产物 | 说明 |
|---|---|
shocking_vrchat_windows_x64.zip |
PyInstaller 目录版(推荐) |
shocking_vrchat_windows_x64_onefile.zip |
Nuitka 单文件版 |
本地构建:
pip install -r requirements.txt pyinstaller
pyinstaller --clean -y shocking_vrchat.spec产物在 dist/shocking_vrchat/ 目录。
文件结构(全部外部,不编译进 exe):
shocking_vrchat.exe
wave_presets/*.json ← 波形预设
dg-lab/*.pulse ← 原始 pulse 源文件
settings-v0.2.yaml ← 基础配置(运行时生成)
settings-advanced-v0.2.yaml ← 进阶配置
有。按一下郊狼的任意一侧肩键按钮,A/B 通道强度会被设置为 0。程序检测到后将不再自动跟随强度上限。还原需要在手机上点击 "+" 键 +1 即可恢复。
- 确认手机和电脑在同一网络(手机不能用流量)
- 检查二维码页面显示的 IP 是否正确
- IP 错误时在进阶配置
SERVER_IP手动填写 - 确认 Windows 防火墙允许本程序
使用 osc-repeater 分发 OSC 数据到多个程序。详细步骤见 Wiki 或进阶配置文件中的说明。
- VRChat Action Menu > Options > OSC > Reset Config
- 检查 VRChat 启动参数中的 OSC 端口是否匹配
- 重启电脑(VRChat 已知 Bug)
- 退出已知冲突程序(如酷狗音乐占用 UDP 9000)
实际输出 = min(程序强度设置, 郊狼APP被控上限) × 波形纹理(0-100%)
程序通过波形信号控制实际体感,即便通道强度显示为上限值,实际触发强度由 OSC 距离值决定。
本仓库 dg-lab/ 和 wave_presets/ 目录中的波形预设文件仅供学习与技术研究使用。数据来源于 DG-LAB 社区公开分享,本项目不主张所有权。如有侵权请通过 Issue 联系,将第一时间删除。
- DG-LAB-OPENSOURCE — 赞美 DG-LAB 的开源精神!
- 常见参数部分感谢:ichiAkagi
为了您能健康地享受产品带来的乐趣,请在使用前确保已阅读并理解本安全须知的全部内容。 错误使用本产品可能对您或者他人造成伤害,由此产生的责任将由您自行承担。
本产品为情趣用品,请保证在安全、清醒、自愿的情况下使用,并将其放置于未成年人接触不到的地方。
- 佩戴心脏起搏器,或体内有电子/金属植入物
- 癫痫、哮喘、心脏病、血栓及其他心脑血管疾病患者
- 皮肤敏感、皮炎及其他皮肤疾病患者
- 有出血倾向性疾病的患者
- 未成年人、孕妇、知觉异常及无表达意识能力的人群
- 无法及时操作产品的人群
- 胸部、心脏投影区前后左右
- 头部、面部、眼部、口腔、颈部及颈动脉窦附近
- 皮肤破损、水肿、扭伤、拉伤、炎症/感染病灶处
- 同一部位连续使用不超过 30 分钟
- 移动/更换电极前必须先停止输出
- 严禁在驾驶或操作机器时使用
- 建议使用频率变化且间歇休息的波形