Qt 6.4 包含新模块Qt Quick 3D Physics作为技术预览,这是一个在Qt Quick 3D之上添加物理模拟功能的模块。比较特别的是,它可以使用简单的基元(球体、盒子、平面和胶囊)以及凸面和三角形网格和高度图进行刚体模拟,质量、密度、重力和摩擦力等物理属性是可定制的。 这使得在 3D 场景中创建物理上正确的行为成为可能,而无需手工制作动画。
Qt技术交流群:166830288 欢迎一起进群讨论
将物理添加到您的场景中非常容易,以下片段是创建和渲染整个场景所需的全部内容,其中平面和盒子相互交互:
- import QtQuick
- import QtQuick3D
- import QtQuick3D.Physics
-
- Window {
- visible: true
- DynamicsWorld {}
-
- View3D {
- anchors.fill: parent
-
- PerspectiveCamera {
- position: Qt.vector3d(0, 100, 500)
- clipFar: 5000
- clipNear: 1
- }
-
- DirectionalLight {
- eulerRotation.x: -45
- eulerRotation.y: 45
- castsShadow: true
- }
-
- StaticRigidBody {
- position: Qt.vector3d(0, 0, 0)
- eulerRotation: Qt.vector3d(-90, 0, 0)
- collisionShapes: PlaneShape {}
- Model {
- source: "#Rectangle"
- scale: Qt.vector3d(10, 10, 10)
- materials: PrincipledMaterial {
- baseColor: "green"
- }
- castsShadows: false
- receivesShadows: true
- }
- }
-
- DynamicRigidBody {
- position: Qt.vector3d(0, 200, 0)
- collisionShapes: BoxShape {}
- Model {
- source: "#Cube"
- materials: PrincipledMaterial {
- baseColor: "yellow"
- }
- }
- }
- }
- }
这就是它的外观:
Qt Quick 3D Physics 是一个纯 QML API,目前在 Qt 6.4 中作为技术预览版提供。 该文档附带了一些说明性示例,展示了该模块的不同功能。
Qt组件推荐