From 63cda568e5225a872d79ee57a5eb498146b00347 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Thu, 25 Jun 2026 20:43:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(vtk):=20=E2=91=A3=20=E5=88=87=E7=89=87?= =?UTF-8?q?=E6=8B=BE=E5=8F=96=E4=B8=B2=E9=80=89-=E4=BD=93=20actor=20?= =?UTF-8?q?=E8=AE=BE=20PickableOff,=E6=8B=BE=E5=8F=96=E5=8F=AA=E8=90=BD?= =?UTF-8?q?=E5=88=87=E7=89=87=E5=B9=B3=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 点击落到体内部时 picker 命中体、worldPoint 落体内 → nearestSlice 按平面距离选错切片(常选最前的 上下切片)。改:addVolume 后 volume->PickableOff() → 光标拾取只命中切片纹理平面(及帘面),worldPoint 落在光标下那张切片 → 选对。onPick 仅在命中时触发(未命中不误选);旋转支点用选中切片不受影响; widget 直接交互(selectByTool)本就精确、不受影响。重叠切片仍按最前优先(合理)。 构建:app 链接通过;434/434 测试通过 --- src/app/VtkSceneView.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/app/VtkSceneView.cpp b/src/app/VtkSceneView.cpp index 3b2fddf..c6c98be 100644 --- a/src/app/VtkSceneView.cpp +++ b/src/app/VtkSceneView.cpp @@ -164,6 +164,9 @@ void VtkSceneView::addVolume(const std::string& dsId, const geopro::data::Volume vol.spacing[0], vol.spacing[1], vol.spacing[2] * verticalExaggeration_, vol.vmin, vol.vmax, image); if (volume) { + // 体 actor 不参与拾取:切片选中靠点中切片平面(widget 交互/拾取)。否则点击落到体内部时 + // picker 命中体、worldPoint 落体内 → nearestSlice 按平面距离选错切片(用户 ④ 串选)。 + volume->PickableOff(); scene_.addViewProp(volume); dsProps_[dsId].push_back(volume); currentVolumeImage_ = image;