当前位置: 首页 > news >正文

Flutter + Three.js (WebView)实现桌面端3d模型展示和交互

文章目录

  • flutter(桌面端)瓶颈
  • 一、Flutter+three.js
  • 二、Flutter+three.js 实现思路
    • 1.在Flutter 中使用webview 进行嵌套
    • 2.开启上面嵌套的页面地址
    • 2.在含有three.js 的html 中引入模型
    • 3.两个页面之间进行通信,如图:
  • 总结

flutter(桌面端)瓶颈

Flutter 本身并不直接支持 3D 桌面应用程序的开发 ,Flutter 使用的是自己的渲染引擎(Skia),它旨在高效地处理 2D 绘制和界面构建,而不是 3D 图形渲染。Skia 是一个强大的 2D 渲染库,但它没有为复杂的 3D 场景优化,因此 Flutter 本身对 3D 的支持较弱。因此如果想在flutter 中实现3d模型并实现交互,则需要用别的方式。

一、Flutter+three.js

这种方式,我是比较推荐的,如果你是前端的开发者,用这种方式,可以很快的上手实现。先来看一下整体的视频效果: 视频效果

图片效果:
在这里插入图片描述
即:用不同的按钮控制模型的样式,一个按钮是为模型添加皮肤,一个按钮是可以正向旋转模型,一个按钮是可以反向旋转模型,另一个按钮是可以在模型的指定位置添加自己定义的数字。

占用的性能:
在这里插入图片描述

二、Flutter+three.js 实现思路

1.在Flutter 中使用webview 进行嵌套

这个方法就好比前端的iframe 一样,即页面中嵌套页面,具体的部分代码结构如下:
在这里插入图片描述

2.开启上面嵌套的页面地址

如果你有vscode ,可以用快捷的开启方式:
在这里插入图片描述
这样子就可以开启以这个页面为服务的地址,为啥要用这种方式呢?而不直接点击呢,因为如果你直接使用点击的话,可能有些资源加载不出来,若果你没有vscode,你也可以用node,或者java 命令行来开启服务。

2.在含有three.js 的html 中引入模型

如图:
在这里插入图片描述
这边你需要提供一下模型的obj,或者别的方式,可以从uniyt 中去生成,也可以从Blender 可以用于创建 3D 模型,并将模型导出为常用的 3D 文件格式,比如 OBJ 或 FBX,如果没有这方面的知识,可以试着从网上找一些模型先代替一下。

3.两个页面之间进行通信,如图:

在flutter 中发送命令:
在这里插入图片描述

在three.js的页面中接受发出的信号:
在这里插入图片描述

总结

这里只是展示了一种方式,其实还有很多的方式可以实现桌面端的3d,例如:
(1)Flutter + Unity (flutter_unity_widget),通过 flutter_unity_widget 插件,将 Unity 的内容嵌入到 Flutter 应用中,并在桌面端显示。
(2)Flutter + OpenGL:可以使用 flutter_gl 或 dart:ffi(外部函数接口)来调用本机的 OpenGL 库,并在 Flutter 桌面应用程序中展示 3D 模型。这种方式需要通过 OpenGL 直接在窗口中绘制 3D 场景。

只要勤加思考,肯定是都有方法去解决的,没有解决不了的事情,只有不会解决的人。

如需项目demo,微信扫下面的二维码,注册成功,到下面的我的-联系客服 问我要代码
在这里插入图片描述


http://www.mrgr.cn/news/45522.html

相关文章:

  • 【Vue】Vue2(2)
  • 【LeetCode刷题】:双指针篇(移动零、复写零)
  • SEO(搜索引擎优化)指南
  • 红队老子养成记2 - 不想渗透pc?我们来远控安卓!(全网最详细)
  • 要实现无限极评论
  • 计算机毕业设计-自主完成指南
  • MySql复习知识及扩展内容
  • C语言从头学65—学习头文件 <stdio.h>(一)
  • 碧桂园服务携手安徽砀山,以购代捐助力乡村振兴
  • scaling 的作用
  • Python Kivy 完整应用开发:待办事项列表
  • 【RTCP】Interarrival Jitter: 到达间隔抖动的举例说明
  • 【Transformer 模型中的投影层,lora_projection是否需要?】
  • 点餐小程序实战教程17角色管理
  • OpenHarmony(鸿蒙南向开发)——轻量系统内核(LiteOS-M)【内存调测】
  • Ngx+Lua+Redis 快速存储POST数据
  • 如何使用PSTools工具集中的PSExec修改注册表信息,解决某些注册表项无法删除的问题
  • 以下是一些数据看板的常见使用场景:
  • 招个测试员,我又面试了100+人,未果…
  • 如何在VScode中加入系统安装好的python环境