Sur cette page

Qt Quick Physique 3D - Formes et corps

Les objets de la simulation sont représentés par l'un des quatre types de corps suivants : StaticRigidBody, DynamicRigidBody, CharacterController et TriggerBody. La forme physique d'un corps est représentée par des sous-types de CollisionShape.

Formes

Une forme de collision est utilisée pour définir la forme physique et l'étendue d'un objet aux fins de la simulation physique. La forme de collision est généralement plus simple que l'apparence visuelle de l'objet.

Certaines formes prédéfinies sont intégrées au moteur : BoxShape, CapsuleShape, SphereShape, et PlaneShape. La gestion de ces formes est optimisée, de sorte que les simulations qui les utilisent sont généralement plus performantes.

En outre, il existe des formes personnalisées définies par des données : ConvexMeshShape, HeightFieldShape, et TriangleMeshShape. Elles offrent une plus grande flexibilité au détriment des performances.

Corps

Un body représente un objet physique dans la simulation. Ces corps interagissent et entrent en collision les uns avec les autres. Les deux principaux types sont les corps statiques (StaticRigidBody) et les corps dynamiques (DynamicRigidBody). La forme physique d'un corps est spécifiée par une liste de formes. La forme effective est l'union de ces formes. La position relative des formes est fixe : les corps sont rigides.

Corps dynamique

Les corps dynamiques sont capables de se déplacer. La propriété isKinematic détermine la manière dont il se déplace. Lorsque isKinematic est true, le corps est positionné explicitement en modifiant les propriétés kinematicPosition et kinematicRotation. Lorsque isKinematic est false, l'objet est contrôlé par la simulation : il tombe sous l'effet de la gravité et rebondit sur d'autres objets.

Lorsque isKinematic vaut true, toutes les formes sont autorisées. Cependant, les corps non cinématiques sont plus restreints : seules les formes convexes peuvent être utilisées. Il s'agit des formes prédéfinies BoxShape, CapsuleShape, et SphereShape; et de la forme personnalisée ConvexMeshShape. Cela ne signifie pas qu'il est impossible d'avoir une géométrie physique non convexe : plusieurs formes convexes peuvent être combinées pour un seul corps. L'exemple des formes composées montre comment former des corps en forme d'anneau à partir de formes convexes.

Corps statique

Les corps statiques ne bougent pas. Ils représentent l'environnement dans lequel les autres corps se déplacent. Notez qu'il est techniquement possible de déplacer un corps statique, mais la simulation physique se comportera de manière inattendue. En particulier, un corps dynamique qui est entré dans une position de repos sur un corps statique ne sera pas réveillé si le corps statique se déplace. Cela signifie que le corps dynamique restera dans la même position même si le corps statique est déplacé.

Contrôleur de caractères

Le type CharacterController est un cas particulier. Il représente un personnage qui se déplace dans l'environnement. Un cas d'utilisation typique est une vue à la première personne où le camera est un enfant du contrôleur de personnage, et son mouvement est contrôlé par le clavier/la souris ou la manette de jeu.

Corps de déclenchement

Il existe également le type TriggerBody, qui est un autre cas particulier. Contrairement aux autres corps, il ne s'agit pas d'un corps physique, ce qui signifie qu'il n'entre pas en collision avec d'autres corps. Comme son nom l'indique, il n'est utilisé que pour déclencher des actions lorsqu'un autre corps entre ou sort de son volume, tel que défini par ses formes de collision. Si un autre corps a défini sendTriggerReports sur true et que son volume de collision entre dans TriggerBody, le signal bodyEntered est émis.

Le tableau suivant présente un résumé des différents types de corps, de leur interaction et de leur utilisation :

CorpsInteractionFormes autorisées
StaticRigidBodyNe bouge pasToutes les formes
DynamicRigidBody avec isKinematic truePositionné par programme. Influence les corps dynamiques. N'est arrêté par rien.Toutes les formes
DynamicRigidBody avec isKinematic falseEntièrement contrôlé par la simulationFormes limitées
CharacterControllerDéplacement programmé. Influence les corps dynamiques. Arrêtée par des corps statiques.Un seul CapsuleShape
TriggerBodyAucuneToutes les formes

Matériaux physiques

Le type PhysicsMaterial spécifie le comportement d'un objet lorsqu'il entre en collision avec un autre. Les propriétés dynamicFriction et staticFriction déterminent le degré de glissance de l'objet, et restitution détermine son degré de rebondissement.

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