Qt Quick 3D Physics - Material Beispiel

Demonstriert die Verwendung von physischen Materialien.

Das Material-Beispiel demonstriert, wie die Materialeigenschaften eines physischen Körpers gesteuert werden können. Die Szene enthält die üblichen Elemente View3D, PhysicsWorld, PerspectiveCamera und DirectionalLight. Darüber hinaus enthält die Szene zwei physische Körper, nämlich eine leicht geneigte Ebene und einen Kasten. Jeder physische Körper hat eine physicsMaterial Eigenschaft, die einen PhysicsMaterial Knoten enthält. PhysicsMaterial enthält diese drei Materialeigenschaften: staticFriction, dynamicFriction und restitution und diese werden verwendet, um zu definieren, wie sich der Körper verhält, wenn er mit anderen Körpern kollidiert und gegen diese gleitet. Es gibt eine einfache Benutzeroberfläche, die es ermöglicht, das Material des Kastens interaktiv zu verändern, so dass Sie sehen können, wie er sich in Abhängigkeit von seinen Materialeigenschaften verhält.

Dies ist der QML-Code für das Material:

PhysicsMaterial {
    id: physicsMaterial
    staticFriction: staticFrictionSlider.value
    dynamicFriction: dynamicFrictionSlider.value
    restitution: restitutionSlider.value
}

Das Material verweist einfach auf die Werte der Schieberegler der Benutzeroberfläche. Dasselbe Material wird dann sowohl für die Box als auch für den Boden verwendet:

DynamicRigidBody {
    id: box
    physicsMaterial: physicsMaterial
    massMode: DynamicRigidBody.CustomDensity
    density: 10
    property vector3d startPosition: Qt.vector3d(700, 300, 0)
    position: startPosition
    Model {
        source: "#Cube"
        materials: PrincipledMaterial {
            baseColor: "red"
        }
    }
    collisionShapes: BoxShape {}
}
StaticRigidBody {
    eulerRotation: Qt.vector3d(-79, -90, 0)
    scale: Qt.vector3d(20, 30, 100)
    physicsMaterial: physicsMaterial
    collisionShapes: PlaneShape {}
    Model {
        source: "#Rectangle"
        materials: DefaultMaterial {
            diffuseColor: "green"
        }
        castsShadows: false
        receivesShadows: true
    }
}

Dateien:

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.