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

Kaydetme ve Oynatma API'si, bir oturum kaydedip gerçek zamanlı kamera feed'i yerine kullanmanızı sağlar. Ancak bu kayıtlar yalnızca video ve sensör verileri içerir. Ayrıca, bir oturum kaydına özel veriler ekleyebilir ve bu verilerin, sanki bir kamera görüntüsünün parçasıymış gibi oynatma sırasında size döndürülmesini sağlayabilirsiniz.

ARCore, kayıtlara özel verileri otomatik olarak dahil etmez. Aksine, kayıt sırasında bir ARCore çerçevesine özel veriler eklemenize ve aynı verileri oynatma sırasında kareden almanıza olanak tanır. Uygulamayı, kullanıcının oturumunu oynattığında beklediği verileri geri alacağı şekilde programlamak sizin sorumluluğunuzdadır.

Özel veriler için kullanım alanları

Kayıtlara özel verilerin eklenmesi, artırılmış gerçeklik (AR) uygulamalarınızın olasılıklarını artırır. Aşağıda bazı özel kullanım alanları verilmiştir.

Artırılmış gerçeklik (AR) hareket halindeyken kullanın

Geçmişte kullanıcılar artırılmış gerçeklik deneyimlerine yalnızca doğru yerde ve doğru zamanda erişebiliyordu. Salonlarına AR lambası yerleştirmek istediklerinde, lambanın oraya nasıl göründüğüne bakmak için fiziksel olarak ilgili yerde durmaları gerekiyordu. Özel parçalarla, oturma odalarına bir kez kayıt yapabilirler ve istedikleri zaman sahneye sanal mobilyalar ekleyebilirler.

Artırılmış gerçeklik deneyimlerini birlikte oluşturun

Canlı oturum şartı olmadan kullanıcılar, AR düzenleme için çok daha fazla seçeneğe sahip olur. Böylece, kullanıcılar her zaman ve her yerde benzersiz AR içeriği oluşturup bu içeriklere erişebilir. Örneğin, belirli bir ortamı kaydedebilir, artırılmış gerçeklik efektleri ekleyebilir ve bunları arkadaşlarıyla paylaşabilirler.

Ö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.

Özel verilerle kaydı başlatma

Bir kaydı özel verilerle başlatmak için aşağıdaki adımları uygulayın. Bir kayıt oturumunu başlatmak, durdurmak ve kontrol etmek için lütfen AR oturumunu kaydetme ve oynatma başlıklı makaleye bakın.

  1. ARCoreRecordingConfig edinin.
  2. Özel UUID ile yeni bir Track oluşturun. Tüm özel veriler buraya kaydedilir.
  3. Track'i oturum yapılandırması sırasında oluşturduğunuz ARCoreRecordingConfig öğesine 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. Kaydedilen her parça kendi UUID'sine sahip olur.

Parçayı ek verilerle yapılandırın

Parçayı, oturum kaydını açıklayan ek verilerle yapılandırın. Örneğin, oturumu kaydettiğiniz konumu ve saati açıklayan bir not ekleyerek bir parkuru "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ı bir MIME türüyle yapılandırma

Bir kanalı, harici araçlarla uyumluluk için kanala kaydedilen veri türünü açıklayan bir MIME türüyle yapılandırın.

Tür belirtmezseniz veriler application/text olarak sınıflandırılır. 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 parkur verileri karelere kaydedilir. Bir kareye veri kaydettiğiniz saat, oynatma sırasında verilerin döndürüleceği zamanla aynıdır. Örneğin, 00:07:02 konumunda "A" değeriyle RecordTrackData() çağrısı yaparsanız parça çalındığında 00:07:02 işaretinde "A"yı geri alırsınız.

Özel bir veri kanalı kaydetmek için RecordTrackData() numaralı telefonu arayı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 kanallarını oynatma

Oynatma sırasında bir oturum kaydından özel verileri çıkarın.

Oynatmayı başlatma

Oynatmanın özel verilerle başlatılması, normal bir oturum kaydının oynatılmasını başlatmakla aynıdır.

Özel verileri döndür

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ı kareden RecordTrackData()'i iki kez aradıysanız oynatma sırasında iki TrackData örneği geri 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ı nesnesine yerleştirildikten sonra baytlarca özel veri çıkarı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!
}

Sonraki adımlar

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