Qt |
您所在的位置:网站首页 › flash骨骼怎么移动 › Qt |
Vertex Skinning Introduction Qt Quick 3D 支持网格几何结构骨骼动画的顶点蒙皮。 请参阅 Simple Skinning Example 了解骨骼动画的实际演示。 在大多数情况下,应用程序开发人员不会手动使用换肤 API。正常的工作流程是使用外部内容创建工具来定义骨架和皮肤(有时也称为rigging),然后使用 Balsam Asset Import Tool 将资源转换为 Qt Quick 3D 的本机格式。 定义骨架骨骼动画的基础是 Skeleton 。这是模型如何移动的抽象表示,其灵感来自于脊椎动物的物理骨骼如何工作。骨架的 "bones" 由 Joint 节点的层次结构表示。当然,这些不一定需要代表实际的骨骼。 Skeleton { id: qmlskeleton Joint { id: joint0 index: 0 skeletonRoot: qmlskeleton Joint { id: joint1 index: 1 skeletonRoot: qmlskeleton } Joint { id: joint2 index: 2 skeletonRoot: qmlskeleton } } } 将骨架连接到模型要将骨架应用到模型,请设置模型的 skeleton 属性: Model { skeleton: qmlskeleton ...为了让骨架发挥作用,模型的 geometry 需要包含蒙皮信息。这是通过在顶点缓冲区中包含 vertex attributes 以及 JointSemantic 和 WeightSemantic 来完成的。 JointSemantic 属性决定which骨骼中关节的变化可以影响给定的顶点。这使用 Joint.index 指定的索引值。由于该属性包含4个索引,因此最多4个关节可以影响一个顶点。 WeightSemantic 属性描述了strength这些关节的影响。它包含四个浮点值,每个值确定赋予 JointSemantic 属性中相应位置索引的关节的权重。 例如,给定上面的骨架,如果顶点具有以下属性: JointSemantic attribute WeightSemantic attribute QVector4D(2, 0, 0, 0) QVector4D(1.0, 0.0, 0.0, 0.0)该顶点将 100% 受到以下因素的影响joint2,并且它的移动量与该关节的移动量完全相同。 JointSemantic 属性中的最后三个索引将被忽略,因为相应的权重为 0.0 。 作为另一个示例,具有以下属性: JointSemantic attribute WeightSemantic attribute QVector4D(1, 2, 0, 0) QVector4D(0.5, 0.25, 0.0, 0.0)顶点将移动 50%joint1的移动加上 25%joint2's movement. 此外,由于骨架是一种抽象表示,因此模型需要指定关节的几何信息。出于性能原因,这不是通过直接指定信息来完成的。相反, Model.inverseBindPoses 包含inverse将每个关节移动到其初始位置所需的变换矩阵。 动画骨骼变换骨架中的关节将移动连接到该关节的所有顶点。由于关节继承自 Node ,因此只需使用标准 QML animations 即可对骨骼进行动画处理。 NumberAnimation { target: joint1 property: "eulerRotation.z" duration: 5000 from: -90 to: 90 running: true }虽然可以通过嵌套 SequentialAnimation 、 ParallelAnimation 和 NumberAnimation 创建复杂的动画,但使用 timeline animations 来制作蒙皮模型动画通常更方便。 © The Qt Company LtdLicensed under the GNU Free Documentation License, Version 1.3. https://doc.qt.io/qt-6.2/quick3d-vertex-skinning.html |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |