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.rhkb.cn/news/218832.html

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

相关文章

appium2.0.1安装完整教程+uiautomator2安装教程

第一步:根据官网命令安装appium(Install Appium - Appium Documentation) 注意npm前提是设置淘宝镜像: npm config set registry https://registry.npmmirror.com/ 会魔法的除外。。。 npm i --locationglobal appium或者 npm…

如何预防最新的.locked、.locked1勒索病毒感染您的计算机?

尊敬的读者: 近期,网络安全领域迎来一股新潮——.locked、.locked1勒索病毒的威胁,其先进的加密技术令人生畏。本文将深入剖析.locked、.locked1勒索病毒的阴谋,提供特色数据恢复策略,并揭示锁定恶劣行径的先锋预防手…

Web攻防07_文件上传基础_文件上传靶场upload-labs-docker

文章目录 项目安装安装docker进入项目目录:一键部署运行 靶场关卡1、前端JS验证如何判断是否为前端验证解法1:抓包解法2:禁用JS 2、.htaccess解法 3、MIME类型解法 4、文件头判断5、黑名单过滤-过滤不严-单次过滤为空格6、黑名单-过滤不严-系…

阿里云cdn设置相同的域名路径访问不同的oss目录

1.设置回源配置,添加回源URL改写 2.设置跨域,cdn的跨域优先oss 3.回源设置

SpringData自定义操作

一、JPQL和SQL 查询 package com.kuang.repositories;import com.kuang.pojo.Customer; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.PagingAndSortingR…

深度学习——第6章 浅层神经网络(NN)

第6章 浅层神经网络(NN) 目录 6.1 神经网络模型概述 6.2 神经网络正向传播 6.3 神经网络反向传播 6.4 W和b的初始化 6.5 总结 上一课主要介绍了一些神经网络必备的基础知识,包括Sigmoid激活函数、损失函数、梯度下降和计算图。这些知识对…

MX6ULL学习笔记(十二)Linux 自带的 LED 灯

前言 前面我们都是自己编写 LED 灯驱动,其实像 LED 灯这样非常基础的设备驱动,Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架,因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可,本章我们就来学…

windows10 php8连接sql server

一、环境安装 文章目录 一、环境安装1.安装php拓展2.在 Windows 上安装PHP驱动程序3.在 Windows 上安装ODBC驱动 二、php连接sqlserver三、注意事项数据库相关设置相关语法sqlsrv_fetch_array 的示例:sqlsrv_fetch 的示例:echo 和 print_r 的不同 所用资…

【卡塔尔世界杯数据可视化与新闻展示】

卡塔尔世界杯数据可视化与新闻展示 前言数据获取与处理可视化页面搭建功能实现新闻信息显示详情查看登录注册评论信息管理 创新点结语 前言 随着卡塔尔世界杯的临近,对于足球爱好者来说,对比赛的数据分析和新闻报道将成为关注的焦点。本文将介绍如何使用…

论文阅读:PointCLIP V2: Prompting CLIP and GPT for Powerful3D Open-world Learning

https://arxiv.org/abs/2211.11682 0 Abstract 大规模的预训练模型在视觉和语言任务的开放世界中都表现出了良好的表现。然而,它们在三维点云上的传输能力仍然有限,仅局限于分类任务。在本文中,我们首先协作CLIP和GPT成为一个统一的3D开放世…

C++ 运算符重载

目录 前言 算术运算符重载 加号运算符 位运算符重载 左移运算符 自增自减运算符重载 前置自增运算符 后置自增运算符 赋值运算符重载 等号赋值运算符重 关系运算符重载 相等 不等 函数调用运算符重载 总结 前言 在C中,运算符重载是一种强大的特性…

jmeter,csv文件参数化+断言 实现一个接口的case

1、case 及其 测试数据 注意保存文件的编码格式 id,name,limit,status,address,start_time,assert_status,assert_message 100,小米100,1000,1,某某会展中心101,2023-8-20 14:20,200,add event success ,,,,,,10021,parameter error 100,小米102,1002,1,某某会展中心103,2023-…

Centos7部署SVN

文章目录 (1)SVN概述(2)SVN与Samba共享(3)安装SVN(4)SVN搭建实例(5)pc连接svn服务器(6)svn图标所代表含义 (1)…

ArrayList与LinkLIst

ArrayList 在Java中,ArrayList是java.util包中的一个类,它实现了List接口,是一个动态数组,可以根据需要自动增长或缩小。下面是ArrayList的一些基本特性以及其底层原理的简要讲解: ArrayList基本特性: 动…

听GPT 讲Rust源代码--src/tools(13)

File: rust/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/incoherent_impl.rs 在Rust源代码中,路径为rust/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/incoherent_impl.rs的文件是为了处理Rust代码中的不一致实现问题而存在的。…

生成小程序URLlink链接遇到的坑

这里写自定义目录标题 前端生成小程序URL link背景用户打开小程序的常用方法短链接短链接优缺点优点缺点 生成短链接步骤 可能会遇到的问题:其他 注意📢 前端生成小程序URL link ![h5打开小程序](https://img-blog.csdnimg.cn/direct/a4cfe3ef6d184c6d9…

MQTT的奇妙之旅:探索RabbitMQ Web MQTT插件的威力【RabbitMQ 十一】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 MQTT的奇妙之旅:探索RabbitMQ Web MQTT插件的威力 前言第一:揭秘RabbitMQ Web MQTT插件背景和目的:MQTT 协议简介:WebSockets 和 MQTT 的融合&#xff1…

让高清媒体无限畅享——Movist Pro for Mac推广文章

随着科技的迅猛发展,高清媒体已经成为我们日常生活中不可或缺的一部分。无论是观看电影、追剧、还是欣赏高清音乐视频,我们都希望能够获得最佳的视听体验。为了满足这一需求,我们向大家推荐一款强大的高清媒体播放器——Movist Pro for Mac。…

Selenium安装WebDriver:ChromeDriver与谷歌浏览器版本快速匹配_最新版120

最近在使用通过selenium操作Chrome浏览器时,安装中遇到了Chrome版本与浏览器驱动不匹配的的问题,在此记录安装下过程,如何快速找到与谷歌浏览器相匹配的ChromeDriver驱动版本。 1. 确定Chrome版本 我们首先确定自己的Chrome版本 Chrome设置…

【后端卷前端3】

侦听器 监听的数据是 data()中的动态数据~响应式数据 <template><div><p>{{showHello}}</p><button click"updateHello">修改数据</button></div> </template><script>export default {name: "goodsTe…