From 692ee057ab114c9fbc40d48efd690d0eee193c46 Mon Sep 17 00:00:00 2001 From: gaozheng Date: Wed, 17 Jun 2026 15:45:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(vtk):=20=E7=93=A6=E7=89=87=E8=A7=86?= =?UTF-8?q?=E9=94=A5=E5=89=94=E9=99=A4=E5=8F=AA=E7=94=A84=E4=BE=A7?= =?UTF-8?q?=E9=9D=A2=E4=B8=8D=E7=94=A8=E8=BF=91/=E8=BF=9C=E8=A3=81?= =?UTF-8?q?=E5=89=AA=E9=9D=A2-=E6=A0=B9=E6=B2=BB=E9=A6=96=E5=B8=A7?= =?UTF-8?q?=E8=BF=9C=E5=A4=84=E7=93=A6=E7=89=87=E8=A2=AB=E9=9A=8F=E5=87=A0?= =?UTF-8?q?=E4=BD=95=E5=8F=98=E5=8C=96=E7=9A=84=E8=BF=9C=E8=A3=81=E5=89=AA?= =?UTF-8?q?=E9=9D=A2=E8=AF=AF=E5=89=94=E9=99=A4(=E7=AD=89=E5=A4=9A?= =?UTF-8?q?=E4=B9=85=E4=B8=8D=E5=87=BA/=E5=BE=AE=E5=8A=A8=E6=89=8D?= =?UTF-8?q?=E5=87=BA)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/TileBasemap.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/TileBasemap.cpp b/src/app/TileBasemap.cpp index 4535bb6..8b2c8fa 100644 --- a/src/app/TileBasemap.cpp +++ b/src/app/TileBasemap.cpp @@ -223,9 +223,11 @@ void TileBasemap::refineTile(int z, int x, int y, std::set& out, int& const auto sw = frame_->toLocal(b.south, b.west); const auto ne = frame_->toLocal(b.north, b.east); - // 视锥剔除:瓦片 AABB 全在某视锥面外侧 → 不在视野内,直接丢弃(否则会在屏幕外乱细分耗尽预算)。 + // 视锥剔除:瓦片 AABB 全在某侧面外侧 → 不在视野内,丢弃(否则屏幕外乱细分耗尽预算)。 + // 只用 4 个侧面(左右上下),不用近/远裁剪面——远裁剪面随已加载几何变化, + // 首帧底图未齐时远面贴得近会误剔除远处可见瓦片(等多久都不出、微动才出)。 const double zmin = -1000.0, zmax = 1000.0; // 地形起伏远小于瓦片尺度,给宽松 z 带 - for (int p = 0; p < 6; ++p) { + for (int p = 0; p < 4; ++p) { const double* pl = &frustum_[p * 4]; // 内法向:内侧 a·x+b·y+c·z+d ≥ 0 const double vx = pl[0] >= 0 ? ne.x : sw.x; // 取最朝法向的角点(p-vertex) const double vy = pl[1] >= 0 ? ne.y : sw.y;