feat/3d-radar-volume-ingest #9
|
|
@ -77,6 +77,13 @@ vtkSmartPointer<vtkVolume> assembleVolume(vtkImageData* img,
|
|||
(bnd[3] - bnd[2]) * (bnd[3] - bnd[2]) +
|
||||
(bnd[5] - bnd[4]) * (bnd[5] - bnd[4])); // 包围盒对角(最长穿越路径)
|
||||
|
||||
// 大体(如雷达:24M 体素、深度采样距 mm 级 → 单条光线上千采样步)开启【交互期】采样距自适应:
|
||||
// 旋转时 VTK 自动加大采样步(变粗)保流畅,停手即恢复设定的细采样距(0.3×minSp)出全质量帧。
|
||||
// 只是渲染期降采样、【绝不动数据】;切片/异常取自全分辨率体,保真不受影响。
|
||||
// 小体(反演,实测~7ms/帧)保持全程全质量,避免"停手补高清"的视觉突跳。
|
||||
constexpr vtkIdType kInteractiveLodVoxels = 4'000'000;
|
||||
const int interactiveAdjust = (img->GetNumberOfPoints() > kInteractiveLodVoxels) ? 1 : 0;
|
||||
|
||||
vtkSmartPointer<vtkVolumeMapper> mapper;
|
||||
if (mask && g_gpuVolumeSupported) {
|
||||
// 真白化:mask=0 体素被光线投射完全跳过,杜绝空值格沿边界渗蓝。需 GPU 光线投射支持。
|
||||
|
|
@ -84,8 +91,8 @@ vtkSmartPointer<vtkVolume> assembleVolume(vtkImageData* img,
|
|||
gpu->SetInputData(img);
|
||||
gpu->SetMaskInput(mask);
|
||||
gpu->SetMaskTypeToBinary();
|
||||
gpu->SetAutoAdjustSampleDistances(0); // 全程全质量(GPU 直接 mapper 无交互降采样开关)
|
||||
// 关了自适应必须显式给【细】采样距离,否则用粗默认值 → 看到一层层体素(分层伪影)。
|
||||
gpu->SetAutoAdjustSampleDistances(interactiveAdjust); // 大体:交互降采样保流畅,停手全质量;小体:全程全质量
|
||||
// 静止帧用【细】采样距离(0.3×minSp):否则用粗默认值 → 看到一层层体素(分层伪影)。
|
||||
if (minSp > 0) gpu->SetSampleDistance(static_cast<float>(0.3 * minSp));
|
||||
// 抖动:用噪声纹理微扰每条光线的采样起点,消除规则采样面造成的「木纹/分层」伪影(VTK 官方此用途)。
|
||||
gpu->SetUseJittering(1);
|
||||
|
|
@ -94,9 +101,9 @@ vtkSmartPointer<vtkVolume> assembleVolume(vtkImageData* img,
|
|||
// SmartVolumeMapper:有 GPU 走 GPU ray cast,否则自动回退 CPU,避免无 GPU 时卡死/失败。
|
||||
vtkNew<vtkSmartVolumeMapper> sm;
|
||||
sm->SetInputData(img);
|
||||
// 全程统一全质量(GPU 足够快, 实测 ~7ms/帧):关掉交互降采样, 避免"停手补高清"那一帧突跳停顿。
|
||||
sm->SetAutoAdjustSampleDistances(0);
|
||||
sm->SetInteractiveAdjustSampleDistances(0);
|
||||
// 大体交互降采样保流畅(停手恢复全质量);小体全程全质量(GPU 足够快, 实测 ~7ms/帧)避免突跳。
|
||||
sm->SetAutoAdjustSampleDistances(interactiveAdjust);
|
||||
sm->SetInteractiveAdjustSampleDistances(interactiveAdjust);
|
||||
mapper = sm;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue