如果我们想在QML中使用3D且你之前没有三维程序开发的基础,使用Qt Quick 3D是个不错的选择,下面我介绍如何使用Qt Quick 3D加载3d模型。注意:Qt Quick 3D从Qt 5.15之后开始被添加到Qt中,三维模型使用了.mesh格式的模型文件,关于如何将3D场景(如.obj)转换为.mesh,可参考我的博客:Qt Quick 3D中将3D场景(如.obj)转换为.mesh
步骤一:在新工程中添加模块:
import QtQuick3D 1.15
步骤二:切换到Qt Creator的设计师模块(此处是为了介绍可视化开发,手撸代码也是可以的)
选择设计师模式为“3D Preset”,如图:
此时设计师界面中显示了类似于C4D的三维编辑器,使用滚轮可以缩放,按住Alt后使用鼠标左键可以旋转查看的位置。
步骤三:在左侧的控件选择栏中选择并拖入View3D模块
View3D模块拖入后自带了一个简单的3D模板,在3D Editor中可看到模板样式,如图:
模板结构如下:
SceneEnvironment:渲染的环境相关设置
Node:3D的节点,类似于quick中的Item。便于对多个控件单一的同一控制
DirectionalLight:光源
PerspectiveCamera:远景相机(显示的3D模型根据相机的远近进行缩放)
Model:模型,用于显示加载3D模型
DefaultMaterial:模型材质设置
步骤四:加载自定义的3D模型
在qrc资源中添加模型文件“test.mesh”并修改Model的模型源路径source,该模型由一个.obj转换而成,转换方法为:Qt Quick 3D中将3D场景(如.obj)转换为.mesh,调整镜头位置,运行程序如下:
示例程序github源码:https://github.com/zjgo007/QtQuick3D/tree/master/Show3dModel
下一篇:Qt Quick 3D系列(二):鼠标控制3D模型旋转缩放
主要QML源码:
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick3D 1.15
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
View3D {
id: view3D
anchors.fill: parent
environment: sceneEnvironment
SceneEnvironment {
id: sceneEnvironment
antialiasingQuality: SceneEnvironment.High
antialiasingMode: SceneEnvironment.MSAA
}
Node {
id: node
DirectionalLight {
id: directionalLight
}
PerspectiveCamera {
id: camera
z: 15
}
Model {
id: cubeModel
source: "test.mesh"
DefaultMaterial {
id: cubeMaterial
diffuseColor: "#4aee45"
}
materials: cubeMaterial
}
}
}
}
文章链接
发表评论