flutter 3d-model-viewer riverpod glb gltf ar augmented-reality flutter-3d model-viewer clean-architecture dart 3d-customizer open-source
FlutterScene 3D is a professional-grade 3D model viewer and customizer built with Flutter and Riverpod.
- 🛠️ Real-time Customization: Modify materials, colors, metalness, and roughness on the fly.
- 💡 Advanced Lighting: Toggle between different environment presets and adjust exposure.
- 🌑 Shadow Control: Fine-tune ground shadows for better realism.
- 🎥 Animation Support: Play, pause, and switch between model animations.
- 📸 Studio Tools: Capture high-quality screenshots and export customized models.
- 📂 Flexible Loading: Load pre-installed models or pick custom ones from your device.
- 📱 Cross-Platform: Designed for a smooth experience across Mobile, Web, and Desktop.
This project follows Clean Architecture principles with a feature-first modular structure:
- Framework: Flutter
- State Management: Riverpod with Code Generation
- 3D Engine: Google's Model-Viewer via
model_viewer_plus - UI Design: Modern Neumorphic and Glassmorphic elements
- Persistence: File storage for custom models and screenshots
- Flutter SDK (latest stable version)
- Dart SDK
- Clone the repository:
git clone https://github.com/ArbazKhan1645/flutter_scene_3d.git
- Install dependencies:
flutter pub get
- Run code generation:
dart run build_runner build --delete-conflicting-outputs
- Launch the app:
flutter run
lib/
├── main.dart
└── src/
├── core/ # Shared logic, theme, and common widgets
└── features/
├── selection/ # Model selection feature
└── viewer/ # 3D viewing & editing feature
├── models/ # Freezed state models
├── providers/ # Riverpod providers
└── views/ # Screens and panels
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated. Please see CONTRIBUTING.md for details.
Distributed under the MIT License. See LICENSE for more information.
Arbaz Mashwani
- GitHub: @ArbazKhan1645
If you like this project, please give it a ⭐ to show your support!