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:

  1. Migrate to three_js: The most active and feature-complete Three.js port for Flutter.
  2. Improve Performance: Leverage the optimized rendering pipeline of three_js.
  3. Enhance Flexibility: Added support for custom PBR materials and improved asset loading via rootBundle.
  4. 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_js ecosystem.
  • 📦 Asset-First: Optimized for loading URDF and meshes directly from Flutter assets.
  • 🎨 Custom Materials: Use materialCb to apply MeshStandardMaterial (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 using rootBundle for better cross-platform (Web/Mobile) support.
  • Vector/Matrix API: All matrix operations now use three_js native methods (e.g., fromNativeArray instead of fromArray).
  • Material Customization: The materialCb in URDFLoaderOptions provides direct access to the Link and Visual objects.

📂 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.