Système de sommeil

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Chaque assemblage dans le moteur Roblox correspond à un seul corps rigide .La position et la vitesse de chaque corps rigide décrivent où il se trouve et à quelle vitesse il se déplace, et l'une des tâches principales du moteur est de mettre à jour les positions et les vitesses de chaque assemblage.

Les assemblages peuvent être connectés ensemble avec contraintes mécaniques et contraintes de mouvement pour former des mécanismes tels que des voitures ou des avions.À mesure que le nombre d'assemblages et de contraintes dans un mécanisme augmente, le temps requis pour simuler le mécanisme augmente également.Heureusement, cette augmentation est compensée lorsque le système de sommeil détermine que le moteur peut ignorer la simulation des assemblages non mobiles .

États de sommeil

Chaque assemblage peut être dans l'un des trois états suivants : réveillé , vérification du sommeil ou dormir .

Éveillé

Une assemblée éveillée se déplace ou accélère, et est donc simulée.Les assemblages entrent dans cet état à partir de situations définies dans vérification du sommeil et sommeil, ainsi que situations de réveil supplémentaires.

Vérification du sommeil

Une assemblage non mobile qui partage une contrainte avec au moins une assemblage voisine active est mise dans l'état de vérification du sommeil et n'est pas simulée.À chaque étape du monde, une assemblée de vérification du sommeil vérifie si :

  • La déviation de position de l'assemblage voisin est supérieure au seuil de déplacement du voisin.
  • La somme de l'accélération de l'assemblage voisin et de la taille de l'instant actuel est supérieure à la limite Vitesse angulaire du voisin et/ou Vitesse linéaire du voisin .

Si l'une de ces conditions est vraie, ou dans l'une des situations d'éveil supplémentaires , l'assemblage de vérification du sommeil entre dans l'état éveillé.

Sommeil

Une assemblage de sommeil dormante ne se déplace pas ni ne s'accélère, et n'est donc pas simulée.

Une assemblage est déterminée à être non mobile en vérifiant sa déviation de position , calculée comme la déviation maximale de la position moyenne du point le plus éloigné de son centre de masse au cours du dernier ensemble de pas du monde.Si cette déviation est supérieure au seuil de déplacement, l'assemblage entre dans l'état éveillé.

Dans certains cas, vérifier simplement l'absence de mouvement provoquerait l'entrée incorrecte d'une assemblage dans l'état de sommeil.Par exemple, si une balle est lancée directement vers le haut, sa position change à peine pour un certain nombre de pas mondiaux au fur et à mesure qu'elle approche de sa hauteur maximale, ce qui la rend candidate pour dormir et ne jamais redescendre.Pour gérer de tels cas, le moteur surveille si le produit de l'accélération de l'assemblage et de la taille de l'instant actuel dépasse le seuil de vitesse linéaire et/ou de vitesse angulaire.

Référence seuil

La table suivante fournit les seuils de déplacement et de vitesse utilisés pour déterminer si une assemblage se déplace ou accélère.

Limite seuilValeurChangement d'état
Déplacement du voisin0,01 poussesvérification du sommeilréveillé
Vitesse linéaire voisine0,2 pousses/svérification du sommeilréveillé
Vitesse angulaire voisine0,2 radians/svérification du sommeilréveillé
Déplacement0.001 épinglesdormirréveillé
Vitesse linéaire0,1 studs/sdormirréveillé
Vitesse angulaire0,1 radians/sdormirréveillé

Situations d'éveil supplémentaires

En plus des situations décrites dans vérification du sommeil et sommeil, une assemblée entre dans l'état éveillé lorsque :

Visualisation de débogage

Pendant les tests de jeu, vous pouvez visualiser les états de sommeil d'assemblage en basculant sur parties éveillées à partir du widget Options de visualisation dans le coin supérieur droit de la fenêtre de jeu3D.

A close up view of the 3D viewport with the Visualization Options button indicated in the upper-right corner.

Une fois activé, les parties simulées seront définies par leur état de sommeil actuel, avec des parties éveillées définies en rouge, des parties vérification du sommeil définies en orange et des parties dormantes non définies.

Pièces simulées définies par la couleur représentant leur état de sommeil actuel