Skip to content

rashbip/power_3d

Repository files navigation

Power3D

A powerful, industry-level Flutter plugin for rendering 3D models using Babylon.js. Designed for ease of use, extensibility, and seamless integration into any architecture.

📸 Showcase

Main View Scene Hierarchy Texture Management
Main View Hierarchy Textures
Lighting Controls Bounding Boxes Visibility & Mesh List
Lighting Bounding Box Visibility

Features

  • 🚀 Architecture Agnostic: Uses a Controller pattern, compatible with Riverpod, Bloc, Provider, GetX, or plain setState.
  • 📦 Versatile Loading: Load models from Assets, Network, or local Files.
  • 🎮 Advanced Controls:
    • Auto-rotation with custom speed and direction.
    • Automatic stop timer for rotation.
    • Zoom limits (min/max) and toggles.
    • Position locking (enable/disable panning).
  • 🎬 Animation Control:
    • Play, pause, stop, and resume skeletal animations.
    • Real-time speed and loop configuration.
    • Support for multiple simultaneous animations.
  • Managed Screenshots: Capture and automatically save screenshots to a specified path.
  • 🎨 Scene Inspection:
    • Inspector Hierarchy: Full scene graph (Meshes, Cameras, Lights) and Materials view.
    • Metadata Extraction: Fetch raw GLTF extras and Babylon metadata.
    • 3D Bounding Boxes: Customizable wireframe boxes and spheres for selection feedback.
    • Visibility Handling: Per-part visibility controls and batch actions.
  • 🎨 Customizable UI: Provide your own loading and error widgets.

Quick Start

1. Add dependency

dependencies:
  power3d: ^2.0.0

2. Basic Setup

Power3D supports Android, iOS, Web, Windows, macOS, and Linux.

Platform Setup Requirement
Android Internet & Cleartext permissions
iOS / macOS App Sandbox Entitlements
Windows WebView2 Runtime
Web No special config (CORS handled)
Linux WebKit2GTK installation

See the full Platform Setup Guide for detailed instructions.

3. Usage

import 'package:power3d/power3d.dart';

// 1. Create a controller
final controller = Power3DController();

// 2. Add the widget
Power3D.fromAsset(
  'assets/my_model.glb',
  controller: controller,
);

// 3. Control the view
void rotate() {
  controller.updateRotation(
    enabled: true,
    speed: 1.5,
    stopAfter: Duration(seconds: 5),
  );
}

Documentation

Find detailed guides and API references in the doc folder:

🚀 Getting Started

🎮 Controls & Interaction

🎨 Advanced Scene Manipulation

🛠 Technical Reference

Example

Check the example folder for a complete demonstration of all features.

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors