3.qml 3D-Node类学习

news2024/12/23 18:59:51

Node类是在View3D 中的对象基础组件,用于表示3D空间中的对象,类似于Qt Quick 2D场景中的Item,介绍如下所示:

如上图可以看到,Node类的子类非常多,比如Model类(显示3D模型)、ParticleSystem3D粒子系统类、Light光照类等等。

所以Node类非常重要,本章我们便来来学习Node类,再来学习其它类就会非常的方便快捷。

1.Node类介绍

Node类是一个节点类,Node 类具有用于确定其在3D空间中位置和变换的属性,如 position、rotation、scale 等。这些属性使得你可以在场景中移动、旋转和缩放3D元素。

Node类支持如下所示:

  1. 网格和几何体: Node 类可以包含3D网格或几何体,用于表示物体的形状。例如,Mesh 类是 Node 的子类,用于表示一个3D网格。
  2. 材质和纹理: Node 可以具有材质,其中包括纹理和其他渲染属性。Material 类是 Node 的子类,用于定义3D对象的外观。
  3. 相机: Camera 类是 Node 的子类,用于定义观察场景的视图。相机的属性包括视角、近裁剪面、远裁剪面等。
  4. 灯光: 不同类型的灯光,如 DirectionalLight、PointLight 和 SpotLight,也是 Node 的子类,用于模拟光照效果。
  5. 动画和变换: 通过属性动画和插值器,你可以使用 Node 类来实现动画效果。这包括改变 position、rotation 等属性,从而实现平滑的过渡效果。

Node常用属性如下所示:

  • eulerRotation : vector3d,该属性包含 x、y 和 z 轴的旋转值。这些值存储为 3d 向量。也可以看看QQuaternion::fromEulerAngles()。
  • forward : vector3d, 此属性返回场景空间中节点前进方向的归一化向量。也可以看看up,right, 和mapDirectionToScene。
  • opacity : real,设置节点不透明度值。该值会被该 Node 的所有子节点继承
  • pivot : vector3d,设置 x、y 和 z 轴的枢轴值。当对节点应用旋转时,这些值用作枢轴点。
  • position : vector3d,设置节点在坐标空间中的xyz位置
  • right : vector3d,此属性返回场景空间中节点右方向的归一化向量。
  • rotation : quaternion,该属性包含节点的旋转值。这些值存储为四元数。
  • scale : vector3d, 设置 x、y 和 z 轴的比例值。
  • scenePosition : vector3d,此属性返回当前节点在3D场景空间中的全局位置,假如一个Node下嵌套了多个Model,如果要获取某个Model的全局位置,则使用该属性。
  • sceneRotation : quaternion,此属性返回当前节点在3D场景空间中的x、y 和 z 轴的旋转值
  • sceneScale : vector3d,此属性返回当前节点在3D场景空间中的全局比例
  • sceneTransform : matrix4x4,该属性返回该节点的全局变换矩阵。
  • staticFlags : int,此属性定义用于评估节点渲染方式的静态标志。目前暂时没有作用,只是充当未来实现的属性。
  • up : vector3d,此属性返回场景空间中节点向上方向的归一化向量。
  • visible : bool,设置可见性,该值会被该 Node 的所有子节点继承
  • x : real,设置x位置,等于position中的x值
  • y : real,设置y位置,等于position中的y值
  • z : real,设置z位置,等于position中的z值

提供的方法如下所示:

vector3d mapDirectionFromNode(QtQuick3D::Node node, vector3d localDirection)

将localDirection从节点的局部空间变换到该节点的局部空间。返回值不受节点(继承的)比例或位置的影响。

注意:返回值将具有与localDirection相同的长度(即未标准化)

vector3d mapDirectionFromScene(vector3d sceneDirection)

将sceneDirection从场景3D空间转换为局部空间。返回值不受节点(继承的)比例或位置的影响。

注意:返回值将具有与sceneDirection相同的长度(即未标准化)。

vector3d mapDirectionToNode(QtQuick3D::Node node, vector3d localDirection)

将localDirection从此节点本地空间转换为节点的本地空间。返回值不受节点(继承的)比例或位置的影响。

注意:返回值将具有与localDirection相同的长度(即未标准化)。

vector3d mapDirectionToScene(vector3d localDirection)

将localDirection从本地空间变换到场景3D空间。返回值不受节点(继承的)比例或位置的影响。

注意:返回值将具有与localDirection相同的长度(即未标准化)。

vector3d mapPositionFromNode(QtQuick3D::Node node, vector3d localPosition)

将localPosition从节点的局部空间变换到该节点的局部空间。

vector3d mapPositionFromScene(vector3d scenePosition)

将scenePosition从场景3D空间变换到局部空间。

vector3d mapPositionToNode(QtQuick3D::Node node, vector3d localPosition)

将localPosition从此节点的本地空间转换为节点的本地空间。

vector3d mapPositionToScene(vector3d localPosition)

将localPosition从本地空间变换到场景3D空间。

注意: 场景3D空间含义是“3D 世界中的全局”,而不是“屏幕或桌面的全局”

rotate(real degrees, vector3d axis, enumeration space)

围绕axis轴旋转该节点给定的degrees度数。可以设置轴的空间类型,取值如下所示:

  • Node.LocalSpace 轴相对于该节点的局部方向。
  • Node.ParentSpace 轴相对于该父节点的局部方向。
  • Node.SceneSpace 轴是相对于3D场景的。

未完待续,后面学习该Node各个子类、在demo中实现这些方法调用实例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1307413.html

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

相关文章

linux 内核同步互斥技术之原子变量

原子变量用来实现对整数的互斥访问,通常用来实现计数器。 例如,我们写一行代码把变量 a 加 1,编译器把代码编译成 3 条汇编指令。 (1)把变量 a 从内存加载到寄存器。 (2)把寄存器的值加 1。 &am…

smartKettle离线部署及问题记录

目录 📚第一章 前言📗背景📗目的📗总体方向 📚第二章 部署📗源码下载📗后端部署📕导入后端项目📕修改settings.xml(自动下载相关jar包)📕 编译📕 …

【计算机网络】TCP|IP协议

目录 前言 什么是TCP/IP协议? TCP/IP协议的层次结构 TCP/IP协议的工作原理 TCP/IP协议的重要性 结语 前言 TCP/IP协议是当今互联网世界中最重要的网络协议之一,它是网络通信的基石,为数据在网络中的传输提供了可靠性和有效性。本文将深…

比较好的python书籍,python有什么书推荐

大家好,小编来为大家解答以下问题,比较好的python书籍,python有什么书推荐,现在让我们一起来看看吧! 我是在半年前接触到Python的,我之前没有一点编程基础,但在我自学的这半年里,我发…

Vue指令之v-on

v-on指令用于注册事件,作用是添加监听与提供事件触发后对应的处理函数。 v-on有两种语法,在提供处理函数的时候既可以直接使用内联语句,也可以提供函数的名字。 第一种语法是直接提供内联语句,如下 v-on:事件名 "内联语句…

数据可视化作用探析

数据可视化是一种将数据转化为图表、图形或其他视觉形式的过程,旨在更直观、更易于理解地展示数据信息。它不仅仅是对数据的简单呈现,更是一种利用视觉化手段帮助人们理解数据、发现模式、分析趋势和做出决策的强大工具。今天,我就从可视化从…

RocketMQ可视化工具 打包遇到的yarn intall 问题

文章目录 RocketMQ可视化工具1.github上下载2.修改参数3.运行4.打包5.出错6.解决7.重试8.再解决9.很奇怪运行没错,但是测试错啦10.不想深究,直接跳过测试11.展示成功 RocketMQ可视化工具 1.github上下载 下载地址 https://github.com/apache/rocketmq-…

在Windows 11中打开任务管理器的7种方法,总有一种很适用

​本文介绍了如何在Windows 11中打开任务管理器。使用Windows任务管理器,你可以跟踪系统进程、监视资源使用情况和强制停止应用程序。 如何使用搜索栏打开任务管理器 在Windows 11中访问任务管理器的一种更简单的方法是使用搜索栏。 1、按Windows键+S或选择任务栏中的“搜索…

Nodejs 第二十二章(脚手架)

编写自己的脚手架 那什么是脚手架? 例如:vue-cli Angular CLI Create React App 编写自己的脚手架是指创建一个定制化的工具,用于快速生成项目的基础结构和代码文件,以及提供一些常用的命令和功能。通过编写自己的脚手架,你可以…

值类型相关函数与对象类型相关函数内存调用过程

值类型相关函数内存调用: 先来看这样一段代码,你认为它的运行结果是多少呢? 20和11还是20和10? package org.example;public class Main {public static void main(String[] args) {int a10;add(a);System.out.println(a);}pub…

【INTEL(ALTERA)】Agilex7 FPGA Development Kit DK-DEV-AGI027R1BES编程/烧录/烧写/下载步骤

DK-DEV-AGI027R1BES 的编程步骤: 将外部 USB Blaster II 连接到 J10- 外部 JTAG 接头。将交换机 SW5.3 设置为 ON(首次)。打开 英特尔 Quartus Prime Pro Edition 软件编程工具。单击 硬件设置 ,然后选择 USB Blaster II。将硬件…

Unity_使用FairyGUI搭建登录页面

Unity_使用FairyGUI搭建登录页面 1. 使用FairyGUI准备一个UI界面,例如:以下登录 2. 发布导出(发布路径设置为Unity的Asset下任何路径) 3. Unity编辑器安装FairyGUI包资源(在资源商店找见并存储为我的资源,…

图片怎么去文字水印?分享三个简单无痕方法

图片怎么去文字水印?大家在遇到好看的图片时,是否曾想过将其用作自己的头像?然而,很多时候从网上保存的图片会带有平台或作者的水印,这会严重影响头像的整体视觉效果,导致我们不得不放弃使用这张图片&#…

typename的两种用法

typename有两种用法&#xff0c;第一种用于声明模板时&#xff0c;表示模板类型参数&#xff0c;如下所示。在用于模板声明时&#xff0c;typename 和 class 等价&#xff0c;具有同等含义。 template<typename T> class MyClass; // 等价于 template<class T> cl…

从零开始学机器学习,这些学习网站让你事半功倍!

介绍&#xff1a;机器学习是人工智能&#xff08;AI&#xff09;和计算机科学的一个分支&#xff0c;它专注于使用数据和算法&#xff0c;模仿人类学习的方式&#xff0c;逐步提高自身的准确性。更具体来说&#xff0c;机器学习是一门关于数据学习的科学技术&#xff0c;它能帮…

Postswigger 靶场 XSS 通关

文章目录 PostSwigger靶场XSS通关学徒&#xff1a;第一关学徒&#xff1a;第二关学徒&#xff1a;第三关学徒&#xff1a;第四关学徒&#xff1a;第五关学徒&#xff1a;第六关学徒&#xff1a;第七关学徒&#xff1a;第八关学徒&#xff1a;第九关 PostSwigger靶场XSS通关 靶…

VCSA7.0加入Windows AD域失败的处理过程

一、问题现象 vcsa7.0加入AD域时提示“Idm client exception: Error trying to join AD, error code 2453” 二、处理过程 &#xff08;一&#xff09;检查是否DNS问题 查看dns是否设置正确&#xff0c;如下&#xff1a; 1. Enable SSH on VCSA. 2. Command> shell 3…

高质量渲染效果的硬件要求!云渲染效果的作用优势

​在数字内容创作的世界里&#xff0c;渲染技术始终是提高视觉效果和最终产物质量的关键环节。无论是影视制作、游戏开发还是建筑可视化&#xff0c;高品质的渲染结果对于传达设计理念和吸引观众都至关重要。本文将讨论实现这些高质量渲染效果所需的硬件要求&#xff0c;探讨CP…

程序中关于时间和比较运算符的单词

时间 在日志中&#xff0c;我们经常碰到关于一些时间的单词缩写 比如这个Fri Dec 1 就代表了Friday &#xff08;星期五&#xff09;&#xff0c; December &#xff08;十二月&#xff09; 12月1日星期五 或者使用date查看时间的时候 dateWed Dec 13 05:55:54 PM CST 2023这…

【Hive】——DDL(CREATE TABLE)

1 CREATE TABLE 建表语法 2 Hive 数据类型 2.1 原生数据类型 2.2 复杂数据类型 2.3 Hive 隐式转换 2.4 Hive 显式转换 2.5 注意 3 SerDe机制 3.1 读写文件机制 3.2 SerDe相关语法 3.2.1 指定序列化类&#xff08;ROW FORMAT SERDE ‘’&#xff09; 3.2.2 指定分隔符&#xff0…