Qt Quick 3D Physik – Beispiel für ein Material

Veranschaulicht die Verwendung physikalischer Materialien.

Eine 3D-Simulation, die einen roten Kasten auf einer geneigten grünen Fläche zeigt, mit einem Bedienfeld auf der linken Seite, das Schieberegler für Haftreibung, Gleitreibung und Rückstellkraft enthält, sowie einer Schaltfläche „Kasten zurücksetzen“

Das Materialbeispiel veranschaulicht, wie die Materialeigenschaften eines physikalischen Körpers gesteuert werden können. Die Szene enthält die üblichen Standardelemente: „ View3D “, „ PhysicsWorld “, „ PerspectiveCamera “ und „ DirectionalLight “. Darüber hinaus enthält die Szene zwei physikalische Körper, nämlich eine leicht geneigte Ebene und einen Kasten. Jeder physikalische Körper verfügt über eine Eigenschaft „ physicsMaterial “, die einen Knoten „ PhysicsMaterial “ enthält. „ PhysicsMaterial “ enthält die folgenden drei Materialeigenschaften: „ staticFriction “, „ dynamicFriction “ und „ restitution “. Diese werden verwendet, um zu definieren, wie sich der Körper verhält, wenn er mit anderen Körpern kollidiert oder an ihnen entlanggleitet. Es gibt eine einfache Benutzeroberfläche, über die Sie das Material der Box interaktiv anpassen können, um zu sehen, wie sie je nach ihren Materialeigenschaften interagiert.

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

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

Das Material bezieht sich lediglich 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: PrincipledMaterial {
            baseColor: "green"
        }
        castsShadows: false
        receivesShadows: true
    }
}

Dateien:

© 2026 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.