2026-05-24-19-53-00 加快位姿长按微调速度

This commit is contained in:
2026-05-24 19:56:24 +08:00
parent e380a19acb
commit 2510937128
6 changed files with 172 additions and 4 deletions

View File

@@ -13,7 +13,7 @@
当前 Docker 构建会同步包含以下能力:
- 二维逆向分割映射按实体填充显示rib、skin 等薄壳或细长构件会做局部实体化兜底,导出的分割 Label Map 也按填充区域写入。
- 模型位姿支持以模型中心沿 X/Y/Z 轴镜像翻转,平移和缩放支持 `0.001` 级微调,保存、项目库预览和导出均沿用该位姿;自动拉伸完成后不再在位姿区保留成功提示。
- 模型位姿支持以模型中心沿 X/Y/Z 轴镜像翻转,平移和缩放单击支持 `0.001` 级微调,长按加减会加速连续调整;保存、项目库预览和导出均沿用该位姿;自动拉伸完成后不再在位姿区保留成功提示。
- “构件分别导出”会把所有构件 NIfTI 文件集中到导出包内的 `segmentation-parts/` 目录。
- 项目库 DICOM 首页支持滚轮缩放、拖拽平移和位置重置。
- 项目库与工作区的 DICOM 切片编号按医学影像顺序显示,滑条使用非进度条样式。

View File

@@ -92,6 +92,14 @@ const poseStepConfig: Record<ModelPoseKey, { min: number; max: number; step: num
translateZ: { min: -2, max: 2, step: 0.001, minus: '-0.001', plus: '+0.001' },
scale: { min: 0.5, max: 3, step: 0.001, minus: '-0.001', plus: '+0.001' },
};
const poseRepeatDelayMs = 240;
const poseRepeatIntervalMs = 55;
const poseRepeatDeltaMultiplier: Partial<Record<ModelPoseKey, number>> = {
translateX: 5,
translateY: 5,
translateZ: 5,
scale: 5,
};
const defaultModelPose: ModelPose = {
rotateX: 0,
@@ -3276,10 +3284,11 @@ export default function ReverseWorkspace({
const startPoseRepeat = (key: ModelPoseKey, delta: number) => {
stopPoseRepeat();
const repeatDelta = delta * (poseRepeatDeltaMultiplier[key] ?? 1);
poseRepeatRef.current.timeout = window.setTimeout(() => {
nudgeModelPose(key, delta);
poseRepeatRef.current.interval = window.setInterval(() => nudgeModelPose(key, delta), 90);
}, 360);
nudgeModelPose(key, repeatDelta);
poseRepeatRef.current.interval = window.setInterval(() => nudgeModelPose(key, repeatDelta), poseRepeatIntervalMs);
}, poseRepeatDelayMs);
};
const resetRotationPose = () => {

View File

@@ -0,0 +1,52 @@
# 实现方案-2026-05-24-19-53-00
## 实现方案文档路径
`工程分析/实现方案-2026-05-24-19-53-00.md`
## 修改目标
- 提高平移和缩放加减按钮的长按连续变化速度。
- 保持单击最小步进仍为 `0.001`
- 同步 Docker 部署说明和经验记录。
## 涉及路径
- `WebSite/src/components/ReverseWorkspace.tsx`
- `Docker部署/README.md`
- `工程分析/经验记录.md`
## 技术路线
- 定位位姿按钮的 `startPoseRepeat`、repeat 定时器和长按节奏常量。
- 将长按连续移动与单击步进分离:单击继续使用 `poseStepConfig[key].step`,长按每个 tick 使用更大的 multiplier 或更短 interval。
- 对平移和缩放使用同样的加速策略,旋转仍保持现有快捷行为。
- 保持 `clampPoseValue` 的三位小数取整,避免高频更新产生浮点漂移。
## 执行步骤
1. 搜索位姿长按 repeat 逻辑。
2. 调整长按延迟、间隔或连续步长倍率。
3. 更新 Docker 部署说明和经验记录。
4. 运行类型检查、构建和关键搜索。
5. 重新部署并验证本机与公网入口。
6. 提交并推送到 Gitea。
## 兼容性与回滚方案
- 位姿字段结构和保存格式不变。
- 如果长按过快,可恢复本次 repeat 参数。
- 单击步进不变,因此既有精细配准工作流不受影响。
## 预计文件变更
- 1 个前端组件文件。
- 1 个 Docker 部署说明文件。
- 3 个工程分析当次文档。
- 1 个经验记录追加。
## 提交与部署策略
- Commit message 使用 `2026-05-24-19-53-00 加快位姿长按微调速度`
- 构建通过后重启 `tmux` 会话 `revoxelseg-dicom`
- 验证本机和公网入口。

View File

@@ -0,0 +1,46 @@
# 测试方案-2026-05-24-19-53-00
## 测试方案文档路径
`工程分析/测试方案-2026-05-24-19-53-00.md`
## 静态检查
- 执行 `cd WebSite && npm run lint`
- 搜索位姿长按 repeat 参数,确认单击步进仍为 `0.001`
## 构建检查
- 执行 `cd WebSite && npm run build`
- 确认生产构建成功。
## 关键业务场景验证
- 平移 X/Y/Z 的单击加减仍变化 `0.001`
- 缩放单击加减仍变化 `0.001`
- 长按平移和缩放加减按钮时连续变化速度明显快于上一版。
- 松开、移出或取消 pointer 后,连续变化停止。
## 医学影像数据相关边界验证
- 本次不修改 DICOM/STL 读取、切片排序、分割映射和导出算法。
- 高频微调后的位姿仍参与融合视图、保存、锁定和导出。
## 部署验证
- 重启 `tmux` 会话 `revoxelseg-dicom`
- 验证 `http://127.0.0.1:4000/api/health`
- 验证 `http://127.0.0.1:4000/`
- 验证 `https://revoxel.huijutec.cn/api/health``https://revoxel.huijutec.cn/`
## Git/Gitea 备份验证
- 暂存本次相关源码、Docker 说明和工程分析文档。
- 提交 message 包含本次时间戳。
- 推送到 Gitea `main` 后确认本地分支与远端同步。
## 风险与回归关注点
- 不应增大单击步进。
- 不应让 repeat 定时器在松开后继续运行。
- 不应让工具栏滚动位置因长按更新而跳动。

View File

@@ -1797,3 +1797,21 @@ C. 解决问题方案
D. 后续如何避免问题
后续新增操作反馈时,要区分“处理中反馈”“成功反馈”和“错误反馈”。短操作可以只保留按钮加载态和错误提示,避免把普通成功信息写入长期占位区域;如果确实需要成功提示,应设计为短暂 toast 或局部临时状态。
## 2026-05-24-19-53-00 单击精度和长按速度要分离
A. 具体问题
平移和缩放已经改为 `0.001` 级微调后,单击精度足够细,但长按加减按钮仍按每次 `0.001`、约 `90ms` 一次重复,连续移动速度太慢。
B. 产生问题原因
旧长按逻辑直接复用单击的最小步进作为 repeat delta。步进从 `0.005` 降到 `0.001` 后,长按单位时间位移也同步降低,导致用户需要按住很久才能看到明显变化。
C. 解决问题方案
保留单击仍为 `0.001`,只在长按 repeat 中为平移 X/Y/Z 和缩放使用 5 倍最小步进,并将启动延迟从 `360ms` 缩短到 `240ms`、repeat 间隔从 `90ms` 缩短到 `55ms`。这样短按仍精细,长按可快速穿过较大范围。
D. 后续如何避免问题
微调控件应把“单击精度”和“长按速度”作为两个参数设计;不要为了长按快而增大最小 step也不要为了单击精细而让长按只能按最小 step 慢慢跑。调整 repeat 参数后要确认松开、移出和取消 pointer 时定时器会停止。

View File

@@ -0,0 +1,43 @@
# 需求分析-2026-05-24-19-53-00
## 开始时间
2026-05-24-19-53-00
## 原始需求摘要
用户反馈当前长按平移、缩放加减按钮时数值变化太慢,希望长按连续调整变快一些。
## 业务目标
- 保持单击平移和缩放仍为 `0.001` 精调。
- 提高长按连续微调速度,减少从当前位姿调整到目标位姿的等待时间。
- 不影响旋转快捷按钮、保存、导出和模型位姿精度。
## 输入与输出
- 输入:用户长按逆向工作区中平移 X/Y/Z、缩放的 `-``+` 按钮。
- 输出:长按时更快连续改变位姿数值,松开后立即停止;单击仍只变化一个最小步进。
## 影响范围
- `WebSite/src/components/ReverseWorkspace.tsx`:位姿微调按钮的长按 repeat 逻辑。
- `Docker部署/README.md`:同步说明位姿长按微调体验。
- `工程分析/经验记录.md`:记录微调步进和长按速度分离设计。
## 关键约束
- 不改变 `0.001` 单步精度。
- 不修改 DICOM/STL 坐标映射、体素化、导出算法。
- 长按速度提高时仍需避免浮点累积误差,沿用现有 clamp 和三位小数归一化。
## 风险点
- 如果直接增大 step会破坏单击精调能力。
- 如果 repeat 过快,可能造成 UI 更新过密或用户难以停在目标值。
- 如果只改某个按钮,平移和缩放的长按体验会不一致。
## 待确认问题或默认假设
- 默认本次只提高逆向工作区位姿控件的长按连续速度;单击和滑杆精度不变。
- 若项目库后续也需要长按按钮,可复用本次的 repeat 节奏参数。