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:
- Unity OpenXR: Android XR ve Unity için Android XR uzantıları dahil XR sağlayıcı eklentileri
- Uygulama düzeyinde ek özellikler eklemek için XR destek paketleri
- Unity XR teknoloji yığınını ve XR alt sistemlerini açıklayan bir XR mimari kılavuzu
- XR projesi oluşturma
- XR uygulamaları oluşturma ve çalıştırma
- Universal Render Pipeline, stereo görüntü işleme, foveated görüntü işleme, çoklu görünüm görüntü işleme bölgeleri ve VR kare süresi dahil olmak üzere XR grafik kılavuzu
- Ses uzamsallaştırıcılar desteği de dahil olmak üzere XR sesli rehberlik
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.
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ış |
|---|---|---|---|
Android XR: AR Oturumu
|
Android XR (Uzantılar): Oturum Yönetimi
|
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. |
|
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. |
|
Android XR: AR Kamera |
Yok |
Bu özellik, ışık tahmini ve tam ekran geçiş desteği sunar. |
|
Android XR: AR düzlemi |
Yok |
Bu özellik, fiziksel ortamdaki düz yüzeyleri algılama ve izleme desteği sağlar. |
|
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. |
|
Android XR: AR Face
|
Android XR: Yüz Takibi
|
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. |
|
Android XR: AR Raycast
|
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. |
|
Android XR: AR Anchor |
Yok |
AR Anchor, AR Foundation aracılığıyla uzamsal, düzlem ve kalıcı sabitleyicileri destekler. |
|
Android XR: AR Occlusion
|
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. |
Kompozisyon Katmanı Desteği (OpenXR Eklentisi ve XR Kompozisyon Katmanı gereklidir) |
Android XR: Gerçek Görüntü Oluşturma Katmanı
|
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 (OpenXR eklentisi gereklidir)
|
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. |
|
Yok |
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. |
||
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. |
|
Yok |
|
||
Yok |
Bulut destekli hizmetler için oturum kimlik doğrulama yapılandırma stratejileri (API anahtarı, anahtarsız ve kimlik doğrulama jetonu) sağlar. |
||
Yok |
Unity ARFace'i yapılandırılabilir, çok formatlı yüz takibi modlarıyla ( |
||
Yok |
|
||
Android XR: AR Kamera |
Yok |
Unity'nin ARCameraFeature özelliğini kullanarak gerçek dünyadaki geçiş karartma seviyelerini sorgulamayı ve ayarlamayı sağlar. |
|
Yok |
|
||
Yok |
|
||
Android XR: AR Sınırlayıcı Kutusu |
OpenXR Spatial Entities çerçevesini ( |
||
Yok |
|
||
Yok |
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 |
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:
- Project Settings (Proje Ayarları) penceresini açın (menü: Edit > Project Settings [Düzenle > Proje Ayarları]).
- Eklenti bölümünü genişletmek için XR Plug-in Management'ı (XR Eklenti Yönetimi) tıklayın (gerekirse).
- XR eklentileri listesinde OpenXR'ı seçin.
- Etkileşim Profilleri bölümünde + düğmesini seçerek profil ekleyin.
- 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.
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.