前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flutter 中渲染3D 模型

Flutter 中渲染3D 模型

作者头像
老孟Flutter
发布2021-04-22 15:43:51
24.6K3
发布2021-04-22 15:43:51
举报
文章被收录于专栏:FlutterFlutter

原文地址: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°度。因此,请尝试一下。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老孟Flutter 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 功能
  • 参数
  • 实现
  • 在dart代码中实现
  • 完整实现
  • 总结
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档