Flutter 3D模型查看插件three_model_viewer的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter 3D模型查看插件three_model_viewer的使用

本文档介绍了如何在Flutter中使用three_model_viewer插件来加载和查看3D模型。

特性

three_model_viewer插件允许用户在Flutter应用中轻松加载和交互3D模型。以下是该插件的一些主要功能:

- 支持GLB/GLTF格式的3D模型。 - 可以播放动画。 - 支持相机控制(缩放、旋转等)。 - 提供灯光效果。

开始使用

在开始之前,请确保您的开发环境已正确配置。您需要安装Flutter SDK并设置好Android Studio或VS Code。

1. 在`pubspec.yaml`文件中添加以下依赖项: ```yaml dependencies: three_model_viewer: ^0.0.1 ``` 2. 运行`flutter pub get`以安装依赖项。

使用示例

以下是一个完整的示例代码,展示如何使用three_model_viewer插件加载和查看3D模型:

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:three_model_viewer/three_model_viewer.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '3D 模型查看器示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          child: Text('打开模型'),
          onPressed: () {
            Navigator.of(context).push(
              MaterialPageRoute(builder: (context) => Model()),
            );
          },
        ),
      ),
    );
  }
}

class Model extends StatefulWidget {
  const Model({Key? key}) : super(key: key);

  [@override](/user/override)
  State<Model> createState() => _ModelState();
}

class _ModelState extends State<Model> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        backgroundColor: Colors.teal[900],
        body: ModelViewer(
          models: [
            ThreeModel(
              src:
                  'https://storage.googleapis.com/flutter-futx.appspot.com/test/FutX_Junto_meioTermo.glb', // 替换为您的3D模型路径
              playAnimation: true, // 是否自动播放动画
            ),
          ],
          cameraConfig: PerspectiveCameraConfig.def(), // 默认透视相机配置
          onPageLoaded: (controller) {
            // 设置相机参数
            controller.setOrbitControls(
              OrbitControls(minPolarAngle: pi / 2, maxPolarAngle: pi / 2),
            );
            controller.setBackgroundColor('#000', 0); // 设置背景颜色
            controller.setControlsTarget(Vector3(x: 1, y: 2, z: 3)); // 设置控制目标位置
            controller.addAmbientLight('#404040', 2); // 添加环境光
            controller.addDirectionalLight(DirectionalLight( // 添加方向光
              color: Colors.white,
              intensity: 2,
              pos: Vector3(x: 10, y: 20, z: 30),
            ));
            controller.enableZoom(true); // 启用缩放功能
          },
          onObjectLoading: (percentage) {
            print('$percentage%'); // 打印加载进度
          },
          onServerReady: (ready) => print('服务器准备完成: $ready'), // 打印服务器状态
          showWhenLoading: const Center(
            child: SizedBox(
              width: 100,
              height: 100,
              child: CircularProgressIndicator(), // 加载时显示的指示器
            ),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter 3D模型查看插件three_model_viewer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter 3D模型查看插件three_model_viewer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


three_model_viewer 是一个用于在 Flutter 应用中显示 3D 模型的插件。它基于 Three.js,允许你在 Flutter 应用中加载和显示 3D 模型(如 .glb.gltf 格式)。以下是如何在 Flutter 项目中使用 three_model_viewer 的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 three_model_viewer 依赖:

dependencies:
  flutter:
    sdk: flutter
  three_model_viewer: ^latest_version

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 three_model_viewer 包:

import 'package:three_model_viewer/three_model_viewer.dart';

3. 使用 ThreeModelViewer 组件

你可以使用 ThreeModelViewer 组件来显示 3D 模型。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:three_model_viewer/three_model_viewer.dart';

class My3DModelViewer extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('3D Model Viewer'),
      ),
      body: Center(
        child: ThreeModelViewer(
          src: 'assets/models/your_model.glb', // 模型文件路径
          alt: '3D Model', // 替代文本
          ar: true, // 是否启用 AR
          autoRotate: true, // 是否自动旋转
          cameraControls: true, // 是否启用相机控制
        ),
      ),
    );
  }
}

void main() => runApp(MaterialApp(
  home: My3DModelViewer(),
));

4. 添加模型文件

将你的 3D 模型文件(如 .glb.gltf)放在 assets 文件夹中,并在 pubspec.yaml 文件中声明:

flutter:
  assets:
    - assets/models/your_model.glb
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!