1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
// Copyright (C) 2015 Paul Lemire
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.4 as QQ2
import Qt3D.Core 2.0
import Qt3D.Render 2.0
import Qt3D.Extras 2.0
Entity {
id: root
property Layer capsLayer
property Layer visualizationLayer
property ShaderData sectionData: ShaderData {
property int sectionsCount: 3
property ShaderDataArray sections: ShaderDataArray {
ShaderData {
property vector4d equation: clipPlane0.equation
property vector3d center: clipPlane0.center
}
ShaderData {
property vector4d equation: clipPlane1.equation
property vector3d center: clipPlane1.center
}
ShaderData {
property vector4d equation: clipPlane2.equation
property vector3d center: clipPlane2.center
}
}
}
Entity {
property Material cappingMaterial: Material {
effect: CappingMaterialEffect {
sectionsData: root.sectionData
}
}
property GeometryRenderer mesh: PlaneMesh {
width: 20.0
height: 20.0
meshResolution: Qt.size(2, 2)
}
components: [cappingMaterial, mesh, root.capsLayer]
}
PlaneVisualizationMaterial {
id: clipPlanesMaterial
alpha: 0.5
}
// XZ
ClipPlaneEntity {
id: clipPlane0
layer: root.visualizationLayer
visualMaterial: clipPlanesMaterial
center: Qt.vector3d(0, -10, 0)
normal: Qt.vector3d(0, -1.0, 0)
}
// XY
ClipPlaneEntity {
id: clipPlane1
layer: root.visualizationLayer
visualMaterial: clipPlanesMaterial
center: Qt.vector3d(0, 0, 10)
normal: Qt.vector3d(0, 0, -1.0)
rotateAxis: Qt.vector3d(1.0, 0.0, 0.0)
rotateAngle: 90
}
// YZ
ClipPlaneEntity {
id: clipPlane2
layer: root.visualizationLayer
visualMaterial: clipPlanesMaterial
center: Qt.vector3d(-10, 0, 0)
normal: Qt.vector3d(1.0, 0, 0)
rotateAxis: Qt.vector3d(0.0, 0.0, 1.0)
rotateAngle: -90
}
QQ2.SequentialAnimation {
running: true
loops: QQ2.Animation.Infinite
QQ2.NumberAnimation {
target: clipPlane0
property: "center.y"
from: 10
to: 0
duration: 2000
easing.type: QQ2.Easing.InOutQuart
}
QQ2.NumberAnimation {
target: clipPlane1
property: "center.z"
from: 10
to: 0
duration: 2000
easing.type: QQ2.Easing.InOutQuart
}
QQ2.NumberAnimation {
target: clipPlane2
property: "center.x"
from: -10
to: 0
duration: 4000
easing.type: QQ2.Easing.InOutQuart
}
QQ2.NumberAnimation {
target: clipPlane1
property: "center.z"
from: 0
to: 10
duration: 4000
easing.type: QQ2.Easing.InOutQuint
}
QQ2.NumberAnimation {
target: clipPlane0
property: "center.y"
from: 0
to: 10
duration: 2000
easing.type: QQ2.Easing.InOutQuint
}
QQ2.NumberAnimation {
target: clipPlane2
property: "center.x"
from: 0
to: -10
duration: 2000
easing.type: QQ2.Easing.InOutQuint
}
}
}
|