title: 溶解穿脱开关系统 created: 2026-05-09 updated: 2026-05-09 type: guide tags: [vrchat, avatar, dissolve, toggle, shader]
溶解穿脱开关系统
用 Dissolve 动画实现内衣/内裤/套装穿脱,核心知识体系
概述
本系统实现以下功能:
- 🔘 内衣穿脱开关 — Bool 参数 + Dissolve 材质动画
- 🔘 内裤穿脱开关 — Bool 参数 + Dissolve 材质动画
- 🔘 整套穿透开关 — Int 参数或多个 Bool 合并
- 👕 多套衣服更换 — SubMenu + Int/Bool 参数
技术栈
| 组件 | 说明 |
|---|---|
| Shader | Poiyomi Toon Shader / liltoon(需支持 Dissolve) |
| Avatar SDK | VRChat Avatars 3.0 |
| 参数系统 | VRC Expression Parameters + Expression Menu |
| 状态机 | Animator Controller (FX Layer) |
溶解动画原理
Dissolve 核心算法
// Dissolve 核心原理
alpha = clip(noise_texture - progress * threshold)
// progress: 0.0 → 1.0
// - 0.0 = 完全显示
// - 1.0 = 完全溶解消失
视觉效果
progress = 0.0 progress = 0.3 progress = 0.7 progress = 1.0
████████████ ██████░░░░ ██░░░░░░░░ ░░░░░░░░░░
(完全显示) (溶解中) (大部分消失) (完全消失)
支持的 Shader
| Shader | Dissolve 支持 | Stars |
|---|---|---|
| Poiyomi Toon Shader | ✅ 内置 | 1614 ⭐ |
| liltoon | ✅ 内置 | 1435 ⭐ |
| Standard Shader | ⚠️ 需手写 | - |
穿脱开关架构
核心组件
1. VRC Avatar Parameter Driver
将 VRC Int 参数值映射到 Animator Bool:
2. Animator Bool 参数
| 参数名 | 类型 | 用途 |
|---|---|---|
Bra |
Bool | 内衣开关(true=显示) |
Shorts |
Bool | 内裤开关(true=显示) |
AllOff |
Bool | 整套穿透 |
| --- | ||
Bra |
Bool | 内衣开关(true=显示) |
Shorts |
Bool | 内裤开关(true=显示) |
AllOff |
Bool | 整套穿透 |
控制材质属性实现 Dissolve:
- _DissolveProgress (Poiyomi/liltoon)
- alpha (Standard Shader)
状态机设计
┌─────────────┐ Bra=true ┌─────────────┐
│ Bra_ON │ ←─────────→ │ Bra_OFF │
│ dissolve=0 │ │ dissolve=1 │
└─────────────┘ Bra=false └─────────────┘
转换设置: - Has Exit Time = false - Conditions: Bool "Bra" = true/false
切换系统类型
参考项目:ImLeXz/2-for-2-Toggle-System-VRC-Avatars-3.0-
Individual Toggle(独立开关)
可以同时开启多个:
Group Toggle(组切换)
同组只有一个可激活:
On To Off Toggle(默认ON)
默认显示,点击消失:
参数设计
方案A:独立 Bool(简单)
方案B:Int 节省参数(推荐)
// OutfitMode: 套装模式
// 0 = 全套装(Bra=true, Shorts=true)
// 1 = 仅内衣(Bra=true, Shorts=false)
// 2 = 全裸/穿透(Bra=false, Shorts=false)
Animator Layer 分工
| Layer | 用途 | 镜子里运行 |
|---|---|---|
| Action | 同步逻辑、VRC Avatar Parameter Driver | ❌ |
| FX | Dissolve 动画 | ✅ |
同步机制
问题:Animator 参数不网络同步,晚加入的玩家看不到切换状态
解决:定时同步(默认10秒)
同步系统: 1. 定时触发 VRC Avatar Parameter Driver 2. Driver 读取当前 Bool 状态 3. 写入对应 Int 参数到网络 4. 其他客户端收到同步 ```## 相关页面