Un nouveau moteur de simulation de processus physiques Box3D a été présenté

Erin Catto, auteur du projet Box2D, a annoncé la création d'un nouveau moteur de simulation de processus physiques, Box3D, qui est un fork de Box2D avec une architecture identique, mais retravaillé et étendu pour une utilisation dans des jeux 3D. Le code du projet est écrit en C et distribué sous licence MIT. Il supporte les builds pour Linux, Windows et macOS.

Le moteur Box3D a été créé dans le cadre du développement par le studio Kintsugiyama d'un nouveau shooter 3D, The Legend of California, auquel participe Erin. Dans le jeu, le moteur Unreal Engine est utilisé, mais les développeurs n'étaient pas satisfaits du moteur physique Chaos proposé. Des problèmes ont été rencontrés avec l'absence de prise en compte des moments de torsion gyroscopiques (des objets fins tournaient de manière anormalement longue), la détection continue des collisions (comportement peu réaliste des arbres qui tombent) et des performances faibles lors du traitement de centaines de milliers d'objets.

Au début, les problèmes devaient être résolus en créant un fork du moteur physique Jolt, mais ensuite, sur les conseils du créateur du moteur Rubikon, impliqué dans le jeu Half-Life, un variant simplifié de Rubikon-Lite, développé comme hobby, a été choisi comme base. Cela a été retravaillé en utilisant le code et les optimisations de Box2D pour combiner les capacités 3D existantes avec les développements du moteur Box2D. En fin de compte, presque toutes les API, structures de données et algorithmes de Rubikon-Lite ont été remplacés par le code de Box2D, et seuls les algorithmes de construction de l'enveloppe convexe et de traitement des collisions 3D proviennent de Rubikon-Lite. Le moteur obtenu a été décidé d'être publié en tant que projet ouvert distinct, Box3D, avec l'accord de l'auteur de Rubikon-Lite et de la société Kintsugiyama.

À l'heure actuelle, la première version de Box3D 0.1 a été publiée, qui est marquée comme ayant une qualité de version alpha. La fonctionnalité principale prévue est mise en œuvre, mais la documentation et les tests doivent encore être finalisés. En plus du jeu The Legend of California, le nouveau moteur est déjà utilisé dans la plateforme de jeu s&box, le moteur de jeu open Esoterica et le jeu spatial multijoueur Space Game, prévu pour 1000 joueurs.

Pour les jeux 3D dans le nouveau moteur, des fonctionnalités telles que le calcul des collisions avec des maillages polygonaux et des cartes de hauteur utilisées pour la génération de paysages ont été ajoutées, permettant ainsi de réaliser dans le jeu The Legend of California des effets réalistes de chute d'arbres sur des surfaces voxel. Le support des collisions composites précalculées (baked), composées de plusieurs formes simples, a considérablement réduit la consommation de ressources lors de la simulation de collisions avec un grand nombre d'objets petits et typiques.

Parmi les fonctionnalités transférées vers Box3D, qui étaient auparavant disponibles dans Box2D :

  • Détection continue des collisions (traitement du mouvement d'un objet comme une trajectoire continue), filtrage des collisions et génération d'événements lors des contacts entre les objets. Prise en charge de formes sphériques, capsule et enveloppe pour déterminer les collisions. Gestion optimisée de la détection des collisions grâce aux instructions SIMD.
  • Résolveur sub-stepping pour améliorer la précision de la simulation en divisant les étapes de la simulation en plusieurs étapes plus petites.
  • Utilisation de la méthode de coloration des graphes pour traiter de grands groupes d'objets liés.
  • Contrôleur de personnage, responsable du traitement du mouvement, des collisions et de l'interaction du personnage avec les objets environnants.
  • Support du ray tracing, de la traçabilité des formes et de la vérification des intersections lors de la numérisation de l'espace environnant. Système de capteurs pour détecter des objets dans l'espace.
  • Résolveur Soft Step pour le calcul de la physique des corps solides lors d'interactions complexes.
  • Support de la mise en pause de l'état de groupes d'objets inactifs ou statiques pour économiser des ressources.
  • Support de divers types de connexions et de liaisons entre objets, y compris des articulations, des ressorts, des moteurs, de la soudure et des roues, avec la possibilité de configurer chaque connexion de manière flexible. Calcul des forces de compression et d'étirement avec lesquelles les objets interagissent entre eux.
  • Possibilité de générer des événements au démarrage du mouvement, à l'arrêt ou à la stabilisation d'un objet.
  • Hooks pour le traitement multithread avec un planificateur interne optionnel.
  • Utilisation de coordonnées de type double, permettant de créer d'immenses mondes.
  • Déterminisme multiplateforme garantissant un résultat identique sur différentes plateformes matérielles.
  • Support de l'enregistrement et de la reproduction de simulations.
  • API C et code C conformes à la norme C17.

Les futurs plans mentionnent l'extension des capacités liées aux mouvements des personnages, l'amélioration des mécanismes de prévention des collisions fantômes (ghost collision), l'ajout d'optimisations et l'amélioration du traitement des articulations (joint solver). Le dépôt prévoit de permettre l'envoi de demandes de tirage avec des modifications par des membres de la communauté après signature d'un accord de transfert de droits de propriété sur le code (CLA).

Lire la vidéo


Source : opennet.ru
Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster