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.mzph.cn/news/902071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git合并分支的两种常用方式`git merge`和`git cherry-pick`

Git合并分支的两种常用方式git merge和git cherry-pick 写在前面1. git merge用途工作方式使用git命令方式合并使用idea工具方式合并 2. git cherry-pick用途工作方式使用git命令方式合并使用idea工具方式合并 3. 区别总结 写在前面 一般我们使用git合并分支常用的就是git mer…

Web三漏洞学习(其三:rce漏洞)

靶场&#xff1a;NSSCTF 三、RCE漏洞 1、概述 在Web应用开发中会让应用调用代码执行函数或系统命令执行函数处理&#xff0c;若应用对用户的输入过滤不严&#xff0c;容易产生远程代码执行漏洞或系统命令执行漏洞 所以常见的RCE漏洞函数又分为代码执行函数和系统命令执行函数…

从零开始:Python运行环境之VSCode与Anaconda安装配置全攻略 (1)

从零开始&#xff1a;Python 运行环境之 VSCode 与 Anaconda 安装配置全攻略 在当今数字化时代&#xff0c;Python 作为一种功能强大且易于学习的编程语言&#xff0c;被广泛应用于数据科学、人工智能、Web 开发等众多领域。为了顺利开启 Python 编程之旅&#xff0c;搭建一个稳…

从FPGA实现角度介绍DP_Main_link主通道原理

DisplayPort&#xff08;简称DP&#xff09;是一个标准化的数字式视频接口标准&#xff0c;具有三大基本架构包含影音传输的主要通道&#xff08;Main Link&#xff09;、辅助通道&#xff08;AUX&#xff09;、与热插拔&#xff08;HPD&#xff09;。 Main Link&#xff1a;用…

嵌入式软件--stm32 DAY 2

大家学习嵌入式的时候&#xff0c;多多学习用KEIL写代码&#xff0c;虽然作为编译器&#xff0c;大家常用vscode等常用工具关联编码&#xff0c;但目前keil仍然是主流工具之一&#xff0c;学习掌握十分必要。 1.再次创建项目 1.1编译器自动生成文件 1.2初始文件 这样下次创建新…

游戏引擎学习第234天:实现基数排序

回顾并为今天的内容设定背景 我们今天继续进行排序的相关&#xff0c;虽然基本已经完成了&#xff0c;但还是想收尾一下&#xff0c;让整个流程更完整。其实这次排序只是个借口&#xff0c;主要是想顺便聊一聊一些计算机科学的知识点&#xff0c;这些内容在我们项目中平时不会…

计算机网络——常见的网络攻击手段

什么是XSS攻击&#xff0c;如何避免? XSS 攻击&#xff0c;全称跨站脚本攻击&#xff08;Cross-Site Scripting&#xff09;&#xff0c;这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&#xff0c;因此有人将跨站脚本攻击缩写为XSS。它指的是恶意攻击者往Web页面…

Agent的九种设计模式 介绍

Agent的九种设计模式 介绍 一、ReAct模式 原理:将推理(Reasoning)和行动(Acting)相结合,使Agent能够在推理的指导下采取行动,并根据行动的结果进一步推理,形成一个循环。Agent通过生成一系列的思维链(Thought Chains)来明确推理步骤,并根据推理结果执行相应的动作,…

LeetCode 热题 100:回溯

46. 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2&#xff1a; 输入&#xff…

cJSON_Print 和 cJSON_PrintUnformatted的区别

cJSON_Print 和 cJSON_PrintUnformatted 是 cJSON 库中用于将 cJSON 对象转换为 JSON 字符串的两个函数&#xff0c;它们的区别主要在于输出的格式&#xff1a; 1. cJSON_Print 功能&#xff1a;将 cJSON 对象转换为格式化的 JSON 字符串。 特点&#xff1a; 输出的 JSON 字符…

A股周度复盘与下周策略 的deepseek提示词模板

以下是反向整理的股票大盘分析提示词模板&#xff0c;采用结构化框架数据占位符设计&#xff0c;可直接套用每周市场数据&#xff1a; 请根据一下markdown格式的模板&#xff0c;帮我检索整理并输出本周股市复盘和下周投资策略 【A股周度复盘与下周策略提示词模板】 一、市场…

Linux下使用C++获取硬件信息

目录 方法获取CPU信息&#xff1a;读取"/proc/cpuinfo"文件获取磁盘信息&#xff1a;读取"/proc/diskstats"文件获取BIOS信息有两种方法&#xff1a;1、读取文件&#xff1b;2、使用dmidecode命令获取主板信息有两种方法&#xff1a;1、读取文件&#xff1…

BootStrap:进阶使用(其二)

今天我要讲述的是在BootStrap中第二篇关于进一步使用的方法与代码举例; 分页&#xff1a; 对于一些大型网站而言&#xff0c;分页是一个很有必要的存在&#xff0c;如果当数据内容过大时&#xff0c;则需要分页来分担一些&#xff0c;这可以使得大量内容能整合并全面地展示&a…

【技术派后端篇】技术派中的白名单机制:基于Redis的Set实现

在技术派社区中&#xff0c;为了保证文章的质量和社区的良性发展&#xff0c;所有发布的文章都需要经过审核。然而&#xff0c;并非所有作者的文章都需要审核&#xff0c;我们通过白名单机制来优化这一流程。本文将详细介绍技术派中白名单的实现方式&#xff0c;以及如何利用Re…

TRAE.AI 国际版本

国际版下载地址&#xff1a; https://www.trae.ai/https://www.trae.ai/ 国际版本优势&#xff1a;提供更多高校的AI助手模型 Claude-3.5-Sonnet Claude-3.7-Sonnet Gemini-2.5-Pro GPT-4.1 GPT-40 DeepSeek-V3-0324DeepSeek-V3DeepSeek-Reasoner(R1)

关于支付宝网页提示非官方网页

关于支付宝网站提示 非官方网站 需要找官方添加白名单 下面可以直接用自己的邮箱去发送申请 支付宝提示“非支付宝官方网页&#xff0c;请确认是否继续访问”通常是因为支付宝的安全机制检测到您访问的页面不是支付宝官方页面&#xff0c;这可能是由于域名或页面内容不符合支…

【今日三题】打怪(模拟) / 字符串分类(字符串哈希) / 城市群数量(dfs)

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;每日两三题 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 打怪(模拟)字符串分类(字符串哈希)城市群数量(dfs) 打怪(模拟) 打怪 #include <iostream> using namespace std;int …

npm install 版本过高引发错误,请添加 --legacy-peer-deps

起因&#xff1a;由于使用"react": "^19.0.0", 第三方包要低版本react&#xff0c;错解决方法&#xff01; npm install --save emoji-mart emoji-mart/data emoji-mart/react npm install --save emoji-mart emoji-mart/data emoji-mart/react npm err…

Python基础总结(七)之条件语句

文章目录 条件语句if一、Python中的真假二、条件语句格式2.1 if语句格式2.2 if-else语句2.3 if-elif-else语句 三、if语句嵌套 条件语句if 条件语句其实就是if语句&#xff0c;在讲解if语句之前需要知道Python中对于真假的判断。 一、Python中的真假 在Python中非0的都为真&…

基于Ubuntu2504部署OpenStack E版

OpenStack 初始化环境安装数据库、memcahe、rabbitmq等服务安装keystone服务安装glance服务安装placement服务安装nova服务安装neutron服务安装horizon服务 官网 OpenStack Epoxy 巩固了作为 VMware 替代方案的地位&#xff0c;增强了安全性&#xff0c;并改进了硬件支持 第 3…