2026-05-21-09-29-47 修复自动拉伸基准与缩放步长

This commit is contained in:
2026-05-21 09:51:33 +08:00
parent 464b1aab59
commit d7eeedd9b3
6 changed files with 216 additions and 13 deletions

View File

@@ -1459,3 +1459,21 @@ C. 解决问题方案
D. 后续如何避免问题
所有 WebGL/Three.js 视图都应把渲染器创建失败视为可恢复状态,不能让单个三维画布拖垮整个工作区。自动生成软著或验收截图时,除了设置浏览器窗口,还必须设置设备视口,并在生成后校验图片尺寸、非空像素、章节数量、图片引用和 docx 内嵌图片位置数量。
## 2026-05-21-09-29-47 自动拉伸要统一全局包围盒并限制短轴放大
A. 具体问题
项目 `123` 中,用户反馈初次进入逆向工作区时自动 Z 拉伸正常,但手动点击 `Z拉伸` 后仍像差一块;点击 `Y拉伸` 时模型整体会明显放大。同时用户要求 `缩放` 参数按三位小数展示,并且 `-` / `+` 每次只调整 `0.005`
B. 产生问题原因
自动拉伸此前容易在不同路径中混用可见构件包围盒和三维融合视图使用的全局 STL 包围盒,重复点击时计算基准和实际渲染基准不完全一致。另一方面,单轴贴合本质是三维等比例缩放;当 Y 轴是模型短轴时,直接按 Y 轴填满 DICOM 会把 X/Z 同步放大,表现为一键明显放大并可能超出视场。缩放控件也沿用了 `0.05` 步长和两位小数显示,不适合精细配准。
C. 解决问题方案
逆向工作区自动拉伸统一读取项目全局 STL 包围盒,并用与三维融合视图一致的 DICOM 物理尺寸和基础比例计算目标缩放。单轴贴合时先计算所选轴目标缩放,再计算 X/Y/Z 三轴都能容纳在 DICOM 体内的上限,最终取两者较小值,保证 `Y拉伸` 不会越界放大。`scale` 控件步长改为 `0.005`,输入和显示按三位小数格式化;项目库 3D 模型位姿也同步改为 `0.005` 步长并对内部缩放值做三位小数取整。
D. 后续如何避免问题
凡是涉及 STL 与 DICOM 尺度自动匹配的逻辑,都必须明确使用“全局包围盒”还是“可见构件包围盒”,并与实际渲染组件保持一致。单轴等比例贴合要考虑其他轴的视场约束,短轴贴合不能无限放大长轴;位姿数值控件的步长、显示精度、内部取整和导出数据要同步设计,避免 UI 看起来精细但实际状态漂移。