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을 통해 녹음 및 재생으로 나만의 앱을 빌드하는 방법을 알아보세요.