3.qml 3D-Node类学习

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

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

相关文章

苹果计划将全球1/4的IPhone产能转移至印度

KlipC报道:据相关人士报道,苹果希望在未来2到3年内每年在印度生产超过5000万部iphone,要是该计划得以实现,印度将占领全球iPhone产量的四分之一。 KlipC的分析师Alex Su表示:“此次iPhone15推出是苹果印度制造计划的一…

认知能力测验,①如何破解数字推理类测试题?

校园招聘(秋招春招),最为常见的认知能力测验,在线工具网将整理分析关于认知能力测验的系列文章,希望能帮助大家顺利通过认知能力测评,找到自己心仪的工作。 数字推理测试,是我们在求职中经常会…

C# 获取Windows所有窗口句柄

写在前面 在做录屏或截屏操作时,需要获取当前正在运行中的桌面程序句柄,在网上查找资源的的时候,发现了一个工具类还不错,这边做个验证记录。 参考代码 public class WindowApi{//寻找目标进程窗口 [DllImport("USER…

【大数据】Hudi 核心知识点详解(二)

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 &#x…

商用机器人,不好用是原罪

热潮褪去后,所有的问题都汇总成一个词,不好用。 从炙手可热到“大玩具” 一款产品好用与否,更多时候人们不会关心它先进的技术、工艺、用料,也不会考虑所谓的潮流趋势或前景,只会用最朴素的直观感受告诉你&#xff0…

【Redis】Redis.conf详解

Redis.conf详解 启动的时候,就通过配置文件来启动! 工作中,一些小小的配置,可以让你脱颖而出! 单位 配置文件 unit单位 对大小写不敏感!include包含其他配置文件 就是好比我们学习Spring、Improt&#x…

讨论用于评估DREX的五种DR指标

概要 动态范围是已经使用了近一个世纪的用于评估接收机性能的参数。这里介绍五种动态有关指标的定义及测试方法,用于评估数字接收激励器(DREX,digital receiver exciters)。DREX是构成雷达的关键整部件,其瞬时带宽&am…

docker consul 容器的自动发现与注册

consul相关知识 什么是注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构,起初的…

kafka配置多个消费者groupid kafka多个消费者消费同一个partition(java)

目录 1- 单播模式,只有一个消费者组2- 广播模式,多个消费者组3- Java实践 kafka是由Apache软件基金会开发的一个开源流处理平台。kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 kafka中partition…

Git忽略已经提交的文件

原理类似于 Android修改submodule的lib包名

一文搞懂OSI参考模型与TCP/IP

OSI参考模型与TCP/IP 1. OSI参考模型1.1 概念1.2 数据传输过程 2. TCP/IP2.1 概念2.2 数据传输过程 3. 对应关系4. 例子4.1 发送数据包4.2 传输数据包4.3 接收数据包 1. OSI参考模型 1.1 概念 OSI模型(Open System Interconnection Reference Model)&a…

MySQL,分组order by

一、创建分组 ## 创建分组 -- 返回每个发布会的参会人数 SELECT event_id,COUNT(*) as canjia_num FROM sign_guest GROUP BY event_id; 1、group by子句可以包含任意个列,但是但指定的所有列都是一起计算的。 group by 后2个字段一起计算的 2、group by后面可以跟…

Leetcode 剑指 Offer II 057. 存在重复元素 III

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两…

STM32-HAL库11-SPI通讯(F103C6T6做主机,F103C8T6做从机)

STM32-HAL库11-SPI通讯(F103C6T6做主机,F103C8T6做从机) 一、所用材料 STM32F103C6T6最小系统板-主机 STM32F103C8T6最小系统板-从机 串口调试助手X-COM 二、所学内容 主要为实现SPI的轮询发送功能,在DSP280049C初学&#xff…

Logistic Regression——逻辑回归

1. 为什么需要逻辑回归 在前面学习的线性回归中,我们的预测值都是任意的连续值,例如预测房价。除此之外,还有一个常见的问题就是分类问题,而逻辑回归是一个解决分类问题的模型,其预测值是离散的。 分类问题又包括…

如何安装LUT预设?达芬奇/FCP/PR怎么安装LUT预设.cube格式文件的教程

在下载的LUT调色预设压缩文件包中,通常两个包含不同格式的LUT文件: .cube 和 .xmp 包含的 .cube 文件几乎与主流的视频编辑和色彩校正软件兼容,并且还可以在 Adobe Photoshop 等一些照片应用程序中使用。如果主要是将这些 LUT 用于视频剪辑项…

如何搭建Gateway服务

Gateway的简单介绍 Spring Cloud Gateway是Spring Cloud的一个项目,该项目是基于Spring,Spring Boot和Project Reactor等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。Gateway网关可以是…

持续集成交付CICD:Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用

目录 一、实验 1.Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用 2.优化共享库代码 二、问题 1.Jenkins手动构建后端项目流水线报错 一、实验 1.Jenkins使用GitLab共享库实现基于SaltStack的CD流水线部署前后端应用 (1)GitLa…

使用Redis构建简单的社交网站

文章目录 第1关:创建用户与动态第2关:处理用户关系第3关:状态与信息流 第1关:创建用户与动态 编程要求 在Begin-End区域编写 create_user(login_name, real_name) 函数,实现创建新用户的功能,具体参数与要…

【javascript】npm ERR! cb() never called!

错误 环境 windows 10 nvm node 14.17.0 如何解决 尝试了 5 种方法 1,npm cache clean --force 2, npm cache verify 3, 删掉package-lock.json (然鹅我的这个项目没有这个文件) 4, npm set strict-ssl false 5, 删除node_modules 这五种…