Android'i hedefleyen AR Foundation'da kayıt yaparken özel veri ekle

Kayıt ve Oynatma API'si, bir oturumu kaydetmenize ve gerçek zamanlı kamera feed'i yerine kullanmanıza olanak tanır. Ancak bu kayıtlar yalnızca video ve sensör verilerini içerir. Ayrıca oturum kaydına özel veriler ekleyebilir ve oynatma sırasında bu verileri kamera görüntüsünün bir parçasıymış gibi size döndürebilirsiniz.

ARCore, kayıtlara otomatik olarak özel veri eklemez. Bunun yerine, kayıt sırasında bir ARCore çerçevesine özel veri eklemenize ve oynatma sırasında aynı verileri çerçeveden almanıza olanak tanır. Uygulamayı, kullanıcı oturumunu oynattığında beklediği verileri alacağı şekilde programlamak size bağlıdır.

Özel veriler için kullanım alanları

Kayıtlara özel veri eklemek, AR uygulamalarınızın olanaklarını genişletir. Aşağıda bazı belirli kullanım alanları verilmiştir.

Hareket halindeyken AR'ı kullanma

Geçmişte kullanıcılar artırılmış gerçeklik deneyimlerine yalnızca doğru yerde ve doğru zamanda erişebiliyordu. Salonuna AR abajur yerleştirmek isteyen kullanıcı, abajuru oraya yerleştirdiğinde nasıl görüneceğini görmek için fiziksel olarak o konumda durması gerekiyordu. Özel parçalar sayesinde oturma odalarını bir kez kaydedebilir ve istedikleri zaman sahneye sanal mobilyalar ekleyebilirler.

AR deneyimlerini ortaklaşa oluşturma

Canlı oturum şartı olmadığında kullanıcılar AR düzenleme için çok daha fazla seçeneğe sahip olur. Bu sayede, istedikleri zaman ve yerde benzersiz AR içerikleri oluşturup bunlara erişebilirler. Örneğin, belirli bir ortamı kaydedebilir, artırılmış gerçeklik efektleri ekleyebilir ve bunları arkadaşlarıyla paylaşabilir.

Ön koşullar

Devam etmeden önce temel AR kavramlarını ve ARCore oturumunu nasıl yapılandıracağınızı anladığınızdan emin olun.

Kayıtları özel verilerle başlatma

Bir kaydı özel veri kullanarak başlatmak için aşağıdaki adımları uygulayın. Kayıt oturumunu başlatmak, durdurmak ve kontrol etmek için lütfen AR oturumu kaydetme ve oynatma başlıklı makaleyi inceleyin.

  1. ARCoreRecordingConfig edinin.
  2. Özel UUID içeren yeni bir Track oluşturun. Tüm özel veriler buraya kaydedilir.
  3. Track'u oturum yapılandırması sırasında oluşturduğunuz ARCoreRecordingConfig'e ekleyin.
// 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;

Tüm yeni parçalar ayrı kayıtlar olarak değerlendirilir ve her kaydedilen parçanın kendi UUID'si olur.

Parçayı ek verilerle yapılandırma

Parçayı, oturum kaydını açıklayan ek verilerle yapılandırın. Örneğin, oturumu kaydettiğiniz konumu ve zamanı açıklayan bir not ekleyerek bir parçayı "etiketleyebilirsiniz": "Bu oturum, öğleden sonra alışveriş merkezinde kaydedildi."

// Set additional data on this track.
// For example, describe where you recorded the session.
byte[] metadata = ...
track.Metadata = metadata;

Parçayı MIME türüyle yapılandırma

Harici araçlarla uyumluluk için parçayı, parçaya kaydedilen veri türünü açıklayan bir MIME türüyle yapılandırın.

Tür belirtmezseniz veriler application/text olarak kategorize edilir. ARCore, verileri okurken MIME türünü yoksayar.

// Set a MIME type for compatibility with external tools.
track.MimeType = "text/csv";

Özel veri kanalları kaydetme

Tüm özel parça verileri çerçevelere kaydedilir. Bir çerçeveye veri kaydettiğiniz zaman, oynatma sırasında verilerin döndürüleceği zamanla aynıdır. Örneğin, 00:07:02'te "A" değerini kullanarak RecordTrackData() işlevini çağırırsanız parça oynatıldığında 00:07:02 işaretinde "A" değerini alırsınız.

Özel veri kaydı oluşturmak için RecordTrackData() tuşuna basın.

// 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);
}

Özel veri parçalarını oynatma

Oynatma sırasında oturum kaydından özel verileri ayıklama

Oynatma işlemini başlatma

Özel veri içeren bir oynatmayı başlatmak, normal bir oturum kaydının oynatılmasını başlatmakla aynıdır.

Özel verileri döndürme

Bir karede kaydedilen özel verileri almak için GetUpdatedTrackData() işlevini çağırın. Aynı çerçeveden birden fazla parça verisi alınabilir. Örneğin, kayıt sırasında aynı karede RecordTrackData() değerini iki kez çağırdıysanız oynatma sırasında TrackData değerinin iki örneğini alırsınız.

// Fetch the data recorded on a select frame and place it in a
// container object.
var trackDataList = recordingManager.GetUpdatedTrackData(trackGuid);

TrackData bir kapsayıcı nesnesinde olduğunda özel verilerin baytlarını ayıklayın.

// 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!
}

Sırada ne var?

  • Kayıt ve Oynatma codelab'ini inceleyerek Kayıt ve Oynatma özelliğini kullanarak kendi uygulamanızı nasıl oluşturacağınızı öğrenin.