Android XR için Unity ile geliştirme

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 son sürümlerindeki karma gerçeklik araçlarından ve özelliklerinden yararlanabilirsiniz. Bu kapsamda, hızlı bir başlangıç yapmanıza yardımcı olmak için XR Interaction Toolkit, AR Foundation ve OpenXR Plugin kullanan karma gerçeklik şablonları yer alır. Android XR için Unity ile uygulama geliştirirken Universal Render Pipeline'ı (URP) oluşturma ardışık düzeniniz, Vulkan'ı ise grafik API'niz olarak 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 Build Settings, Android için uygulamanızı oluşturma ve Google Play'e teslimat gibi konular ele alınır.

Android XR için Unity paketleri

Android XR için Unity uygulamaları oluşturma desteği sağlayan 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 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.

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 özellikleri kendisi uygulamaz. Uygulama, Unity OpenXR Android XR paketi tarafından sağlanır. Bu paketi kullanmaya başlamak için Başlangıç Kılavuzu'nu içeren paket kılavuzuna bakın.

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 düzlem dahil edildi. Bu sayede, Unity OpenXR Android XR paketine bağımlı olmaları gerekmiyor. 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 izlemeyi destekler ve referans nesne kitaplığıyla birlikte kullanılır.

Yüz izleme

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.

Işın yayınları

Android XR: AR Raycast

  • Plane Anchor
  • Derinlik sabitleyicisi

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

Her iki özellik de uzamsal ve düzlem tutturucuları destekler. Bir özelliği veya diğerini kullanabilirsiniz. Kalıcı bağlantı noktaları için Android XR (Uzantılar): Anchor'u kullanın. Gelecekte Android XR (Extensions): 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 bileşim katmanları (ör. dörtgen, silindir, projeksiyon) oluşturmak için Unity'nin Bileşim Katmanı Desteği'ni 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 unutmayın.

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.

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, profil eklemek için + düğmesini seçin.
  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'ı (El Etkileşimi Profili) etkinleştirerek Unity Input System'de (Unity Giriş Sistemi) 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. Daha fazla 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.

Denetleyici 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) Android XR Extensions for Unity 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'deki <PalmPose> düzenini kullanıma sunar. Avuç içi pozu, daha karmaşık kullanım alanları için 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ç içi pozu, hem avuç içi konumunu 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

Daha ayrıntılı el pozu veya el eklemi verilerine ihtiyacınız varsa ya da özel hareketlerle çalışmanız gerekiyorsa XR eller paketi faydalı olabilir.

Daha fazla bilgi için Unity'nin projenizde XR Hands'i ayarlama ile ilgili 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öşelerini 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 örnek, kullanıcının ellerinin bağlama uygun şekilde gösterilmesi için tamamen donatılmış sol ve sağ elleri içerir.

Sistem hareketleri

Android XR, kullanıcıların geri gitmesi, başlatıcıyı açması veya çalışan uygulamalara genel bakması için bir menü açmaya yönelik sistem hareketi içerir. 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ş izleme 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 geri bildirim, görsel geri bildirim ve hareket dahil olmak üzere 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 tescillidir.