Unity에서 EIF 파일 녹화하기
이 문서는 시뮬레이션 실행에 사용하기 위해 Unity에서 EIF 파일을 녹화하는 방법을 설명합니다.
시작하기 전에
- EIF 파일 녹화 및 시뮬레이션 실행에 사용하기의 기본 개념 이해
- AR 세션의 기본 개념, 구성 및 워크플로 이해
- 세션의 AR 기능 구성 요소 접근하기를 통해 녹화 구성 요소에 접근하는 방법 이해
녹화 시작
FrameRecorder.enabled = true로 설정하여 녹화를 시작합니다. 예시:
if (Session.State >= ARSession.SessionState.Ready && Session.Assembly.FrameRecorder.OnSome)
{
var frameRecorder = Session.Assembly.FrameRecorder.Value;
frameRecorder.enabled = true;
}
여기서는 먼저 ARAssembly.FrameRecorder의 존재 여부를 확인해야 합니다.
참고
ARAssembly.FrameRecorder는 FramePlayer를 사용할 때와 같은 일부 경우에는 사용할 수 없습니다.
FrameRecorder.enabled의 기본값은 false로, 녹화가 비활성 상태임을 의미합니다. 에디터에서 수동으로 구성해도 효과가 없습니다.
녹화는 세션 실행 중 FrameRecorder.Status >= FrameRecorder.RecorderStatus.Ready일 때 시작됩니다.
FrameRecorder.Status < FrameRecorder.RecorderStatus.Ready인 경우, OnReady 이벤트를 사용하여 녹화 준비를 기다릴 수 있습니다.
Session.GetComponent<FrameRecorder>().OnReady.AddListener(() => {
// 녹화 시작 가능
});
OnRecording 이벤트를 사용하여 시작 성공을 확인할 수 있습니다:
frameRecorder.OnRecording.AddListener((file) =>
{
Debug.Log($"Recording started: {file}");
});
시작 실패 시 이벤트가 트리거되지 않지만, FrameRecorder.Status가 Error인지 확인하여 실패를 확인할 수 있습니다.
중요
EIF 파일을 재생할 때의 효과는 녹화에 사용된 장치 및 당시 장치에서 선택된 frame source에 따라 다릅니다. 따라서 EIF 파일을 녹화할 때는 대상 장치와 동일하거나 유사한 장치를 사용하여 녹화하는 것이 좋습니다. 또한 녹화 장면에서 모션 트래킹 기능이 활성화되었는지 확인해야 합니다. 녹화 시 모션 트래킹이 비활성화된 경우, 재생 시에도 모션 트래킹을 활성화할 수 없으며, 모션 트래킹에 의존하는 AR 기능(예: dense spatial map, Mega 등)도 장치에서와 동일하게 작동하지 않습니다.
녹화 중지
FrameRecorder.enabled = false로 설정하여 녹화를 중지합니다. 예시:
frameRecorder.enabled = false;
이 작업은 녹화를 즉시 중지하고 파일 쓰기가 완료될 때까지 차단합니다.
중요
반드시 녹화 중지를 호출해야 합니다. 그렇지 않으면 녹화 파일이 불완전하게 작성되어 일부 기능 또는 전체 파일을 사용할 수 없게 됩니다:
파일 저장 및 내보내기
OnRecording 이벤트를 사용하여 녹화된 파일의 전체 실제 경로를 얻을 수 있습니다:
frameRecorder.OnRecording.AddListener((file) =>
{
Debug.Log($"Recording started: {file}");
});
기본 구성에서 녹화 파일은 애플리케이션의 영구 데이터 경로에 저장됩니다. Application.persistentDataPath를 통해 이 경로에 접근할 수 있습니다.
FrameRecorder.Configuration.FilePath를 수정하여 녹화 파일의 저장 경로를 변경할 수 있습니다. 이 경로는 녹화 시작 전에 설정해야 하며, AutoFilePath를 비활성화한 후에만 효과가 있습니다. 디렉터리를 미리 생성해야 합니다.
중요
녹화 파일 저장 디렉터리가 존재하고 애플리케이션이 쓰기 가능한지 확인해야 합니다. 그렇지 않으면 녹화 시작이 실패합니다.
예를 들어, 다음 코드는 녹화 파일을 사용자 정의 디렉터리에 저장하고 세션에서 사용하는 FrameSource 유형 및 현재 시간을 기반으로 파일 이름을 생성하는 방법을 보여줍니다:
if (!Directory.Exists(SavePath))
{
Directory.CreateDirectory(SavePath);
}
var frameRecorder = Session.Assembly.FrameRecorder.Value;
frameRecorder.Configuration.AutoFilePath = false;
frameRecorder.Configuration.FilePath.Type = WritablePathType.Absolute;
frameRecorder.Configuration.FilePath.FolderPath = SavePath;
frameRecorder.Configuration.FilePath.FileName = ARSessionFactory.DefaultName(Session.Assembly.FrameSource.GetType()).Replace(" ", "") + DateTime.Now.ToString("_yyyy-MM-dd_HH-mm-ss.fff");
frameRecorder.enabled = true;
또는 에디터에서 AR Session (EasyAR)을 선택하고 Inspector 창에서 Frame Recorder의 Auto File Path를 선택 해제한 후 구성할 수 있습니다:

팁
FrameRecorder.RecordingConfiguration.FilePath를 통해 파일 저장 디렉터리와 파일 이름(확장자 제외)을 수정할 수 있습니다. 파일 확장자는 녹화 형식에 따라 자동으로 추가됩니다.
파일이 애플리케이션의 영구 데이터 경로 또는 다른 애플리케이션 전용 경로에 저장된 경우, 다음 방법으로 컴퓨터로 파일을 내보낼 수 있습니다:
- Android 플랫폼은 USB로 컴퓨터에 연결한 후
adb pull또는 기타 방법을 사용하여 파일을 컴퓨터로 내보낼 수 있습니다. 파일은 일반적으로/sdcarad/Android/data/<app package name>/files아래에 있습니다. - iOS 플랫폼은 Xcode의 Devices 창을 통해 파일을 컴퓨터로 내보내거나, iTunes 또는 Finder 파일 공유를 통해 애플리케이션의 전용 디렉터리에 접근할 수 있습니다.
- 코드를 통해 Android의 다운로드 디렉터리나 iOS의 사진 앨범과 같은 공용 디렉터리에 파일을 저장할 수 있습니다.
참고
iOS 애플리케이션의 경우, iTunes 또는 Finder 파일 공유를 통해 애플리케이션의 전용 디렉터리에 접근하려면, 빌드 전에 XCode 프로젝트의 Info.plist에 UIFileSharingEnabled 키를 추가하고 값을 YES로 설정해야 합니다:

추가 후 표시되는 텍스트가 추가한 문자열과 다를 수 있습니다. 이는 정상입니다.
녹화 형식 변경
FrameRecorder.Configuration.Format를 통해 녹화 형식을 변경합니다. 반드시 녹화 시작 전에 설정해야 합니다.
예를 들어, 다음 코드는 녹화 형식을 H264로 강제 설정하는 방법을 보여줍니다:
frameRecorder.Configuration.Format = FrameRecorder.InternalFormat.H264;
또는 에디터에서 AR Session (EasyAR)을 선택하고 Inspector 창에서 Format을 수정할 수 있습니다:

참고
XREAL에서는 Obsolete 형식으로 녹화된 데이터를 시뮬레이션 실행에 사용할 수 없으며, 문제 보고용으로만 사용됩니다.
현재 녹화 형식을 확인하려면 RecordingFormat를 사용할 수 있습니다.
세션 시작 시 자동 녹화
세션 시작 전에 AutoStart를 true로 설정하면 세션 시작 시 녹화를 시작할 수 있습니다. 예시:
frameRecorder.AutoStart = true;
또는 에디터에서 AR Session (EasyAR)을 선택하고 Inspector 창에서 Frame Recorder의 Auto Start를 선택합니다:

참고
에디터에서 FrameRecorder.enabled를 수정하는 것은 효과가 없습니다.
Mega에서 사용 가능한 데이터
Mega를 사용할 때는 EIF 및 관련 파일 내용에 몇 가지 특별한 요구 사항이 있습니다. 이전 버전의 Unity 플러그인에는 관련 기능이 통합되지 않았으며, 해당 버전에서 녹화된 데이터는 Mega에 사용할 수 없습니다.
다음 상황에서 녹화된 데이터는 Mega에 사용할 수 있습니다:
- Unity 플러그인 4000 이상 버전으로 녹화된 데이터
- Mega Toolbox로 녹화된 데이터
- Obsolete 형식으로 녹화된 데이터(예: 파일
x.eif)를 사용하는 경우, 동일한 디렉터리에x.eif.json파일이 동시에 존재해야 사용할 수 있습니다.
다음 상황에서 녹화된 데이터는 Mega에 사용할 수 없습니다:
- Unity 플러그인 4.6 이하 버전으로 녹화된 데이터
- 네이티브 EasyAR Sense를 사용하고 Unity 플러그인과 동일한 내용의 데이터를 추가하지 않은 경우
또한 Mega는 모션 트래킹 없이도 작동할 수 있지만 실행 효과는 다릅니다. 대부분의 사용 시나리오에 맞게 재생 효과를 보장하기 위해 EIF 파일 녹화 시 모션 트래킹 기능을 활성화하는 것이 좋습니다.