Sistema de sueño

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

Cada ensamble en el Motor de Roblox corresponde a un solo cuerpo rígido .La posición y velocidad de cada cuerpo rígido describen dónde está ubicado y cuán rápido se está moviendo, y una de las tareas principales del motor es actualizar las posiciones y velocidades de cada ensamble.

Las asambleas pueden conectarse juntas con restricciones mecánicas y restricciones de movimiento para formar mecanismos como autos o aviones.A medida que aumenta el número de ensambles y restricciones en un mecanismo, también aumenta el tiempo requerido para simular el mecanismo.Afortunadamente, este aumento se compensa cuando el sistema de sueño determina que el motor puede omitir la simulación de ensambles no móviles.

Estados de sueño

Cada ensamble puede estar en uno de tres estados: despierto , comprobación de sueño o durmiendo .

Despierto

Una ensamblaje despierto se está moviendo o acelerando, y por lo tanto se simula.Las bibliotecas entran en este estado desde situaciones descritas en comprobación de sueño y sueño, así como situaciones adicionales de vigilia.

Comprobación de sueño

Una asamblea no móvil que comparte una restricción con al menos una asamblea vecina despierta se pone en el estado de control de sueño y no se simula.En cada paso del mundo, una asamblea que verifica el sueño comprueba si:

  • La devolución de posición de una asamblea vecina es mayor que el umbral de desplazamiento del vecino.
  • El producto de la aceleración de una asamblea vecina y el tamaño del paso de tiempo actual es mayor que el umbral de Velocidad angular del vecino y/o Velocidad lineal del vecino.

Si alguna de estas condiciones es verdadera o bajo cualquiera de las situaciones de vigilia adicionales, la asamblea de control de sueño entra en el estado despierto.

Durmiendo

Una ensamblaje durmiente no se está moviendo ni acelerando, y por lo tanto no se simula.

Se determina que una asamblea no se mueva verificando su desviación de posición , calculada como la desviación máxima de la posición media del punto más lejano de su centro de masa sobre el conjunto más reciente de pasos mundiales.Si esta desviación es mayor que el umbral de desplazamiento, la instalación entra en el estado despierto.

En algunos casos, simplemente verificar que no se mueva causaría que una asamblea ingrese incorrectamente al estado de sueño.Por ejemplo, si una bola se lanza directamente hacia arriba, su posición apenas cambia por una serie de pasos mundiales a medida que se acerca a su altura máxima, haciéndola candidata a dormir y nunca volver a bajar.Para manejar tales casos, el motor monitorea si el producto de la aceleración y el tamaño del paso de tiempo actual de la ensambladora supera el umbral de velocidad lineal y/o velocidad angular.

Referencia de umbral

La siguiente tabla proporciona los diferentes umbrales de desplazamiento y velocidad utilizados para determinar si una pieza se está moviendo o acelerando.

Cantidad umbralValorCambio de estado
Desplazamiento de vecinos0,01 tacoscomprobación de sueñodespierto
Velocidad lineal del vecino0.2 tacos/scomprobación de sueñodespierto
Velocidad angular del vecino0.2 radianes/scomprobación de sueñodespierto
Desplazamiento0.001 tacosdurmiendodespierto
Velocidad lineal0.1 tacos/sdurmiendodespierto
Velocidad angular0.1 radianes/sdurmiendodespierto

Situaciones de despertar adicionales

Además de las situaciones descritas en comprobación de sueño y sueño, una asamblea entra en el estado despierto cuando:

Visualización de depuración

Durante las pruebas de juego, puedes visualizar los estados de sueño de montaje activando piezas despiertas desde el widget Opciones de visualización en la esquina superior derecha de la ventanilla3D.

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

Una vez activado, las piezas simuladas se delinearán por su estado de sueño actual, con piezas despiertas delineadas en rojo, piezas de control de sueño delineadas en naranja y piezas durmiendo sin delinear.

Partes simuladas delineadas por el color que representa su estado de sueño actual