QQuick3D-Node的介绍
Node的概述
- Node类是3D场景中的基类,用于表示存在于3D场景中实体(模型、摄像机、灯光)等。场景中除了根节点,所有其它节点都是相对于父节点的转换,即在局部坐标系中。
- 如果需要将一个场景用于多个View3D显示,必须使用Node节点。
- 旋转轴指的是物体旋转时围绕的轴线。在3D空间中,常见的旋转轴是X轴、Y轴和Z轴,分别代表水平、垂直和深度方向的轴。旋转轴定义了物体在空间中旋转的方向;绕X轴旋转和俯仰角(Pitch)相关;绕Y轴旋转和偏航角(Yaw)相关,绕Z轴旋转和翻滚角(Roll)相关
- 属性eulerRotation : vector3d:设置x,y,z轴的旋转值,旋转顺序 z,x,y
- 属性forward : vector3d:只读,返回节点在场景中正向的归一化坐标
- 属性opacity : real:节点的不透明度,会继承给此节点的子节点
- 属性pivot : vector3d:节点的旋转,缩放或变形的参考点,通常为几何中心,也可以移到其它位置
- 属性position : vector3d:在局部空间中坐标的位置平移。
- 属性right : vector3d:只读,返回节点在场景中右方向的归一化坐标
- 属性rotation : quaternion:节点的旋转值,使用四元数
- 属性scale : vector3d:x,y,z轴上的缩放量
- 属性scenePosition : vector3d:只读,节点在场景中位置
- 属性sceneRotation : quaternion:只读,节点在场景中旋转值
- 属性sceneScale : vector3d:只读,节点在场景中缩放值
- 属性sceneTransform : matrix4x4:只读,节点的全局变换矩阵
- 属性staticFlags : int
- 属性up : vector3d:只读,返回节点在场景中向上的归一化坐标
- 属性visible : bool:控制节点(以及子节点)是否可见
- 属性x : real:局部坐标系中,x轴的值
- 属性y : real:局部坐标系中,y轴的值
- 属性z : real:局部坐标系中,z轴的值
Node的实例代码
import QtQuick
import QtQuick3D
import QtQuick.Controls
Window{
id: window
width: 1280
height: 720
visible: true
title: "View3Ds with Different Cameras"
color: "#848895"
Node{
id:idRootNode
DirectionalLight {
ambientColor: Qt.rgba(0.5, 0.5, 0.5, 1.0)
brightness: 1.0
eulerRotation.x: -25
}
Model {
id: idModel
source: "#Cube"
x:50
y:50
scale: Qt.vector3d(3, 3, 0.5)
eulerRotation.x: -45
eulerRotation.z:45
materials: [
DefaultMaterial {
diffuseColor: Qt.rgba(0.8, 0.8, 0.8, 1.0)
}
]
}
OrthographicCamera {
id: cameraOrthographicFront
z: 600
}
}
Rectangle {
id: topLeft
anchors.top: parent.top
anchors.left: parent.left
width: parent.width * 0.5
height: parent.height * 0.5
color: "#848895"
border.color: "black"
View3D {
id: topLeftView
anchors.fill: parent
importScene: idRootNode
camera: cameraOrthographicFront
}
Button{
id:idBut
anchors.top: parent.top
anchors.margins: 10
text:"click"
onClicked: {
console.log("x = ",idModel.x," y = ",idModel.y, " z = ",idModel.z);
console.log("matrix = ",idModel.sceneTransform);
console.log("scenePosition = ",idModel.scenePosition);
console.log("sceneRotation = ",idModel.sceneRotation);
console.log("sceneScale = ",idModel.sceneScale);
console.log("position = ",idModel.position);
console.log("rotation = ",idModel.rotation);
console.log("scale = ",idModel.scale);
console.log("pivot = ",idModel.pivot);
}
}
}
}