언리얼 엔진은 다수의 소스로부터 동시에 다양한 타입의 데이터를 수집할 수 있습니다. 예를 들어 버추얼 프로덕션(Virtual Production)에서 엔진은 SDI의 카메라로부터 캡처된 프레임을 수신하면서 라이브 링크(Live Link)를 통해 트래킹 시스템으로부터 카메라의 위치와 오리엔테이션을 수신할 수 있습니다. 시간 데이터 모니터(Timed Data Monitor) 는 수신되는 모든 시간 데이터가 서로의 시간이나 엔진의 시간과 어떻게 관련되는지 방식을 설정하고 시각화하는 솔루션입니다.
시간 데이터 모니터는 현재 다음 소스를 지원합니다.
코드를 통해 시간 데이터 모니터의 기능을 확장하여 다른 시간 데이터 소스를 포함할 수도 있습니다. TimedDataSource 프레임워크를 사용하여 시간 데이터 모니터에 커스텀 데이터 소스를 등록하면 됩니다.
아래 섹션들에서는 시간 데이터 모니터의 사용법과 프로젝트에 맞게 수정할 수 있는 세팅을 알아봅니다.
시간 데이터 모니터 시작하기
프로젝트에서 시간 데이터 모니터(Timed Data Monitor)를 사용하려면 다음 단계에 따릅니다.
-
에디터의 메인 메뉴에서 편집(Edit) > 플러그인(Plugins) 을 선택하여 플러그인(Plugins) 창을 엽니다.
-
플러그인 창의 버추얼 프로덕션(Virtual Production) 섹션에서 Timed Data Monitor 플러그인을 찾습니다.
-
활성화(Enabled) 박스에 체크합니다.
-
팝업창이 표시되면 예(Yes) 를 선택합니다.
-
에디터 재시작 메시지가 표시되면 에디터를 재시작합니다.
-
에디터 메인 메뉴에서 창(Windows) > 개발자 툴(Developer Tools) > 시간 데이터 모니터(Timed Data Monitor) 를 선택하여 시간 데이터 모니터 창을 엽니다.
타임코드 및 젠록
시간 데이터 모니터(Timed Data Monitor) 상단에서 프로젝트에 사용되는 커스텀 타임스텝(CustomTimestep)과 타임코드 프로바이더(TimecodeProvider)를 볼 수 있습니다. 다른 창으로 전환하지 않아도 타임코드 프로바이더 오프셋을 환경설정할 수 있습니다.

SDI 입력의 경우, 이 세팅은 열린 스트림의 세팅을 변경합니다. 입력을 열 때 사용된 실제 MediaSource 에셋은 변경하지 않습니다. 좋은 옵션 세트를 찾았다면 연결된 에셋을 변경하는 것을 고려하세요.
소스와 채널

언리얼 엔진에서 시간 데이터 모니터 플러그인이 활성화되면 TimedDataSource 프레임워크를 사용하는 라이브 링크(Live Link), SDI, 커스텀 소스가 툴에 자동으로 나타납니다. 각 소스는 여러 채널을 포함하며, 소스 이름 앞의 화살표를 클릭하여 채널을 확인할 수 있습니다. 아래 표는 각 소스 UI에 표시되는 정보를 설명합니다.
열 | 설명 |
---|---|
토글 활성화/비활성화(Enable / Disable Toggle) | 활성화하면 캘리브레이션 중에 채널이 포함되며 모니터에 보고되는 글로벌 상태에 영향을 미칩니다. |
소스 이름(Source Name) | 소스 이름 왼쪽에는 다음 UI 항목이 있습니다.
|
마지막 샘플 시간(Last Sample Time) | 마지막 샘플의 타임코드입니다. |
평가(Eval.) | 입력이 어떻게 평가되는지 지정합니다. 평가 타입은 다음과 같습니다.
|
시간 보정(Time Correction) | 특정 소스의 시간을 추가로 미세하게 조정할 수 있습니다. 캘리브레이션 프로세스가 소스를 정렬할 포인트를 찾는 경우 유용하지만, 동시에 스트라이프되지 않을 수 있습니다. |
버퍼 크기(Buffer Size) | 이 소스에 대한 버퍼 크기를 환경설정합니다. 두 소스 간의 오프셋이 너무 클 경우 한 소스가 더 많은 데이터를 버퍼하여 조정되도록 합니다. |
B.U. | 탐지된 버퍼 언더플로우 건수입니다. |
B.O. | 탐지된 버퍼 오버플로우 건수입니다. |
F.D. | 탐지된 프레임 드롭 건수입니다. |
타이밍 다이어그램(Timing Diagram) | 평가 시간을 나타내는 수직선입니다. 버퍼 이내이면 녹색 선, 가용 샘플을 벗어났으면 붉은 선입니다. |
버퍼 시각화 툴
버퍼 시각화 툴(Buffer Visualizer) 은 모든 채널의 시각화를 같이 표시하는 별도의 창입니다. 타이밍 다이어그램(Timing Diagram) 열에 표시되는 각 채널의 정보를 더 크게, 더 포괄적으로 보여줍니다.

버퍼는 다음 UI 요소로 표시됩니다.
-
수직선: 평가 시간을 나타냅니다. 버퍼 이내이면 녹색 선, 가용 샘플을 벗어났으면 붉은 선입니다.
-
연회색 사각형: 채널에서 사용 가능한 현재 시간 샘플을 나타냅니다.
-
진회색 사각형: 채널에서 사용 가능한 평균 시간 샘플을 나타냅니다.
-
흰색 사각형: 가장 오래된 시간 샘플과 최신 시간 샘플 간의 표준편차를 나타냅니다.
흰색 사각형이 클수록 샘플의 버퍼에 베리에이션이나 떨림 현상이 많은 것입니다. 이렇게 큰 베리에이션이 나타난다면 평가 시간 사이에 버퍼를 더 허용하고 최신 샘플을 사용 가능하게 하여 항상 원하는 시간에 샘플을 평가할 수 있게 하는 것이 좋습니다.
시간 데이터 모니터(Timed Data Monitor)에서 버퍼 시각화 툴(Buffer Visualizer) 을 열려면,
-
시간 데이터 모니터 창 상단에서 버퍼 시각화 툴 열기(Open a buffer visualizer) 버튼을 선택합니다.
캘리브레이션


시간 데이터 모니터(Timed Data Monitor)에는 활성화된 모든 소스를 캘리브레이션하여 정렬 포인트를 찾는 기능이 있습니다. 캘리브레이션은 시간 데이터 모니터 UI나 블루프린트를 통해 시작할 수 있습니다.
캘리브레이션 동안 시간 데이터 모니터는 타임코드 프로바이더(TimecodeProvider)와 소스 버퍼 크기의 글로벌 오프셋을 수정하여 모든 채널이 평가 시간 범위 내에 샘플을 갖게 합니다. 디폴트로 시간 차이의 표준편차를 사용하여 통계적으로 항상 정렬될 것이 더 확실한 지점을 찾습니다. 알고리즘은 프로젝트 세팅에서 수정할 수 있습니다.
캘리브레이션 예시
이 영상에서는 다수의 라이브 링크(LiveLink) 소스가 연결되어 있지만 정렬되어 있지 않습니다. 뷰포트의 액터들이 동기화되어 있지 않습니다. 버퍼 시각화(Buffer Visualization) 창에 정렬 문제가 보입니다. 소스 중 일부는 샘플이 너무 이르고, 일부는 평가 시간을 포함하며, 일부는 너무 늦습니다. 소스 LLTS.5는 다른 소스에 비해 버퍼 분량이 적습니다.
캘리브레이션 프로세스가 시작되면 알고리즘이 수행하는 일은 다음과 같습니다.
-
LLTS.5의 버퍼 크기를 확대하여 다른 샘플과 정렬합니다.
-
타임코드 프로바이더의 글로벌 오프셋을 수정하여 모든 소스를 정렬합니다. 평가 포인트에서 가장 멀리 떨어진 LLTS.0을 다른 샘플과 정렬하기 위해 필요한 최소한의 오프셋이 선택됩니다.
캘리브레이션이 완료되면 모든 버퍼가 평가 시간 범위 내에 있게 되고, 모든 액터가 동기화됩니다.
시간 데이터 모니터 스테이트
시간 데이터 모니터(Timed Data Monitor)의 우측 상단에는 수신 데이터의 글로벌 스테이트 및 엔진 시간과의 관계가 시각화됩니다. 스테이트의 종류는 다음과 같습니다.
상태 | 설명 |
---|---|
비활성화(Disabled) | 입력이 없거나 모든 입력이 비활성화되었습니다. |
동기화됨(Synchronized) | 모든 활성화된 입력이 평가 시간과 일치하는 샘플을 갖습니다. |
범위 밖(Outside Range) | 하나 이상의 입력에 평가 시간과 일치하는 샘플이 없습니다. |
샘플 없음(No Samples) | 입력에 현재 이용 가능한 샘플이 없습니다. |
아래 예시는 소스가 모니터의 글로벌 상태에 미치는 영향을 보여줍니다. 이 예시에는 두 개의 라이브 링크(Live Link) 소스가 있습니다.
-
첫 번째 소스는 시간 보정(Time Correction) 이 -0.1로 설정되어 있습니다. 그래서 소스가 엔진 시간과 동기화되지 않으며, 이는 타이밍 다이어그램(Timing Diagram) 에 붉은 수직선으로 나타납니다.
-
두 번째 소스는 시간 보정(Time Correction) 이 0.1로 설정되어 있습니다. 그래서 소스가 엔진 시간과 동기화되며, 이는 타이밍 다이어그램 에서 녹색 수직선으로 나타납니다.
두 소스를 모두 활성화하면 글로벌 상태가 범위 밖(Outside Range) 으로 설정됩니다. 첫 번째 소스가 엔진 시간과 동기화되지 않았기 때문입니다. 첫 번째 소스를 비활성화하면, 유일하게 남는 두 번째 소스는 엔진 시간과 동기화되므로 상태가 동기화됨(Synchronized) 으로 변경됩니다.


플러그인 세팅 레퍼런스
플러그인 세팅에는 시간 데이터 모니터(Timed Data Monitor) 전반의 캘리브레이션 프로세스와 기능을 커스터마이징할 방법이 많습니다. 아래 표에서는 모든 세팅과 각 세팅이 툴의 기능에 미치는 영향을 설명합니다.

캘리브레이션
파라미터 | 설명 |
---|---|
캘리브레이션 세팅(Calibration Settings) | |
재시도 횟수(Number of Retries) | 모든 입력의 정렬을 찾기 위해 캘리브레이션 알고리즘을 몇 번 실행할지 지정합니다. |
버퍼 크기 조정 여부(Buffer Resize Allowed) | 활성화하면 캘리브레이션 알고리즘이 하나 이상의 입력에서 버퍼 크기를 늘릴 수 있습니다. |
버퍼 축소 여부(Buffer Shrink Allowed) | 활성화하면 캘리브레이션 알고리즘이 하나 이상의 입력에서 버퍼 크기를 줄일 수 있습니다. |
버퍼 크기를 조정할 수 없는 경우 실패(Failed if Buffer Cant be Resize) | 활성화하면 버퍼 크기를 조정할 수 없는 경우 캘리브레이션 프로세스가 실패합니다. 예를 들어 버퍼가 너무 크면 크기 조정에 실패할 수 있습니다. |
표준 편차 사용(Use Standard Deviation) | 입력에 평가 시간 범위 내의 샘플이 있는지 고려할 때 표준편차 통계를 사용합니다. |
표준 편차의 수(Number of Standard Deviation) | 범위 내 샘플을 고려할 때 몇 개의 표준편차를 고려할지 지정합니다. |
표준 편차를 사용하기 전에 통계 재설정(Reset Statistics Before Using Standard Deviation) | 캘리브레이션 전에 통계 리셋을 허용합니다. |
통계 재설정 후 대기 시간(초)(Amount Of Seconds to Wait After Statistic Reset) | 리셋 후 통계가 안정화될 때까지 대기할 시간입니다. |
시간 보정 세팅(Time Correction Settings) | |
버퍼 크기 조정 여부(Buffer Resize Allowed) | 하나 이상의 입력에서 버퍼 크기가 너무 큰 경우 시간 보정 알고리즘이 버퍼 크기를 변경할 수 있습니다. |
버퍼 축소 여부(Buffer Shrink Allowed) | 버퍼 크기가 너무 큰 경우 시간 보정 알고리즘이 하나 이상의 버퍼 크기를 줄일 수 있습니다. |
버퍼 크기를 조정할 수 없는 경우 실패(Failed If Buffer Cant be Resize) | 버퍼가 너무 큰 경우와 같이 크기 조정이 불가능한 경우 시간 보정 프로세스가 실패합니다. |
표준 편차의 수(Number of Standard Deviation) | 표준편차 개수를 지정합니다. |
UI
파라미터 | 설명 |
---|---|
새로 고침 빈도(Refresh Rate) | UI가 새로 고쳐지는 간격입니다. |
리셋(Reset) | |
버퍼 상태 재설정 활성화됨(Reset Buffer Stat Enabled) | UI의 리셋(Reset) 버튼을 클릭하면 버퍼 통계를 디폴트로 리셋합니다. |
메시지 지우기 사용(Clear Message Enabled) | UI의 리셋 버튼을 클릭하면 로깅된 메시지를 디폴트로 지웁니다. |
평가 시간 재설정 활성화됨(Reset Evaluation Time Enabled) | UI의 리셋 버튼을 클릭하면 각 입력의 시간 보정을 디폴트로 리셋합니다. |