Flutter 中渲染3D 模型

2021-04-22 15:43:51 浏览数 (1)

原文地址:https://medium.com/flutterdevs/explore-model-viewer-in-flutter-e5988edbfe66

3D模型是具有3个测量长度,宽度和深度的模型。当用于不同目的时,这些模型可提供令人难以置信的用户体验。更重要的是,对您的应用程序增加这种感知对于用户非常有用,有助于您的应用程序开发并吸引大量的人群。

在本文,我们将**在Flutter中探索Model Viewer。**我们将实现一个模型查看器演示程序,并在您的flutter应用程序中使用model_viewer包以glTFGLB格式显示3D模型。

地址:https://pub.dev/packages/model_viewer

介绍

Flutter小部件,用于在glTFGLB设计中提供交互式3D模型。该小部件可将Google的<model-viewer>Web部件插入WebView中。3D模型显示3D图片。

该演示视频展示了如何在Flutter中创建模型查看器。它显示了如何在flutter应用程序中使用model_viewer包来运行模型查看器。它以glTFGLB格式显示3D模型,并通过鼠标,手触摸和自动旋转将其旋转360度。

功能

模型查看器具有以下功能:

  • 呈现glTF和GLB模型。(此外,USDZ型号在iOS 12 上。)
  • 支持具有可配置自动播放设置的动画模型。
  • (可选)它支持将模型启动到AR查看器中。
  • 可以选择以可配置的延迟自动旋转模型。
  • 支持小部件的可配置背景色。

参数

  • **src:**此参数用于3D模型的URL或路径。此参数是必需的。仅支持glTF / GLB型号。
  • **alt:**此参数用于设计具有自定义内容的模型,该内容将利用使用屏幕阅读器或在任何情况下都依赖于额外的语义设置来理解他们所看到内容的观察者来描绘模型。
  • **autoRotateDelay:**此参数用于设置在自动旋转开始之前的延迟。价值的配置是以毫秒为单位的数字。默认值为3000。
  • **iosSrc:**此参数用于USDZ模型的URL,该模型将通过AR Quick Look在受支持的iOS 12 设备上使用。
  • **arScale:**此参数用于控制Scene Viewer在AR模式下的缩放行为。设置为“固定”以使模型的缩放比例失效,从而将其始终设置为100%缩放比例。默认为“自动”,这允许调整模型的大小。

实现

将依赖项添加到pubspec-yaml文件。

代码语言:javascript复制
model_viewer:^ 0.8.1

添加 asset

代码语言:javascript复制
assets:
  - assets/

导入

代码语言:javascript复制
import 'package:model_viewer/model_viewer.dart';

运行 flutter packages get

配置 AndroidManifest.xml (Android 9 only)

要在Android 9 设备上使用此小部件,应允许您的应用程序与进行HTTP关联http://localhost:XXXXX。Android 9(API级别28)将默认设置android:usesCleartextTraffic从更改truefalse.

代码语言:javascript复制
<application 
    android:name =“ io.flutter.app.FlutterApplication” 
    android:label =“ flutter_model_viewer_demo” 
    android:icon =“ @ mipmap / ic_launcher” 
    android:usesCleartextTraffic =“ true”>

在dart代码中实现

在lib文件夹下创建一个新的dart文件:demo_view.dart

在主体中,我们将添加ModelViewer()。在内部,我们将为模型查看器添加一个backgroundColorsrc表示用户添加URL和资产,仅支持glTF / GLB模型。

代码语言:javascript复制
ModelViewer(
  backgroundColor: Colors.teal[50],
  src: 'assets/table_soccer.glb',
  alt: "A 3D model of an table soccer",
  autoPlay: true,
  autoRotate: true,
  cameraControls: true,
),

我们将添加alt mean,以使用自定义文本配置模型,该文本将向使用屏幕阅读器的观看者描述该模型;自动播放是指如果设置为true并且模型具有动画,则设置此属性后,动画将自动开始播放。默认为false。我们将添加autoRotate意味着它启用了模型的自动旋转。我们将添加cameraControls表示在平面视图中通过鼠标/触摸启用控件。当我们运行应用程序时,我们应该获得屏幕的输出,如屏幕下方的截图所示。

完整实现

代码语言:javascript复制
import 'package:flutter/material.dart';
import 'package:model_viewer/model_viewer.dart';

class DemoView extends StatefulWidget {
  @override
  _DemoViewState createState() => _DemoViewState();
}

class _DemoViewState extends State<DemoView> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Flutter Model Viewer Demo"),
        automaticallyImplyLeading: false,
        backgroundColor: Colors.black,
      ),
      body: ModelViewer(
        backgroundColor: Colors.teal[50],
        src: 'assets/table_soccer.glb',
        alt: "A 3D model of an table soccer",
        autoPlay: true,
        autoRotate: true,
        cameraControls: true,
      ),
    );
  }
}

总结

我希望这个博客将为您提供足够的信息,试图达到 的模型浏览器在你的Flutter项目**。某些模型查看器功能,参数,创建用于运行模型查看器的演示程序,并以glTFGLB**格式显示3D模型,并通过鼠标,手触摸和在flutter应用程序中使用model_viewer包自动旋转360°度。因此,请尝试一下。

0 人点赞