本章我们来学习QML 3D教程,QML 3D能够支持windows linux等多平台跨平台并且显示效果大部分一致,非常方便,学习的qt版本最低为qt6.5。
要使用qml 3D类,需要导入QtQuick3D模块。
这是使用空间渲染器和场景图的 QML 前端。目前,所有 3D 内容都会通过FBO进行纹理绑定和绘制,以便它们可以组合成 Qt Quick 场景(作为QQuickItem)。
QtQuick3D模块中有我们使用的很多类。
常用的如下所示(本章和后面章节都会讲解):
- View3D提供用于渲染 3D 场景的视口
- Texture定义用于 3D 场景的纹理
- DirectionalLight定义场景中的平行光
- SpotLight定义场景中的聚光灯
- Model 3D模型材质数据
- Node3D场景中存在的对象的基础组件
- PerspectiveCamera 3D场景中的透视相机(提供场景的真实投影)
- OrthographicCamera 3D场景中的正交投影矩阵的相机
- Joint 定义骨骼动画层次结构中的节点
除了QtQuick3D模块外,qml还提供了以下几个辅助模块(后面章节会详解):
- QtQuick3D.AssetUtils: 动态加载3D资源相关的模块
- QtQuick3D.Helpers : 辅助模块,包含WasdController类型(使用wasd按键和鼠标控制节点位置和方向)、AxisHelper(显示xyz轴和网络格)等等
- QtQuick3D.Particles3D: 3D粒子系统模块,和qml中2D粒子类似,多了一个z轴方向。
学前知识
三维坐标系和旋转方向
接触模型时,会经常纠结xyz方向,初学者可能会比较难记住,可以通过如下图所示方便确定方向:
旋转方向则可以通过右手的方式来判断,默认angle正方向如下图所示:
未完待续