Android를 타겟팅하는 AR Foundation에서 녹화하는 동안 맞춤 데이터 추가

Recording & Playback API를 사용하면 세션을 녹화하여 실시간 카메라 피드 대신 사용할 수 있습니다. 하지만 이러한 녹화에는 동영상 및 센서 데이터만 포함됩니다. 세션 녹화에 맞춤 데이터를 추가하고 재생 중에 카메라 이미지의 일부인 것처럼 데이터를 반환받을 수도 있습니다.

ARCore는 녹화 파일에 맞춤 데이터를 자동으로 포함하지 않습니다. 대신 녹화 중에 ARCore 프레임에 맞춤 데이터를 추가하고 재생 중에 프레임에서 동일한 데이터를 검색할 수 있습니다. 사용자가 세션을 재생할 때 기대하는 데이터를 다시 가져올 수 있도록 앱을 프로그래밍하는 것은 개발자의 몫입니다.

맞춤 데이터 사용 사례

녹화 파일에 맞춤 데이터를 추가하면 AR 앱의 가능성을 확장할 수 있습니다. 다음은 몇 가지 구체적인 사용 사례입니다.

이동 중 AR 사용하기

이전에는 사용자가 적절한 장소와 적절한 시점에만 AR 환경에 액세스할 수 있었습니다. 거실에 AR 램프를 설치하려면 실제로 그 위치에 서서 램프가 어떻게 보일지 확인해야 했습니다. 맞춤 트랙을 사용하면 거실을 한 번 녹화하고 언제든지 장면에 가상 가구를 추가할 수 있습니다.

AR 환경 공동 제작

실시간 세션이 필요하지 않으므로 사용자는 AR 편집 옵션을 더 많이 활용할 수 있으며 언제 어디서나 고유한 AR 콘텐츠를 만들고 액세스할 수 있습니다. 예를 들어 특정 환경을 녹화하고 증강 현실 효과를 추가한 후 친구와 공유할 수 있습니다.

기본 요건

계속하기 전에 기본 AR 개념ARCore 세션을 구성하는 방법을 이해해야 합니다.

맞춤 데이터로 녹화 초기화

맞춤 데이터로 녹화를 초기화하려면 다음 단계를 따르세요. 녹화 세션을 시작, 중지, 확인하려면 AR 세션 녹화 및 재생을 참고하세요.

  1. ARCoreRecordingConfig를 가져옵니다.
  2. 맞춤 UUID로 새 Track를 만듭니다. 모든 맞춤 데이터는 여기에 저장됩니다.
  3. 세션 구성 중에 만든 ARCoreRecordingConfigTrack을 추가합니다.
// 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!
}

다음 단계