Files
UmaViewer/docs/IMPROVEMENTS_20261001.md
T

19 KiB
Raw Blame History

Live 还原改进汇总与源码发布边界(2026-10-01)

发布状态与证据范围

本次发布为 UmaViewer-master7 的冻结源码快照,基于目标仓库既有 master 历史创建普通分支;不替换、重写或强推 master。冻结后正在进行的 1093 观众缺失调查及任何后续修复不纳入本次快照。

本轮改进并不意味着已达到原游戏全部视觉一致。下文的“通过”只对应明确列出的行为、歌曲、帧段或 GPU 场景。连续捕获报告的 verified=true 仅表示捕获身份/时间/连续历史合同通过,不是像素等价通过。用户最新实测优先于旧组件测试与旧截图。

汇总依据:本地中央工作区 HANDOFF.md(§3、§11、§12 最新追加)和 REPORT.md(§11、§12.1–12.11),以及项目原有 docs/LIVE_RENDER_RESTORATION.md。原始游戏数据、反汇编、截图与验证工程均不随源码发布;下面的 tmp/... 路径是维护者保留的本地证据索引,不是仓库内可下载附件。本发布代理只进行文件选择、安全审查与 Git 上传,未重跑 Unity、编译门或测试;运行结果为上述记录中的实际验证。

1. 驱动、时间轴与资源生命周期

  • 阶段一删除重复 AlterUpdate_BgColor1 分发;移除跨相机自造 DOF bypass,恢复焦点深度数学,移除焦点预钳制与多减 near 的偏差。
  • 后处理相机门控改为演示相机组成员判定;ScreenOverlayRender.Parameter.Setup 补拷 ColorBlendFactor,恢复作者 colorBlend 权重;shader 预热补 RadialBlur、ColorCorrection 三件。
  • Exposure/ToneCurve 的序列化数据、worksheet、求值与渲染参数路由接入;不把仅编译接入称为整首亮度已匹配。
  • A4 Effect/Particle 接入 MainLive SheetType 查表、事件分发、真实资源预载、父节点初始化、销毁释放、pause 与 seek 清空。1176 实际加载 27 个 prefab、观测 841 个粒子。修复 Effect 键漏 OnLoad、每帧重启已结束非循环粒子、Vr03 缺失/重复槽被压缩;实际修改前失败、修改后通过。
  • 原生动画时钟恢复 _isTimescaleDisabled 与 approximately-zero speed 按 1 处理。真实 Animation 曲线前后证明错误 1.25/0 改为期望 5;不声称由此解决全部姿态差异。
  • 显式 Animation.Sample 前按既有 IK 合同 reset,关闭后置自动 reset,保留 lookAt 求解;1176 腿部采样差消失,但头部约 33° 的差异仍在,不称完整姿态一致。
  • Director 在角色构造前建立演示相机并维护唯一 MainCamera 标签,解决角色 FixedUpdate 的 Camera.main 空引用。308/868/3848 三个切换帧眼神追踪异常为零;不是在角色物理路径加空值绕过。
  • 1176 激光合法空数组初始化不再每帧释放/扫描/重建:成功的非 null(含空)结果标记完成,真正资源失败仍可重试。实际 308 帧初始化调用由 328 次降至 1 次。

主要证据:tmp/goal-effect-live-result.txt、goal-final-review-smoke-{before,after}.txt、goal-motion-clock-{before,after}.txt、goal-pose-reset-order-after.txt、goal-camera-ownership-result.txt、goal-laser-setup-{before,after}.txt。

2. 多摄像头、最终合成与实际显示表面

  • 辅相机独立 RT 捕获、原生 Composite/FinalComposite 消费、Single 冻结图及尺寸切换/恢复、独立后处理参数接入;可选后处理开关不再关闭必需多相机合成。
  • 六项最终评审缺陷均有修改前失败/修改后通过证据:三项 Effect/Light 生命周期问题,以及 Single 冻结重建时机、禁用 owner/aux 生命周期旁路、aux Setup 后未重新 DecideDrawType 导致 Bloom 不生效。
  • 真正生产显示链修复:CopyCameraToRTFeature 原 event1000 抢在 composition 之前复制,camera target 已分屏而 RT_Screen 仍单人。现仅复制 Director 主演示相机最终输出,pass/renderer 配置置 event1004。真实 1053 前后 copied-display.png 从单人变三栏。
  • 1093 frame840 发现每相机独立 render context 重复触发 beginFrameRendering。FinalComposite 每个 Unity 帧只准备/清空一次,OnEnable 重置帧标记;最终 pass 按 URP projectionFlipped 处理 live framebuffer 方向,Single 冻结路径保持。
  • 1093 最终实际捕获输出正向副相机人物;既有十一场景真实 URP GPU 回归全部通过,覆盖可见贡献、禁用/alpha-zero 旁路、Single 捕获/冻结/尺寸切换/恢复、aux Bloom 启闭。用户最新明确确认多摄像头已修复。

边界:十一场景不覆盖所有曲目、所有非对称分屏遮罩或全部视觉一致性。

主要证据:tmp/goal-display-copy-{before,after}/、goal-composition-lifecycle-{before,after}.txt、goal-aux-draw-{before,after}.txt、goal-composite-draw-mode-smoke/result.txt;实际 1093 捕获 20261001_110949_870/frame_000840.png。

3. 渲染、光照、镜面、屏幕与可见性

  • A5 VolumeLight/LightShafts 真实贴图预载、timeline 事件与 URP passes 接入;13 场景、141 断言、311296 GPU 像素采样通过。A3 Spotlight3d 使用真实 AssetHolder prefab、角色附着与生命周期,1001 frame4000 三组 renderer 启用于 BG12。
  • 恢复 GraphicSettings 逻辑槽到实际图层映射(effect11、excluded30、transparent1、spotlight12),保留 viewer Background23/UIHandle24 与碰撞矩阵。
  • GlobalLight、角色颜色与舞台颜色按 Renderer 的 Get→修改→Set 保留其他 MPB 字段,避免覆盖 Rim/Ambient;方向光也不再逐帧创建 materials 实例数组。Blink 开关路径保留 Ambient 的前后实验通过。
  • 舞台颜色按 FNV/nameHash 与 unit 子哈希寻址;恢复实例 enabled、原 parent/start TRS、_MulColor0/_ColorPower(包括 0)及精确 BgBL Ambient 语义。1001 角色颜色补消费 power,实际 frame298 从错误亮色恢复作者暗剪影;Control power 的无钳制插值实际中点 .5 通过。
  • Blink 色彩恢复原生 HDR HSV、白端点继承 hue、reverse/直接 hue 插值等语义;修改前 HDR3 被截为1、期望青变红,修改后通过。Blink 材质缓存复用 List 并逐材料引用比较,不再因 sharedMaterials getter 新数组而每帧重建。
  • 镜面双提交实际由 2 次降至 1 次,owner/receiver 禁用不再额外提交。恢复 MirrorReflection.SetActive 的 GameObject 生命周期语义,隐藏/零提交/恢复通过。
  • 镜面组件恢复 Gallop.MirrorReflection namespace 与作者字段 _mirrorCliipPlaneOffset,避免丢原组件而补全层默认组件。1093 恢复 size512/layers12544/offset0,1176 恢复 size512/layers78080/offset0 与原 distortion 参数;真实 RT 从错误 1024×768 回到作者 512×384,不是随意降质量。
  • 舞台监视器沿用 Builder 单 owner,删除重复 RT owner;1093 frame1198 主屏实际显示人物近景。Monitor timeline position/size 改为主纹理居中裁切,不覆盖作者物理 Width/Height;恢复 UVAdjust 与作者 FilterTexScale 合同,crop/aspect 烟测通过。
  • 监视相机恢复 position key attribute0x20000 裁剪与0x40000背景,按原生 cullingLayer 转 mask,未标记 key 不被 CopyFrom 覆写历史状态。真实 camera8257→未标记保持→flagged4161/background切换通过;1093 自然 frame5556.599 验证 mask/background 正确,但横纹仍明显。
  • 星芒迁移启用演示相机 URP postProcessing:真实1001 frame300、163 emitters 开关产生84883变化像素,画面直接可见交叉星芒。仍非完整 fog/directional/IgnoreLayers/fade 等价。
  • StageWashBeam 使用原网格单层 sibling proxy、保留 TRS/生命周期,按每实际相机回调更新;清除空 material-index MPB 的 override,避免遮掉 renderer-wide Blink颜色。44 个真实 proxy、八同距离视角产生6170–6479变化像素,可见宽均32px;不是不同距离恒定屏幕像素宽。
  • LightProjection worksheet/event/插值/角色附着与 URP Projector 绘制链接入;恢复 Near/Far timeline 无钳制插值与释放后的作者裁剪。真实 frustum 作者 far60 拒绝 z70,轨道 far75 接受z70且拒绝z80,Dispose 恢复。1001 局部投影贡献实测不等于用户最新地面镜头验收已通过。
  • 1053 放射光锁定为 IndirectLightShafts 的真实 def_A/def_B 纹理;恢复 _Offset=info.Offset、_Angle=info.Angle/360,不修改作者 alpha/亮度。1004 残余过亮未据此关闭。
  • 1037 Blink driver 两处强制 renderer.enabled=true 覆盖 object timeline:删除越权启用,真实 frame30/300/1100 六个 stardust 对象按作者保持关闭,而803个应可见 renderer 仍启用;早期 geometry CLEAR 点1694后四组粒子实际 playing=false/count0。未把整首粒子状态全部关闭问题标完成。
  • Cyalume 实例初始化按原生 shader manager 使用 HQ 原 shader,清理无效 simple/全场景每帧修补;保留作者 mesh/TRS/ST。1093 天空棒/灰色观众问题仍开放,不移动相机或棒、不按高度猜裁剪。
  • WashLight 收集作者现有组件并初始化,按 IsInitialized 注册;恢复 projection child TRS 重置。1093 上方光斑仍无贡献,原生 indices 已核对,不任意反转生产面序。

用户明确验收完成:1053 多余灰模型、1001 暗部舞台过亮、1093 橙色半透明覆盖。不得据此扩大为高光过曝、地面闪烁或性能全部解决。

主要证据:tmp/goal-lighting-observation.txt、goal-blink-native-color-{before,after}.txt、goal-character-power-{before,after}.txt、goal-mirror-submit-{before,after}.txt、goal-mirror-activation-{before,after}.txt、goal-mirror-binding-check.json、goal-authored-flare-pixels.txt、goal-actual-beam-views/、goal-monitor-uv-scenario-result.txt、goal1093-monitor-evidence/monitor-native-state-result.txt、goal1037-visibility/visibility-proof.txt、projection-clip-proof.txt。

4. 脚底圈光与每脚十字阴影

  • 按真实资源 TypeTree 接入 common spotlight/shadow、layer13、原 mesh/material/TRS、预载和释放。
  • 修复圆斑误常亮根因:FollowSpotCenter/Left/Right/Back BgColor1 未消费导致材质默认 power1。默认关闭,按作者角色 mask/flags、color/power/scale 更新;不统一gain、不以alpha启闭、不按歌曲硬编码。
  • 真实1001 frame300全18人关、1248仅后排15人power.15、1422前三人.5/.4/.4及后排.15、5656全关,72个状态检查通过。1053 在作者开启时段仍可出现圈光,非整首禁用。
  • 用户纠正后每角色两个 cross 分别绑定 Ankle_L/Ankle_R,XZ 独立随脚、Y 使用当前 timeline 地面输入;保留作者淡cross纹理、强度及 disabled projector。1053 38.4秒18角色/36实例逐脚检查和单独左脚位移隔离通过,真实近景直接可见双脚下独立cross。
  • 1001 23.7秒逐脚绑定同样通过,但独立近景未清楚显示圈光/cross,不能关闭该歌曲脚底视觉验收。旧单中心 pixel PASS 不作为双脚验收证据;locator Position 可能是动画骨骼而非静态地面,未凭假设改 rootY/0 或 clamp。

主要证据:tmp/goal-foot-timeline-result.txt、goal-two-foot-shadow-result.txt、goal-two-foot-shadow/feet.png、goal1001-two-foot-shadow-result.txt。

5. 手持道具生产链

  • 新增真实 Props/Attach 序列化 schema、完整 settings 与 worksheet 初始化;Builder 条件预载,Director 构造/late-evaluate/dispose controller,删除无消费者旧 bridge。
  • 61首可用样本中30首声明道具、121组设置,不是全游戏全集。1093 DressId50 实例真实 M_ToonProp 在5232/6944/7074显示→隐藏→恢复并跟 Hand_Attach_R。
  • 修复 propsID 为每角色条件过滤后的局部编号,而非全局setting索引;匹配但加载失败保留未解析slot,避免后续编号漂移。1177 修改前第二角色隐藏,修改后两个角色 local0 真道具均显示/跟手。
  • 1004 body prefab 缺少作者 motion 曲线路径中的 Mic 附件节点,导致 timeline override target=null 而隐藏。Animation/locator 缓存前仅补缺失的四个真实动画节点,已有TRS不变、缺Position不猜 fallback,不偷改到手节点。自然播放630/634/1843/1922共12次显隐及 animated target 绑定通过;无清晰麦克风近景,不宣称原游戏视觉等价。
  • canonical DressId 改为现有 costume选择对应 DressData row.id,而非资源前缀;缺失/歧义拒绝猜测。1032/00 predicate 前后通过;1037 实际自然播放30/5211/5305六次道具显隐与 Hand_Attach_L 跟随通过,闭合此前仅 predicate 烟测的边界。
  • 1174 AlphaToon 作者材质 ZWrite1/Cutoff.2 的实际加载烟测通过,未盲目改材质。1181 默认输入原生明确 variation0;不把作者存在1/2轨道当作必须全启用。

仍未闭合:非默认 live variation 输入、1092 linked attachment、depth-alpha完整策略、flare collision/reserve warming等;不能写成“全部有道具Live已完整还原”。

主要证据:tmp/goal-props-live-result.txt、goal-props1177/{before-index,after-index}-result.txt、goal-props1004/missing-motion-node-experiment/production-after-result.txt、canonical-{before,after}-result.txt、goal1037-visibility/props-canonical-result.txt、goal-prop-depth-material-result.txt。

6. 验证总边界与开放问题

阶段一六套GPU回归(DOF焦点、前景CoC80采样、Bloom/Diffusion60检查、RadialBlur、ColorCorrection124902像素、PostFilm)有实际PASS;阶段二编译门及多个实际Live/URP前后证明见上述索引。验证使用隔离工程,不干扰用户编辑器;原生产 Config、CySpring 与角色物理不由本轮渲染调查修改。

1176严格连续308/868/3848对比 score约.45809/.52095/.47640、SSIM约.35684/.23779/.25706,仍有明显姿态/曝光差;没有像素等价验收。

明确仍开放:

  1. 1093灰色观众缺失:用户确认真实游戏有、viewer没有;保留作者荧光棒与相机位置,后续恢复真实mob加载/显隐/绘制,不统一给所有Live加观众。冻结后的诊断/修复不在本发布完成项。
  2. 1093地面闪烁:应集中约25秒及随后几秒,不用其他时段静态归因替代;橙色覆盖已由用户确认解决,不重开。
  3. 1093屏幕横纹过重:框架纹理来源及真实裁剪修复已证实,横纹仍在;不任意置黑框架、降低gain、隐藏draw或换镜面pass。
  4. 1093舞台照地光斑:作者wash已加载/初始化,但上方绘制贡献缺失,原native面序一致;未完成根因。
  5. 1004约37.7秒亮度:真实读回UNorm,before/after RGB最大均1,不支持“shaft输出HDR>1再进bloom”假设;alpha变化不足以单独证明偏差,不统一压曝光。
  6. 1001约55.6秒远景DOF:焦点目标/深度输入与参考存在差异;未通过关DOF、改size/spread掩盖。
  7. 1001生产地面发光投影与脚底圆光/cross镜头验收:局部贡献、轨道与绑定PASS不能覆盖用户最新反馈。
  8. 全部道具Live与1037全场错误常显:已修具体可复现分支,特殊策略/其他时段仍未完全验收。
  9. 完整姿态、高光曝光及原游戏视觉一致:仍有残差,不写成全部还原。
  10. 1176性能研究暂停:用户要求效果完整还原前暂停。既有正确性/分配/重复初始化修复保留;历史batch墙钟样本不等于用户实时FPS,不再开展成本/降质量实验。

7. 安全发布清单与运行前提(2026-10-02 更新)

此前 2026-10-01 的发布边界已被当前源码交付策略取代。 旧的“清空 Config.cs 缺省密钥、不分发 CySpring/StreamingAssets/UI 图片、由使用者补齐”说明不再适用于当前源码;上述历史渲染证据、角色物理与开放问题的验收范围不变。

发布包含普通 Unity C#、自写 shader、asmdef/meta、必要普通材质/RT/场景/UI prefab、Packages、ProjectSettings、现有通用第三方插件、手写工具与本地网页查看器源码,以及项目文档。保留 Unity GUID,不广泛忽略全部 .asset/.mat/.unity/.dll/.a。

当前保留 katboi01/UmaViewer 固定上游版本 已跟踪的运行文件:Assets/Plugins/CySpringPlugin.dll 及其 .meta、Assets/StreamingAssets/cri_auth 与 sound_proj.acf 及其 .meta、上游 UI/still/bg/tex_env/Screenshot 图片与对应元数据;保留上游数据库、AssetBundle 与音频缺省配置。Windows x64 的上游支持用法无需使用者手动补插件、这些图片/载荷或密钥。

当前排除的是本机 Config.json 与个人凭据、Library/Temp/Logs/obj/UserSettings、build/IDE 生成物、tmp 隔离验证工程、captures/exports/PMX/VMD 游戏导出、备份、内存 dump/加密 metadata/反汇编产物、额外提取的 shader.a/bundle 及代理内部文件;这些本地调查产物不应与上游已分发的运行资源混为一谈。手写 tools/TargetMethodLookup/TargetMethodLookup.csproj 继续保留,不广泛忽略运行插件或资源。

使用者仍需另行合法准备完整游戏数据(目标目录包含 meta、master/master.mdb、dat),仓库不打包完整游戏安装。使用 Unity 2022.3.62f1 导入项目并等待 Packages 依赖解析,打开 Assets/Scenes/Version2.unity;非默认安装或自动检测失败时,可在 Settings → Other → Change DataPath 选择实际数据目录。项目不是免安装 Unity 或免准备游戏数据的二进制发行版,本次不触发 master/tag release 工作流、不发布二进制。

Config.json 不存在时自动生成于 Editor 项目根目录或 Windows player 可执行文件旁,保存本机路径与偏好,不随源码发布。既有配置不会被替换;空白密钥覆盖字段使用上游缺省值,非空覆盖字段继续沿用既有解析与错误处理,修改后需重启。可选覆盖为 DBBaseKeyText、DBKeyText、GlobalDBKeyText、ABKeyText、AudioKeyText;不是首次使用的必填项。复用旧配置时应检查过时路径或自定义覆盖。此次未复制或编辑个人 Config.json,也不在文档中展示应用常量值。

本次 Windows x64 / Unity 2022.3.62f1 / D3D11 隔离验证已通过:源码副本未复制 Library 或个人 Config.json;首次配置、旧空白密钥配置恢复、显式覆盖保留均通过;仅选择已安装游戏的数据目录后,读取到 173 个角色、62 首 Live,官方 shader bundle 正常加载。Live1001 的舞台与角色加载、4 路音源播放、生产 HCA 解码器非零 PCM、985 个当前 DynamicBone 物理粒子更新与 1280×720 实际渲染帧均通过,无运行时错误。上游 DLL 已加载,但当前角色物理实际走 CySpring 数据驱动的 DynamicBone,不将它误称为原生 CySpringController 求解验收。未验证其他地区、全部曲目或 Windows player 构建,不声称与原游戏视觉完全一致。

远端已有历史保留;原本地项目无 .git,Git 集成在独立发布副本进行,避免覆盖正在调查的源码与用户编辑器状态。旧远端独有、与当前项目目录不兼容的源码以当前发布树为准迁移;旧提交仍可访问。历史文档可能描述较早状态,当前源码使用步骤以 README 为准,精确交付清单与源码哈希见 docs/PUBLICATION_MANIFEST_20261002.json。