【免费下载链接】effectcraft项目地址https://gitcode.com/gh_mirrors/ef/effectcraft点击查看免费下载本文围绕 EffectCraft 仓库中的交互工作流保真检查文档 docs/fidelity/workflow-checks.md 展开介绍其如何基于原始原创测试合成片与公开的交互行为用真实的指针和键盘事件验证 Timeline/Project 选择、渲染队列拖放、自适应分辨率预览调度等关键交互读完后可理解这套指针事件驱动回归测试 可选视觉审查套件的设计思路并能在本地复现这些检查。背景保真度验证体系中的 Workflow 门EffectCraft 的保真度验证文档位于 docs/fidelity/ 目录其中 ae-2026-acceptance.md 定义了更宏观的验收目标并设置了多个验收门acceptance gates。与本文直接相关的是Workflow 门要求对所有面板、工具、快捷键、停靠、撤销、对话框和选择操作提供指针与键盘用例当前边界被记录为当前通过项覆盖 34 个面板布局与选定的交互回归并非每个控件都已验证。workflow-checks.md正是这一门的实证记录。它开头即声明了一个重要前提这些检查使用原始合成片original compositions与公开交互行为不包含任何 Adobe 资产或实现代码行为参照来自 Adobe 官方关于 Timeline 范围选择、Composition 面板 Shift 点击 / Shift 矩形选择marquee的公开文档Adobe 官方帮助中心链接见原文档。这种只记录可复现命令与每用例 pass/fail不给出全局 parity 百分比的做法与验收文档中的 Reference process 要求一致。配套的姊妹文档 docs/fidelity/README.md 则记录了另一条保真线——8 个标量 Rotation 缓动用例共 168 个采样对 AE26.3x87的实测比较两者共同构成可测量的行为保真证据链。选择交互回归ui_workflow_selection.rs核心测试文件是 crates/ui-egui/tests/ui_workflow_selection.rs。它与截图比对类测试不同通过egui_kittest::Harness向应用注入真实的Event::PointerButton、Event::PointerMoved、Event::Key事件然后断言会话Session中可见的状态字段例如selected_layers、project_selection、render_queue长度。测试夹具原创四瓦片合成所有选择用例共享同一个夹具构造函数见 harness 函数fn harness() - Harnessstatic, EffectcraftApp { let mut s Session::default(); s.execute(comp.new, json!({name:Study, width:640,height:360,duration:4})).unwrap(); for n in 0..4 { s.execute(layer.newSolid, json!({name:format!(Tile {n}),width:80,height:80,color:#406080})).unwrap(); } s.execute(edit.deselectAll, json!({})).unwrap(); let mut h Harness::builder().with_size(vec2(1600.0, 1000.0)).build_eframe(|_| EffectcraftApp::new(s)); h.run_steps(3); h }要点通过会话命令comp.new创建一个 640×360、时长 4 秒的合成再用layer.newSolid创建 4 个 80×80 的纯色瓦片图层——这就是文档所称original four-tile compositions完全原创、不依赖任何第三方素材用edit.deselectAll保证初始无选择使断言结果确定Harness 以 1600×1000 窗口尺寸构建与视觉审查套件的 wide 尺寸一致。事件注入辅助函数pointer/click/drag值得注意drag会在起点与终点之间插值 8 个移动事件并逐个step()模拟真实拖动轨迹而非瞬移这保证了矩形选择、拖放等路径依赖型交互被真实执行。文档列出的检查项与对应测试文档逐条列出的行为都能在测试文件中找到一一对应的#[test]文档中的检查项对应测试函数ui_workflow_selection.rs验证的断言Timeline Shift 点击选择可见范围Ctrl/Command 点击切换单个图层timeline_shift_click_selects_range_and_ctrl_toggles先点击第 1 层Shift 点击第 3 层后selected_layers ids[..3]再 Command 点击第 2 层选中集收缩为[ids[0], ids[2]]从 Timeline 空白轮廓outline起始的拖拽选中相交的图层行且不重排timeline_empty_outline_marquee_selects_layers从timeline.layerMarquee区域空白处向上拖动后4 个图层全部进入选中集Project 面板 Shift 点击选显示范围、Ctrl/Command 点击切换条目project_shift_selects_visible_range_and_ctrl_removes_item三个 comp 上 Shift 点击后project_selection为全部三个Command 点击中间项后移除之Project Clear 走可撤销的项目条目删除命令project_clear_deletes_items_and_undo_restores_themedit.clear后project.comp(id)不存在edit.undo后恢复从 Project 把合成拖入 Render Queue 即入队该合成project_comp_drop_queues_the_dragged_comp拖动project.item.{id}.name到renderQueue.drop后队列长度 1 且queue[0].comp idRender Queue 的 Delete 只删所选队列项不删 Timeline 选中图层render_queue_delete_preserves_selected_timeline_layers聚焦队列面板按 Delete 键后队列清空但图层仍在且selected_layers不变Composition marquee 通过图层内部判定相交且 Shift 支持切换viewer_marquee_crosses_a_layer_interior_and_shift_preserves_selection第一次 marquee 选中第 1 层Shift marquee 增加第 2 层再次 Shift marquee 同区域则移除第 2 层此外文档Live reference limits一节提到的右键行为也由指针驱动测试覆盖viewer_right_click_targets_hit_and_duplicate_preserves_group注入真实的 Secondary 按钮事件验证 Composition 右键会选中未选中的命中图层命中检测而非仅坐标、保留已选中的组并从实际弹出的菜单里点击Duplicate分别验证单层复制图层数 4→5与组复制4→6两条路径。上下文菜单 Select 子菜单选到被遮挡的图层文档Composition 上下文菜单的 Select 子菜单在其原始点击位置下方列出可见、未锁定的图层从而允许选中被遮挡的图层这一行为对应测试viewer_context_select_reaches_an_obscured_layer在四个瓦片叠放区域中心右键从弹出的Select ⏵子菜单中选择视觉上层所遮挡的Tile 1断言最终selected_layers恰好等于该目标图层。预览调度行为RAM 缓存、渲染池容量与自适应分辨率文档Preview scheduling一节描述了三层预览管线的行为约定每一条都有明确的边界声明它说明的是行为而不是性能承诺CPU 帧先入 RAM 缓存再触发重绘。CPU 渲染出的帧在进入 RAM 缓存、请求重绘之后才进行可选的 RGBA 转换与磁盘缓存压缩持久化仍使用相同的内容键content key并跑在 worker 上磁盘命中的帧不会被重写。渲染耗时显示在发布publication处结束因此排除了发布后的持久化工作同时文档明确它仍不含排队等待时间、不等于交互延迟input-to-frame latency。原生预览调度器按渲染池容量而非机器逻辑 CPU 数调度。常规暂停态预取paused prefetch最多调度两帧并尽量保留一个空闲 worker两 worker 的浏览器池最多调度一帧后台帧单 worker 池不做常规暂停预取。而播放前显式缓存cache-before-playback与空闲时缓存帧Cache Frames When Idle各自保留独立的调度策略。效果参数拖拽参与自适应预览。在 Effect Controls 或 Timeline 中拖动影响渲染的属性时若当前选择 Auto 分辨率与 Adaptive Resolutionscrub 期间会降低请求的像素量但不改变模糊核blur kernel本身释放后回到设定分辨率。其中第 3 条有直接的测试佐证effect_scrubbing_uses_adaptive_resolution_and_settles_on_release。测试流程为// 选中图层、应用 Gaussian Blur、设置自适应快速预览 s.execute(view.fastPreviewMode, json!({mode:adaptive})).unwrap(); ui.viewer.res Resolution::Auto; // 在 Effect Controls 的属性值滑块上按下并拖动 let a rect(h, format!(effectControls.prop.{prop}.value)).center(); pointer(mut h, a, true, Modifiers::NONE); h.input_mut().events.push(Event::PointerMoved(a vec2(30.0, 0.0))); // 拖动中交互标记置位查看器缩放低于 1像素量被压低 assert!(h.state().ui.viewer.property_interacting); assert!(h.state().viewer_scale(1.0, 1.0) 1.0); // 显式选择 Full 分辨率后缩放立即回到 1.0 h.state_mut().ui.viewer.res Resolution::Full; assert_eq!(h.state().viewer_scale(1.0, 1.0), 1.0); // 释放指针交互标记清除Auto 模式下恢复满分辨率该测试恰好印证了文档的两句话scrub 激活 Adaptive Resolution显式选择的 Full 分辨率会被保留。文档同样诚实地划出了这一节的边界这些检查确立的是交互与分辨率行为而非实测的 input-to-frame 延迟改善或完整的 Gaussian Blur 视觉一致性并列出仍待测量的项目冷/热缓存下的 1080p 与 4K 延迟、过期帧工作量、CPU/GPU 路径选择、模糊冲激响应impulse剖面与边缘行为。这与验收文档 Performance 门No claim of beating AE or measured blur response yet的表述一致。实况参照的边界什么能测、什么不声称Live reference limits 一节记录了对真实 After Effects 的观测条件与可信度边界观测经由AESync 2.0.4桥接宿主为AE26.3x87桌面交互研究使用了原创四瓦片合成片扩展 Timeline 选择的验证方式是在键盘手势之后查询所选图层即状态查询而非像素比对自动化原生拖拽未能产生可靠的 marquee 观测因此文档明确不把这些结果当作逐像素的 AE oracle形状/路径选择与修饰键拖拽节奏仍需要受控的实况对比。这种写法体现了一套可复制的证据规范每个结论都绑定其观测手段与局限未测项显式列出而不是默认通过。更宽的 UI 审查ui_visual_review 与补充回归可选的视觉审查套件文档称opt-in 的ui_visual_review套件在 1600×1000 与 1024×768 下捕获全部 34 个内置面板、常用对话框以及 Light 主题工作区。对应实现是 crates/ui-egui/tests/ui_visual_review.rs一个标注#[ignore]的测试all_ui_review_captureslet out std::path::PathBuf::from(std::env::var(UI_REVIEW_DIR).expect(set UI_REVIEW_DIR)); for (label, size) in [(wide, egui::vec2(1600.0, 1000.0)), (compact, egui::vec2(1024.0, 768.0))] { // ... 构建原创 fixture文本层 纯色块 渲染队列项关闭 GPU 加速... for p in PanelKind::ALL { h.state_mut().show_panel(p); h.state_mut().ui.maximized Some(p); h.run_steps(4); assert!(h.state().auto.find(format!(panel.{}, p.id())).is_some(), {} opens, p.title()); h.render().unwrap().save(out.join(format!({label}-{}.png, p.id()))).unwrap(); } // 随后捕获 About / NewComp / Settings / Shortcuts / CommandPalette 五个对话框 }几个可验证的细节34 个内置面板对应枚举常量PanelKind::ALL: [PanelKind; 34]面板清单与34 个面板布局的验收门记录吻合套件是纯审查输出文件头注释captures are review outputs, not shipped assets捕获 PNG 输出到用户指定的UI_REVIEW_DIR目录不进入仓库资产由于标注#[ignore]且依赖环境变量复现方式为在仓库只读的前提下运行输出目录指向任意可写路径UI_REVIEW_DIR/tmp/ui-review cargo test -p effectcraft-ui-egui --test ui_visual_review -- --ignored测试内部还断言每个面板确实打开了panel.{id}可被查询到因此该套件兼具冒烟性质但如文档强调捕获图不确立每个面板控件的行为或实况 input-to-frame 性能。其他补充回归与主题/渲染修复文档Wider UI review一节还记录了同批次落地的回归检查多数同样位于ui_workflow_selection.rs模态隔离modal_blocks_clicks_on_underlying_timeline_layers——打开 About 对话框后点击 Timeline 图层行选中集与对话框状态均不变模态挡住底层指针与文本交互Escape 回滚 Layer Style 实时预览layer_style_escape_rolls_back_live_preview——按 Escape 后dropShadow样式列表为空取消时历史有界style_cancel_restores_checkpoint_with_bounded_history_and_reopened_scrub——Layer Style 的 Cancel 是恢复捕获的项目/历史检查点而非回放 Undo测试将undo_levels设为 1验证取消后项目状态与撤销栈深度都不变且重新打开对话框可继续 scrub 后接受acceptProject 编辑命令路由project_edit_commands_do_not_target_timeline_layers——聚焦 Project 面板时edit.duplicate/edit.cut作用于项目条目而非 Timeline 图层edit.selectAll也不污染selected_layers过滤后的 Project Select Allfiltered_project_select_all_does_not_delete_hidden_assets——搜索过滤下全选只命中可见匹配项从而删除搜索结果不会误删隐藏的结构性文件夹及其后代文档同时注明该行为的精确 AE 一致性仍待实况核查。文档末尾还记录了两类非交互的保真进展主题修复字段、次级按钮、通知与 About 链接使用成对的 token 背景/文本色紧凑查看器页脚在渲染时长会与时间码冲突时省略渲染时长紧凑窗口可点击性另由compact_settings_keeps_confirmation_buttons_clickable覆盖在 1024×768 下 Settings 对话框的确认按钮仍可点击。GPU 合成器容错与量化回归GPU 合成器初始化现在捕获后端设置 panic 并保留 CPU 合成路径覆盖了一个可复现的 Direct3D FXC 着色器编译器失败——但文档明确声明这不修复操作系统级驱动故障也不能证明所报 Windows bugcheck 的成因当设备无法创建 compute pipeline 时GPU 一致性测试被单独报告为不可用绝不计为通过与验收文档可用或已编译的后端不等于通过的合成器测试的政策一致。另外原生 GPU 阈值回归改为直接比较准备好的量化缓冲与 CPU 结果量化使用 CPU 舍入后的倒数与匹配的 half-up 算术通道 Arithmetic 细化非预乘处理中值除法在严格的 Dust Scratches 阈值前对残差做两次细化Power Pin 在精确四边形边缘接受小的 f32 反解误差并把接受的坐标钳制到源域内。完整的后端资格认证与性能测量仍被划为独立的验收工作。如何运行这些检查上述检查均为标准 Cargo 测试无需额外基础设施即可运行视觉审查为可选# 选择工作流与预览调度回归常规 CI 测试直接跑 cargo test -p effectcraft-ui-egui --test ui_workflow_selection # 面板拖拽/标签页/拆分条回归文档提到的既有套件 cargo test -p effectcraft-ui-egui --test ui_tabs # 可选全量面板/对话框视觉审查默认被 ignore需显式启用并指定输出目录 UI_REVIEW_DIR/tmp/ui-review cargo test -p effectcraft-ui-egui --test ui_visual_review -- --ignored # 可选单张工作流快照测试内以 #[ignore] 标记需设置输出路径 WORKFLOW_SNAPSHOT/tmp/wf.png cargo test -p effectcraft-ui-egui --test ui_workflow_selection workflow_snapshot -- --ignoredui_visual_review与workflow_snapshot两个用例刻意标注#[ignore]前者会产生大量截图文件后者需要等待当前合成渲染完成最多轮询 600 步后才离屏渲染二者都属于按需执行的审查输出而非断言型回归这与文档opt-in的措辞一致。小结workflow-checks.md的价值不在于罗列又写了多少测试而在于展示了一套可审计的交互保真工作法以原创夹具消除素材版权与版本噪声用真实指针/键盘事件加状态断言替代像素截图来固化选择、拖放、撤销、模态等语义用渲染池容量而非 CPU 数定义预览调度上限把实测数据AE 版本、桥接工具版本、样本数、容差与未测量项分开记录并把行为已验证与性能已证明严格区隔。结合 ae-2026-acceptance.md 的八道验收门可以清楚看到本文覆盖的 Workflow 门只是其中一维动画、渲染保真、媒体交付、性能、平台与恢复各有独立证据要求——这也是阅读该文档时最需要注意的边界。赞分享【免费下载链接】effectcraft项目地址https://gitcode.com/gh_mirrors/ef/effectcraft点击查看免费下载相关推荐Czar.Cms配置文件与AutoFac依赖注入实战如何构建自动扫描整个程序集的DI容器Czar.Cms配置文件与AutoFac依赖注入实战如何构建自动扫描整个程序集的DI容器 Czar.Cms 是一个精简而功能丰富的 .NET Core CMSRipple 基准测试实战TodoMVC 交互套件如何测量 UI 框架的真实操作成本Ripple 基准测试实战TodoMVC 交互套件如何测量 UI 框架的真实操作成本 本文围绕 Ripple 仓库中的 benchmarks/todomvc前端Web框架SSR终极指南用Ice轻松打造清爽高效的macOS菜单栏终极指南用Ice轻松打造清爽高效的macOS菜单栏 你是否也厌倦了macOS菜单栏上拥挤不堪的图标各种应用的状态图标、系统工具、通知提醒挤在一起不仅影响美桌面应用上一篇Mengzi-T5-base模型文件结构解析每个配置文件的作用与优化方法下一篇Paperclip变革管理帮助团队适应AI协作新模式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考