Recording & Playback API를 사용하면 세션을 녹화하고 실시간 카메라 피드 대신 사용할 수 있습니다. 하지만 이러한 녹화에는 동영상 및 센서 데이터만 포함됩니다. 또한 세션 녹화에 맞춤 데이터를 추가하고 해당 데이터가 카메라 이미지의 일부인 것처럼 재생 중에 사용자에게 반환되도록 할 수 있습니다.
ARCore는 녹화 파일에 맞춤 데이터를 자동으로 포함하지 않습니다. 그보다는 녹화 중에 ARCore 프레임에 맞춤 데이터를 추가하고 재생 중에 프레임에서 동일한 데이터를 검색할 수 있습니다. 사용자가 세션을 다시 재생할 때 원하는 데이터를 다시 얻을 수 있도록 앱을 프로그래밍하는 것은 개발자의 몫입니다.
커스텀 데이터 사용 사례
녹화 파일에 맞춤 데이터를 추가하면 AR 앱의 가능성이 커집니다. 다음은 구체적인 사용 사례입니다.
이동 중 AR 사용
과거에는 사용자가 적절한 장소와 시간에만 AR 환경에 액세스할 수 있었습니다. 거실에 AR 램프를 놓으려면 해당 위치에 서서 램프가 어떻게 보이는지 확인해야 했습니다. 맞춤 트랙을 사용하면 거실을 한 번 녹화하고 원할 때마다 가상 가구를 장면에 추가할 수 있습니다.
AR 환경 공동 제작
라이브 세션 요구사항이 없으면 사용자는 더 많은 AR 편집 옵션을 이용할 수 있으므로 언제 어디서나 고유한 AR 콘텐츠를 만들고 액세스할 수 있습니다. 예를 들어 주어진 환경을 녹화하고 증강 현실 효과를 추가하며 친구와 공유할 수 있습니다.
기본 요건
계속 진행하기 전에 기본 AR 개념과 ARCore 세션 구성 방법을 이해해야 합니다.
맞춤 데이터로 녹화 초기화
맞춤 데이터로 기록을 초기화하려면 다음 단계를 따르세요. 녹화 세션을 시작, 중지, 확인하려면 AR 세션 녹화 및 재생을 참고하세요.
ARCoreRecordingConfig
를 가져옵니다.- 커스텀 UUID를 사용하여 새
Track
를 만듭니다. 모든 맞춤 데이터는 여기에 저장됩니다. - 세션 구성 중에 만든
ARCoreRecordingConfig
에Track
를 추가합니다.
// Initialize a new track with a custom UUID.
// Make sure to save the UUID because it is the ID that you will use
// to get your data back during playback.
var track = new Track {
Id = Guid.Parse("de5ec7a4-09ec-4c48-b2c3-a98b66e71893") // from UUID generator
};
// Add the Track to the recordingConfig.
// recordingConfig must already be configured.
List<Track> tracks = new List<Track>();
tracks.Add(track);
recordingConfig.Tracks = tracks;
모든 새로운 트랙은 별도의 녹음으로 처리되며 녹음된 각 트랙은 자체 UUID를 사용합니다.
추가 데이터로 트랙 구성
세션 녹음을 설명하는 추가 데이터로 트랙을 구성합니다. 예를 들어 세션을 녹화한 위치와 시간을 설명하는 '이 세션은 쇼핑몰에서 오후에 녹화되었습니다.'라는 메모를 추가하여 트랙에 '태그'를 지정할 수 있습니다.
// Set additional data on this track.
// For example, describe where you recorded the session.
byte[] metadata = ...
track.Metadata = metadata;
MIME 유형으로 트랙 구성
외부 도구와의 호환성을 위해 트랙에 기록된 데이터 유형을 설명하는 MIME 유형으로 트랙을 구성합니다.
유형을 지정하지 않으면 데이터가 application/text
로 분류됩니다. ARCore는 데이터를 읽을 때 MIME 유형을 무시합니다.
// Set a MIME type for compatibility with external tools.
track.MimeType = "text/csv";
맞춤 데이터 트랙 기록
모든 맞춤 트랙 데이터는 프레임에 기록됩니다. 프레임에 데이터를 기록하는 시간은 재생 중에 데이터가 반환되는 시간과 같습니다. 예를 들어 00:07:02
에서 값을 'A'로 하여 RecordTrackData()
를 호출하면 트랙이 재생될 때 00:07:02
표시에 'A'가 다시 반환됩니다.
맞춤 데이터 트랙을 기록하려면 RecordTrackData()
를 호출합니다.
// Place an AR lamp in a room.
if (placeLampButtonWasPressed) {
// Convert the lamp data into a byte array.
var lampData = new byte[] { (byte) Lamp.FLOOR }; // a floor lamp
recordingManager.RecordTrackData(trackGuid, lampData);
}
맞춤 데이터 트랙 재생
재생 중에 세션 녹음 파일에서 맞춤 데이터를 추출합니다.
재생 초기화
맞춤 데이터로 재생을 초기화하는 것은 일반 세션 녹음 파일의 재생을 초기화하는 것과 같습니다.
맞춤 데이터 반환
GetUpdatedTrackData()
를 호출하여 프레임에 기록된 맞춤 데이터를 가져옵니다. 동일한 프레임에서 여러 트랙 데이터를 가져올 수 있습니다. 예를 들어 녹화 중에 동일한 프레임에서 RecordTrackData()
를 두 번 호출한 경우 재생 중에 TrackData
인스턴스 두 개가 반환됩니다.
// Fetch the data recorded on a select frame and place it in a
// container object.
var trackDataList = recordingManager.GetUpdatedTrackData(trackGuid);
TrackData
가 컨테이너 객체에 있으면 맞춤 데이터의 바이트를 추출합니다.
// Extract the bytes of custom data from the list of track data.
foreach (TrackData trackData in trackDataList) {
var data = trackData.Data;
Lamp lamp = Lamp.fromByte(data[0]); // This is the lamp!
}
다음 단계
- 녹화 및 재생 Codelab을 통해 녹화 및 재생으로 자체 앱을 빌드하는 방법을 알아보세요.