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 라이브러리입니다. 웹 스타일 3D API의 유연성이 필요하면서도 C++의 성능과 하드웨어 액세스가 필요한 개발자를 위해 통합된 씬 그래프를 제공하며, 여기에는 고급 렌더링 백엔드와 로봇 공학 연구를 위한 통합 물리 및 센서 시뮬레이션이 포함됩니다.

작동 원리

이 라이브러리는 단일 씬 그래프를 사용하며, 휴대용 OpenGL 렌더러와 지연 렌더링 Vulkan 렌더러라는 두 가지 별도의 백엔드를 통해 렌더링할 수 있습니다. 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 스캔 렌더링 지원 및 스캔을 물리 연산용 표면으로 베이킹하는 기능.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트