fix(vtk): 治首帧部分瓦片需手动微动才出-相机程序化变化(取景/预设/缩放)后经onCameraChanged通知底图按新视锥重算覆盖
This commit is contained in:
parent
fb43237830
commit
e15930d8fb
|
|
@ -188,11 +188,13 @@ void VtkSceneView::applyCameraView(geopro::controller::ViewDir dir) {
|
||||||
scene_.renderer()->ResetCamera(bounds); // 重新取景到数据(否则被~公里级底图推到超远)
|
scene_.renderer()->ResetCamera(bounds); // 重新取景到数据(否则被~公里级底图推到超远)
|
||||||
scene_.renderer()->ResetCameraClippingRange(); // 裁剪面含底图
|
scene_.renderer()->ResetCameraClippingRange(); // 裁剪面含底图
|
||||||
if (renderWindow_) renderWindow_->Render();
|
if (renderWindow_) renderWindow_->Render();
|
||||||
|
if (onCameraChanged) onCameraChanged(); // 相机变了 → 底图按新视锥重算覆盖
|
||||||
}
|
}
|
||||||
|
|
||||||
void VtkSceneView::zoom(double factor) {
|
void VtkSceneView::zoom(double factor) {
|
||||||
geopro::render::zoomBy(scene_.renderer(), factor);
|
geopro::render::zoomBy(scene_.renderer(), factor);
|
||||||
if (renderWindow_) renderWindow_->Render();
|
if (renderWindow_) renderWindow_->Render();
|
||||||
|
if (onCameraChanged) onCameraChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VtkSceneView::fitView() {
|
void VtkSceneView::fitView() {
|
||||||
|
|
@ -203,6 +205,7 @@ void VtkSceneView::fitView() {
|
||||||
geopro::render::fitView(scene_.renderer());
|
geopro::render::fitView(scene_.renderer());
|
||||||
scene_.renderer()->ResetCameraClippingRange(); // 裁剪面含底图 → 不被"蒙版"切掉
|
scene_.renderer()->ResetCameraClippingRange(); // 裁剪面含底图 → 不被"蒙版"切掉
|
||||||
if (renderWindow_) renderWindow_->Render();
|
if (renderWindow_) renderWindow_->Render();
|
||||||
|
if (onCameraChanged) onCameraChanged(); // 取景后 → 底图按新视锥重算覆盖(治首帧部分瓦片不出)
|
||||||
}
|
}
|
||||||
|
|
||||||
void VtkSceneView::rebuildAxes() {
|
void VtkSceneView::rebuildAxes() {
|
||||||
|
|
@ -246,6 +249,7 @@ void VtkSceneView::render(bool is2D) {
|
||||||
scene_.renderer()->ResetCamera();
|
scene_.renderer()->ResetCamera();
|
||||||
scene_.renderer()->ResetCameraClippingRange(); // 裁剪面含底图 → 不被"蒙版"切掉
|
scene_.renderer()->ResetCameraClippingRange(); // 裁剪面含底图 → 不被"蒙版"切掉
|
||||||
if (renderWindow_) renderWindow_->Render();
|
if (renderWindow_) renderWindow_->Render();
|
||||||
|
if (onCameraChanged) onCameraChanged(); // 取景后 → 底图按新视锥重算覆盖
|
||||||
}
|
}
|
||||||
|
|
||||||
void VtkSceneView::renderIncremental() {
|
void VtkSceneView::renderIncremental() {
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,9 @@ public:
|
||||||
// frame 原点重锚(首个带经纬剖面到达)后回调,供底图等随之刷新到数据所在位置。
|
// frame 原点重锚(首个带经纬剖面到达)后回调,供底图等随之刷新到数据所在位置。
|
||||||
std::function<void()> onFrameReanchored;
|
std::function<void()> onFrameReanchored;
|
||||||
|
|
||||||
|
// 相机程序化变化(取景/预设/缩放)后回调,供底图按新视锥重算覆盖(否则首帧部分瓦片要手动微动才出)。
|
||||||
|
std::function<void()> onCameraChanged;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// 按当前坐标轴设置 + 场景包围盒重建坐标轴 prop(render 末尾调)。
|
// 按当前坐标轴设置 + 场景包围盒重建坐标轴 prop(render 末尾调)。
|
||||||
void rebuildAxes();
|
void rebuildAxes();
|
||||||
|
|
|
||||||
|
|
@ -412,6 +412,8 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re
|
||||||
sceneView->onFrameReanchored = [basemap, basemapKind]() {
|
sceneView->onFrameReanchored = [basemap, basemapKind]() {
|
||||||
if (*basemapKind != geopro::app::TileBasemap::Hidden) basemap->show(*basemapKind);
|
if (*basemapKind != geopro::app::TileBasemap::Hidden) basemap->show(*basemapKind);
|
||||||
};
|
};
|
||||||
|
// 相机程序化变化(取景/预设/缩放)后,底图按新视锥重算覆盖(治首帧部分瓦片需手动微动才出)。
|
||||||
|
sceneView->onCameraChanged = [basemap]() { basemap->refresh(); };
|
||||||
|
|
||||||
// ── 中央“空状态”引导浮层:未接入真实 sections 时,引导首次使用者从左侧入手。──
|
// ── 中央“空状态”引导浮层:未接入真实 sections 时,引导首次使用者从左侧入手。──
|
||||||
// 透明背景 + 鼠标穿透(不挡 QVTK 交互);CenterOverlay 随视口尺寸保持居中;
|
// 透明背景 + 鼠标穿透(不挡 QVTK 交互);CenterOverlay 随视口尺寸保持居中;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue