Android XR için Unity ile geliştirme

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazları için deneyimler geliştirmenize yardımcı olur.
XR Kulaklığı
Kablolu XR Gözlükleri

Bu kılavuzda, Android XR için Unity ile geliştirme yapmaya genel bir bakış sunulmaktadır. Android XR, Unity'den beklediğiniz tanıdık araçlar ve özelliklerle çalışır. Unity'nin Android XR desteği OpenXR üzerine inşa edildiğinden OpenXR'a Genel Bakış bölümünde açıklanan özelliklerin çoğu Unity'de de desteklenir.

Aşağıdakiler hakkında bilgi edinmek için bu kılavuzu inceleyin:

  • Android XR için Unity desteği
    • Unity XR ile ilgili temel bilgiler
    • Android XR için uygulama geliştirme ve yayınlama
    • Android XR için Unity paketleri
      • Unity OpenXR: Android XR paketi
      • Unity için Android XR Uzantıları
      • Özellikler ve Uyumlulukla İlgili Dikkat Edilmesi Gereken Noktalar
  • Giriş ve etkileşim

Android XR için Unity desteği

Android XR için Unity uygulamaları geliştirirken Unity 6'nın en yeni sürümlerindeki karma gerçeklik araçlarından ve özelliklerinden yararlanabilirsiniz. Bu şablonlar arasında, hızlıca başlamanıza yardımcı olmak için XR Interaction Toolkit, AR Foundation ve OpenXR Plugin'i kullanan karma gerçeklik şablonları da yer alır. Android XR için Unity ile uygulama geliştirirken oluşturma ardışık düzeni olarak Evrensel Oluşturma Ardışık Düzeni'ni (URP), grafik API'si olarak ise Vulkan'ı kullanmanızı öneririz. Bu özellikler, Unity'nin yalnızca Vulkan ile desteklenen bazı grafik özelliklerinden yararlanmanıza olanak tanır. Bu ayarların nasıl yapılandırılacağı hakkında daha fazla bilgi için proje kurulum kılavuzunu inceleyin.

Unity XR Basics

Unity veya XR geliştirme konusunda yeniyseniz temel XR kavramlarını ve iş akışlarını anlamak için Unity'nin XR Kılavuzu'na bakabilirsiniz. XR Kılavuzu'nda aşağıdaki konularla ilgili bilgiler yer alır:

Android için uygulama geliştirme ve yayınlama

Unity, Android için geliştirme, derleme ve yayınlama konularında ayrıntılı belgeler sunar. Bu belgelerde Unity'de Android izinleri, Android Derleme Ayarları, Uygulamanızı Android için derleme ve Google Play'e yayınlama gibi konular ele alınır.

Android XR için Unity paketleri

Android XR için Unity uygulamaları oluşturmayı destekleyen iki paket vardır. Bu paketlerin her ikisi de Unity'nin XR Eklenti Yönetimi paketi aracılığıyla etkinleştirilebilen XR sağlayıcı eklentileridir. XR eklenti yöneticisi, XR eklentileri için yükleme, başlatma, ayarlar ve derleme desteğiyle ilgili yardım sunmak ve bunları yönetmek üzere Proje Ayarları'nı ekler. Uygulamanızın çalışma zamanında OpenXR özelliklerini yürütmesine izin vermek için projenin bu özellikleri eklenti yöneticisi aracılığıyla etkinleştirmesi gerekir.

Bu resimde, Unity'nin düzenleyicisi aracılığıyla bu özellik gruplarını etkinleştirebileceğiniz bir örnek gösterilmektedir.

Şekil 1. Unity XR Plug-in Management ekranı örneği.

Unity OpenXR Android XR

Unity OpenXR Android XR paketi, Unity'ye Android XR desteği ekleyen bir XR eklentisidir. Bu XR eklentisi, Unity için Android XR desteğinin çoğunu sağlar ve AR Foundation projeleri için Android XR cihaz desteğini etkinleştirir. AR Foundation, AR veya karma gerçeklik deneyimleri oluşturmak isteyen geliştiriciler için tasarlanmıştır. AR özellikleri için arayüz sağlar ancak kendisi herhangi bir özellik uygulamaz. Unity OpenXR Android XR paketi, uygulamayı sağlar. Bu paketi kullanmaya başlamak için Başlangıç kılavuzunu içeren paket kılavuzunu inceleyin.

Unity için Android XR Uzantıları

Unity için Android XR Uzantıları, Unity OpenXR Android XR paketini tamamlar ve sürükleyici deneyimler oluşturmanıza yardımcı olacak ek özellikler içerir. Tek başına veya Unity OpenXR Android XR paketiyle birlikte kullanılabilir.

Bu paketi kullanmaya başlamak için proje kurulum kılavuzumuzu veya Unity için Android XR Uzantıları'nı içe aktarmayla ilgili hızlı başlangıç kılavuzumuzu inceleyin.

Özellikler ve Uyumlulukla İlgili Dikkat Edilmesi Gereken Noktalar

Aşağıdaki tabloda Unity OpenXR: Android XR paketi ve Unity için Android XR Uzantıları paketi tarafından desteklenen özellikler açıklanmaktadır. Bu tablo, ihtiyacınız olan özellikleri içeren paketi ve uyumlulukla ilgili dikkat edilmesi gereken noktaları belirlemek için kullanılabilir.

Özellik

Unity OpenXR: Android XR özellik dizesi

Unity için Android XR Extensions özellik dizesi

Kullanım alanları ve beklenen davranış

AR Oturumu

Android XR: AR Oturumu

  • Özellik ayarları arasında Optimize Buffer Discards (Vulkan) yer alır.

Android XR (Uzantılar): Oturum Yönetimi

  • Özellik ayarları arasında Alt Örnekleme (Vulkan) ve URP SpaceWarp (Vulkan) bulunur.

Her iki paketteki özellikleri kullanmak için ilgili pakette AR oturumu özelliğini etkinleştirmeniz gerekir. Her iki özellik grubunu da aynı anda etkinleştirebilirsiniz. Özellikler, çakışmaları buna göre yönetir.

Cihaz takibi

Yok

Yok

Cihaz izleme, cihazın fiziksel alandaki konumunu ve dönüşünü izlemek için kullanılır. XR Origin GameObject, XROrigin bileşenini ve Kamera ile TrackedPoseDriver'ı içeren GameObject hiyerarşisini kullanarak cihaz takibini ve takip edilebilir öğeleri Unity'nin koordinat sistemine dönüştürme işlemini otomatik olarak gerçekleştirir.

Kamera

Android XR: AR Kamera

Yok

Bu özellik, ışık tahmini ve tam ekran geçiş desteği sunar.

Düzlem algılama

Android XR: AR düzlemi

Yok

Bu özellik, fiziksel ortamdaki düz yüzeyleri algılama ve izleme desteği sağlar.

Nesne izleme

Yok

Android XR (Uzantılar): Nesne Takibi

Bu özellik, fiziksel ortamdaki nesneleri algılama ve izleme desteği sunar ve bir referans nesne kitaplığıyla birlikte kullanılır.

Yüz takibi

Android XR: AR Face

  • Yalnızca XR_ANDROID_eye_tracking
  • Yüz takibi yok

Android XR: Yüz Takibi

  • XR_ANDROID_face_tracking

Avatar gözleri desteği, Android XR: AR Face özelliği aracılığıyla sağlanır. Android XR: Yüz Takibi özelliği aracılığıyla kullanıcıların yüz ifadelerine erişme Bu iki özellik birlikte kullanılabilir.

Işın dökümleri

Android XR: AR Raycast

  • Düzlem Sabitleyici
  • Derinlik sabitleyici

Yok

Bu özellik, ışın göndermenize ve bu ışın ile fiziksel ortamda algılanan düzlem izlenebilirleri veya derinlik izlenebilirleri arasındaki kesişimi hesaplamanıza olanak tanır.

Bağlantılar

Android XR: AR Anchor

Yok

AR Anchor, AR Foundation aracılığıyla uzamsal, düzlem ve kalıcı sabitleyicileri destekler.

Oklüzyon

Android XR: AR Occlusion

  • Ortam Derinliği

Yok

Örtme, uygulamanızdaki karma gerçeklik içeriğinin fiziksel ortamdaki nesnelerin arkasında gizli veya kısmen gizlenmiş olarak görünmesini sağlar.

Performans Metrikleri

Android XR Performans Metrikleri

Yok

Android XR cihazların performans metriklerine erişmek için bu özelliği kullanın.

Oluşturma Katmanları

Kompozisyon Katmanı Desteği (OpenXR Eklentisi ve XR Kompozisyon Katmanı gereklidir)

Android XR: Gerçek Görüntü Oluşturma Katmanı

  • XR_ANDROID_composition_layer_passthrough_mesh

Temel oluşturma katmanları (ör. dörtgen, silindir, projeksiyon) oluşturmak için Unity'nin Oluşturma Katmanı Desteği'ni kullanın. Android XR: Passthrough Composition Layer, Unity'nin GameObject'inden okunan özel bir mesh ile geçiş katmanı oluşturmak için kullanılabilir.

Foveated Rendering

Foveated Rendering (OpenXR eklentisi gereklidir)

  • Göz takipli foveated rendering'i destekler: Daha yüksek çözünürlüklü alan, kullanıcının baktığı yere odaklanır ve kullanıcı tarafından daha az fark edilir.

Foveation (Eski)

Foveated rendering, kullanıcının çevresel görüş alanındaki bölgelerin çözünürlüğünü düşürerek oluşturma işlemini hızlandırır. Unity'nin foveated rendering özelliği yalnızca URP ve Vulkan kullanan uygulamalarda desteklenir. Unity için Android XR Uzantıları'ndaki foveation (eski) özelliği, yerleşik oluşturma pipeline'ını ve OpenGL ES'yi de destekler. Mümkün olduğunda Unity'nin foveated rendering özelliğini kullanmanızı öneririz. Android XR için derleme yaparken hem URP hem de Vulkan'ın önerildiğini unutmayın.

Sınırsız Referans Alanı

Yok

Android XR: Sınırsız Referans Alanı

Bu özellik, XRInputSubsystem izleme kaynağı modunu Unbounded olarak ayarlar. Sınırsız, XRInputSubsystem'in tüm InputDevice'ları bir dünya sabitleyiciye göre izlediğini gösterir. Bu sabitleyici değişebilir.

Ortam Karışım Modu

Yok

Ortam Karıştırma Modu

Bu özellik, XR Ortam Karışım Modu'nu ayarlamanıza olanak tanır. Bu mod, geçiş etkinleştirildiğinde sanal görüntülerin gerçek dünya ortamıyla nasıl karışacağını kontrol eder.

Geospatial (VPS)

Yok

Android XR: Geospatial

XRGeospatialManager'ın Görsel Konumlandırma Sistemi (VPS) özelliklerine erişmesine, konum kullanılabilirliğini kontrol etmesine, coğrafi konum pozlarını hesaplamasına ve yüzey ile coğrafi konum sabitleri için düzlem izlemeyi yapılandırmasına olanak tanır.

Google Cloud Auth

Yok

Android XR: Google Cloud

Bulut destekli hizmetler için oturum kimlik doğrulama yapılandırma stratejileri (API anahtarı, anahtarsız ve kimlik doğrulama jetonu) sağlar.

Çok formatlı yüz

Yok

Android XR (Uzantılar): Çok formatlı yüz

Unity ARFace'i yapılandırılabilir, çok formatlı yüz takibi modlarıyla (XRFaceTrackerMode) genişletir.

Pil Durumu Göstergesi

Yok

Pil Durumu Göstergesi

XRBatteryStateDisplayFeature kullanarak bağlı kumandaların ve giriş yollarının çalışma zamanı pil durumunu ve şarj seviyesini sorgulamaya olanak tanır.

Global Passthrough Dimming

Android XR: AR Kamera

Yok

Unity'nin ARCameraFeature özelliğini kullanarak gerçek dünyadaki geçiş karartma seviyelerini sorgulamayı ve ayarlamayı sağlar.

Sistem Özellikleri Numaralandırması

Yok

Android XR: Sistem Özellikleri

XR_ANDROID_enumerate_system_extension_properties kullanarak çalışma zamanı uzantısı özelliklerini ve cihaz özelliklerini listeler.

Önerilen ayarlar

Yok

Android XR: Önerilen Ayarlar

XRRecommendedSettingsFeature.TryGetRecommendedSettings kullanarak çalışma zamanı ortamının lansman öncesi durumlarını (ortam karışım modu, geçiş opaklığı ve etkin giriş yöntemleri dahil) sorgulamaya olanak tanır.

Sınırlayıcı Kutu Algılama

Android XR: AR Sınırlayıcı Kutusu

Mekansal Varlıklar (Uzantılar): Sınırlayıcı Kutu

OpenXR Spatial Entities çerçevesini (SpatialBoundingBoxSubsystem) kullanarak fiziksel ortamdaki 3D nesneler için sınırlayıcı kutu algılama desteği sağlar.

Paylaşılabilir Bağlantılar

Yok

Uzamsal Varlıklar (Uzantılar): Paylaşılabilir Bağlantılar

ARShareableAnchorManager ve XRShareableAnchorSubsystem kullanarak yer işareti özelliklerini genişletir. Android XR: Geospatial ile kullanıldığında coğrafi yer işaretleri (TryAttachGeospatialAnchor) ve yüzey yer işaretleri (TryAttachSurfaceAnchorAsync) ekleme de buna dahildir.

Üç Boyutlu Kapsayıcı

Yok

Üç Boyutlu Kapsayıcı

Uygulama içeriğinin, Tam Ekran Alanı modunda sistem tarafından yönetilen bir 3D hacimsel kapsayıcıda oluşturulmasına olanak tanır. Kapsayıcı durumunu, sınırlarını ve görünürlüğünü sorgulamak ve istemek için XRSpatialContainerFeature üzerinde API'ler ve geri çağırma etkinlikleri bulunur.

Giriş ve etkileşim

Android XR, çok formatlı doğal girişi destekler.

El ve göz takibinin yanı sıra 6DoF kumandalar, fare ve fiziksel klavye gibi çevre birimleri de desteklenir. Bu nedenle, Android XR uygulamalarının ellerle etkileşimi desteklemesi beklenir ve tüm cihazların kumandalarla birlikte geleceği varsayılamaz.

Etkileşim Profilleri

Unity, XR uygulamanızın çeşitli XR cihazları ve platformlarıyla nasıl iletişim kurduğunu yönetmek için etkileşim profilini kullanır. Bu profiller, farklı donanım yapılandırmaları için beklenen giriş ve çıkışları belirleyerek çeşitli platformlarda uyumluluğu ve tutarlı işlevselliği destekler. Etkileşim profillerini etkinleştirerek XR uygulamanızın farklı cihazlarda doğru şekilde çalışmasını, tutarlı giriş eşlemesini sürdürmesini ve belirli XR özelliklerine erişmesini sağlayabilirsiniz. Etkileşim profili ayarlamak için:

  1. Project Settings (Proje Ayarları) penceresini açın (menü: Edit > Project Settings [Düzenle > Proje Ayarları]).
  2. Eklenti bölümünü genişletmek için XR Plug-in Management'ı (XR Eklenti Yönetimi) tıklayın (gerekirse).
  3. XR eklentileri listesinde OpenXR'ı seçin.
  4. Etkileşim Profilleri bölümünde + düğmesini seçerek profil ekleyin.
  5. Listeden eklenecek profili seçin.

El Etkileşimi

Ellerle etkileşim (XR_EXT_hand_interaction), OpenXR eklentisi tarafından sağlanır. Ellerle Etkileşim Profili'ni etkinleştirerek Unity Giriş Sistemi'nde <HandInteraction> cihaz düzenini gösterebilirsiniz. OpenXR tarafından tanımlanan dört işlem pozu ("sıkıştırma", "dokunma", "nişan alma" ve "tutma") tarafından desteklenen el girişi için bu etkileşim profilini kullanın. Daha fazla el etkileşimi veya el takibi işlevine ihtiyacınız varsa bu sayfadaki XR Hands bölümüne bakın.

Göz Bakışı Etkileşimi

Göz bakışı etkileşimi (XR_EXT_eye_gaze_interaction) OpenXR eklentisi tarafından sağlanır. Uzantının döndürdüğü göz pozu verilerini (konum ve dönüş) almak için bu düzeni kullanabilirsiniz. OpenXR Giriş kılavuzunda bakış etkileşimi hakkında daha fazla bilgi edinin.

Kumanda Etkileşimi

Android XR, 6DoF kumandalar için Oculus Touch Kumanda Profili'ni destekler. Bu profillerin her ikisi de OpenXR eklentisi tarafından sağlanır.

Fare Etkileşimi

Android XR Fare Etkileşim Profili (XR_ANDROID_mouse_interaction), Unity için Android XR Uzantıları tarafından sağlanır. Unity Giriş Sistemi'nde bir <AndroidXRMouse> cihaz düzeni sunar.

Avuç İçi Pozu Etkileşimi

OpenXR eklentisi, Unity Giriş Sistemi'nde <PalmPose> düzenini gösteren Avuç İçi Duruşu Etkileşimi'ni (XR_EXT_palm_pose) destekler. Avuç içi pozu, daha karmaşık kullanım alanları için el takibi yapan uzantılara veya paketlere alternatif olarak tasarlanmamıştır. Bunun yerine, avatar görselleri gibi uygulamaya özel görsel içerikleri yerleştirmek için kullanılabilir. Avuç içi pozu, avuç içi konumu ve yönünden oluşur.

XR Hands

XR Hands paketi, XR_EXT_hand_tracking ve XR_FB_hand_tracking_aim kullanarak el takibi verilerine erişmenizi sağlar ve el takibinden elde edilen el eklemi verilerini giriş pozlarına dönüştürmek için bir sarmalayıcı sunar. XR Hands paketinin sunduğu özellikleri kullanmak için El Takibi Alt Sistemi ve Meta El Takibi Amaç OpenXR özelliklerini etkinleştirin.

El takibini etkinleştirmeyi gösteren örnek XR eller paketi, daha ayrıntılı el pozu veya el eklemi verilerine ihtiyacınız olduğunda ya da özel hareketlerle çalışmanız gerektiğinde faydalı olabilir.

Daha fazla bilgi için Unity'nin projenizde XR Hands'i ayarlama ile ilgili belgelerine göz atın.

Yüz Takibi Güven Bölgeleri

XR_ANDROID_face_tracking uzantısı, üç yüz bölgesi için güven değerleri sağlar: sol üst, sağ üst ve alt yüz. 0 (güven yok) ile 1 (en yüksek güven) arasında değişen bu değerler, her bölge için yüz takibinin doğruluğunu gösterir.

Bu güven değerlerini kullanarak karışım şekillerini kademeli olarak devre dışı bırakabilir veya ilgili yüz bölgesine görsel filtreler (ör. bulanıklaştırma) uygulayabilirsiniz. Temel bir yüz için ilgili yüz bölgesindeki karışım şekillerini devre dışı bırakın.

"Yüzün alt kısmı" alanı; ağız, çene, yanak ve burun dahil olmak üzere gözlerin altındaki her şeyi temsil eder. Üstteki iki bölge, yüzün sol ve sağ taraflarındaki gözleri ve kaş bölgesini içerir.

Aşağıdaki C# kod snippet'i, bir Unity komut dosyasında güven verilerine nasıl erişileceğini ve bu verilerin nasıl kullanılacağını gösterir:

using UnityEngine;
using Google.XR.Extensions;

public class FaceTrackingConfidence : MonoBehaviour
{
    void Update()
    {
      if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.HasValue)
      {
        DebugTextTopCenter.text = "XrInstance hasn't been initialized.";
        return;
      }
      else if (!XRFaceTrackingFeature.IsFaceTrackingExtensionEnabled.Value)
      {
        DebugTextTopCenter.text = "XR_ANDROID_face_tracking is not enabled.";
        return;
      }

      for (int x = 0; x < _faceManager.Face.ConfidenceRegions.Length; x++)
      {
        switch (x)
        {
          case (int)XRFaceConfidenceRegion.Lower:
            regionText = "Bottom";
            break;
          case (int)XRFaceConfidenceRegion.LeftUpper:
            regionText = DebugTextConfidenceLeft;
            break;
          case (int)XRFaceConfidenceRegion.RightUpper:
            regionText = DebugTextConfidenceRight;
            break;
        }
    }
}

Daha fazla bilgi için Unity için Android XR Uzantıları belgelerini inceleyin.

Ellerin nasıl oluşturulacağını seçin

Android XR, elleri oluşturmak için iki yöntem destekler: el ağı ve prefab görselleştirici.

El ağı

Android XR Unity paketi, XR_ANDROID_hand_mesh extension'e erişim sağlayan bir El Mesh'i özelliği içerir. El ağı özelliği, kullanıcının elleri için ağlar sağlar. El ağı, bir elin geometrisini temsil eden üçgenlerin köşe noktalarını içerir. Bu özellik, kullanıcının ellerinin gerçek geometrisini temsil eden kişiselleştirilmiş bir ağ oluşturarak görselleştirme amacıyla kullanılmak üzere tasarlanmıştır.

XR Hands prefab'i

XR Hands paketinde, kullanıcının ellerinin bağlama uygun bir temsilini oluşturmak için tamamen donatılmış sol ve sağ elleri içeren Hands visualizer adlı bir örnek bulunur.

Sistem hareketleri

Android XR, kullanıcıların geri gitmek, başlatıcıyı açmak veya çalışan uygulamalara genel bakış elde etmek için menü açabileceği bir sistem hareketi içerir. Kullanıcı, ağırlıklı olarak kullandığı eliyle sıkıştırma hareketi yaparak bu sistem menüsünü etkinleştirebilir.

Kullanıcı, sistem gezinme menüsüyle etkileşimde bulunurken uygulama yalnızca baş takibi etkinliklerine yanıt verir. XR Hands paketi, kullanıcının bu sistem gezinme menüsüyle etkileşim kurma gibi belirli işlemleri ne zaman gerçekleştirdiğini algılayabilir. AimFlags, SystemGesture ve DominantHand için kontrol yapılması, bu sistem işleminin ne zaman gerçekleştirildiğini öğrenmenizi sağlar. AimFlags hakkında daha fazla bilgi için Unity'nin Enum MetaAimFlags belgelerine bakın.

XR Interaction Toolkit

XR Interaction Toolkit paketi, VR ve AR deneyimleri oluşturmak için üst düzey, bileşen tabanlı bir etkileşim sistemidir. Unity giriş etkinliklerinden 3D ve kullanıcı arayüzü etkileşimlerini kullanılabilir hale getiren bir çerçeve sunar. Dokunsal geribildirim, görsel geri bildirim ve hareket gibi etkileşim görevlerini destekler.


OpenXR™ ve OpenXR logosu, The Khronos Group Inc. şirketine ait ticari markalardır ve Çin, Avrupa Birliği, Japonya ve Birleşik Krallık'ta ticari marka olarak tescillidir.