Files
2026-01-22 16:27:05 +08:00

10 KiB
Raw Permalink Blame History

火山波形系统设计文档

一、设计理念

波形的叙事意义

┌─────────────────────────────────────────────────────────────────────┐
│                        火山的滤波器处理流程                          │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   情绪波形(悲伤/焦虑)  ──┐                                          │
│   ▼ 低频、沉重、颤抖       │                                         │
│                            │                                        │
│                            ▼                                        │
│                      ┌──────────┐                                   │
│                      │ 限幅检查  │ ← 通过                             │
│                      └────┬─────┘                                   │
│                            │                                        │
│                            ▼                                        │
│                      ┌──────────┐                                   │
│                      │ 屏蔽检查  │ ← 通过                             │
│                      └────┬─────┘                                   │
│                            │                                        │
│                            ▼                                        │
│                      ┌──────────┐                                   │
│                      │【修改器】 │ ← 悲伤 → 亢奋(笑话) ⚠️              │
│                      └────┬─────┘                                   │
│                            │                                        │
│   逻辑波形(简单方波)  ──┐  │                                          │
│   ▼ 规则、清晰、可预测    │  │                                        │
│                          │  │                                        │
│                          ▼  ▼                                        │
│                      ┌──────────┐                                   │
│                      │   混合   │                                    │
│                      └────┬─────┘                                   │
│                            │                                        │
│                            ▼                                        │
│               滤波器输出(逻辑 + 笑话波形)                            │
│               ▼ 包含逻辑成分,但情绪被篡改                            │
│                            │                                        │
│                            ▼                                        │
│               表达模块(调用高频笑话频段)                             │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

波形类型说明

波形ID 名称 视觉特征 叙事意义
emotion 情绪波形 低频、缓慢起伏、带颤抖和下沉感 悲伤/焦虑/恐惧的情绪
logic 逻辑波形 简单方波、规则清晰 理性思考、逻辑判断
joke 笑话波形 高频、尖锐、快速起伏 被修改后的亢奋情绪
filter_output 滤波器输出(异常) 逻辑骨架 + 笑话波形 调用笑话表达的异常信号
normal_output 滤波器输出(正常) 逻辑 + 情绪的和谐混合 正常的表达信号

比对逻辑

波形比对的核心设计:

滤波器输出(filter_output) vs 逻辑(logic)
→ 匹配成功 ✓
→ 因为滤波器输出包含逻辑成分

滤波器输出(filter_output) vs 情绪(emotion)
→ 匹配失败 ✗
→ 因为原始情绪已被修改器篡改成笑话

正常输出(normal_output) vs 逻辑/情绪
→ 匹配成功 ✓
→ 修复后的输出包含两种成分

二、Yarn命令参考

基础波形显示

// 显示指定波形
<<show_waveform "emotion">>        // 情绪波形
<<show_waveform "logic">>          // 逻辑波形
<<show_waveform "joke">>           // 笑话波形
<<show_waveform "filter_output">>  // 滤波器输出(异常)
<<show_waveform "normal_output">>  // 滤波器输出(正常)

// 隐藏波形
<<hide_waveform>>

// 完全隐藏设备(滑出)
<<hide_waveform_device>>

波形变换

// 展示情绪被修改成笑话的过程
<<transform_waveform "emotion" "joke" 1.5>>

波形比对(自动判断)

// 滤波器输出 vs 逻辑 → 自动匹配成功
<<compare_waveforms "filter_output" "logic">>

// 滤波器输出 vs 情绪 → 自动匹配失败
<<compare_waveforms "filter_output" "emotion">>

步进模式(展示完整滤波器流程)

// 方式一:自动步进(推荐)
<<start_step_mode>>
<<execute_next_step>>  // Step 1: 逻辑输入
<<execute_next_step>>  // Step 2: 情绪输入
<<execute_next_step>>  // Step 3: 限幅检查
<<execute_next_step>>  // Step 4: 屏蔽检查
<<execute_next_step>>  // Step 5: 修改器执行(关键!)
<<execute_next_step>>  // Step 6: 混合输出
<<hide_step_progress>>

// 方式二:手动控制
<<show_step_progress 0 6>>
<<update_step_progress 1>>
// ... 自定义逻辑
<<hide_step_progress>>

RAM报错效果

<<show_error_flood 8 0.25>>  // 8个错误,0.25秒间隔
<<clear_errors>>

三、Unity配置指南

1. 创建波形配置

  1. 在Project窗口右键
  2. 选择 Create > AibisDream > Waveform > Waveform Config
  3. 配置各波形的颜色和参数

2. 设置波形检测器

场景层级结构:
WaveformDetector (GameObject)
├── DeviceContainer (Transform - 用于滑动动画)
│   ├── Background (可选 - 设备背景)
│   ├── PrimaryWaveform (带LineRenderer和WaveformRenderer)
│   │   └── GlowPoint (SpriteRenderer - 发光点)
│   ├── SecondaryWaveform (带LineRenderer和WaveformRenderer)
│   │   └── GlowPoint
│   ├── TertiaryWaveform (带LineRenderer和WaveformRenderer,用于步进模式)
│   │   └── GlowPoint
│   ├── StepProgressPanel (步进UI)
│   │   ├── StepText (Text)
│   │   ├── StepSlider (Slider)
│   │   └── StepDescriptionText (Text)
│   └── CompareResultPanel
│       └── ResultText (Text)
└── CanvasGroup (用于淡入淡出)

3. 组件配置

WaveformDetector 组件

属性 说明
Waveform Config 拖入创建的 WaveformConfig
Device Container DeviceContainer Transform
Primary/Secondary/Tertiary Waveform 三个波形渲染器
Hidden Position 隐藏时的位置(屏幕外)
Shown Position 显示时的位置
Compare Position 1/2 比对时两个波形的位置
Step Input/Process/Output Position 步进模式的位置

WaveformRenderer 组件

属性 说明
Wave Type 波形类型(运行时会被配置覆盖)
Wave Height 波形高度
Wave Width 波形宽度
Wave Speed 波形滚动速度
Resolution 线条分辨率(推荐200
Line Width 线条粗细
Show Glow Point 是否显示发光点

四、波形视觉设计建议

颜色方案

情绪波形(悲伤):
- Primary: #4D66CC (深蓝)
- Secondary: #804DB3 (紫)

逻辑波形:
- Primary: #33CC66 (绿)
- Secondary: #4DE680 (亮绿)

笑话波形(亢奋):
- Primary: #FF9933 (橙)
- Secondary: #FF6666 (红橙)

滤波器输出(异常):
- Primary: #FF804D (橙红)
- Secondary: #CC994D (暗橙)

正常输出:
- Primary: #66B3CC (青)
- Secondary: #80CC99 (青绿)

动画建议

  1. 情绪波形: 慢速(0.8),低频,带有不规则颤抖
  2. 逻辑波形: 中速(2.0),规则方波
  3. 笑话波形: 快速(4.0),高频,尖锐
  4. 变换动画: 1.5秒,带抖动效果
  5. 比对动画: 搜索+靠近+结果(成功闪烁/失败抖动)

五、典型使用场景

场景1: 初次检查滤波器输出

医生: 让我看看滤波器输出...
<<show_waveform "filter_output">>
医生: 这个波形看起来很奇怪,让我和逻辑模块对比一下。
<<compare_waveforms "filter_output" "logic">>
医生: 逻辑部分是对的...再和情绪模块对比。
<<compare_waveforms "filter_output" "emotion">>
医生: 情绪波形完全对不上!问题出在这里。
<<hide_waveform_device>>

场景2: 步进查看滤波器流程

医生: 让我进入步进模式,看看滤波器内部发生了什么。
<<start_step_mode>>

医生: 首先是逻辑模块输入...
<<execute_next_step>>
医生: 检测通过,没问题。

医生: 然后是情绪模块输入...
<<execute_next_step>>
医生: 好的,情绪信号进来了。

医生: 限幅器检查...
<<execute_next_step>>
医生: 幅度正常。

医生: 屏蔽器检查...
<<execute_next_step>>
医生: 没有需要屏蔽的内容。

医生: 现在是修改器...
<<execute_next_step>>
医生: 等等!情绪波形被修改了!原本的悲伤变成了...亢奋?

医生: 最后混合输出...
<<execute_next_step>>
医生: 所以这就是为什么他不停讲笑话。悲伤的情绪被转换成了笑话。

<<hide_step_progress>>

场景3: 展示修改过程

医生: 让我展示一下情绪是如何被修改的。
<<show_waveform "emotion">>
医生: 这是原本的情绪波形,你能感受到那种悲伤和焦虑吗?
<<transform_waveform "emotion" "joke" 2.0>>
医生: 修改器把它变成了这样——一个亢奋的、尖锐的笑话信号。
<<hide_waveform_device>>