27 KiB
name, description, type, originSessionId
| name | description | type | originSessionId |
|---|---|---|---|
| Live 轨道全览 | UmaViewer Live 时间轴全部103条轨道的ID、名称、作用、实现状态及已知Bug(2026-05-07核查) | reference | 319ae839-0292-4b1e-80de-2f3c91b1f40e |
Live 轨道全览(LiveTimelineKeyDataType 枚举,ID 0–102)
数据来源:LiveTimelineDefine.cs 枚举 + WorkSheet CS字段核查 + scan_full.py全量扫描(58首歌,2026-05-07)+ Director/Control代码审查
术语:下文「WorkSheet 有/无 XXX 字段」指的是游戏 bundle 的 TypeTree,不是本仓库的 C#
LiveTimelineWorkSheet类。两者是分开的:postFilmKeys、radialBlurKeys、tiltShiftKeys、flashPlayerKeys、charaFootLightKeys、MultiLightShadowKeys、lightProjectionList、postFilm1MultiCameraKeys、postEffectDOFKeys在 bundle 里有,在 C# 里都还没声明。覆盖率数字同理——「N/58 首」量的是 bundle 里有没有数据,不代表 C# 收得到。分发层的过滤可能让有数据的轨道照样落空(BgColor1 就是如此,见 ID 8)。
⚠️ 2026-08-04:旧扫描数据不可信,已用新工具全量重测
tools/下的 dump 工具链已重建(见CLAUDE.md)。cutt bundle 自带完整 TypeTree,字段名和 keyframe 数是权威的。全 59 首、70 张 worksheet 共享同一套 schema(128 字段),无版本漂移。重测结果与本文件原有记录冲突严重,下表中带「✅实测」标记的才是可信数据,其余未标记的行仍是旧扫描结论,谨慎对待。两类系统性错误:
- 「WorkSheet无XXX字段」全部是错的 —— 那些字段都存在,而且多数有大量数据(见 ID 26/27/51/52/59/70/77/84/85/98/99)
- 「全0 keyframe空占位」多数是错的 —— RadialBlur/PostFilm/TiltShift/FlashPlayer/CharaFootLight/MultiLightShadow 实测都有真实数据(见 ID 15/39/63/66/72/83)
真正确认为空的只有:
hdrBloomKeys、other4EyeTrackKeys、ScreenCaptureDataList、tailMotionDataList(0/59 首)。复查命令:
~/.venvs/umatools/bin/python3 tools/dump_cutt_typetree.py --fields <songid>;全量表在tools/out/scan_summary.txt。
实现状态图例
- ✅ 完整
- ⚠️ 部分实现(有TODO)
- ⚠️🔇 仅数据(无视觉输出)
- 🔴 Bug(声明但从不触发)
- ❌ 未实现
★ = song 1001 有真实数据(括号内条数)
摄像机 / 基础轨道
| ID | 名称 | 作用 | 状态 | Bug |
|---|---|---|---|---|
| 0 | Timescale | 播放倍速 | ✅ Control内部 | — |
| 1 | CameraPos | 主摄像机位置 | ✅ | — |
| 2 | CameraLookAt | 主摄像机朝向 | ✅ | — |
| 3 | CameraFov | 视野角 | ✅ | — |
| 4 | CameraRoll | 摄像机滚转 | ✅ | — |
| 5 | HandShakeCamera | 手持抖动效果 | ❌ | ✅实测 handShakeCameraKeys 56/59首 / 594 keys |
| 6 | Event | 时间轴触发事件 | ❌ | — |
| 7 | CharaMotionSequence ★(5) | 角色动作序列切换 | ✅ | — |
| 8 | BgColor1 ★(13) | 角色和舞台物件的色调/轮廓/阴影颜色 | ⚠️ | 曾误标 ✅。AlterUpdate_BgColor1 原本用 validBgColorNames 只放行 4 个角色组,其余全丢——实测约 92% 的 key 被丢弃(全语料 43617 keys / 59首,是最大的轨道)。2026-08-04 已拆掉过滤并加舞台分支,舞台侧写 _MulColor0(运行时枚举 shader 确认,每个舞台 shader 都有;_AmbientColor 归 BgColor2,两者是同一 shader 上的独立通道)。song 1177 的 20 组里 16 组已正常写入,仍未解析:BgBL(256 keys)、FollowSpotColor(16)、Shadow(2)、mob_00(2) —— 这 4 个不是物件名,疑为全局通道 |
| 9 | BgColor2 ★(1) | 背景渐变/环境色(两色混合)【15/58首】 | ✅ | 写含 _AmbientColor 属性的舞台材质,颜色 = Lerp(color1, color2, value);color2 恒为白色 |
| 10 | MonitorControl ★(2) | LED舞台屏幕内容控制 | ❌ | ✅实测 monitorControlList 55/59首 / 3911 keys。舞台上的黑色大屏就是它没实现导致的:monitor 材质的 _MainTex/_FadeTex/_FilterTex 三个贴图槽在 bundle 里全未绑定,内容靠运行时喂。字段:dispID / speed / outputTextureLabel / blendFactor / Src·DstBlendMode / RenderQueueNo / LightImageNo / CrossFadeRate / FilterTexScale。内容资源已定位:live/uvmovie/gal_uvmovie_<songid>_<001..017>(图片序列,带 _tex_NN),另有 gal_uvmovie_<songid>_light 对应 LightImageNo。全库 219 个 uvmovie 目录。但 dispID→资源的映射未解:song 1177 的 key 是 dispID=1,却既没有 gal_uvmovie_1177_001,也没有 monitorCamera 数据(monitorCameraPosKeys 0 keys),两条路都不通 |
| 11 | CameraSwitcher | 切换活动摄像机 | ✅ | — |
| 12 | LipSync | 口型同步 | ✅ | — |
| 13 | PostEffectDOF | 景深模糊(单机) | ❌ | ✅实测 postEffectDOFKeys 59/59首 / 3879 keys。URP 有内置 DepthOfField,属路径 A |
| 14 | PostEffectBloomDiffusion | 泛光扩散(单机) | ❌ | ✅实测 postEffectBloomDiffusionKeys 59/59首 / 1969 keys |
| 15 | RadialBlur | 径向运动模糊(单机) | ❌ | ✅实测 radialBlurKeys 59/59首 / 1667 keys(单曲最多95)。旧记录「全部0 keyframe」是错的 |
| 16 | CameraLayer | 摄像机渲染层遮罩 | ❌ | ✅实测 cameraLayerKeys 58/59首 / 3306 keys |
| 17 | Projector ★(4) | 舞台投影仪(gobo图案) | ❌ | — |
角色表情 / 动作
| ID | 名称 | 作用 | 状态 | Bug |
|---|---|---|---|---|
| 18 | FacialFace | 面部整体表情 | ✅ AlterUpdate_FacialData | — |
| 19 | FacialMouth | 嘴部表情 | ✅ | — |
| 20 | FacialCheek | 脸颊表情 | ✅ | — |
| 21 | FacialEye | 眼部表情 | ✅ | — |
| 22 | FacialEyebrow | 眉毛 | ✅ | — |
| 23 | FacialEyeTrack | 眼球追踪目标 | ✅ | — |
| 24 | FacialEar | 耳部动画 | ✅ | — |
| 25 | FacialEffect | 表情叠加特效 | ✅ | — |
| 26 | FacialNoise | 表情随机扰动 | ❌ | ✅实测 facialNoiseKeys 存在,50/59首 / 127 keys。旧记录「无字段」是错的 |
| 27 | CharaMotionNoise | 动作随机扰动 | ❌ | ✅实测 charaMotionNoiseKeys 存在,59/59首 / 135 keys。旧记录「无字段」是错的 |
| 28 | FormationOffset | 角色队形位置偏移 | ✅ | — |
| 29 | Animation ★(1) | GameObject Animation组件序列 | ❌ | ✅实测 animationList 39/59首 / 1575 keys(单曲最多218),比 ★(1) 高得多 |
| 30 | TextureAnimation | 材质纹理帧动画 | ❌ | — |
舞台物件
| ID | 名称 | 作用 | 状态 | Bug |
|---|---|---|---|---|
| 31 | Transform | 舞台物件位移/旋转/缩放 | ✅ StageController | — |
| 32 | Renderer | 舞台Renderer启用/禁用 | ❌ | — |
| 33 | Object ★(10) | 舞台GameObject激活/隐藏**+ 位移** | ✅ StageController | 2026-08-04 修了两个静默失效:① 组名可能是 _stageObjectUnits 的单元名而非 GameObject 名(live10149 的 neonsign 就是 unit,底下挂 3 个子对象;没有任何 GameObject 叫 neonsign,整条轨道此前从不触发,灯牌不会从吊顶降下);② OffsetType 字段分发层一直在填但 UpdateObject 从不读,Add 语义被当绝对坐标写,物件被挪到父物体原点。现按 Direct/Add 分别处理,Add 在物件原始 local TRS 上叠加 |
| 34 | Audience ★(12) | 观众人群动画参数 | ❌ | — |
| 35 | Props | 舞台道具激活控制 | ❌ | ✅实测 propsList 28/59首 / 1940 keys(单曲最多567) |
| 36 | PropsAttach | 角色附着道具 | ❌ | ✅实测 propsAttachList 28/59首 / 298 keys |
灯光 / 特效
| ID | 名称 | 作用 | 状态 | Bug |
|---|---|---|---|---|
| 37 | VolumeLight ★(1) | 体积光/SunShafts | ⚠️🔇 | 无SunShafts组件,仅数据。✅实测 volumeLightKeys 58/59首 / 2048 keys |
| 38 | HdrBloom | HDR泛光强度/阈值 | ⚠️🔇 | 0/58首有数据,但已经实现了(Director 有 handler,走 URP Bloom)→ 是本仓库里的死代码,建议删。song 1177 实测 hdrBloomKeys 为空 |
| 39 | PostFilm | 全屏后期叠加(晕影/颜色/UV电影) | ⚠️🔇 | ✅实测三字段全有大量数据:postFilmKeys 59/59首6689 keys、postFilm2Keys 59/59首7290 keys、postFilm3Keys 59/59首6240 keys(song 1177 为 100/161/87)。旧记录「全部0 keyframe」是错的。2026-08-05 已完成数据层:数据类字段按 TypeTree 顺序重排并补齐 5 个 BlinkLight*、新增 LiveTimelineKeyPostFilmDataList、WorkSheet 三字段、AlterUpdate_PostFilm 分发与插值、PostFilmUpdateInfo、PostFilmRendererFeature + Resources/Shaders/PostFilm.shader。渲染层默认关闭(PostFilmRendererFeature._enableRendering = false):song 1177 的 100 个 key 全是 Vignette 变体,而 filmOptionParam(取值如 (0.2,0.05)/(0,0.05)/(0.2,0.25))的几何语义无法从资源中还原 —— 游戏自己的 PostFilm shader 不在 shader bundle 里(499 个 shader 按名字和属性签名都搜过),应在 app 本体的 resources.assets。要继续做只能对着参考视频标定 Width/Strength 两个系数 |
| 40 | Fade | 场景淡入淡出 | ❌ | ✅实测 fadeKeys 59/59首 / 243 keys。量小但覆盖全 |
| 41 | Particle ★(3) | 粒子系统发射速率 | ✅ | — |
| 42 | ParticleGroup ★(3) | 粒子组闪烁速率(双速率曲线) | ✅ | — |
| 43 | WashLight | 洗光灯 SetActive+颜色亮度 | ⚠️ | RaycastDistance/CameraProjectionSide/MulColor0未使用。低优先级:song 1177 仅 1 组 11 keys,真正的"洗光"效果由 ID 45 的 *_wash_* 组承担。字段名 WashLightList(大写 W)已用 A/B 探针确认;上游 katboi01 写作 washLightList,永远填不上,其 WashLightController 是死代码 |
| 44 | Laser | 激光灯变换+SetActive | ⚠️ | blinkRate/blinkOffset/rotateFollowCamera/RaycastDistance未实现。song 1177 该轨道为空 |
| 45 | BlinkLight ★(9) | 频闪灯亮灭周期/颜色/亮度 | ⚠️ | 灯光线最大权重:全语料 19420 keys / 57首;song 1177 实测 27 组,一半以上组名是 *_wash_*。★(9) 是 song 1001 的数字,严重低估。2026-08-04 修:写入属性从 _Color(这些 shader 上不存在,写入是空操作,灯全渲染成黑)改为按存在性探测 _BlinkLightColor/_MulColor0/_Color。仍未解:color0Array/powerArray 恒为 10 项(调色板),与 renderer 数(可达 570)无关,灯→槽位的映射规则未逆出,暂统一取第 0 槽;pattern 语义未逆出,逐灯相位(U闪→M闪→A闪)未实现;color1Array/LightBlendMode/isReverseHueArray 未用。另注意部分 renderer 用 StageTransmittedLightMask/StageMirrorBallShine,shader 里一个 Color 属性都没有,BlinkLight 点不亮(对应未实现的 95/96 TransmittedLight 轨道) |
| 46 | UVScrollLight ★(1) | 材质UV滚动灯光效果 | ⚠️ | mulColor1/ColorType/CharacterIndex等未使用 |
| 47 | FacialToon | 角色卡通着色参数 | ❌ | ✅实测 facialToonSet 59/59首 / 6341 keys(单曲最多600)。未实现轨道里数据量第二大 |
| 48 | GlobalLight ★(2) | 全局光方向/RimLight参数 | ✅ | — |
| 49 | GlobalFog ★(1) | 全局雾效(颜色/密度/范围) | ✅ | — |
| 50 | LightShafts ★(1) | 光轴/丁达尔效果 | ⚠️🔇 | 无LightShaftsController组件,仅数据 |
| 51 | MonitorCameraPos ★(1) | 舞台监控摄像机位置 | ❌ | ✅实测 monitorCameraPosKeys 存在,34/59首 / 964 keys。旧记录「无字段」是错的。用途推测是 LED 大屏的副摄像机实时画面(IMAG),与 ID 10 配套 |
| 52 | MonitorCameraLookAt ★(1) | 舞台监控摄像机朝向 | ❌ | ✅实测 monitorCameraLookAtKeys 存在,34/59首 / 971 keys。旧记录「无字段」是错的 |
| 53 | MultiCameraPos ★(2) | 多机位摄像机位置 | ✅ | — |
| 54 | MultiCameraLookAt ★(2) | 多机位摄像机朝向 | ✅ | — |
| 55 | EyeCameraPos | 眼部特写摄像机位置 | ❌ | — |
| 56 | EyeCameraLookAt | 眼部特写摄像机朝向 | ❌ | — |
| 57 | LensFlare | 镜头光晕 | ❌ | ✅实测 lensFlareList 45/59首 / 993 keys(单曲最多181)。舞台用 CustomLensFlare 脚本无源码;可先做 SetActive 层 |
| 58 | Environment ★(1) | 地板镜面反射/水面波纹/阴影/FovShift | ❌ | ✅实测 environmentDataLists 49/59首 / 1375 keys。注意 schema 里另有独立字段 MirrorReflectionDataList,两者不是一回事(上游 katboi01 把它俩混为一谈,按 name 分流)。核心是 Planar Reflection,工程量大 |
| 59 | SweatLocator ★(3) | 角色汗珠特效挂点 | ❌ | ✅实测 sweatLocatorList 存在,32/59首 / 608 keys。旧记录「无字段」是错的 |
| 60 | Effect ★(8) | 特效Prefab加载/播放(3d/effect/live/) | ✅ | — |
| 61 | ColorCorrection | 色彩校正(饱和度/RGB曲线) | ⚠️ | depthRedCurve/Green/Blue/blendCurve/mode/selective/keyColor/targetColor无URP对应 |
| 62 | PreColorCorrection | 前置色彩校正 | ❌ | — |
| 63 | TiltShift | 移轴模糊 | ❌ | ✅实测 tiltShiftKeys 58/59首 / 1202 keys(单曲最多127)。旧记录「全部0 keyframe」是错的 |
| 64 | A2U | 内部动作系统参数 | ❌ | 非视觉轨道 |
| 65 | A2UConfig | A2U配置 | ❌ | 非视觉轨道 |
| 66 | FlashPlayer | 全屏闪光播放 | ❌ | ✅实测 flashPlayerKeys 20/59首 / 50 keys。旧记录「全部0 keyframe」是错的,但确实量小 |
| 67 | Title | 歌曲名字幕显示 | ❌ | ✅实测 titleKeys 55/59首 / 137 keys |
| 68 | Spotlight3d ★(3) | 3D聚光灯 SetActive+颜色/强度 | ✅ | — |
| 69 | CharaNode | 角色骨骼节点位置控制 | ❌ | — |
| 70 | NodeScale ★(2) | 舞台节点缩放 | ❌ | ✅实测 nodeScaleList 存在,57/59首 / 541 keys。旧记录「无字段」是错的,且覆盖率远高于原估计 |
| 71 | Fluctuation | 画面波动/震颤效果 | ❌ | ✅实测 FluctuationKeys 51/59首 / 330 keys |
| 72 | CharaFootLight | 角色脚部补光灯 | ❌ | ✅实测 charaFootLightKeys 49/59首 / 340 keys。旧记录「全部0 keyframe」是错的 |
| 73 | ChromaticAberration ★(1) | 色差后处理 | ⚠️ | redOffset/greenOffset/blueOffset(通道偏移)无URP内置对应;effectType未使用 |
| 74 | LightProjection ★(18!) | 投影灯(Gobo图案灯) | ❌ | ✅实测 lightProjectionList 37/59首 / 3793 keys(单曲最多566)。URP 下 Projector 组件不工作,需 DecalProjector 或自写 |
| 75 | Billboard | 广告牌(始终面向摄像机的面片)【12/58首】 | ❌ | — |
多机位后处理
| ID | 名称 | 作用 | 状态 | Bug |
|---|---|---|---|---|
| 76 | MultiCameraPostFilm ★(2) | 多机位全屏后期叠加 | ❌ | ✅实测 postFilm1MultiCameraKeys 51/59首 / 708 keys |
| 77 | MultiCameraPostEffectBloomDiffusion ★(2) | 多机位泛光 | ❌ | ✅实测 postEffectBloomDiffusionMultiCameraKeys 存在,49/59首 / 381 keys。旧记录「无字段」是错的 |
| 78 | MultiCameraColorCorrection | 多机位色彩校正 | ❌ | — |
| 79 | MultiCameraTiltShift | 多机位移轴模糊 | ❌ | — |
| 80 | MultiCameraRadialBlur | 多机位径向模糊 | ❌ | — |
| 81 | MultiCameraPostEffectDOF | 多机位景深 | ❌ | — |
附加灯光 / 系统
| ID | 名称 | 作用 | 状态 | Bug |
|---|---|---|---|---|
| 82 | AdditionalLight | 附加动态光源【22/58首】 | ❌ | — |
| 83 | MultiLightShadow | 多光源阴影 | ❌ | ✅实测 MultiLightShadowKeys 37/59首 / 183 keys。旧记录「全部0 keyframe」是错的 |
| 84 | MobControl ★(4) | 观众人群行为/动画控制 | ❌ | ✅实测 MobControlKeys 存在,32/59首 / 2392 keys(单曲最多495)。旧记录「无字段」是错的 |
| 85 | CyalumeControl ★(4) | 荧光棒颜色/同步控制 | ❌ | ✅实测 CyalumeControlKeys 存在,33/59首 / 2372 keys(单曲最多496)。旧记录「无字段」是错的。CyalumeController3D.cs 已存在,只差接时间轴 |
| 86 | CameraMotion | 摄像机动作曲线轨道 | ❌ | — |
| 87 | WaveObject | 波浪变形物体 | ❌ | — |
| 88 | CharaWind | 角色风效(头发/裙摆) | ❌ | ✅实测 charaWind 24/59首 / 744 keys |
| 89 | CharaParts | 角色部件显隐控制 | ❌ | — |
| 90 | CameraCutNo | 镜头编号标记(元数据) | ❌ | — |
| 91 | ToneCurve | 色调曲线(ACES/自定义) | ❌ | — |
| 92 | Exposure | 曝光值控制 | ❌ | — |
| 93 | Vortex | 旋涡/扭曲屏幕效果 | ❌ | — |
| 94 | CharaCollision | 角色碰撞辅助(非视觉) | ❌ | — |
| 95 | TransmittedLight | 透射光(次表面散射) | ❌ | — |
| 96 | TransmittedLightMask | 透射光遮罩 | ❌ | — |
| 97 | Voice | 语音切换控制 | ❌ | — |
| 98 | LipSyncPatternRange | 口型模式范围定义 | ❌ | ✅实测 LipSyncPatternRangeKeys 存在 |
| 99 | LipSyncPattern | 口型模式数据 | ❌ | ✅实测 LipSyncPatternDataList 存在 |
| 100 | LensDistortion | 镜头桶形/枕形畸变 | ❌ | — |
| 101 | CharaNodeOffset | 角色骨骼节点偏移 | ❌ | — |
| 102 | TransparentCamera | 透明度摄像机控制 | ❌ | — |
统计摘要
| 状态 | 数量 |
|---|---|
| ✅ 完整 | 21 |
| ⚠️ 部分实现 | 7 |
| ⚠️🔇 仅数据 | 2 |
| 🔴 Bug(已修) | 1 |
| ❌ 未实现 | 72 |
已知未解问题(2026-08-05)
按「是否有 ground truth」分类。缺依据的一律不实现,代码里保留 TODO 注释而不是猜一个值上去。
有依据、可以直接做
| 问题 | 依据 |
|---|---|
槽位号 = 渲染器自身或最近祖先的 lightNNN_/alphaNNN_ 名字前缀。live10149 全组实测「前缀种数 N」与「槽 0..N-1 的去重颜色数」精确相等,槽 N..9 一律白色填充,7 组无一例外。此前统一取第 0 槽,于是镜面球整个发粉红、truss wash 丢掉黄绿蓝紫四色 |
|
BlinkLight pattern 语义 |
实测有 0 和 2 两种;相位公式是推测,pattern != 0 时按 cycle * i / N 错开 |
| BgColor1 剩余 4 组 | BgBL(256 keys) / FollowSpotColor(16) / Shadow(2) / mob_00(2) 不是物件名也不是材质名 |
BgColor1 的 power → _ColorPower? |
_ColorPower 属性确实存在,但映射关系无证据,已撤回 |
缺 ground truth,已禁用
| 问题 | 为什么查不到 |
|---|---|
| 舞台自带 Animation 的播放(283 个组件,全曲全场景不播) | 见下方专条 |
PostFilm 的 filmOptionParam 几何语义 |
游戏自己的 PostFilm shader 不在 shader bundle(499 个按名字和属性签名都搜过),应在 app 本体 resources.assets |
MonitorControl 的 dispID → 资源 |
内容资源族已定位为 live/uvmovie/gal_uvmovie_<songid>_<NNN>(全库 219 个目录),但 song 1177 只有 _light 没有 _001,且 monitorCameraPosKeys 为 0,两条路都不通 |
专条:舞台自带 Animation 为什么不播(2026-08-07 决定撤除实现)
现状:舞台上 283 个 legacy Animation 组件一个都不播,这是有意的,不是漏了。
迪斯科灯球不转、wash 灯不扫、霓虹灯牌不动,都属于这一条。
机制:这些组件全部 playAutomatically = true,但默认 clip(m_Animation)全是空的。
Unity 的 playAutomatically 播的是默认 clip,为空就什么都不播 —— 原版靠
Gallop.Live.AnimationObjectController 显式 Play("clip名")。
为什么补不了:AnimationObjectController 实测 282 个实例、零序列化字段。
它是纯行为类,「播哪个 clip / 该不该播 / 播多快」全在方法体里,而方法体随 IL2CPP 元数据
一起拿不到(见 CLAUDE.md → Blocked)。按原签名重建它拿不到任何信息 ——
这条路是死的,别被 282 这个实例数勾回去。
素材本身是全可读的,这正是容易上当的地方:clip 曲线、时长、wrapMode 全能 dump。
例如镜面球那条是恒定 −179.50°/s 绕 Y、2.0 s 一圈;wash_ground 那条是 swing_* 节点
90°→0°→90°、2.0 s 一个来回、12 盏同步。但「素材是什么」推不出「原版何时以何速播它」。
试过一版替代品 StageAnimationPlayer,已整体撤除。 它的策略是「只有一个 clip 就播」,
错在把「这物件只有一个状态」当成了「这个状态一直在播」—— 后者恰恰是那个缺失的类
每帧做的决定。实机后果:一排地面 wash 灯 2 秒一个来回疯狂摆头(原版是不扫只闪),
镜面球虽然该转但转速无从校验。缩到最后它只让一颗球转,且转得对不对说不清 ——
一个转错的替代品比不转更糟:既错,又让人以为这块已经做过了。
唯一值得留下的结论(将来任何人重做都适用):
驱动舞台动画不要用 Animation.Play() —— 那跑 Unity 自己的时钟,live 暂停时舞台照转、
拖动进度条不跟随。正确做法是每帧把 AnimationState.time 设成
LiveTimelineControl.currentLiveTime(单位是秒)再 Sample(),与演出时间同源。
什么条件下可以重做:拿到参考视频逐首标定(属于经验值,不是 ground truth,且大概率
一舞台一套),或者 IL2CPP 元数据解锁(见 CLAUDE.md → Blocked)。在那之前不做。
与时间轴无关的渲染问题
| 现象 | 状态 |
|---|---|
| 舞台地板长期偏亮发白 | ✅ 2026-08-06 解决。白的不是文档里记的那三个物件 —— 是与 plane_000 同位同尺度、叠在一起的 mirror_a(同在 pfb_env_live10149_main000 下,局部变换全为单位)。它用 Cygames/MirrorAndShadow/ReceiveMirror,_ReflectionRate 默认 1.0 而 _ReflectionTex 从没赋值,Unity 对未绑定采样器代入白贴图 = 满强度白反射。实现 Gallop.MirrorReflection 接上反射 RT 后恢复正常。教训见 CLAUDE.md「现象描述不是 ground truth」:整轮排查都围着文档里那三个名字转,那个「_EnvRate 归零无变化」的实验切的是另一批物件 |
| 小灯泡渲染成黑块 / 光柱变实心黑墙 | 🔧 2026-08-07 找到根因并已修(待实机确认):Gallop 发光类 shader 的混合状态写作 Blend [_SrcBlend] [_DstBlend],从材质属性读;而 live10149 26/26 个材质都被盖上了 URP Lit 的属性表,_DstBlend 是 URP Lit 不透明预设的 Zero。全库 16 个声明该属性的 shader 里 14 个作者默认是 One/One(加法),于是凡是当前 shader 真读这两个属性的光柱/闪光/投影都被按不透明画 —— 加法下「颜色为黑=不可见」变成了「实心黑墙」。StageController.RestoreAuthoredBlendState() 已把这两个属性恢复成 shader 声明的默认值,实机确认修复。⚠ 两个方向都别照抄数字:受害材质比存档表窄(31 个里只有 1 个真被 shader 读到 —— mtl_env_live10149_blinklight000 / LightBlinkBlend,_DstBlend 0→1,其余存的是无人问津的过期条目);但受害渲染器远比「1 个材质」多 —— 材质高度共享,那一个铺满 27 个 BlinkLight 组约 1450 个渲染器,所以「小灯泡渲染成黑块」和地面 wash 黑楔子是同一个根因,实机确认一并修好。注:StageTransmittedLightMask/StageMirrorBallShine 无颜色属性是另一回事,仍未解 |
| LED 大屏黑屏 | MonitorControl (10) 未实现,见上 |
优先级排序
2026-08-04 用 tools/ 全量重测后重排。 依据 = 实测数据量 × 覆盖率 × 工作性质。
全量表:tools/out/scan_summary.txt。
第一优先:数据早就在手,只是没用上(性价比最高)
| 轨道 | 实测数据量 | 难度 | 说明 |
|---|---|---|---|
| BgColor1 (8) 舞台分支 | 43617 keys / 59首 | ★☆☆~★★☆ | 全语料最大的轨道。分发过滤已拆,剩下确认舞台侧 shader 属性 |
| BlinkLight (45) 补字段 | 19420 keys / 57首 | ★★☆ | 灯光线最大权重,含全部 *_wash_* 效果 |
| Laser (44) / UVScrollLight (46) 补字段 | 2661 keys / 33首 | ★☆☆ | 纯管道 |
第二优先:URP 后处理 Feature(路径见 live-shader-todo.md)
| 轨道 | 实测数据量 | 路径 |
|---|---|---|
| PostFilm (39) | ~20200 keys / 59首(三个字段合计) | B,最大的一块 |
| PostEffectDOF (13) | 3879 keys / 59首 | A(URP 内置 DepthOfField) |
| VolumeLight/SunShafts (37) | 2048 keys / 58首 | B,数据类已有,字段表齐全 |
| PostEffectBloomDiffusion (14) | 1969 keys / 59首 | B |
| RadialBlur (15) | 1667 keys / 59首 | B |
| TiltShift (63) | 1202 keys / 58首 | B |
第三优先:只差 C# 字段声明 + handler(bundle 里数据齐备)
FacialToon(47, 6341 keys/59首) > MonitorControl(10, 3911/55首,dispID 语义仍未知) > CameraLayer(16, 3306/58首) > MobControl(84, 2392/32首) > CyalumeControl(85, 2372/33首,CyalumeController3D.cs 已存在) > Props(35, 1940/28首) > Animation(29, 1575/39首) > MonitorCameraPos/LookAt(51/52, ~1900/34首) > CharaWind(88, 744/24首) > AdditionalLight(82, 657/23首) > SweatLocator(59, 608/32首) > NodeScale(70, 541/57首) > Fluctuation(71, 330/51首) > CharaFootLight(72, 340/49首) > Fade(40, 243/59首) > Title(67, 137/55首) > FacialNoise(26)/CharaMotionNoise(27)
第四优先:要从零搭渲染系统 ★★★
LensFlare(57, 993/45首) 应当从这一档移到第一档 —— 2026-08-07 dump 确认它不需要「从零搭」:CustomLensFlare 的 Flare 指向 Gallop.RenderPipeline.LensFlareData(可按签名重建的 ScriptableObject),字段是 Unity legacy Flare 的逐字翻版,URP 侧有 LensFlareComponentSRP 现成对应。
LightProjection(74, 3793/37首,URP 下 Projector 不工作) > Environment(58, 1375/49首,注意还有独立的 MirrorReflectionDataList;Planar Reflection 本身已不用从零搭 —— Gallop.MirrorReflection 已实现,缺的是把轨道关键帧接上去)
MirrorBallProjector不在此列但值得记一笔:它是卡住而不是没做。shader 需要_MirrorBallPosWS/_MirrorBallScale/_MirrorBallRotateValue,而组件里没有任何指向灯球的 引用字段,4 个 projector 全在原点且共用一个材质 —— 绑定关系只存在于拿不到的方法体里。 顺带:灯球转速已不是未知(clip 恒定 −179.50°/s,见LIVE_DEV_MAP.md)。
不该做
HdrBloom (38) —— 0/59 首,却已经实现了,是死代码,建议删。
其余确认为空:other4EyeTrackKeys、ScreenCaptureDataList、tailMotionDataList。
A2U / A2UConfig / CameraCutNo —— 非视觉轨道。
之前「PostFilm 到底有没有数据」的矛盾已解决:
live-shader-todo.md是对的,本文件旧版记的「全部 0 keyframe」是错的。