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
- 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ı oluştururken Unity 6'nın en yeni 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'i kullanan karma gerçeklik şablonları da 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:
- Unity OpenXR: Android XR ve Unity için Android XR Uzantıları dahil XR sağlayıcı eklentileri
- Ek uygulama düzeyinde özellikler eklemek için XR destek paketleri
- Unity XR teknoloji yığını ve XR alt sistemlerini açıklayan bir XR mimarisi kılavuzu
- XR projesi oluşturma
- XR uygulamaları oluşturma ve çalıştırma
- Universal Render Pipeline, stereo oluşturma, foveated oluşturma, çoklu görüntü oluşturma bölgeleri ve VR çerçeve zamanlaması dahil XR grafik kılavuzu
- Uzamsal ses desteği de dahil olmak üzere XR sesli rehberlik
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 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 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 özelliklerinin arayüzünü 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ılavuzuna bakın.
Unity için Android XR Uzantıları
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ış |
---|---|---|---|
Android XR: AR Oturumu
|
Android XR (Uzantılar): Oturum Yönetimi
|
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. |
|
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. |
|
Android XR: AR Camera |
Yok |
Bu özellik, ışık tahmini ve tam ekran geçişi için destek sağlar. |
|
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ı noktası özelliklerini kullanabilmesi için Unity OpenXR Android XR paketine bağımlı olmaması amacıyla Plane dahil edilmiştir. Gelecekte Android XR (Uzantılar): Plane, Android XR: AR Anchor lehine kaldırılacak. |
|
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. |
|
Android XR: AR Face
|
Android XR: Yüz İzleme
|
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. |
|
Android XR: AR Raycast
|
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. |
|
Android XR: AR Anchor |
Android XR (Uzantılar): Anchor
|
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'yi (Uzantılar): Anchor 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
|
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 Katmanı Desteği (OpenXR eklentisi ve XR Bileşim Katmanı gereklidir) |
Android XR: Passthrough Composition Layer
|
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 (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ş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. |
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:
- Proje Ayarları penceresini açın (menü: Düzenle > Proje Ayarları).
- Eklenti bölümünü genişletmek için XR Plug-in Management'ı tıklayın (gerekirse).
- XR eklentileri listesinde OpenXR'ı seçin.
- Etkileşim Profilleri bölümünde, profil eklemek için + düğmesini seçin.
- 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. 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ç 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.
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.
Yüz İzleme 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 izlemenin doğruluğunu gösterir.
Bu güven değerlerini kullanarak şekil karıştırmaları 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 ş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ındaki 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öş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'da, kullanıcıların geri gitmesi, başlatıcıyı açması veya çalışan uygulamalara genel bakması için bir menü açmaya yarayan 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 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.