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

QML中的3D功能--入门开发

Qt Quick 提供了强大的 3D 功能支持,主要通过 Qt 3D 模块实现。以下是 QML 中开发 3D 应用的全面指南。

1. 基本配置

环境要求

  • Qt 5.10 或更高版本(推荐 Qt 6.x)

  • 启用 Qt 3D 模块

  • 支持 OpenGL 的硬件

项目配置

在 .pro 文件中添加:

QT += 3dcore 3drender 3dinput 3dextras 3dquick

2. 核心组件

基本结构

qml

import Qt3D.Core 2.15
import Qt3D.Render 2.15
import Qt3D.Extras 2.15Entity {id: sceneRootcomponents: [RenderSettings {activeFrameGraph: ForwardRenderer {clearColor: "black"camera: camera}}]// 相机配置Camera {id: cameraposition: Qt.vector3d(0, 0, 10)viewCenter: Qt.vector3d(0, 0, 0)}// 3D内容放在这里FirstPersonCameraController { camera: camera }
}

常用属性

核心组件属性

Entity (Qt3D.Core)
属性/方法类型说明
componentslist<Component3D>实体包含的组件列表
enabledbool是否启用实体(默认true)
parentEntity父实体(用于构建场景层次)
Transform (Qt3D.Core)
属性/方法类型说明
translationvector3d位置坐标(x,y,z)
rotationquaternion四元数旋转
rotationXrealX轴旋转角度(度)
rotationYrealY轴旋转角度(度)
rotationZrealZ轴旋转角度(度)
scalereal统一缩放因子
scale3Dvector3d各轴独立缩放(x,y,z)

渲染相关

Camera (Qt3D.Render)
属性/方法类型说明
positionvector3d相机位置
viewCentervector3d观察中心点
upVectorvector3d相机的上向量(默认0,1,0)
fieldOfViewreal视野角度(度)
nearPlanereal近裁剪面距离
farPlanereal远裁剪面距离
projectionTypeenum投影类型(Orthographic/Perspective)
aspectRatioreal宽高比(自动计算)
Material (Qt3D.Extras)
属性/方法类型说明
ambientcolor环境光颜色
diffusecolor漫反射颜色
specularcolor镜面反射颜色
shininessreal高光强度(0-100)
alphareal透明度(0-1)

几何体属性

通用Mesh属性 (Qt3D.Extras)
属性/方法类型说明
radiusreal球体/环体的半径
lengthreal立方体长度
widthreal立方体宽度
heightreal立方体高度
ringsint球体经线分段数
slicesint球体纬线分段数

光源属性

通用Light属性 (Qt3D.Render)
属性/方法类型说明
colorcolor光源颜色
intensityreal光照强度
enabledbool是否启用光源
PointLight特有
属性/方法类型说明
constantAttenuationreal恒定衰减
linearAttenuationreal线性衰减
quadraticAttenuationreal二次衰减

常用方法

SceneLoader (Qt3D.Core)
方法参数说明
setSourceurl加载3D模型文件
http://www.xdnf.cn/news/30151.html

相关文章:

  • Chat2DB创始人姬朋飞:AI在 text2sql应用领域的实践
  • Java从入门到“放弃”(精通)之旅——数组的定义与使用⑥
  • 进程程序替换
  • 【橘子大模型】初探rag知识库的构建
  • Linux基础IO(八)之硬链接
  • 完整游戏排行榜系统实现
  • Redux Promise 中间件
  • C++ 数组 array ™实现动画效果全解析⚡YQW · Studio ⚡
  • Http基础
  • QML中的3D功能--自定义着色器开发
  • 硬件操作指南——ATK-MD0430 V20
  • 什么是超类实体和派生属性
  • JavaScript 变量语法扩展
  • C 语言联合与枚举:自定义类型的核心解析
  • Scade 语言词法介绍
  • 游戏引擎学习第235天:在 Windows 上初始化 OpenGL
  • 4N60-ASEMI开关电源与适配器专用4N60
  • 6.7 ChatGPT自动生成定时任务脚本:Python与Cron双方案实战指南
  • android测试依赖
  • Python番外——常用的包功能讲解和分类组合
  • GD32H7单片机使用segger_rtt,rtt-viewer看不到输出的问题,怎样解决?
  • 使用docker在manjaro linux系统上运行windows和ubuntu
  • 在统信UOS1060上新增备份到U盘
  • 【java实现+4种变体完整例子】排序算法中【基数排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • Python----深度学习(全连接与链式求导法则)
  • Java中常见的锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock
  • MainActivity与RecActivity之间的双向数据传递详解
  • 从 0~1 保姆级 详细版 PostgreSQL 数据库安装教程
  • 数据库备份-docker配置主从数据库
  • k8s安装kubeadm