Repolode
markaren

markaren/threepp

Кроссплатформенная 3D-библиотека на C++20 с API в стиле three.js, бэкендами OpenGL и Vulkan, привязками к Python, а также симуляцией физики и датчиков.

Звёзды
1,208
Форки
156
Открытые issues
3
Последний коммит
вчера

Что это?

threepp — это 3D-библиотека на C++20 с высокоуровневым API, повторяющим three.js. Разработчики, знакомые с three.js, могут создавать сцены с похожими объектами: Mesh, Scene, источниками света, камерами и загрузчиками. Для рендеринга можно использовать переносимый бэкенд OpenGL или отложенный рендерер Vulkan с трассировкой лучей для теней и отражений, а также с затенением окружающего света и глобальным освещением. Один и тот же код сцены работает с обоими бэкендами.

Помимо рендеринга, проект включает редактор сцен, симуляцию роботов и твёрдых тел на базе PhysX, а также симуляцию lidar, датчиков глубины, камер, IMU и других датчиков, способных формировать эталонные метки для синтетических данных. Кроме того, поддерживается управление полётом с аппаратурой в контуре через ArduPilot. Привязки к Python опубликованы на PyPI и предоставляют доступ к рендерерам, меткам в виде массивов NumPy и артикуляциям PhysX.

Проект позиционируется как решение для исследований, прототипирования и обучения, а не как основа для production-движков; также отмечается, что API меняется от релиза к релизу. Для бэкенда Vulkan нужны расширения трассировки лучей, поэтому на macOS он не работает — вместо него используется рендерер OpenGL.

Ключевые возможности

  • 01API в стиле three.js для работы с мешами, источниками света, камерами, контроллерами, анимацией и постобработкой.
  • 02Загрузчики для glTF, OBJ, STL, COLLADA, SVG, URDF, FBX (подключается отдельно), а также распространённых графических форматов и HDR.
  • 03Отложенный рендерер Vulkan с трассировкой лучей для теней и отражений, а также с AO и GI.
  • 04Симуляция датчиков, включая lidar, камеры глубины и цвета, IMU и энкодеры суставов.
  • 05Интеграция PhysX для твёрдых и мягких тел, артикуляций и транспортных средств.
  • 06Привязки к Python, которые можно установить через PyPI; поддерживается безоконный рендеринг.

Сценарии использования

  • Создание симуляций робототехники или автономных систем на C++ с моделями датчиков и физикой.
  • Генерация размеченных синтетических изображений и данных о глубине для обучения систем восприятия.
  • Перенос кода сцен в стиле three.js в нативное приложение на C++.
  • Обучение основам 3D-графики с помощью знакомого высокоуровневого API.

Быстрый старт

  1. 1

    Установите пакет Python из PyPI

    pip install threepp
  2. 2

    Соберите бэкенд OpenGL с помощью CMake presets

    cmake --preset gl
  3. 3

    Скомпилируйте сборку OpenGL

    cmake --build --preset gl

Что важно знать

  • Для бэкенда Vulkan требуются GPU с поддержкой трассировки лучей; на macOS он не работает. В этом случае используйте GLRenderer.
  • Проект предназначен для исследований, прототипирования и обучения, а не для промышленной эксплуатации; API меняются от релиза к релизу.
  • Слой симуляции (Vulkan, датчики, PhysX, редактор, Python) развивается быстрее всего, а поддержка Vulkan-вьюпорта редактора предоставляется по возможности.

В подборках

Темы

Частые вопросы

Что такое threepp?
Кроссплатформенная 3D-библиотека на C++20 с API в стиле three.js, бэкендами OpenGL и Vulkan, привязками к Python, а также симуляцией физики и датчиков. threepp — это 3D-библиотека на C++20 с высокоуровневым API, повторяющим three.js. Разработчики, знакомые с three.js, могут создавать сцены с похожими объектами: Mesh, Scene, источниками света, камерами и загрузчиками. Для рендеринга можно использовать переносимый бэкенд OpenGL или отложенный рендерер Vulkan с трассировкой лучей для теней и отражений, а также с затенением окружающего света и глобальным освещением. Один и тот же код сцены работает с обоими бэкендами.
threepp можно использовать бесплатно? Какая у него лицензия?
threepp распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
threepp всё ещё поддерживается?
Активно поддерживается. Последний коммит в threepp — 6 нояб. 2026 г..
Для чего можно использовать threepp?
Создание симуляций робототехники или автономных систем на C++ с моделями датчиков и физикой. Генерация размеченных синтетических изображений и данных о глубине для обучения систем восприятия. Перенос кода сцен в стиле three.js в нативное приложение на C++. Обучение основам 3D-графики с помощью знакомого высокоуровневого API.
Как установить threepp?
Установите пакет Python из PyPI: pip install threepp Соберите бэкенд OpenGL с помощью CMake presets: cmake --preset gl Скомпилируйте сборку OpenGL: cmake --build --preset gl
Где скачать threepp?
Исходный код и инструкции по установке — на GitHub: https://github.com/markaren/threepp

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Движок физически корректного рендеринга в реальном времени для Android, iOS, Linux, macOS, Windows и WebGL2, рассчитанный на компактность и эффективность на Android.

20,7 тыс.+30 за неделю2,3 тыс.C++Apache-2.0Активно поддерживаетсяОбновлён вчера

OGRE — модульный движок рендеринга на C++, который объединяет Vulkan, Direct3D и OpenGL для создания 3D-приложений на C++ и Python.

4,7 тыс.+8 за неделю1 тыс.C++MITАктивно поддерживаетсяОбновлён вчера

Кроссплатформенный UI-фреймворк на C++17 с GLFW/SDL2 для окон и OpenGL/Vulkan для рендеринга, построенный вокруг декларативного DSL.

2,1 тыс.+14 за неделю186C++Apache-2.0Активно поддерживаетсяОбновлён 4 дня назад