diff --git a/B04_PreProcess/B04_PreProcess_UI_TerrainViewer.ts b/B04_PreProcess/B04_PreProcess_UI_TerrainViewer.ts index 2369e528..39819486 100644 --- a/B04_PreProcess/B04_PreProcess_UI_TerrainViewer.ts +++ b/B04_PreProcess/B04_PreProcess_UI_TerrainViewer.ts @@ -417,10 +417,15 @@ export function createSurfaceTerrainViewer(): SurfaceTerrainViewer { routeGroup.add( new THREE.Line(new THREE.BufferGeometry().setFromPoints(vertices), material), ); + // 노선은 지형 로딩과 따로 도착한다. 지형이 이미 떠 있으면 노선까지 담도록 다시 맞춘다. + if (terrainMesh) fitCamera(terrainMesh); } const getFitParams = (object: THREE.Object3D) => { const box = new THREE.Box3().setFromObject(object); + // 계획노선은 최고 표고 평면에 있어 지형 상자 위·밖으로 걸친다. 지형만 보고 맞추면 + // 노선이 화면 밖으로 밀려 보이지 않는다 — 프레임에 같이 넣는다. + if (routeGroup.children.length > 0) box.expandByObject(routeGroup); const center = box.getCenter(new THREE.Vector3()); const size = box.getSize(new THREE.Vector3()); const span = Math.max(size.x, size.y, size.z, 1);