three_js_urdf_parser
A Flutter library for parsing and rendering URDF (Unified Robot Description Format) files, powered by the three_js engine.
✈️ Online DEMO
https://www.debuggerx.com/three_js_urdf_parser/
🙏 Acknowledgements & Origins
This project is a major fork of flutter-urdf-parser originally developed by JayKay135.
I would like to express my deep gratitude to the original author for providing the core logic and foundation for URDF parsing in Flutter.
Why the Fork and Rename?
The original library was built on three_dart and flutter_gl, which are no longer actively maintained and face compatibility issues with modern Flutter versions.
I created three_js_urdf_parser to:
- Migrate to three_js: The most active and feature-complete Three.js port for Flutter.
- Improve Performance: Leverage the optimized rendering pipeline of
three_js. - Enhance Flexibility: Added support for custom PBR materials and improved asset loading via
rootBundle. - Modernize API: Updated the entire codebase to support Dart 3.x and the latest 3D API standards.
✨ Features
- 🚀 Native three_js Integration: Seamlessly works with the
three_jsecosystem. - 📦 Asset-First: Optimized for loading URDF and meshes directly from Flutter assets.
- 🎨 Custom Materials: Use
materialCbto applyMeshStandardMaterial(PBR) or any other material dynamically based on link names. - 🛠️ Extensible Mesh Support: Includes updated loaders for STL and Collada (.dae).
- 📐 Accurate Parsing: Robust handling of joints, links, visual, and collision tags.
🚀 Getting Started
Installation
Add this to your pubspec.yaml:
dependencies:
three_js: ^0.2.7
three_js_urdf_parser: ^0.1.0
🔧 Major Changes from Original
If you are migrating from the original flutter-urdf-parser, please note:
- Namespace Change: Imports now refer to
package:three_js/three_js.dart. - Loading Method:
load()now defaults to usingrootBundlefor better cross-platform (Web/Mobile) support. - Vector/Matrix API: All matrix operations now use
three_jsnative methods (e.g.,fromNativeArrayinstead offromArray). - Material Customization: The
materialCbinURDFLoaderOptionsprovides direct access to theLinkandVisualobjects.
📂 Supported Formats
| Format | Status | Loader |
|---|---|---|
| URDF | Supported | URDFLoader |
| STL | Supported | STLLoader |
| DAE (Collada) | Supported | ColladaLoader |
| OBJ | Supported | Via three_js_helpers |
📄 License
This project inherits the license of the original repository (Apache-2.0). See the LICENSE file for details.
🤝 Contributing
Contributions are welcome! If you find a bug or have a feature request, please open an issue or submit a pull request.