Sistema di riposo

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Ogni assemblaggio nel motore Roblox corrisponde a un singolo corpo rigido . La posizione e la velocità di ciascun corpo rigido descrivono dove si trova e quanto è velocemente in movimento, e una delle principali attività del motore è aggiornare le posizioni e la velocità di ciascun corpo rigido.

Le assemblie possono essere connesse tra loro con vincoli meccanici e vincoli mover per formare meccanismi come auto o aerei. Man mano che il numero di assemblie e vincoli in un meccanismo aumenta, il tempo richiesto per simulare il meccanismo aumenta. Fortunatamente, questo aumento è off-set quando il sistema di riposo determina che il motore può saltare la

Stati di sonno

Ogni build può essere in uno stato di tre: veglia , controllo del sonno , o sonno .

Sveglio

Un'assemblaggio sta si muove o accelera, e quindi è simulato. Le assemblaggi entrano in questo stato da situazioni descritte in check-sleep e sleep, nonché 1>situazioni di risveglio aggiuntive1>.

Conteggio del sonno

Un'assemblaggio non in movimento che condivide un vincolo con almeno un'assemblaggio sveglio accanto e non è simulato. Nell' stato check-del-sonno, un'assemblaggio check-del-sonno controlla se:

  • La deviazione di posizione di un'assemblaggio vicino è maggiore della soglia Neighbor Displacement.
  • Il prodotto dell'accelerazione di un'assemblaggio vicina e della dimensione del passo di tempo corrente è maggiore della velocità angolare e/o velocità lineare soglia.

Se una di queste condizioni è vera, o sotto qualsiasi delle condizioni aggiuntive di riavvio, l'assemblaggio di controllo del sonno passa allo stato veglio.

Dormire

Un'assemblaggio dormire non si muove né si accelera e quindi non viene simulato.

Un'assemblaggio è determinato a essere non mobile by checking its posizione deviazione , calculated as the maximum deviation from the average position of the point furthest from its center of mass over the most recent set of worldstep. If this deviazione è maggiore than the Displacement threshold, l'assemblaggio entra in stato .

In alcuni casi, semplicemente controllando per non-mossa causerebbe un'assemblaggio per entrare in uno stato di riposo in modo errato. Ad esempio, se una palla viene lanciata diritti su, la sua posizione non cambia quasi per un numero di passaggi di linea mentre si avvicina alla sua massima altezza, rendendola quindi un candidato per dormire e non cadere mai

Riferimento Threshold

La seguente tabella fornisce i diversi limiti di spostamento e velocità usati per determinare se un'assemblaggio si sta muovendo o accelerando.

SogliaValoreCambio di stato
Spostamento dei vicini0,01 pollinirilevamento del sonno > sveglia
Velocità lineare del vicino0,2 studs/srilevamento del sonno > sveglia
Velocità Angolare del Neighbor0,2 radiani/srilevamento del sonno > sveglia
Spostamento0,001 pollinidormire >, svegliare
Velocità lineare0,1 studs/sdormire >, svegliare
Velocità Angolare0.1 radian/sdormire >, svegliare

Situazioni di risveglio aggiuntive

Oltre a situazioni descritte in sleep-checking e sleeping, un'assemblazione entra in stato di veglia quando:

Visualizzazione della diagnosi

Durante il playtest, puoi visualizzare gli stati di riproduzione attivando parti risvegliate dal widget opzioni di visualizzazione nell'angolo in alto a destra della finestra3D.

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

Una volta abilitato, le parti simulate saranno contornate dal loro stato di sonno attuale, con 醒 parti contornate in rosso, sleep-checking parti contornate in arancione e sleep parti non contornate.

Parti simulate evidenziate dal colore che rappresenta lo stato di sonno attuale