bullet3
Bullet3 是一款功能强大的开源物理引擎 SDK,专注于提供实时的碰撞检测与多物理场模拟能力。它广泛服务于虚拟现实(VR)、电子游戏开发、视觉特效制作、机器人技术以及机器学习等领域,帮助开发者在数字世界中构建符合真实物理规律的运动与交互效果。
对于需要处理复杂物体互动、刚体动力学或柔性体模拟的项目,Bullet3 提供了高效且稳定的解决方案,显著降低了从零编写物理算法的难度与成本。无论是游戏开发者追求逼真的破坏效果,还是科研人员训练强化学习模型,亦或是机器人工程师验证控制算法,都能从中获益。
该工具的一大亮点是提供了名为 PyBullet 的 Python 绑定接口,极大地简化了安装与调用流程,使其成为机器人学和人工智能研究领域的热门选择。此外,Bullet3 还支持实验性的 OpenCL GPGPU 加速,能够将整个碰撞检测和刚体动力学计算卸载到高性能显卡上运行,从而大幅提升大规模模拟的计算效率。基于宽松的 zlib 许可证,Bullet3 允许用户自由地将其集成到商业或个人项目中,是连接理论算法与实际物理仿真应用的桥梁。
使用场景
某机器人研发团队正在开发一款基于强化学习的四足机器人,需要在虚拟环境中训练其应对复杂地形和动态障碍物的行走能力。
没有 bullet3 时
- 物理仿真精度低,机器人在虚拟环境中行走时经常出现“穿模”或悬浮现象,导致训练数据失真。
- 碰撞检测计算缓慢,无法实时处理多腿与地面的高频交互,严重拖慢强化学习算法的迭代速度。
- 缺乏对刚体动力学的高效支持,模拟机器人摔倒或受外力冲击时,动作表现僵硬且不自然。
- 难以对接 Python 生态,团队需花费大量时间编写底层 C++ 接口代码,无法快速验证新的控制策略。
- 不支持 GPU 加速,大规模并行训练场景下算力瓶颈明显,实验周期被迫延长数倍。
使用 bullet3 后
- 借助 bullet3 高精度的实时碰撞检测,机器人脚部与地形的接触反馈真实可靠,彻底消除了“穿模”问题。
- 利用其优化的多物理引擎,系统能流畅处理高频步态交互,显著提升了强化学习模型的训练效率。
- 通过 bullet3 强大的刚体动力学模拟,机器人跌倒、翻滚等复杂动态行为表现自然,大幅增强了策略的鲁棒性。
- 直接调用 PyBullet 绑定,团队可用 Python 快速搭建仿真环境并集成 TensorFlow/PyTorch,研发周期缩短 60%。
- 开启 OpenCL GPU 加速功能后,大规模并行仿真实验运行流畅,原本需要数天的训练任务现在仅需数小时。
bullet3 通过提供高精度、实时的物理仿真与便捷的 Python 接口,成为连接机器人算法研究与现实部署的关键桥梁。
运行环境要求
- Windows
- Linux
- macOS
- iOS
- Android
- 可选:若启用实验性 OpenCL GPGPU 支持,需高端桌面显卡(如 AMD Radeon 7970 或 NVIDIA GTX 680 及以上)
- 不支持 OpenCL CPU 设备
- 笔记本 GPU 性能可能较差
- 常规运行仅需 OpenGL 2 或 3(用于部分演示)
未说明

快速开始
Bullet 物理 SDK
这是 Bullet 物理 SDK 的官方 C++ 源代码仓库:用于 VR、游戏、视觉特效、机器人、机器学习等领域的实时碰撞检测和多物理仿真。

问题
问题跟踪器曾被大量支持请求淹没,现已关闭,直至清理完毕。请使用 PyBullet 论坛与其他用户交流。
PyBullet
强烈建议使用 PyBullet Python 绑定,以更好地支持机器人、强化学习和 VR。可通过 pip install pybullet 安装,并查看 PyBullet 快速入门指南。
安装非常简单:
pip3 install pybullet --upgrade --user
python3 -m pybullet_envs.examples.enjoy_TF_AntBulletEnv_v0_2017may
python3 -m pybullet_envs.examples.enjoy_TF_HumanoidFlagrunHarderBulletEnv_v1_2017jul
python3 -m pybullet_envs.deep_mimic.testrl --arg_file run_humanoid3d_backflip_args.txt
如果您在研究中使用 PyBullet,请按以下方式引用:
@MISC{coumans2021,
author = {Erwin Coumans 和 Yunfei Bai},
title = {PyBullet,一款用于游戏、机器人和机器学习的物理仿真 Python 模块},
howpublished = {\url{http://pybullet.org}},
year = {2016--2021}
}
Bullet Physics C++ 的要求
需要支持 C++ 2003 标准的 C++ 编译器。该库已在 Windows、Linux、Mac OSX、iOS 和 Android 上测试过,但理论上应在任何具备 C++ 编译器的平台上运行。部分可选演示需要 OpenGL 2 或 OpenGL 3,同时也有非图形化的演示和单元测试。
贡献者与编码规范信息
https://docs.google.com/document/d/1u9vyzPtrVoVhYqQOGNWUgjRbfwfCdIts_NzmvgiJ144/edit
实验性 OpenCL GPGPU 支持的要求
整个碰撞检测和刚体动力学都可以在 GPU 上执行。 需要高端桌面 GPU,例如 AMD Radeon 7970 或 NVIDIA GTX 680 及更高配置。我们已在 Windows、Linux 和 Mac OSX 上成功测试了该软件。目前该软件尚不支持 OpenCL CPU 设备。虽然可能在笔记本电脑的 GPU 上运行,但性能通常不会太理想。需要注意的是,OpenCL 驱动程序有时无法编译内核。我们已有一些单元测试来排查问题,但仍需进一步工作以覆盖所有 OpenCL 内核。
许可证
除非特定文件夹或文件另有说明,所有源代码文件均采用宽松的 zlib 许可证(http://opensource.org/licenses/Zlib)。
使用 vcpkg 构建 Bullet 的说明
您可以通过 vcpkg 依赖管理工具下载并安装 Bullet:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install bullet3
vcpkg 中的 Bullet 包由 Microsoft 团队成员和社区贡献者维护。如果版本过时,请在 vcpkg 仓库中 提交问题或拉取请求。
使用 premake 构建 Bullet 的说明。您也可以使用 cmake 替代。##
Windows
双击 build_visual_studio_vr_pybullet_double.bat,然后打开 build3/vs2010/0_Bullet3Solution.sln。系统提示时,将项目转换为较新版本的 Visual Studio。如果您将 Python 安装在 C:\ 根目录下,批处理文件应能自动找到它。否则,请编辑此批处理文件以指定 Python 的 include/lib 目录位置。
Windows 虚拟现实沙盒(适用于 HTC Vive 和 Oculus Rift)
构建并运行 App_SharedMemoryPhysics_VR 项目,最好选择 Release/优化版本。您可以通过以下方式从 Python 的 pybullet 连接到该沙盒:
import pybullet as p
p.connect(p.SHARED_MEMORY) #或 (p.TCP, "localhost", 6667) 或 (p.UDP, "192.168.86.10",1234)
Linux 和 Mac OSX gnu make
确保已安装 gcc 和 cmake(对于 Linux,运行 sudo apt-get install build-essential 和 sudo apt-get install cmake;对于 Mac,运行 brew install cmake,或访问 https://cmake.org)。
在终端中输入:
./build_cmake_pybullet_double.sh
该脚本将调用 cmake 并在 build_cmake 目录中进行构建。您可以在 Bullet/examples/pybullet 中找到 pybullet。而 BulletExampleBrowser 二进制文件则位于 Bullet/examples/ExampleBrowser。
您也可以使用 premake 构建 Bullet。build3 文件夹中包含 premake 可执行文件。根据您的系统(Linux 32位、64位或 Mac OSX),使用以下命令之一: 使用 premake:
cd build3
./premake4_linux --double gmake
./premake4_linux64 --double gmake
./premake4_osx --double --enable_pybullet gmake
然后:
cd gmake
make
请注意,在 Linux 上,由于编译器在混合共享库和静态库时存在问题,因此必须使用 cmake 来构建 pybullet。
Mac OSX Xcode
点击 build3/xcode4.command,或在终端窗口中执行:
./premake_osx xcode4
使用方法
App_ExampleBrowser 可执行文件位于 bin 文件夹中。您可以通过终端/命令提示符直接运行,或直接双击打开。
[--start_demo_name="Demo Name"] 从选定的演示开始
[--mp4=moviename.mp4] 创建窗口的 mp4 视频,需安装 ffmpeg
[--mouse_move_multiplier=0.400000] 设置鼠标移动灵敏度
[--mouse_wheel_multiplier=0.01] 设置鼠标滚轮灵敏度
[--background_color_red= 0.9] 设置背景颜色的红色分量。绿色和蓝色同理
[--fixed_timestep= 0.0] 使用实时时间步长(0.0)或固定时间步长(0.016666)
您可以使用鼠标拾取功能抓取物体。按住 ALT 或 CONTROL 键时,即可使用 Maya 风格的相机控制。按下 F1 可拍摄一系列截图。按 ESCAPE 键退出演示应用。
更多详细信息请参阅 docs 文件夹和 Bullet 物理论坛。
版本历史
3.252022/04/243.22b2022/03/263.212021/12/013.172020/11/263.062020/09/242.892019/12/212.882018/12/312.872017/09/292.86.12017/02/192.85.12016/10/152.83.72016/01/12常见问题
相似工具推荐
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。
PaddleOCR
PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来,转换成计算机可读取的结构化数据,让机器真正“看懂”图文内容。 面对海量纸质或电子文档,PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域,它扮演着连接图像与大型语言模型(LLM)的桥梁角色,能将视觉信息直接转化为文本输入,助力智能问答、文档分析等应用场景落地。 PaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显:不仅支持全球 100 多种语言的识别,还能在 Windows、Linux、macOS 等多个系统上运行,并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目,PaddleOCR 既能满足快速集成的需求,也能支撑前沿的视觉语言研究,是处理文字识别任务的理想选择。
awesome-machine-learning
awesome-machine-learning 是一份精心整理的机器学习资源清单,汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点,这份清单按编程语言(如 Python、C++、Go 等)和应用场景(如计算机视觉、自然语言处理、深度学习等)进行了系统化分类,帮助使用者快速定位高质量项目。 它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库,还是资深工程师对比不同语言的技术选型,都能从中获得极具价值的参考。此外,清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源,构建了从学习到实践的全链路支持体系。 其独特亮点在于严格的维护标准:明确标记已停止维护或长期未更新的项目,确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”,awesome-machine-learning 以开源协作的方式持续更新,旨在降低技术探索门槛,让每一位从业者都能高效地站在巨人的肩膀上创新。
scikit-learn
scikit-learn 是一个基于 Python 构建的开源机器学习库,依托于 SciPy、NumPy 等科学计算生态,旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口,涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具,内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。 对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言,scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点,让用户无需重复造轮子,只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。 其核心技术亮点在于高度一致的 API 设计风格,所有估算器(Estimator)均遵循相同的调用逻辑,极大地降低了学习成本并提升了代码的可读性与可维护性。此外,它还提供了强大的模型选择与评估工具,如交叉验证和网格搜索,帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目,scikit-learn 以其稳定性、详尽的文档和活跃的社区支持,成为连接理论学习与工业级应用的最
