perf(render): 拖切片不卡 — 交互时体绘制自动降采样

- 反馈: 开体素时拖切片卡(每帧全质量重渲 GPU 体绘制跟不上拖动帧率)。
- 修: 切片交互时 interactor DesiredUpdateRate=20fps + VoxelActor mapper
  Auto/InteractiveAdjustSampleDistances → 拖动时体绘制自动降采样提帧率, 松手按 StillUpdateRate 恢复全质量。
- 全 40 测试绿; app 构建干净。
This commit is contained in:
gaozheng 2026-06-08 11:49:53 +08:00
parent 65283492fb
commit 6c60f5a83d
2 changed files with 7 additions and 0 deletions

View File

@ -406,6 +406,10 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
}
vtkRenderWindowInteractor* interactor = renderWindowPtr->GetInteractor();
if (*showSlice && interactor) {
// 交互时目标帧率↑→体绘制自动降采样(AutoAdjustSampleDistances),拖切片不卡;
// 松手后按 StillUpdateRate 恢复全质量。
interactor->SetDesiredUpdateRate(20.0);
interactor->SetStillUpdateRate(0.001);
const std::vector<double> stops = vcs.stopValues();
const double vmn = stops.size() >= 2 ? stops.front() : 0.0;
const double vmx = stops.size() >= 2 ? stops.back() : 1.0;

View File

@ -74,6 +74,9 @@ vtkSmartPointer<vtkVolume> buildVoxel(const geopro::core::ScalarVolume& vol,
// SmartVolumeMapper有 GPU 走 GPU ray cast否则自动回退 CPU避免无 GPU 时卡死/失败。
vtkNew<vtkSmartVolumeMapper> mapper;
mapper->SetInputData(img);
// 交互时按 DesiredUpdateRate 自动降采样(与切片共渲时拖动更流畅);静止恢复全质量。
mapper->SetAutoAdjustSampleDistances(1);
mapper->SetInteractiveAdjustSampleDistances(1);
vtkNew<vtkVolumeProperty> prop;
prop->SetColor(color);