(注意,开源版的 Qt Quick 3D 是狗都不用的 GPL 协议)

Qt Quick 3D 模块提供了 Model 类型用于 3D 模型加载,通过设置 source 的资源路径来加载对应的 3D 模型:

Model {//Qt内置的几种几何模型//"#Rectangle" 矩形//"#Sphere" 球体//"#Cube" 立方体//"#Cone" 锥体//"#Cylinder" 圆柱体source: "#Sphere"//加载mesh 3D模型资源文件//source: "qrc:/model/teapot.mesh"//或者这样写//source: "teapot.mesh"//材质设置materials: [ DefaultMaterial {diffuseColor: "blue"}]
}

除了设置 source 指定模型,还可以设置 geometry 自定义图形。

Qt Quick 3D Model 加载的模型类型和 Qt 3D 不一样,不是直接加载 obj、fbx 等格式的文件,而是先转换成 mesh 格式。文档如是说,直接在应用中引用这些交换格式没有意义,因为需要大量资源来解析和调整资源内容,然后才能用于实时渲染,所以采用先转换为有效的运行时格式的方式。

Qt 提供了一个名叫 balsam 的可以执行程序将 obj 等 3D 模型文件转换为 mesh 文件,该工具位于 Qt 安装目录下:

可以通过命令行调用(指定模型路径和导出目录):

E:\Qt\QtOnline\5.15.2\msvc2019_64\bin>balsam.exe "E:\Qt\QtOnline\Examples\Qt-5.15.2\qt3d\exampleresources\assets\obj\trefoil.obj" -o "E:\Qt\QtOnline\Examples\Qt-5.15.2\qt3d\exampleresources\assets\obj"
generated file:  "E:/Qt/QtOnline/Examples/Qt-5.15.2/qt3d/exampleresources/assets/obj\\Trefoil.qml"

也可以直接将 obj 文件拖到 balsam.exe 上,就会自动在 obj 所在目录生成一个包含 mesh 文件的 meshs 文件夹(一个 obj 可能会产生多个 mesh 文件),和一个 obj 同名的 qml 文件(把这些 mesh 文件的调用封装为了一个组件,我们可以直接使用这个 qml 文件,也可以只是参考里面的代码) 。

对 Qt 示例的 trefoil.obj 进行转换得到:

其中 qml 文件里就是对 mesh 的引用:

import QtQuick 2.15
import QtQuick3D 1.15Node {id: trefoil_objModel {id: torus_Knotsource: "meshes/torus_Knot.mesh"DefaultMaterial {id: none_materialdiffuseColor: "#ff999999"}materials: [none_material]}
}

现在,将 mesh 引入到我们的工程中,就能用 Model 加载这个模型了。有的 Qt Creator 版本可以通过设计中的 3D Editor 预览 3D 模型(有的版本有 BUG),Qt Design Studio 设计工具也有对应支持。Qt Creator 的 QML 设计器在我使用的 7.0 版本需要在插件设置里打开:

下面是简单的效果演示和代码:

import QtQuick 2.15
import QtQuick3D 1.15View3D {id: control//背景environment: SceneEnvironment {clearColor: "green"backgroundMode: SceneEnvironment.Color}//观察相机PerspectiveCamera {z: 100}//光照DirectionalLight {eulerRotation.y: 45}//模型加载Model {position: Qt.vector3d(0, 0, 0)source: "qrc:/model/trefoil.mesh"scale: Qt.vector3d(10, 10, 10)materials: [DefaultMaterial {diffuseColor: "red"}]}
}

本文参考

Qt文档:https://doc.qt.io/qt-5/qml-qtquick3d-model.html

Qt文档:https://doc.qt.io/qt-5/qtquick3d-tool-balsam.html

Qt Quick 3D学习:模型加载相关推荐

  1. NVIDIA GEFORCE 2080 / 2080 SUPER / 2080 Ti + CUDA Toolkit 8.0 深度学习模型加载速度慢

    NVIDIA GEFORCE 2080 / 2080 SUPER / 2080 Ti + CUDA Toolkit 8.0 深度学习模型加载速度慢 (卡顿) GEFORCE RTX 2080 / GE ...

  2. Qt Quick 3D学习:使用鼠标键盘控制节点位置和方向

    (注意,开源版的 Qt Quick 3D 是狗都不用的 GPL 协议) Qt Quick 3D 模块提供了  WasdController 类型来控制节点的位置和方向,受控节点一般是 Camera.( ...

  3. 如何将深度学习模型加载到android环境中

    承接上一篇的内容,考虑如何将深度学习的模型加载到android app中 文章目录 前言 一.使用工具 二.使用步骤 1.模型格式的转换 2.配置文件修改 3. 应用程序 前言 将图片学习的模型加载到 ...

  4. Qt Quick 3D系列(一):加载3d模型

    如果我们想在QML中使用3D且你之前没有三维程序开发的基础,使用Qt Quick 3D是个不错的选择,下面我介绍如何使用Qt Quick 3D加载3d模型.注意:Qt Quick 3D从Qt 5.15 ...

  5. OpenGL学习脚印:模型加载初步-加载obj模型(load obj model)

    写在前面 前面介绍了光照基础内容,以及材质和lighting maps,和光源类型,我们对使用光照增强场景真实感有了一定了解.但是到目前为止,我们通过在程序中指定的立方体数据,绘制立方体,看起来还是很 ...

  6. PyTorch框架学习十九——模型加载与保存

    PyTorch框架学习十九--模型加载与保存 一.序列化与反序列化 二.PyTorch中的序列化与反序列化 1.torch.save 2.torch.load 三.模型的保存 1.方法一:保存整个Mo ...

  7. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图

    Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...

  8. Android OpenGLES2.0(十四)——Obj格式3D模型加载

    转自:http://blog.csdn.net/junzia/article/details/54300202 在博主<OpenGLES系列>文章中,最开始的几篇讲的就是OpenGL世界中 ...

  9. QT+OpenGL模型加载 - Assimp

    QT+OpenGL模型加载 - Assimp 本篇完整工程见gitee:OpenGL 对应点的tag,由turbolove提供技术支持,您可以关注博主或者私信博主 模型加载 先来张图: 我们不大可能手 ...

最新文章

  1. 【c语言】蓝桥杯基础练习 01字串
  2. 引导直觉解决数学猜想难题,DeepMind登上《Nature》封面
  3. FPGA之道(32)Verilog基本程序框架
  4. Spring和CXF整合发布WebService(服务端、客户端)
  5. 滴滴顺风车GM:大多数产品经理定义是狭隘的
  6. Python中_,__,__xx__的区别
  7. 输入输出系统1 ----- 特性 输出输出方式
  8. [转]Docker 大势已去,Podman 即将崛起
  9. 圆形刻度盘 进度 展示
  10. 使用select和show命令查看mysql数据库系统信息
  11. [词根词缀]quarr/qui/quit/rad/radi等衍生单词
  12. 《炬丰科技-半导体工艺》晶片键合技术和薄膜传输技术
  13. 数据挖掘:Apriori 关联规则分析算法原理分析与代码实现
  14. python人工智能方向面试准备_关于机器学习面试的经典题目(面试经验和建议)...
  15. 51单片机入门之四:静态数码管,单片机如何驱动数码管
  16. 计算机二级需要掌握的英语词汇,二级英语必背单词
  17. Windows CE嵌入式系统程序开发
  18. Java计算两个时间的小时差
  19. Leetcode算法Java全解答--41. 缺失的第一个正数
  20. htc解锁后root,htc的手机怎么解锁

热门文章

  1. Python校实训第一天----分支语句之星座查询
  2. 经验转行产品经理|纯经验分享
  3. git 提交修改备注
  4. roundrobin来历_黑山:起源Source引擎低画质指令
  5. 腾讯云不同账号内网联通
  6. 基于arduino uno 开发板制作的 智能书包项目
  7. 高新技术企业的认定申请材料有哪些?
  8. StirngUtil工具类 之 邮箱注册 域名不区分大小写方法
  9. 吃透这JAVA并发十二核心,面试官都得对你刮目相看
  10. 详解ASEMI整流桥MB6S在恒流LED驱动电源中的应用