Table of Contents

Unity에서 EIF 파일을 사용한 시뮬레이션 실행

이 문서에서는 Unity에서 EIF 파일을 사용하여 시뮬레이션을 실행하는 방법을 설명합니다. 이를 통해 대부분의 개발 작업을 컴퓨터에서 수행하고 효과를 시각적으로 확인할 수 있습니다.

시작하기 전에

시뮬레이션 실행은 입력으로 EIF 파일을 사용하므로, 시작하기 전에 EIF 파일을 녹화해야 합니다:

또한 다음 사항을 이해해야 합니다:

session의 frame player 활성화

ARSession.AssembleOptions는 session 컴포넌트의 조합 방식을 구성하는 여러 방법을 제공합니다. 그 중 하나는 AssembleOptions.FrameSourceFramePlayer로 설정하여 frame player 컴포넌트를 활성화하는 것입니다. 이렇게 하면 EIF 파일을 사용한 시뮬레이션 실행이 가능해집니다.

예시:

Session.AssembleOptions.FrameSource = AssembleOptions.FrameSourceSelection.FramePlayer;

또는 에디터에서 AR Session (EasyAR)을 선택하고 Inspector 창의 Assemble Options에서 해당 옵션을 수정할 수 있습니다:

alt text

이렇게 하면 session이 시작될 때 frame player 컴포넌트가 활성화되고 다른 frame source 컴포넌트는 선택되지 않습니다.

frame player로 EIF 파일을 재생하는 효과는 다음 비디오에서 확인할 수 있습니다:

이 비디오는 frame player를 사용하여 컴퓨터에서 dense 공간 매핑을 움직이며 수행하는 효과를 보여줍니다. 왼쪽은 Hierarchy 뷰, 가운데는 Scene 뷰, 오른쪽은 Game 뷰입니다. Game 뷰의 내용은 실제 세계에서 사용자의 휴대폰 화면에 보이는 내용과 동일합니다.

EIF 파일 재생 과정에서 session의 각 AR 기능 컴포넌트는 정상적으로 작동하며, 장면의 콘텐츠와 상호작용 로직도 제대로 작동합니다. 이를 통해 대부분의 개발 작업을 컴퓨터에서 수행하고 효과를 시각적으로 확인할 수 있습니다.

컴퓨터에서 frame player로 EIF를 재생하여 보는 효과는 EIF 파일을 녹화할 때 휴대폰에서의 효과와 기본적으로 일치합니다.

중요

장면 내에서 EIF 재생 시 실행 효과는 녹화에 사용된 장치 및 당시 장치에서 선택된 frame source에 따라 다릅니다. 따라서 EIF 파일 녹화 시 대상 장치와 동일하거나 유사한 장치를 사용하여 녹화하는 것이 좋습니다. 이렇게 하면 재생 시 효과가 대상 장치에서의 효과와 일관되게 유지됩니다. 동시에 녹화 장면에서 모션 추적 기능이 활성화되었는지 여부를 집중해서 확인해야 합니다. 녹화 시 모션 추적 기능이 활성화되지 않았다면, 재생 시에도 모션 추적 기능을 활성화할 수 없으며, 모션 추적에 의존하는 AR 기능(dense 공간 맵, Mega 등)도 장치에서와 동일하게 작동하지 않습니다.

session 시작 시 재생

기본적으로 session이 시작되면 frame player가 자동으로 EIF 파일 재생을 시작합니다. 하지만 재생 전에 EIF 파일 경로를 지정해야 합니다. FramePlayer.FilePathTypeFramePlayer.FilePath 속성을 통해 설정할 수 있습니다.

예시:

var player = Session.GetComponent<FramePlayer>();
player.FilePathType = WritablePathType.Absolute;
player.FilePath = path;

또는 에디터에서 AR Session (EasyAR)을 선택하고 Inspector 창의 Frame Player 컴포넌트에서 해당 옵션을 수정할 수 있습니다:

alt text

파일이 지정되지 않았거나 파일 경로가 유효하지 않은 경우, session 시작 시 frame player는 시작에 실패하고 오류 로그를 출력합니다:

File not found:

수동 재생

재생 시점을 수동으로 제어하려면 session 시작 전에 FramePlayer.enabledfalse로 설정합니다.

Session.GetComponent<FramePlayer>().enabled = false;

또는 에디터에서 AR Session (EasyAR)을 선택하고 Inspector 창에서 Frame Player 컴포넌트의 Enabled 체크박스를 해제합니다:

alt text

재생이 필요한 시점에 Play()를 사용하여 재생을 시작합니다.

예시:

if (Session.Assembly.FrameSource is FramePlayer player)
{
    player.Play();
}

Play()를 호출할 때마다 이전 재생을 중단하고(이전에 재생된 경우) 처음부터 다시 재생합니다.

주의

새 데이터를 재생할 때, 장면의 기존 데이터는 지워지지 않습니다. AR 컴포넌트의 상태도 재설정되지 않으며, 마치 카메라 데이터가 이전 데이터의 중단 지점에서 갑자기 새 데이터의 시작 지점으로 건너뛴 것처럼 동작합니다.

일부 기능에는 큰 영향을 미치지 않을 수 있지만, 모션 추적에 의존하는 기능(dense 공간 맵, Mega 등)의 경우 기능 상태가 비정상적이 되어 실행 효과에 영향을 줄 수 있습니다. 따라서 새 데이터를 재생하기 전에 session을 다시 시작하여 모든 AR 컴포넌트의 상태를 재설정하는 것이 좋습니다.

일시 정지 및 재개

FramePlayer.enabled을 사용하여 재생 일시 정지 및 재개를 제어합니다.

예를 들어, FramePlayer.enabled = false로 설정하여 재생을 일시 정지합니다:

player.enabled = false;

재생이 일시 정지되면 모든 AR 기능 컴포넌트가 작동을 멈춥니다. 장면의 콘텐츠와 상호작용 로직은 내용 자체에 따라 반드시 멈추지는 않을 수 있습니다. 재생을 재개하면 AR 기능 컴포넌트는 일시 정지된 위치에서 작업을 계속합니다.

재생 중지

Stop()을 사용하여 재생을 중지합니다.

player.Stop();

재생이 중지되면 모든 AR 기능 컴포넌트가 작동을 멈춥니다. 장면의 콘텐츠와 상호작용 로직은 내용 자체에 따라 반드시 멈추지는 않을 수 있습니다.

지정된 시간으로 이동하여 재생(seek)

Seek(double)을 사용하여 지정된 시간으로 이동하여 재생합니다.

예를 들어, 5초 후 위치로 이동하여 재생합니다:

player.Seek(player.Time + 5);
참고

이동 후 정확한 시간대에서 재생이 시작되지 않을 수 있으며, 이는 EIF 파일의 인코딩 방식과 키 프레임 간격에 따라 다릅니다.

모든 EIF 파일이 이동 재생을 지원하는 것은 아닙니다. 현재 재생 중인 EIF 파일이 이동 재생을 지원하는지 확인하려면 IsSeekable 속성을 사용할 수 있습니다.

참고

H264 형식으로 녹화되고 정상적으로 녹화 중지가 호출된 EIF 파일만 이동 재생을 지원합니다. EIF 파일이 이동 재생을 지원하지 않으면 Seek(double) 호출은 아무 효과가 없습니다.

재생 속도 제어

Speed 속성을 사용하여 재생 속도를 제어합니다.

예를 들어, 재생 속도를 원래 속도 대비 0.1배 증가시킵니다:

player.Speed += 0.1;

모든 EIF 파일이 재생 속도 제어를 지원하는 것은 아닙니다. 현재 재생 중인 EIF 파일이 재생 속도 제어를 지원하는지 확인하려면 IsSpeedChangeable 속성을 사용할 수 있습니다.

참고

H264 형식으로 녹화되고 정상적으로 녹화 중지가 호출된 EIF 파일만 재생 속도 제어를 지원합니다. EIF 파일이 재생 속도 제어를 지원하지 않으면 Speed 설정은 아무 효과가 없습니다.

관련 주제

  • session 검증 도구 사용을 시도해 보세요. 이 도구는 간단한 EIF 플레이어를 포함하고 있어 EIF 파일을 사용한 시뮬레이션 실행을 더 빠르게 수행할 수 있습니다.