수면 시스템

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

Roblox 엔진의 각 어셈블리는 단일 강체 에 해당합니다.각 단단한 몸의 위치와 속도는 그것이 어디에 있는지와 얼마나 빨리 이동하는지를 설명하며, 주요 엔진 작업 중 하나는 각 조립의 위치와 속도를 업데이트하는 것입니다.

조립은 메커니컬 제약모버 제약과 함께 연결하여 자동차나 비행기와 같은 메커니즘을 형성할 수 있습니다.메커니즘의 조립 수와 제약 조건 수가 증가함에 따라 메커니즘을 시뮬레이션하는 데 필요한 시간도 증가합니다.다행히도 이 증가는 수면 시스템 이 엔진이 이동하지 않는 어셈블리의 시뮬레이션을 건너뛸 수 있다고 결정하면 상쇄됩니다.

취침 상태

각 어셈블리는 세 가지 상태 중 하나에 있을 수 있습니다: 깨어있음, 수면 확인, 또는 수면.

깨어 있음

깨어 있는 조립 이 이동하거나 가속되고 있으므로 시뮬레이션됩니다.어셈블리는 수면 검사수면에 설명된 상황과 더불어 추가 깨우기 상황에서 이 상태에 들어갑니다.

수면 확인

적어도 하나의 활성 인접 어셈블리와 제약 조건을 공유하는 이동하지 않는 어셈블리는 수면 검사 상태에 넣어지고 시뮬레이션되지 않습니다.각 월드스텝에서 수면 확인 어셈블리는 다음을 확인합니다:

  • 인접 어셈블리의 위치 편차 는 이웃 이동 임계값보다 크다.
  • 인접 어셈블리의 가속과 현재 타임스텝 크기가 이웃 각도 속도 및/또는 이웃 직선 속도 임계값을 초과하면 제품이 됩니다.

이 조건 중 하나라도 true이면 또는 추가 깨우기 상황 중 하나라도 있으면 수면 검사 어셈블리가 깨어 있는 상태에 들어갑니다.

취침

취침 조립은 이동하거나 가속하지 않으며, 따라서 시뮬레이션되지 않습니다. 어셈블리는 중력 중심이 가장 가까운 세트의 세계 단계 중 평균 위치에서 가장 멀리 떨어진 지점의 위치 오차를 최대 오차로 계산하여 이동하지 않는 것으로 결정됩니다.An assembly is determined to be non-moving by checking its position deviation , calculated as the maximum deviation from the average position of the point furthest from its center of mass over the most recent set of worldsteps.이 편차가 이동 임계값 보다 크면 조립이 깨어남 상태에 들어갑니다.

일부 경우 단순히 움직임이 없는지 확인하면 어셈블리가 잘못된 수면 상태에 들어가게 됩니다.예를 들어, 공이 바로 위로 던져지면 최대 높이에 접근하면서 몇 가지 세계 단계의 위치가 거의 변경되지 않아 잠자기 후보가 되고 결코 다시 내려가지 않습니다.이러한 경우를 처리하려면 엔진이 조립의 가속 및 현재 시간 단계 크기가 선형 속도 및/또는 각도 속도 임계값을 초과하는지 모니터링합니다.

임계값 참조

다음 표에서는 조립이 이동하거나 가속하는지 여부를 결정하는 데 사용되는 다양한 이동 및 속도 임계값을 제공합니다.

임계값상태 변경
이웃 이동0.01 스터드수면 확인 > 깨어있음
이웃 선형 속도0.2스터드/초수면 확인 > 깨어있음
이웃 각도 속도0.2 라디안/초수면 확인 > 깨어있음
이동0.001 스터드잠자기 > 깨어있기
선형 속도0.1스터드/초잠자기 > 깨어있기
각도 속도0.1 라디안/초잠자기 > 깨어있기

추가 깨우기 상황

수면 검사 및 수면에 설명된 상황 외에도, 어셈블리는 다음과 같은 경우 깨어있는 상태로 들어갑니다:

디버그 시각화

플레이테스트 중에는 3D 뷰포트의 오른쪽 상단에 있는 시각화 옵션 위젯에서 깨어있는 부품을 토글하여 조립 수면 상태를 시각화할 수 있습니다.

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

활성화되면 시뮬레이션된 부품은 현재 수면 상태에 따라 설명되며, 깨어있는 부품은 빨간색으로, 수면 확인 부품은 주황색으로, 수면 부품은 표시되지 않습니다.

현재 수면 상태를 나타내는 색으로 설명된 시뮬레이션된 부품