Qt Quick Física 3D - Ejemplo de materiales

Demuestra el uso de materiales físicos.

Una simulación en 3D que muestra una caja roja sobre una superficie verde inclinada, con un panel de control a la izquierda que contiene controles deslizantes para la fricción estática, la fricción dinámica y la restitución, y un botón "Reiniciar caja".

El ejemplo Material demuestra cómo controlar las propiedades materiales de un cuerpo físico. La escena contiene el boilerplate habitual de un View3D, PhysicsWorld, PerspectiveCamera y DirectionalLight. Además de esto la escena contiene dos cuerpos físicos, concretamente un plano ligeramente inclinado y una caja. Cada cuerpo físico tiene una propiedad physicsMaterial que contiene un nodo PhysicsMaterial. PhysicsMaterial contiene estas tres propiedades de material; staticFriction, dynamicFriction y restitution y éstas se utilizan para definir cómo actuará el cuerpo al colisionar y deslizarse contra otros cuerpos. Hay una sencilla interfaz de usuario que permite ajustar interactivamente el material de la caja para que puedas ver cómo interactúa dependiendo de sus propiedades de material.

Este es el código QML para el material:

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

El material simplemente hace referencia a los valores de los deslizadores de la interfaz de usuario. Este mismo material se utiliza tanto para la caja como para el suelo:

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
    }
}

Archivos:

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