Android XR için Unity ile geliştirme

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

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

Aşağıdaki konular 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
      • Android XR Extensions for Unity
      • Ö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ı oluştururken Unity 6'nın en yeni sürümlerindeki karma gerçeklik araçlarından ve özelliklerinden yararlanabilirsiniz. Bu paket, hızlı bir başlangıç yapmanıza yardımcı olmak için XR Interaction Toolkit, AR Foundation ve OpenXR Plugin'i kullanan karma gerçeklik şablonlarını içerir. Android XR için Unity ile uygulama geliştirirken, oluşturma ardışık düzeniniz olarak Universal Render Pipeline (URP) ve grafik API'niz olarak Vulkan'ı kullanmanızı öneririz. Bu özellikler, yalnızca Vulkan ile desteklenen Unity'nin grafik özelliklerinden bazılarını kullanmanıza olanak tanır. Bu ayarları yapılandırma 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 aşağıdaki konularla ilgili bilgiler içerir:

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

Unity, Android için geliştirme, oluşturma ve yayınlama konusunda ayrıntılı belgeler sunar. Bu belgelerde Unity'de Android izinleri, Android derleme ayarları, Android için uygulamanızı oluşturma ve Google Play'e teslim etme 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 Plug-in Management paketi aracılığıyla etkinleştirilebilen XR sağlayıcı eklentileridir. XR eklenti yöneticisi, XR eklentilerinin yüklenmesi, başlatılması, ayarları ve derleme desteğiyle ilgili yardım sunmak ve bunları yönetmek için Proje Ayarları'nı ekler. Uygulamanızın çalışma zamanında OpenXR özelliklerini yürütmesine izin vermek için projede bu özelliklerin eklenti yöneticisi aracılığıyla etkinleştirilmesi gerekir.

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

Şekil 1. Unity XR eklenti yönetimi ekranı örneği.

Unity OpenXR Android XR

Unity OpenXR Android XR paketi, Unity'ye Android XR desteği eklemek için kullanılan bir XR eklentisidir. Bu XR eklentisi, Unity için Android XR desteğinin büyük bir bölümünü sağlar ve AR Foundation projelerinde 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ılavuzu'nu içeren paket kılavuzunu inceleyin.

Android XR Extensions for Unity

Android XR Extensions for Unity, 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 kurulumu kılavuzumuzu veya Android XR Extensions for Unity'yi içe aktarmaya yönelik 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 Android XR Extensions for Unity paketi tarafından desteklenen özellikler açıklanmaktadır. Bu tablo, ihtiyacınız olan özellikleri hangi paketin içerdiğini ve uyumlulukla ilgili dikkat edilmesi gereken noktaları belirlemek için kullanılabilir.

Özellik

Unity OpenXR: Android XR özellik dizesi

Android XR Extensions for Unity özellik dizesi

Kullanım alanları ve beklenen davranış

AR Oturumu

Android XR: AR Oturumu

  • Özellik ayarları arasında Optimize Buffer Discards (Vulkan) bulunur.

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

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

Herhangi bir paketteki özellikleri kullanmak için ilgili paketin AR oturumu özelliğini etkinleştirmeniz gerekir. Her iki özellik setini de aynı anda etkinleştirebilirsiniz. Çakışmalar, özellikler tarafından uygun şekilde ele alınır.

Cihaz izleme

Yok

Yok

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

Kamera

Android XR: AR Camera

Yok

Bu özellik, ışık tahmini ve tam ekran geçişi için destek sağlar.

Düzlem algılama

Android XR: AR Plane

Android XR (Uzantılar): Uçak

Bu iki özellik aynıdır. Birini veya diğerini kullanabilirsiniz. Android XR (Uzantılar): Geliştiricilerin Android XR (Uzantılar): Nesne İzleme ve kalıcı bağlantı noktaları özelliklerini kullanabilmesi için Unity OpenXR Android XR paketine bağımlı olmaması amacıyla Plane dahil edilmiştir. Gelecekte Android XR (Extensions): Plane, Android XR: AR Anchor lehine kaldırılacak.

Nesne izleme

Yok

Android XR (Uzantılar): Nesne İzleme

Bu özellik, fiziksel ortamdaki nesneleri algılayıp izlemek için destek sunar ve 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 İzleme

  • 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 İzleme özelliğiyle kullanıcının yüz ifadelerine erişme Bu iki özellik birlikte kullanılabilir.

Ray casts

Android XR: AR Raycast

  • Plane Anchor
  • Derinlik sabitleme noktası

Yok

Bu özellik, bir ışın yansıtmanıza ve bu ışın ile fiziksel ortamda algılanan düzlem izlenebilir öğeleri veya derinlik izlenebilir öğeleri arasındaki kesişimi hesaplamanıza olanak tanır.

Bağlantılar

Android XR: AR Anchor

Android XR (Uzantılar): Anchor

  • Özellik ayarları arasında kalıcılık da yer alır.

Her iki özellik de uzamsal ve düzlem bağlantılarını destekler. Bu özelliklerden birini kullanabilirsiniz. Kalıcı bağlantı noktaları için Android XR (Uzantılar): Anchor'ı kullanın. Gelecekte Android XR (Uzantılar): Anchor kaldırılacak ve tüm Anchor özellikleri Android XR: AR Anchor'da yer alacak.

Örtme (Occlusion)

Android XR: AR Occlusion

  • Ortam Derinliği

Yok

Örtme, uygulamanızdaki karma gerçeklik içeriklerinin fiziksel ortamdaki nesnelerin arkasında gizli veya kısmen kapalı 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.

Bileşim Katmanları

Bileşim Katmanı Desteği (OpenXR eklentisi ve XR Bileşim Katmanı gereklidir)

Android XR: Passthrough Composition Layer

  • XR_ANDROID_composition_layer_passthrough_mesh

Temel kompozisyon katmanları (ör. dörtgen, silindir, projeksiyon) oluşturmak için Unity'nin Composition Layer Support özelliğini kullanın. Android XR: Passthrough Composition Layer, Unity'nin GameObject'inden okuyarak özel bir ağ ile geçiş katmanı oluşturmak için kullanılabilir.

Foveated Rendering

Foveated Rendering (OpenXR eklentisi gereklidir)

  • Gözle takip edilen foveated rendering'i destekler: Daha yüksek çözünürlüklü alan, kullanıcının baktığı yere ortalanır ve bu sayede kullanıcı için daha az belirgin hale gelir.

Foveation (Eski)

Foveated rendering, kullanıcının çevresel görüş alanındaki bölgelerin çözünürlüğünü düşürerek oluşturma işleminin hızlanmasını sağlar. 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 İşlem Hattı 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 hatırlatırız.

Sınırsız Referans Alanı (Unbounded Reference Space)

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ı değişebilen bir dünya tutturucusuyla ilişkili olarak izlediğini gösterir.

Ortam Karıştırma Modu

Yok

Ortam Karıştırma Modu

Bu özellik, XR Ortam Karıştırma 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ıştırılacağı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 ve coğrafi uzamsal pozları hesaplamasına olanak tanır.

Google Cloud Auth

Yok

Android XR: Google Cloud

Bulut destekli hizmetler için oturum kimlik doğrulaması 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

Yapılandırılabilir, çok formatlı yüz izleme yöntemleriyle Unity ARFace'i genişletir (XRFaceTrackerMode).

Pil Durumu Göstergesi

Yok

Pil Durumu Göstergesi

XRBatteryStateDisplayFeature kullanarak bağlı kontrol cihazlarının ve giriş yollarının çalışma zamanı pil durumunun ve şarj seviyesinin sorgulanmasına olanak tanır.

Global Passthrough Dimming

Android XR: AR Camera

Yok

Unity'nin ARCameraFeature'ını kullanarak gerçek dünyadaki geçişli karartma seviyelerini sorgulama ve ayarlama olanağı 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 numaralandırır.

Önerilen Ayarlar

Yok

Android XR: Önerilen Ayarlar

XRRecommendedSettingsFeature.TryGetRecommendedSettings kullanarak lansman öncesi çalışma zamanı ortamı durumlarının (ortam karıştırma modu, geçiş opaklığı ve etkin giriş biçimleri dahil) sorgulanmasına olanak tanır.

Giriş ve etkileşim

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

El ve göz takibinin yanı sıra 6DoF denetleyiciler, fare ve fiziksel klavye gibi çevre birimleri de desteklenir. Bu nedenle, Android XR uygulamalarının el etkileşimini desteklemesi beklenir ve tüm cihazların kontrol cihazlarıyla 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 korumasını ve belirli XR özelliklerine erişmesini sağlayabilirsiniz. Etkileşim profili ayarlamak için:

  1. Proje Ayarları penceresini açın (menü: Düzenle > Proje Ayarları).
  2. Eklenti bölümünü genişletmek için XR Plug-in Management'ı 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

El etkileşimi (XR_EXT_hand_interaction), OpenXR Plugin tarafından sağlanır. <HandInteraction> cihaz düzenini Hand Interaction Profile'ı etkinleştirerek Unity Input System'de gösterebilirsiniz. OpenXR tarafından tanımlanan dört işlem pozu ("pinch", "poke", "aim" ve "grip") ile desteklenen el girişi için bu etkileşim profilini kullanın. Ek el etkileşimi veya el izleme işlevine ihtiyacınız varsa bu sayfadaki XR Hands bölümüne bakın.

Gözle Etkileşim

Gözle bakma etkileşimi (XR_EXT_eye_gaze_interaction) OpenXR Plugin tarafından sağlanır ve bu düzeni, uzantının döndürdüğü göz pozu verilerini (konum ve döndürme) almak için kullanabilirsiniz. OpenXR Giriş Kılavuzu'nda gözle etkileşim hakkında daha fazla bilgi edinin.

Kontrol cihazı etkileşimi

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

Fare Etkileşimi

Android XR Mouse Interaction Profile (XR_ANDROID_mouse_interaction), Unity için Android XR Uzantıları tarafından sağlanır. Unity Input System'de <AndroidXRMouse> cihaz düzenini kullanıma sunar.

Palm Pose Interaction

OpenXR eklentisi, Palm Pose Interaction (XR_EXT_palm_pose) için destek sağlar. Bu özellik, Unity Input System'daki <PalmPose> düzenini kullanıma sunar. Avuç içi pozu, daha karmaşık kullanım alanlarında el takibi gerçekleştiren uzantıların veya paketlerin alternatifi olarak tasarlanmamıştır. Bunun yerine, avatar görselleri gibi uygulamaya özel görsel içerikleri yerleştirmek için kullanılabilir. Avuç pozu, hem avuç pozisyonunu hem de yönünü içerir.

XR Hands

XR Hands paketi, XR_EXT_hand_tracking ve XR_FB_hand_tracking_aim kullanarak el takibi verilerine erişmenize olanak tanır ve el takibinden elde edilen el eklemi verilerini giriş pozlarına dönüştürmek için bir sarmalayıcı sağlar. XR Hands paketinin sunduğu özellikleri kullanmak için Hand Tracking Subsystem ve Meta Hand Tracking Aim OpenXR özelliklerini etkinleştirin.

El izlemeyi etkinleştirme örneği 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 bakı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 (hiç 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 devre dışı bırakma için, ilgili yüz bölgesindeki şekil karışımlarını devre dışı bırakın.

"Alt yüz" alanı, ağız, çene, yanak ve burun dahil olmak üzere gözlerin altındaki her şeyi ifade 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'inde, Unity komut dosyasında güven verilerine nasıl erişileceği ve bu verilerin nasıl kullanılacağı gösterilmektedir:

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 Android XR Extensions for Unity belgelerine bakın.

Elleri oluşturma yöntemini 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 erişimi sağlayan bir El Ağı ö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, görselleştirme için kullanıcının ellerinin gerçek geometrisini temsil eden kişiselleştirilmiş bir ağ sağlamak amacıyla tasarlanmıştır.

XR Hands prefab'i

XR Hands paketi, Hands visualizer adlı bir örnek içerir. Bu örnekte, kullanıcının ellerinin bağlama uygun bir şekilde gösterilmesi için tamamen donatılmış sol ve sağ eller bulunur.

Sistem hareketleri

Android XR'da, kullanıcıların geri gitmesi, başlatıcıyı açması veya çalışan uygulamalara genel bakması için bir menü açmasını sağlayan bir sistem hareketi bulunur. Kullanıcı, baskın elini kullanarak bu sistem menüsünü etkinleştirebilir.

Kullanıcı, sistem gezinme menüsüyle etkileşimde bulunduğunda 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 gerçekleştirdiğini algılayabilir. AimFlags, SystemGesture ve DominantHand için kontrol yaptığınızda bu sistem işleminin ne zaman gerçekleştirildiğini öğrenebilirsiniz. AimFlags hakkında daha fazla bilgi için Unity'nin Enum MetaAimFlags dokümanına bakın.

XR Interaction Toolkit

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


OpenXR™ ve OpenXR logosu, The Khronos Group Inc. şirketinin ticari markalarıdır ve Çin, Avrupa Birliği, Japonya ve Birleşik Krallık'ta ticari marka olarak tescil edilmiştir.