markaren/threepp

A cross-platform C++20 3D library with Python bindings and the high-level API of three.js.

解決する課題

threeppは、three.jsの高度でアクセスしやすいAPIをC++エコシステムにもたらす、クロスプラットフォームのC++20 3Dライブラリです。Webスタイルの3D APIの柔軟性を必要としながらも、C++のパフォーマンスとハードウェアアクセスを求める開発者のために、統一されたシーングラフを提供します。これには、高度なレンダリングバックエンドや、ロボット工学研究のための統合された物理・センサーシミュレーションが含まれます。

仕組み

このライブラリは単一のシーングラフを使用し、ポータブルなOpenGLレンダラーと遅延レンダリングを行うVulkanレンダラーという2つの異なるバックエンドでレンダリング可能です。Vulkanバックエンドは、レイトレーシングによる影、反射、グローバルイルミネーションなどのハイエンド機能を実現します。シミュレーションに関しては、剛体および関節シミュレーション用のPhysXと、軟体/粒状地面シミュレーション用のNVIDIA Warpを統合しています。また、Pythonバインディングも提供しており、C++のパフォーマンスを維持しながらPythonで3Dシーンの作成やシミュレーションの実行が可能です。

対象ユーザー

主にロボット工学やAI分野の研究者、学生、プロトタイパー向けに設計されています。特に、デジタルツインの構築、知覚センサー(LiDAR、ソナー、イベントカメラ)用の合成データ生成、シミュレーション環境でのRL(強化学習)エージェントのトレーニングを行うユーザーを想定しています。

主な特徴

  • three.jsとの互換性: メッシュ、ライト、カメラ、ローダー(glTF, OBJ, STLなど)を含む、three.js APIの包括的な移植を実装。
  • 高度なレンダリング: レイトレーシング、DLSS/FSR 3.1アップスケーリング、ボリュームフォグを備えたVulkanバックエンド。
  • ロボティクスシミュレーション: ロボットの関節(URDF/xacro)用のPhysX統合と、合成データ用のグラウンドトゥルースラベル付きシミュレーションセンサー。
  • Python統合: 強化学習用のGPUベクトル化PPOスタックを備えた完全なPythonバインディング。
  • Hardware-in-the-Loop: ArduPilotを使用したロックステップ飛行シミュレーションのサポート。
  • Gaussian Splatting: .plyおよびSOGスキャンのレンダリングをサポートし、スキャンを物理演算用のサーフェスとしてベイクする機能。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト