Flutter 3D模型展示插件model_viewer的使用
简介
这是一个用于在Flutter应用程序中渲染交互式3D模型的插件。它支持glTF
和GLB
格式的模型文件,并通过嵌入Google的<model-viewer>
Web组件来实现。
项目信息
- 许可证: 公共领域 (Unlicense)
- Dart版本: 2.8+
- Flutter版本: 1.17+
- 平台: Android 和 iOS
前置条件
- Dart: 2.8+
- Flutter: 1.17+
兼容性
- Android: 需要近期系统浏览器版本。
- iOS: 需要近期系统浏览器版本。
安装
pubspec.yaml
在项目的pubspec.yaml
文件中添加以下依赖:
dependencies:
model_viewer: ^0.8.1
AndroidManifest.xml (仅限Android 9+)
在Android 9及以上设备上使用此插件时,需要配置AndroidManifest.xml
以允许明文流量:
--- a/example/android/app/src/main/AndroidManifest.xml
+++ b/example/android/app/src/main/AndroidManifest.xml
@@ -8,7 +8,8 @@
<application
android:name="io.flutter.app.FlutterApplication"
android:label="model_viewer_example"
- android:icon="@mipmap/ic_launcher">
+ android:icon="@mipmap/ic_launcher"
+ android:usesCleartextTraffic="true">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
Info.plist (仅限iOS)
在iOS上使用此插件时,需要启用嵌入视图预览功能:
<key>io.flutter.embedded_views_preview</key>
<true/>
特性
- 支持
glTF
和GLB
格式的模型文件。 - 支持动画模型,可配置自动播放。
- 可选地支持将模型加载到增强现实(AR)查看器中。
- 可配置模型的背景颜色。
- 可配置模型是否自动旋转。
示例代码
导入库
import 'package:model_viewer/model_viewer.dart';
创建ModelViewer小部件
以下是一个简单的示例,展示如何在Flutter应用程序中使用ModelViewer
小部件:
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Model Viewer")),
body: ModelViewer(
// 背景颜色
backgroundColor: Color.fromARGB(0xFF, 0xEE, 0xEE, 0xEE),
// 模型路径(本地资源)
src: 'etc/assets/Astronaut.glb',
// 替代文本
alt: "A 3D model of an astronaut",
// 启用AR模式
ar: true,
// 自动旋转
autoRotate: true,
// 启用相机控制
cameraControls: true,
),
),
);
}
}
加载捆绑的Flutter资源
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Model Viewer")),
body: ModelViewer(
src: 'assets/MyModel.glb',
alt: "A 3D model of an object",
),
),
);
}
}
从文件系统加载模型
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Model Viewer")),
body: ModelViewer(
src: 'file:///path/to/MyModel.glb',
alt: "A 3D model of an object",
),
),
);
}
}
从网络加载模型
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Model Viewer")),
body: ModelViewer(
src: 'https://modelviewer.dev/shared-assets/models/Astronaut.glb',
alt: "A 3D model of an astronaut",
),
),
);
}
}
更多关于Flutter 3D模型展示插件model_viewer的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter 3D模型展示插件model_viewer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
model_viewer
是一个用于在 Flutter 应用中展示 3D 模型的插件。它基于 Google 的 <model-viewer>
Web 组件,支持在 Flutter 应用中嵌入和交互式查看 3D 模型。以下是如何在 Flutter 项目中使用 model_viewer
插件的详细步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 model_viewer
插件的依赖:
dependencies:
flutter:
sdk: flutter
model_viewer: ^0.10.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在需要使用 model_viewer
的 Dart 文件中导入插件:
import 'package:model_viewer/model_viewer.dart';
3. 使用 ModelViewer
组件
ModelViewer
是 model_viewer
插件提供的主要组件,用于展示 3D 模型。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:model_viewer/model_viewer.dart';
class ModelViewerExample extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('3D Model Viewer'),
),
body: ModelViewer(
src: 'assets/models/Astronaut.glb', // 3D 模型文件路径
alt: 'A 3D model of an astronaut',
ar: true, // 启用 AR 功能
autoRotate: true, // 自动旋转
cameraControls: true, // 启用相机控制
),
);
}
}
void main() => runApp(MaterialApp(
home: ModelViewerExample(),
));
4. 添加 3D 模型文件
将你的 3D 模型文件(如 .glb
或 .gltf
格式)放置在 assets
文件夹中,并在 pubspec.yaml
中声明:
flutter:
assets:
- assets/models/Astronaut.glb
5. 运行应用
现在你可以运行你的 Flutter 应用,并查看嵌入的 3D 模型。ModelViewer
组件支持多种交互功能,如旋转、缩放、平移等。
6. 配置选项
ModelViewer
组件提供了多种配置选项,以下是一些常用的选项:
src
: 3D 模型文件的路径。alt
: 模型的替代文本。ar
: 是否启用 AR 功能。autoRotate
: 是否自动旋转模型。cameraControls
: 是否启用相机控制。backgroundColor
: 背景颜色。iosSrc
: iOS 设备上使用的模型文件路径。androidSrc
: Android 设备上使用的模型文件路径。
7. 支持的文件格式
model_viewer
支持以下 3D 模型文件格式:
.glb
(Binary GLTF).gltf
(GLTF)
8. 注意事项
model_viewer
依赖于 Web 技术,因此在某些平台上(如 iOS 和 Android)可能需要额外的配置。- 确保你的 3D 模型文件大小适中,以避免性能问题。
9. 示例代码
以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 model_viewer
插件:
import 'package:flutter/material.dart';
import 'package:model_viewer/model_viewer.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('3D Model Viewer'),
),
body: ModelViewer(
src: 'assets/models/Astronaut.glb',
alt: 'A 3D model of an astronaut',
ar: true,
autoRotate: true,
cameraControls: true,
),
),
);
}
}