3D Model Viewer for Flutter
A Flutter package for rendering interactive 3D models in the GLB format with ability to control camera and animations.
Features
- Play and control (play, pause, switch) 3d models animation in GLB format
- Get list of available animations from 3d models
- Switch between available animations
- Control camera position
- Control camera orbit
Todo (Next Versions)
- Fix changing model source with setState
- Load models from local storage
- Load models from web
- Support glTF, Fbx, Obj, USDZ
Samples
Compatibility
- Android
- iOS
- Web
Notes
- For now this package only support GLB format, other 3d formats coming soon.
- Visit the example to see how to use this package
Installation
pubspec.yaml
dependencies: flutter_3d_controller: ^1.0.3
AndroidManifest.xml
(Android 9+ only)
To use this widget on Android 9+ devices, your app must be permitted to make an HTTP connection to http://localhost:XXXXX
. Android 9 (API level 28) changed the default for [android:usesCleartextTraffic
] from true
to false
, so you will need to configure your app’s android/app/src/main/AndroidManifest.xml
as follows:
<application android:name="${applicationName}" android:icon="@mipmap/ic_launcher" - android:label="example"> + android:label="example" + android:usesCleartextTraffic="true"> <activity android:name=".MainActivity"
This does not affect Android 8 and earlier. See [#7] for more information.
app/build.gradle
(Android only)
Change minSdkVersion to 21.
defaultConfig { ... minSdkVersion 21 ... }
Info.plist
(iOS only)
To use this widget on iOS, you need to opt-in to the embedded views preview by adding a boolean property to your app’s ios/Runner/Info.plist
file, with the key io.flutter.embedded_views_preview
and the value YES
:
<key>io.flutter.embedded_views_preview</key> <true/>
web/index.html
(Web only)
Modify the <head>
tag of your web/index.html
to load the JavaScript, like so:
<head> <!-- Other stuff --> <script type="module" src="./assets/packages/flutter_3d_controller/assets/model-viewer.min.js" defer></script> </head>
More Info
This package use ‘Model Viewer’ to render 3D models and it may have some issue in rendering some models/textures, the core of package (Model Viewer) will change in future to support all type of 3D models