68 lines
3.0 KiB
Markdown
68 lines
3.0 KiB
Markdown
# 实现方案-2026-05-20-00-38-39
|
||
|
||
## 实现方案文档路径
|
||
|
||
`工程分析/实现方案-2026-05-20-00-38-39.md`
|
||
|
||
## 修改目标
|
||
|
||
将右侧“逆向分割映射视图”的坐标映射改为与左侧“三维融合视图”同源的 DICOM 物理 FOV,并强化 STL Mesh-Plane Intersection 与实体填充,减少尺度错位和截面漏隙。
|
||
|
||
## 涉及路径
|
||
|
||
- `WebSite/src/components/ReverseWorkspace.tsx`
|
||
- `工程分析/需求分析-2026-05-20-00-38-39.md`
|
||
- `工程分析/实现方案-2026-05-20-00-38-39.md`
|
||
- `工程分析/测试方案-2026-05-20-00-38-39.md`
|
||
- `工程分析/经验记录.md`
|
||
|
||
## 技术路线
|
||
|
||
1. 新增统一空间指标计算:
|
||
- 从 DICOM `physicalSize.width/height` 和 `spacing.slice` 推导物理深度。
|
||
- 复用左侧三维融合视图 `baseExtent=4.6` 的归一化策略。
|
||
- 计算 `dicomWidth/dicomHeight/dicomDepth`、当前 slice 对应 Z 坐标、STL bounds 中心和 `modelBaseScale`。
|
||
- 左侧三维视图也改为使用全部 STL bounds 作为全局模型尺度,隐藏构件只影响渲染,不再改变全局比例。
|
||
2. 修改右侧 STL 顶点变换:
|
||
- 按左侧三维层级顺序复现 `modelPivot` 和 `modelPoseGroup`。
|
||
- 使用 `modelBaseScale * pose.scale`、旋转、平移和 pivot Z 偏移。
|
||
3. 修改右侧画布坐标映射:
|
||
- `x` 映射到 `[-dicomWidth/2, dicomWidth/2]`。
|
||
- `y` 映射到 `[-dicomHeight/2, dicomHeight/2]`。
|
||
- 画布宽高仍为 DICOM preview 像素,物理 FOV 与 Base Layer 完全一致。
|
||
4. 提升 Overlay 数据精度:
|
||
- 右侧 STL preview 请求改为 `200000` 上限,尽量使用完整网格。
|
||
- 继续逐三角面执行 Mesh-Plane Intersection,得到截面线段。
|
||
5. 强化实体填充:
|
||
- 扫描线收集截面线段交点并进行内部填充。
|
||
- 对填充结果做边界外 flood fill,自动补齐内部未填孔洞。
|
||
- 使用离屏 canvas 合成每个构件,避免多构件透明区域互相擦除。
|
||
|
||
## 执行步骤
|
||
|
||
- 更新右侧空间指标、位姿变换和点到画布映射函数。
|
||
- 更新左侧三维视图的模型 bounds 计算,保证构件显隐不改变全局 FOV。
|
||
- 更新 STL preview 请求 limit。
|
||
- 更新实体填充函数,加入内部孔洞填充。
|
||
- 执行 `npm run lint` 和 `npm run build`。
|
||
- 重新部署并验证服务。
|
||
- 追加经验记录并提交推送。
|
||
|
||
## 兼容性与回滚方案
|
||
|
||
- 不改变外部 API 和状态结构。
|
||
- 若新 FOV 映射异常,可回退到上一版 `drawVoxelOverlayLayer` 的归一化映射。
|
||
- 若最大 STL preview 请求导致性能压力,可降低右侧独立请求 limit,但保留同源 FOV 计算。
|
||
|
||
## 预计文件变更
|
||
|
||
- `ReverseWorkspace.tsx`:更新 FOV 坐标、模型变换、填充算法和请求精度。
|
||
- 新增本次三份工程文档。
|
||
- 更新 `经验记录.md`。
|
||
|
||
## 提交与部署策略
|
||
|
||
- 提交信息:`2026-05-20-00-38-39 对齐FOV并强化网格截面填充`
|
||
- 显式暂存本次相关文件,避免提交历史删除状态。
|
||
- 使用 Gitea origin/main 备份并重新部署 `revoxelseg-dicom`。
|