Android'i hedefleyen Unity'de kayıt yaparken özel veri ekle

Kaydetme ve Oynatma API'sı, 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 bir oturum kaydına özel veriler ekleyebilir ve oynatma sırasında verilerin bir kamera resminin parçasıymış gibi size döndürülmesini sağlayabilirsiniz.

ARCore, kayıtlara özel verileri otomatik olarak eklemez. Daha ziyade, kayıt sırasında bir ARCore çerçevesine özel veriler eklemenize ve aynı verileri oynatma sırasında çerçeveden almanıza olanak tanır. Uygulamayı, kullanıcı oturumunu oynattığında umduğu verileri geri alabileceği şekilde programlamak sizin sorumluluğunuzdadır.

Özel verilerin kullanım alanları

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

Hareket halindeyken AR'yi kullanın

Önceden kullanıcılar, artırılmış gerçeklik deneyimlerine yalnızca doğru yerden ve doğru zamanda erişebiliyordu. Oturma odasına AR lambası yerleştirmek istediklerinde, lambanın orada nasıl duracaklarını görmeleri için fiziksel olarak durmaları gerekiyordu. Özel parçalarla oturma odalarını bir kez kaydedebilir ve kendilerini uygun gördüklerinde sahneye sanal mobilyalar ekleyebilirler.

Artırılmış gerçeklik (AR) deneyimleri oluşturun

Canlı oturum gereksinimi olmadan, kullanıcılara artırılmış gerçeklik (AR) düzenleme için daha pek çok seçenek sunulur. Bu sayede kullanıcılar, her yerde ve her zaman benzersiz AR içerikleri oluşturup bunlara erişebilir. Örneğin, belirli bir ortamı kaydedebilir, artırılmış gerçeklik efektleri ekleyebilir ve bunları arkadaşlarınızla 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 kayıt başlatma

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

  1. ARCoreRecordingConfig edinin.
  2. Özel UUID ile yeni bir Track oluşturun. Tüm özel veriler buraya kaydedilir.
  3. Oturum yapılandırması sırasında oluşturduğunuz ARCoreRecordingConfig bölümüne Track 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 kabul edilir ve kaydedilen her parça kendi UUID'sini kullanır.

İsteğe bağlı: Parçayı ek verilerle yapılandırın

Daha sonra tanımlamak isterseniz oturum kaydını açıklayan ek verilerle bir kanalı yapılandırabilirsiniz. Örneğin, bir oturumun kaydedildiği yeri ve saati açıklayan bir not ekleyerek 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;

İsteğe bağlı: Parçayı MIME türüyle yapılandırın

Uygulamanızın harici araçlarla uyumlu olması gerekiyorsa kanal için kaydedilen veri türünü açıklayan MIME türüne sahip bir kanal yapılandırabilirsiniz. Tür belirlemezseniz veriler application/text olarak kategorize edilir. ARCore, verileri okurken MIME türünü yoksayar.

// Set a MIME type for compatibility with external tools.
ArTrack_setMimeType(ar_session, track, "text/csv");

Özel veri parçalarını kaydedin

Tüm özel kanal verileri Frame hesabına kaydedilir. Bir kareye veri kaydettiğiniz zaman, oynatma sırasında verilerin döndürüleceği zamanla aynıdır. Örneğin, 00:07:02 adresinde "A" değerine sahip RecordTrackData() çağrısı yaparsanız parça oynatıldığında 00:07:02 işaretini tekrar "A" olarak görü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
  frame.RecordTrackData(trackGuid, lampData);
}

Özel veri parçalarını oynatma

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

Oynatmayı başlatma

Özel verilerle oynatmanın başlatılması, normal bir oturum kaydının oynatılmasını başlatma ile aynıdır.

Özel verileri döndür

Bir çerçeveye kaydedilen özel verileri almak için GetUpdatedTrackData() yöntemini çağırın. Aynı çerçeveden birden çok parça verisi alınabilir. Örneğin, kayıt sırasında RecordTrackData() adlı videoyu aynı karede iki kez aradıysanız oynatma sırasında iki TrackData tekrar görü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 container nesnesine eklendikten sonra, özel verilerin baytlarını çı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!
}

Sırada ne var?

  • Kayıt ve Oynatma codelab'ına göz atarak Kayıt ve Oynatma ile kendi uygulamanızı nasıl oluşturacağınızı öğrenin.