Qt Quick 3D - Simple Skinning Example▲
Sélectionnez
// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import
QtQuick
import
QtQuick3D
import
Example
import
QtQuick.Timeline
Node {
PrincipledMaterial {
id
:
material
lighting
:
PrincipledMaterial.NoLighting
baseColor
:
"orange"
}
Model {
geometry
:
SkinGeometry {
id
:
geometry
positions
:
[
Qt.vector3d(0.0, 0.0, 0.0), // vertex 0
Qt.vector3d(1.0, 0.0, 0.0), // vertex 1
Qt.vector3d(0.0, 0.5, 0.0), // vertex 2
Qt.vector3d(1.0, 0.5, 0.0), // vertex 3
Qt.vector3d(0.0, 1.0, 0.0), // vertex 4
Qt.vector3d(1.0, 1.0, 0.0), // vertex 5
Qt.vector3d(0.0, 1.5, 0.0), // vertex 6
Qt.vector3d(1.0, 1.5, 0.0), // vertex 7
Qt.vector3d(0.0, 2.0, 0.0), // vertex 8
Qt.vector3d(1.0, 2.0, 0.0) // vertex 9
]
joints
:
[
0
, 1
, 0
, 0
, // vertex 0
0
, 1
, 0
, 0
, // vertex 1
0
, 1
, 0
, 0
, // vertex 2
0
, 1
, 0
, 0
, // vertex 3
0
, 1
, 0
, 0
, // vertex 4
0
, 1
, 0
, 0
, // vertex 5
0
, 1
, 0
, 0
, // vertex 6
0
, 1
, 0
, 0
, // vertex 7
0
, 1
, 0
, 0
, // vertex 8
0
, 1
, 0
, 0
// vertex 9
]
weights
:
[
1.00, 0.00, 0.0, 0.0, // vertex 0
1.00, 0.00, 0.0, 0.0, // vertex 1
0.75, 0.25, 0.0, 0.0, // vertex 2
0.75, 0.25, 0.0, 0.0, // vertex 3
0.50, 0.50, 0.0, 0.0, // vertex 4
0.50, 0.50, 0.0, 0.0, // vertex 5
0.25, 0.75, 0.0, 0.0, // vertex 6
0.25, 0.75, 0.0, 0.0, // vertex 7
0.00, 1.00, 0.0, 0.0, // vertex 8
0.00, 1.00, 0.0, 0.0 // vertex 9
]
indexes
:
[
0
, 1
, 3
, // triangle 0
0
, 3
, 2
, // triangle 1
2
, 3
, 5
, // triangle 2
2
, 5
, 4
, // triangle 3
4
, 5
, 7
, // triangle 4
4
, 7
, 6
, // triangle 5
6
, 7
, 9
, // triangle 6
6
, 9
, 8
// triangle 7
]
}
materials
:
[
material
]
skeleton
:
qmlskeleton
inverseBindPoses
:
[
Qt.matrix4x4(1
, 0
, 0
, -
0.5,
0
, 1
, 0
, -
1
,
0
, 0
, 1
, 0
,
0
, 0
, 0
, 1
),
Qt.matrix4x4(1
, 0
, 0
, -
0.5,
0
, 1
, 0
, -
1
,
0
, 0
, 1
, 0
,
0
, 0
, 0
, 1
)
]
}
Skeleton {
id
:
qmlskeleton
Joint {
id
:
joint0
index
:
0
skeletonRoot
:
qmlskeleton
Joint {
id
:
joint1
index
:
1
skeletonRoot
:
qmlskeleton
eulerRotation.z
:
45
}
}
}
Timeline {
id
:
timeline0
startFrame
:
0
endFrame
:
1000
currentFrame
:
0
enabled
:
true
animations
:
[
TimelineAnimation {
duration
:
5000
from
:
0
to
:
1000
running
:
true
}
]
KeyframeGroup {
target
:
joint1
property
:
"eulerRotation.z"
Keyframe {
frame
:
0
value
:
0
}
Keyframe {
frame
:
250
value
:
90
}
Keyframe {
frame
:
750
value
:
-
90
}
Keyframe {
frame
:
1000
value
:
0
}
}
}
}