2026-05-24-19-53-00 加快位姿长按微调速度
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
当前 Docker 构建会同步包含以下能力:
|
当前 Docker 构建会同步包含以下能力:
|
||||||
|
|
||||||
- 二维逆向分割映射按实体填充显示,rib、skin 等薄壳或细长构件会做局部实体化兜底,导出的分割 Label Map 也按填充区域写入。
|
- 二维逆向分割映射按实体填充显示,rib、skin 等薄壳或细长构件会做局部实体化兜底,导出的分割 Label Map 也按填充区域写入。
|
||||||
- 模型位姿支持以模型中心沿 X/Y/Z 轴镜像翻转,平移和缩放支持 `0.001` 级微调,保存、项目库预览和导出均沿用该位姿;自动拉伸完成后不再在位姿区保留成功提示。
|
- 模型位姿支持以模型中心沿 X/Y/Z 轴镜像翻转,平移和缩放单击支持 `0.001` 级微调,长按加减会加速连续调整;保存、项目库预览和导出均沿用该位姿;自动拉伸完成后不再在位姿区保留成功提示。
|
||||||
- “构件分别导出”会把所有构件 NIfTI 文件集中到导出包内的 `segmentation-parts/` 目录。
|
- “构件分别导出”会把所有构件 NIfTI 文件集中到导出包内的 `segmentation-parts/` 目录。
|
||||||
- 项目库 DICOM 首页支持滚轮缩放、拖拽平移和位置重置。
|
- 项目库 DICOM 首页支持滚轮缩放、拖拽平移和位置重置。
|
||||||
- 项目库与工作区的 DICOM 切片编号按医学影像顺序显示,滑条使用非进度条样式。
|
- 项目库与工作区的 DICOM 切片编号按医学影像顺序显示,滑条使用非进度条样式。
|
||||||
|
|||||||
@@ -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' },
|
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' },
|
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 = {
|
const defaultModelPose: ModelPose = {
|
||||||
rotateX: 0,
|
rotateX: 0,
|
||||||
@@ -3276,10 +3284,11 @@ export default function ReverseWorkspace({
|
|||||||
|
|
||||||
const startPoseRepeat = (key: ModelPoseKey, delta: number) => {
|
const startPoseRepeat = (key: ModelPoseKey, delta: number) => {
|
||||||
stopPoseRepeat();
|
stopPoseRepeat();
|
||||||
|
const repeatDelta = delta * (poseRepeatDeltaMultiplier[key] ?? 1);
|
||||||
poseRepeatRef.current.timeout = window.setTimeout(() => {
|
poseRepeatRef.current.timeout = window.setTimeout(() => {
|
||||||
nudgeModelPose(key, delta);
|
nudgeModelPose(key, repeatDelta);
|
||||||
poseRepeatRef.current.interval = window.setInterval(() => nudgeModelPose(key, delta), 90);
|
poseRepeatRef.current.interval = window.setInterval(() => nudgeModelPose(key, repeatDelta), poseRepeatIntervalMs);
|
||||||
}, 360);
|
}, poseRepeatDelayMs);
|
||||||
};
|
};
|
||||||
|
|
||||||
const resetRotationPose = () => {
|
const resetRotationPose = () => {
|
||||||
|
|||||||
52
工程分析/实现方案-2026-05-24-19-53-00.md
Normal file
52
工程分析/实现方案-2026-05-24-19-53-00.md
Normal 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`。
|
||||||
|
- 验证本机和公网入口。
|
||||||
46
工程分析/测试方案-2026-05-24-19-53-00.md
Normal file
46
工程分析/测试方案-2026-05-24-19-53-00.md
Normal 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 定时器在松开后继续运行。
|
||||||
|
- 不应让工具栏滚动位置因长按更新而跳动。
|
||||||
18
工程分析/经验记录.md
18
工程分析/经验记录.md
@@ -1797,3 +1797,21 @@ C. 解决问题方案
|
|||||||
D. 后续如何避免问题
|
D. 后续如何避免问题
|
||||||
|
|
||||||
后续新增操作反馈时,要区分“处理中反馈”“成功反馈”和“错误反馈”。短操作可以只保留按钮加载态和错误提示,避免把普通成功信息写入长期占位区域;如果确实需要成功提示,应设计为短暂 toast 或局部临时状态。
|
后续新增操作反馈时,要区分“处理中反馈”“成功反馈”和“错误反馈”。短操作可以只保留按钮加载态和错误提示,避免把普通成功信息写入长期占位区域;如果确实需要成功提示,应设计为短暂 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 时定时器会停止。
|
||||||
|
|||||||
43
工程分析/需求分析-2026-05-24-19-53-00.md
Normal file
43
工程分析/需求分析-2026-05-24-19-53-00.md
Normal 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 节奏参数。
|
||||||
Reference in New Issue
Block a user