V.2.2.0 フォトジェニックな世界へ

2026-10-31 · Kenji Yoshida

「Cesium みたいなもの」を作るのは、さして難しくない。 しかし「Cesium レベルの 3D エンジン」を作るとなると話が全然違う。 それほど、Cesium は神なのである。

猿真似でもいい。その神に一歩ずつ近づくために、Cesium にできて ortho-earth にできないものを、Sandcastle をなぞりながら、一つずつ消していく泥臭い作業に入った。これはその荊の道の記録である。

なんか「プロジェクト X」風ではあるが、製図係(Claude)達の粘り強さには、さすがに感動を覚えた!

方法

Sandcastle(Cesium の公式例)309 本を全部、ortho-earth の上で動かした。月・火星の例、ビューアの無い例、2D 始まりの例など 12 本は比べようがないので外し、残る 297 本を Cesium と並べて比べる。

進捗の記録

最初の撮影(2026-10-25)は、3/2/1/0 = 23/120/129/24。309 本中、同じ絵はたった 23 本で、少しやばいと思った。そこからの推移:

日時3210何が入ったか
10-252312012924最初の撮影。Primitive・Model・粒子・雲などが「未対応」で止まる
10-26331836211facade(#672)。Cesium の部品を借りて、ほぼ全部が動くように
10-261001295410CZML の立体、3D Tiles、星空、地球の半透明(#698〜#703)
10-27117126448模型の光(#704)、影、青い地球、衛星の軌道(#715〜#720)
10-28124121439地平線、近景の地形、カメラの目標(#723〜#730)
10-29149108328後処理、粒子・雲・束ね表示、海底、レンズフレア、点群、CustomShader(〜#761)
10-3018610650実 GPU で 309 本を撮り直し(ortho 側は UI を隠して)。3D Tiles への画像の貼り付け、切り抜き多角形、自前の GLSL(〜#798)
v2.2.019010700npm の 2.2.0 と同じコードで、実 GPU で 309 本を 1 回で撮り直し。地形の負の高さ、地下の判定、雲(〜#808)

注:10-28 までの撮影は、検定がソフトの GPU(SwiftShader、WebGPU 無し)を強制していた条件で、ortho は WebGL2 に落ちて描いていた。10-28 の途中から Mac の実 GPU(Metal、WebGPU)で撮っている。10-29 の行は、家族ごとの撮り直しをギャラリーに重ねた数。10-30 の行は、実 GPU で 309 本を撮り直した数。最後の v2.2.0 の行は、npm に出した 2.2.0 と同じコードで撮り直した最終の数。

結果

v2.2.0(npm に出したのと同じコード、Mac の実 GPU・WebGPU)で 309 本を 1 回で撮り直した結果、採点した 297 本は 3/2/1/0 = 190 / 107 / 0 / 0。動かない例も、一部が動かない例も無くなり、全部が Cesium と同じ答えを返すようになった。同じ絵は 190 本(64%)。最初の撮影の 23 本から 8 倍になった。全部の絵は Sandcastle で、Cesium と並べて見られる。

左から Before(ortho)・After(ortho、v2.2.0)・本物の Cesium。

aerometrex-san-francisco:灰色の空が青空に(色の一致 50.7% → 90.2%)

aerometrex-san-francisco の Before・After・Cesium

sample-height-from-3d-tiles:全面の灰色から屋上の絵に(27.7% → 98.2%)

sample-height-from-3d-tiles の Before・After・Cesium

drape-imagery-on-3d-tiles:3D Tiles の上に地図が貼られた(22.5% → 97.6%)

drape-imagery-on-3d-tiles の Before・After・Cesium

itwin-gaussian-splats:青一色から建物に(0.0% → 91.2%)

itwin-gaussian-splats の Before・After・Cesium

作ったもの

諦めたもの

上流がびくともしない理由

この 7 日間で、Cesium 互換を中心に約 130 本の PR(#665〜#808)が main に入った。それでも main への自動 deploy は、本番に出す前に WebGPU・UI の全ページ検定と本番出荷物の検定を回す。途中で WGSL や深度、雲の回帰(#730〜#734、#799)もあったが、検定が見つけて配信を止め、その日のうちに直している。

ortho-earth も、v2.2.0 でフォトジェニックと言えるようになり、機能も大分充実してきた。Cesium 互換の評価手法も確立したので、今後とも更に機能に磨きをかけていく。

同じやり方で、Leaflet と Google Maps の書き方も地球儀の上で動くようになった。何が出たかは「Ortho Earth 2.2 を公開しました」に書いた。

しかし、これだけ派手に機能を弄っても上流がびくともしない。これが ortho-earth の開発手法である。

Kenji Yoshida @ Yokohama