91 lines
2.1 KiB
QML
91 lines
2.1 KiB
QML
import QtQuick
|
|
import QtQuick.Window
|
|
import QtQuick3D
|
|
|
|
Window {
|
|
visible: true
|
|
visibility: Window.FullScreen
|
|
width: 1280
|
|
height: 720
|
|
|
|
color: "black"
|
|
|
|
View3D {
|
|
anchors.fill: parent
|
|
|
|
environment: SceneEnvironment {
|
|
clearColor: "#202020"
|
|
backgroundMode: SceneEnvironment.Color
|
|
}
|
|
|
|
PerspectiveCamera {
|
|
id: camera
|
|
position: Qt.vector3d(0, 100, 300)
|
|
eulerRotation.x: -20
|
|
}
|
|
|
|
DirectionalLight {
|
|
eulerRotation.x: -45
|
|
brightness: 2
|
|
}
|
|
|
|
Node {
|
|
id: rootNode
|
|
|
|
Repeater3D {
|
|
model: gcodeData
|
|
|
|
delegate: Model {
|
|
property real dx: modelData.x2 - modelData.x1
|
|
property real dy: modelData.y2 - modelData.y1
|
|
property real dz: modelData.z2 - modelData.z1
|
|
|
|
property real length: Math.sqrt(dx*dx + dy*dy + dz*dz)
|
|
|
|
source: "#Cylinder"
|
|
|
|
position: Qt.vector3d(
|
|
(modelData.x1 + modelData.x2)/2,
|
|
(modelData.z1 + modelData.z2)/2,
|
|
(modelData.y1 + modelData.y2)/2
|
|
)
|
|
|
|
scale: Qt.vector3d(0.2, length / 100.0, 0.2)
|
|
|
|
materials: [
|
|
DefaultMaterial {
|
|
diffuseColor: "#00ff88"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
|
|
property real lastX
|
|
property real lastY
|
|
|
|
onPressed: {
|
|
lastX = mouse.x
|
|
lastY = mouse.y
|
|
}
|
|
|
|
onPositionChanged: {
|
|
let dx = mouse.x - lastX
|
|
let dy = mouse.y - lastY
|
|
|
|
rootNode.eulerRotation.y += dx * 0.3
|
|
rootNode.eulerRotation.x += dy * 0.3
|
|
|
|
lastX = mouse.x
|
|
lastY = mouse.y
|
|
}
|
|
|
|
onWheel: {
|
|
camera.position.z += wheel.angleDelta.y * -0.1
|
|
}
|
|
}
|
|
}
|
|
} |