衛星画像と3D地形を組み合わせた動画を作りたいとき、従来はBlenderやQGIS、matplotlibなど複数のツールをつなぎ合わせる必要がありました。

forge3dはその工程をPythonコードだけで完結させるオープンソースライブラリです。Sentinel-2の衛星画像をCopernicus DEM地形データに重ねて、オービットカメラ付きの3Dアニメーションを生成できます。

この記事でわかること:

  • forge3dが解決する地理可視化の課題
  • インストールと基本的なコードの流れ
  • 主な機能(地形レンダリング・点群・カメラアニメーション)
  • ライセンスと無料で使える範囲

https://github.com/milos-agathon/forge3d

forge3dとは

forge3dはPythonから呼び出せる地形・シーンレンダリングライブラリです。内部はRustとWebGPUで実装されており、高速なオフスクリーンレンダリングと対話型ビューアを両立しています。PyPIで配布されており、pip install forge3dでインストールできます。Python 3.10以上が必要です。

最新バージョンはv1.23.1(2026年4月7日リリース)。ライセンスはApache-2.0とMITのデュアルライセンスで、オープンソースコアは無料で利用できます。

何が課題だったか

衛星データを使った3D地形可視化には、通常いくつかの工程が必要でした。

まずGeoTIFFなどのラスターデータを取得し、DEMデータと位置合わせし、3Dレンダリング環境に読み込んで、カメラパラメーターを調整して出力する——この一連の作業はBlenderのスクリプトやQGISのプラグインを組み合わせるのが一般的です。コードだけで完結するツールは少なく、GISの専門知識なしに扱うには敷居が高い状態でした。

forge3dはこの課題をPython APIで一元化し、数十行のコードで衛星3D可視化を完成させます。

主な機能

地形レンダリング

GeoTIFFまたはNumPy配列のDEMデータを入力として、インタラクティブビューアと静止画・動画のオフスクリーンレンダリングに対応しています。open_viewer_async()でリアルタイムプレビューを開き、snapshot()で高解像度の静止画を出力します。

ラスター・ベクターオーバーレイ

Sentinel-2などの衛星画像やベクターデータを地形に重ねられます。ラベル、カメラアニメーション、オービットカメラも標準で備わっており、特定の地点を中心に回転するタイムラプス動画を生成できます。

点群(LiDAR)読み込み

LAZ、COPC、EPT形式の点群データを読み込んでビューアに表示できます。LiDARデータと衛星画像を組み合わせた可視化も可能です。

Jupyterウィジェット

pip install "forge3d[jupyter]"でJupyterNotebook向けのインタラクティブウィジェットが使えます。ブラウザ上で地形をマウス操作しながら確認でき、パラメーター調整の試行錯誤に向いています。

COGストリーミング

Cloud Optimized GeoTIFF(COG)に対応しており、ローカルにダウンロードせずにリモートの衛星データをストリーミングでレンダリングできます。大容量のSentinel-2アーカイブを扱う際に便利です。

クイックスタート

サンプルDEMデータを使って基本的な地形スナップショットを作る最小コードです。

import forge3d as f3d

dem_path = f3d.fetch_dem("rainier")

with f3d.open_viewer_async(terrain_path=dem_path, width=1440, height=900) as viewer:
    viewer.set_z_scale(0.1)
    viewer.set_orbit_camera(phi_deg=28, theta_deg=49, radius=5400, fov_deg=42)
    viewer.set_sun(azimuth_deg=302, elevation_deg=24)
    viewer.snapshot("rainier.png", width=1920, height=1080)

fetch_dem("rainier")はレイニア山のサンプルDEMをダウンロードします。set_z_scale()で高度の誇張倍率を指定し、set_orbit_camera()でカメラの仰角・方位角・距離・FOVを設定します。snapshot()に出力解像度を渡して画像を保存します。

Sentinel-2画像を重ねたタイムラプス動画を生成する場合はforge3d[datasets]エクストラをインストールし、ラスターオーバーレイAPIでSentinel-2のGeoTIFFを指定します。具体的な手順は公式ドキュメントのチュートリアルに掲載されています。

ライセンスと料金

オープンソースコアはApache-2.0またはMITライセンスで無料です。商用向けの上位機能(地図凡例・スケールバー・北矢印・SVG/PDFエクスポート・建物インポートパイプラインなど)は商用ライセンスキーが必要です。forge3d.set_license_key()でキーを設定して有効化します。

個人プロジェクトや研究目的であれば、オープンソースコアの機能だけで衛星3D可視化・タイムラプス生成・点群表示まで対応できます。

類似ツールとの比較

Blender + GIS add-onは細かい表現が可能ですが、UIでの操作が主体になるため自動化やバッチ処理に向きません。forge3dはPythonコードから完全に制御でき、スクリプトによる量産に適しています。

matplotlib + elevationでも地形の可視化はできますが、ラスターオーバーレイやカメラアニメーションは自前で実装する必要があります。forge3dはこれらをAPIとして提供しています。

QGISはGIS専門家向けのデスクトップアプリで、Pythonプラグインもありますが、スタンドアロンのスクリプトとして実行しにくい面があります。バッチ処理や自動化パイプラインに組み込む場合はforge3dのほうが扱いやすいです。

まとめ

forge3dは、衛星画像と3D地形の可視化をPythonだけで完結させるライブラリです。pip install forge3dでインストールでき、Sentinel-2データとCopernicus DEMを組み合わせたオービットタイムラプスを数十行のコードで生成できます。GISツールの操作を覚えなくてもPythonスクリプトで書けるため、データサイエンティストや地理空間データを扱う研究者にとって実用的な選択肢です。