Un programme doit prendre en compte, le traiter et donner un résultat. Alors, qu'est-ce qu'un moteur physique prend en entrée et fournit en sortie?
physics-engine
terminology
utilisateur91119
la source
la source
Réponses:
Un moteur physique est chargé de simuler les mouvements et la réaction des objets comme s'ils étaient soumis aux contraintes de la physique réelle (ou similaire à la physique réelle). Je dois noter que ce n’est généralement pas un programme autonome, mais plutôt un élément d’un programme plus vaste et plus intéressant (comme un jeu).
La simulation physique est généralement alimentée par un ensemble d’objets ("corps") dotés de propriétés (rigides ou souples, de masses, de formes, etc.) ainsi que d’un ensemble de forces agissant sur ces corps.
Sur la base de cette entrée, le moteur simule des positions et des orientations mises à jour des corps et les applique ("sorties"). En général, lorsque des objets entrent en collision ou se chevauchent, cela est inclus dans la sortie d'une étape de simulation sous la forme d'un rappel auquel le code client peut se connecter pour gérer la logique de jeu spécifique liée à la collision.
la source
La vitesse en entrée, la masse et le temps, la sortie est la nouvelle vitesse. Parfois, la rotation / moment angulaire est aussi une entrée et une sortie.
Essentiellement, les moteurs Physics tentent de simuler les effets de la gravité et des collisions. Pour de meilleurs moteurs physiques, cela signifie qu’ils incluent à la fois des déformations permanentes et temporaires d’objets, notamment le fractionnement d’objets en plusieurs objets, ainsi que le moment cinétique des objets. Idéalement, ils simuleraient également le stress, par exemple le nombre de camions pouvant traverser ce pont jusqu'à son effondrement, mais c'est assez rare. D'autres variables de simulation, comme la résistance de l'air, compteraient également comme moteur physique, mais pour autant que je sache, elles ne sont pas encore entrées dans les jeux.
La plupart des moteurs de physique sont spécialisés dans une certaine mesure et simuleront la physique à un point nécessaire pour le jeu. Les moteurs physiques pour les jeux de voiture sont souvent très différents des moteurs physiques pour les tireurs 3D. Et le moteur physique d'un jeu de golf peut avoir des calculs excessifs des interactions de la balle de golf et des feuilles d'herbe individuelles, tout en manquant complètement le traitement des collisions à haute vitesse et de la déformation d'une voiture (au cas où elle serait frappée par une balle de golf) .
la source
Généralement, un moteur physique est utilisé pour que les objets d'un jeu se comportent de manière réaliste par rapport à leur environnement, sans avoir à concevoir d'animations spécifiques pour chaque scénario possible.
En particulier, un moteur physique prendra un modèle avec un ensemble de propriétés (masse, articulations, etc.) et le restituera dans le jeu en fonction d'un ensemble de paramètres.
Les moteurs raggdoll (par exemple, dans Unreal) en ont été un exemple précoce, car ils modélisaient la façon dont les corps mous tombaient sur les marches, etc.
Dans la technologie actuelle, les moteurs physiques sont souvent étroitement intégrés dans un ensemble de jeu complet avec l'IA, l'interface utilisateur du jeu, la génération de cinématiques, etc.
Vous pourriez certainement affirmer que les moteurs physiques remontent à l'aube de la conception de jeux, par exemple que pong pourrait être considéré comme un moteur physique brut. Cependant, l’essentiel est qu’un moteur physique est capable de générer des points d’animation à la volée en fonction d’un ensemble de paramètres plutôt que de simplement utiliser des séquences d’animation prédéterminées à partir de la capture de mouvement ou de l’animation manuelle.
Comme mentionné dans d'autres réponses, dans certaines classes ou certains jeux tels que la simulation de conduite ou de vol, le moteur physique peut être fondamental pour le jeu et, en tant que tel, sera la principale entrée de l'animation à l'écran. Bien que le terme soit généralement utilisé pour désigner un outil polyvalent pouvant être appliqué à diverses situations sans nécessiter une connaissance ou une analyse très spécifique du contexte en question de la part du développeur, plutôt qu'un simulateur très spécifique construit à partir du sol. pour une application spécifique.
la source
Un moteur physique est chargé de simuler le mouvement des objets dans "le monde" (peu importe ce que cela signifie dans le contexte du moteur). La plupart des moteurs physiques utilisent de nos jours la mécanique newtonienne, car ils sont relativement simples à simuler et "suffisamment précis" pour la plupart des applications, à moins que vous ne fassiez une simulation spatiale.
En théorie, un moteur physique "pur" aurait trois entrées:
En tenant compte de l'inertie et des forces, le moteur déplace les objets. La sortie du moteur physique est simplement le nouvel état du "monde" , que le jeu peut ensuite lire et modifier si nécessaire.
En pratique, les moteurs physiques ne sont pas nécessairement aussi "purs" . Les objets doivent être créés et détruits, et parfois ils doivent être déplacés d’une manière que les lois du moteur physique ne permettent pas. Cela peut parfois être fait à l'extérieur du moteur, mais parfois à l'intérieur, et pour ce faire, le moteur a besoin de plus d'entrées. Mais les trois entrées mentionnées ci-dessus couvrent les bases.
Par exemple, supposons que vous deviez déplacer un personnage dans un jeu à l'aide d'un joystick. Si vous n'utilisez pas de moteur physique, la procédure est assez simple: lorsque vous voyez que l'utilisateur déplace le joystick, vous déplacez l'objet en conséquence. Avec un moteur physique, vous ne déplacez pas directement l'objet: vous lui appliquez une force correspondant à la direction dans laquelle vous voulez que l'objet soit dirigé et vous laissez le moteur le déplacer .
Quelle est la différence? Même s'il n'y a rien d'autre dans le monde, il est peu probable que l'objet se déplace de la même manière, car le moteur physique gérera des choses comme une accélération réaliste. Mais il est également possible que d' autres forces agissent sur l'objet en même temps, de même que l'inertie, et le moteur les prendra en compte . Par exemple, si vous appliquez une force vers le nord sur l'objet, mais que quelque chose d'autre applique une force vers l'ouest (ou si l'objet se déplaçait déjà vers l'ouest et que rien ne ralentit sa progression), le moteur déplacera l'objet vers le nord-ouest.
C'est ce que vous procure un moteur physique: il garde la trace des objets, de leurs positions et de leurs vitesses, ainsi que des forces qui agissent sur eux. Grâce aux lois de la mécanique, il peut même créer certaines forces, gérer automatiquement des choses comme les collisions, les frictions et la gravité, le tout sans que vous, le développeur du jeu, ayez à faire autre chose.
la source
Un moteur physique est fondamentalement un simulateur de corps physiques.
Contribution
Il vous permet de créer un corps (ou plusieurs corps) en spécifiant ses propriétés physiques comme la masse, la taille, la densité, etc.
Cela vous permet également de définir les propriétés du monde de la physique où se déroule la simulation (par exemple, la gravité).
Enfin, il vous permet d'appliquer des forces ou de créer des articulations entre les corps.
Sortie
Une fois que vous avez défini toutes ces choses, vous pouvez lancer la simulation et le moteur physique vous indiquera où chaque corps sera placé lors du prochain pas de temps (qui correspond généralement à la prochaine image de votre jeu). Et le suivant, et ainsi de suite ...
Vous voyez les sprites se déplacer sur l'écran car chaque image du moteur de jeu demande au moteur physique
et le moteur de jeu met à jour la représentation graphique en conséquence.
Considérations
J'aime généralement voir le moteur physique comme un outil permettant d'appliquer les lois de la physique de manière déclarative .
Enfait au lieu d’écrire du code décrivant les calculs à effectuer pour déterminer l’emplacement d’un corps lors de la prochaine étape, je décris simplement le monde de la physique qui définit les attributs des corps (et du monde de la physique elle-même) et laisse le moteur physique répondre cette question pour moi.
la source