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.pswp.cn/news/902071.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/902071.shtml
英文地址,請注明出處:http://en.pswp.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…