Cesium 1.135.0におけるマーカー位置ズレ問題と解決方法

問題の概要 Cesium.js 1.135.0を使用したReactアプリケーションにおいて、CLAMP_TO_GROUND設定を使用したビルボードマーカーの位置が、カメラの移動やズーム操作後に不正確になる現象が確認された。 環境 Cesium.js : 1.135.0(問題発生)→ 1.134.0(問題解消) フレームワーク : Next.js 16.0.1 + React 19.2.0 地形データ : Cesium World Terrain (Cesium.Terrain.fromWorldTerrain()) マーカー設定 : clampToGround: true heightReference: Cesium.HeightReference.CLAMP_TO_GROUND 症状 特定のマーカーをクリックしてズーム(拡大) カメラの視点を変更(回転・パン) 遠くにあるマーカーを確認すると、地形から浮いているか、不正確な位置に表示される この問題は、カメラが近距離に移動した際に読み込まれる高解像度の地形データ(LOD: Level of Detail)と、遠方のマーカーが参照する低解像度の地形データとの不整合によって発生すると考えられる。 調査プロセス 試行1: カメラ制御の明示化 マーカークリック時にsampleTerrainMostDetailedを使用して地形高度を取得し、明示的にカメラを移動させる実装を試みたが、問題は解消されなかった。 試行2: heightReferenceの変更 heightReferenceをCLAMP_TO_GROUNDからNONEに変更し、disableDepthTestDistanceを使用する実装を試みたが、この場合はマーカーが地形に正しく配置されず、別の問題が発生した。 試行3: バージョン比較 動作確認用のHTMLファイル(Cesium 1.110.0使用)では同様の問題が発生しないことを確認。Cesiumのバージョンが問題の原因である可能性を特定。 解決策 Cesium.jsを1.135.0から1.134.0にダウングレードすることで問題が解消された。 n p m i n s t a l l c e s i u m @ 1 . 1 3 4 . 0 技術的背景 CLAMP_TO_GROUNDの動作 CesiumのCLAMP_TO_GROUND設定は、エンティティを地形の表面に固定する機能を提供する。この機能は地形タイルのLOD(Level of Detail)に依存しており、カメラの位置によって異なる解像度の地形データが使用される。 ...

2025年11月14日 · 5 分 · Nakamura

Nuxt3 x Vuetify x Cesium

概要 Nuxt3とVuetifyとCesiumを使用したサンプルリポジトリを作成しました。 ソースコード vue-cesiumを使用しています。 https://github.com/zouyaoji/vue-cesium GitHubリポジトリは以下です。 https://github.com/nakamura196/nuxt3-vuetify-cesium デモサイト https://nakamura196.github.io/nuxt3-vuetify-cesium/ まとめ 参考になりましたら幸いです。

2023年11月30日 · 1 分 · Nakamura