2026-05-20-00-19-47 同步位姿并填充实体映射
This commit is contained in:
36
工程分析/经验记录.md
36
工程分析/经验记录.md
@@ -883,3 +883,39 @@ C. 解决问题方案
|
||||
D. 后续如何避免问题
|
||||
|
||||
新增影像浏览控件前先判断其控制对象是“单切片位置”还是“显示范围/切割范围”。单切片校验使用独立 slice 状态,范围切割使用起止端点状态,避免不同视图之间产生隐式联动。
|
||||
|
||||
## 2026-05-20-00-19-47 右侧映射视图必须复用中部模型位姿
|
||||
|
||||
A. 具体问题
|
||||
|
||||
右侧“逆向分割映射视图”虽然已经使用 DICOM Base Layer 和 STL Overlay,但 Overlay 计算没有接入中部“模型位姿”状态;用户拖动 X/Y/Z 平移或旋转后,左侧三维视图变化,右侧二维映射仍按旧 STL 原始坐标绘制。
|
||||
|
||||
B. 产生问题原因
|
||||
|
||||
上一版 `VoxelizationMappingView` 只接收 `moduleStyles`、`slice` 和 STL preview 数据,没有接收 `modelPose`;`drawVoxelOverlayLayer` 直接使用 STL 原始顶点和全局 bounds 计算投影,没有先执行与三维场景一致的归一化、旋转、缩放和平移。
|
||||
|
||||
C. 解决问题方案
|
||||
|
||||
为 `VoxelizationMappingView` 增加 `modelPose` 入参,由父组件直接传入中部工具栏的当前位姿;在 Overlay 计算前对 STL 顶点执行 `scale -> rotateX -> rotateY -> rotateZ -> translate`,再与当前 Z 轴 DICOM 切片平面求交,并使用 `requestAnimationFrame` 合并高频滑条更新。
|
||||
|
||||
D. 后续如何避免问题
|
||||
|
||||
凡是右侧二维映射、Mask、Label Map 或导出预览依赖 STL 空间位置时,都必须确认其输入状态包含当前权威位姿;不能让三维视图和二维视图各自维护坐标变换。新增视图前先列出共享状态:位姿、构件样式、切片位置和数据源。
|
||||
|
||||
## 2026-05-20-00-19-47 实体 Mask 填充不能覆盖多构件叠加
|
||||
|
||||
A. 具体问题
|
||||
|
||||
将截面交线转为实心 Mask 时,如果每个构件直接在主 Overlay canvas 上 `putImageData`,后一个构件的透明像素会覆盖掉前一个构件,导致多构件同时显示时可能只剩最后绘制的构件。
|
||||
|
||||
B. 产生问题原因
|
||||
|
||||
Canvas 的 `putImageData` 是像素替换操作,不是透明合成操作;即使 ImageData 中某些像素 alpha 为 0,也会把目标 canvas 对应位置写成透明,从而擦掉已有 Overlay。
|
||||
|
||||
C. 解决问题方案
|
||||
|
||||
每个构件先在离屏 canvas 中生成扫描线射线法填充的实心 Mask,再使用 `drawImage` 以 `source-over` 合成到主 Overlay canvas;边界描边也在合成后按构件颜色与透明度绘制,保留多构件叠加效果。
|
||||
|
||||
D. 后续如何避免问题
|
||||
|
||||
多层或多构件 Canvas 叠加时,优先使用离屏画布或单次合并后的 ImageData;只有在明确要替换整张图时才使用主 canvas 的 `putImageData`。涉及透明叠加的渲染改动,必须检查“前一层是否会被透明像素擦除”。
|
||||
|
||||
Reference in New Issue
Block a user