>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Rust

Pythonで重量級C++の痛みなし3Dマップと地形をレンダリングする方法

Pythonで高さ行列から高品質な3D地形モデルをレンダリングする必要があった最後の頃は、いつもの壁にぶつかりました。低速な3DグラフィックスのMatplotlibを使うか、重いGISパッケージを引っ張ってきて、C++ラッパーを扱い、グラフィックコンテキストを手動で設定するか。

forge3dプロジェクトは、このギャップを埋めようとしています。著者はRustエンジンを取り上げ、wgpuライブラリ経由でWebGPUグラフィックAPIにラップし、Python用の готов-made wheelsを構築しました。その結果は、数行のコードでインタラクティブなビューアを開くか、ウィンドウなしでシーンをレンダリングできるツールです。

forge3dの内部動作

このライブラリの主なアイデアは、おなじみのデータサイエンスとGISデータ型を高速なGPUレンダリングと組み合わせることです。シェーダーを書いたり、WebGPUパイプラインを理解したりする必要はありません——内部ではそれが動いていますが。

ライブラリが標準で提供する機能:

  • GeoTIFFとNumPy配列から高さ行列を読み込み。
  • LAZ、COPC、EPT形式の点群を読み込み。
  • ラスターとベクターオーバーレイレイヤーで動作。
  • ネットワークからタイルをストリーミングするためのCOGプロトコルをサポート。
  • 専用ウィジェット経由でJupyter Notebookに直接埋め込み。

インストールは簡単です:

notebookで直接3Dを実行したり、テストデータセットを取得する予定がある場合は、拡張パッケージセットをすぐにインストールできます:

5行のコードで地形をレンダリング

ビューアでの作業を見てみましょう。以下のコードはレーニア山のテストDEMファイルをダウンロードし、ウィンドウを開き、高解像度フレームを保存します。

構文に注意してください。太陽位置、カメラ角度、Z軸スケーリングは直感的なメソッドで設定されます。同時に、CI/CDやバッチマップ処理スクリプトなどで、グラフィック環境なしでシーンを完全にレンダリングできます。

なぜWebGPUとRustなのか

技術選択は建築的に正当化されています。Rustは、LAZや重いGeoTIFFファイルなどのバイナリフォーマットを処理する際に高速性と安全性を提供します。WebGPUは、Vulkan、Metal、DirectX 12で同様に動作する最新のクロスプラットフォームAPIとして機能します。

単一のWheelパッケージでコンパイル済みバイナリを取得できます。C++ライブラリのマニュアルビルドや、競合するOpenGLシステムドライバーの心配は不要です。

何がオープンで、何に払う必要があるか

開発者は明確なモデルを設定しています。コア機能はApache 2.0およびMITライセンスでリリースされています。サーフェスの構築、点群の読み込み、ベクターのオーバーレイ、アニメーションのアセンブリが可能です。

カートのモジュールやSVG/PDFへのエクスポート、スケールバー、GeoJSONまたはCityJSONからの3D建物の読み込みには、商用キーを要求しています。 activateメソッドで有効化されます。

このツールの対象者

ジオデータ分析、地形可視化、Pythonでのマップ作成に関わる仕事をしているなら、このプロジェクトは確かにブックマークする価値があります。ライブラリはGitHubで約560個のスターを持っていますが、コードはクリーンで、ドキュメントには動作する例が豊富にあります。

シンプルな2Dマップには、 FoliumまたはGeoPandasを使用してください。しかし、高速な3D地形や点群処理が必要な人で、低レベルのグラフィックに踏み込みたくない場合は、forge3dが余分な手間なく仕事を引き受けてくれます。

関連プロジェクト