Karma gerçeklik başlığı taktığınızda, holografik dünyanızın merkezi haline gelir. Unity Kamera bileşeni stereoskopik işlemeyi otomatik olarak işler ve baş hareketinizi ve döndürmenizi izler. Ancak görsel kaliteyi ve hologram kararlılığını tamamen iyileştirmek için aşağıda açıklanan kamera ayarlarını yapmalısınız.
HoloLens ve VR çevreleyici kulaklıklar
Unity Kamera bileşenindeki varsayılan ayarlar, gerçek bir dünyaya sahip olmadığından skybox benzeri bir arka plana ihtiyaç duyan geleneksel 3B uygulamalar içindir.
Çevreleyici bir mikrofonlu kulaklıkla çalışırken, kullanıcının gördüğü her şeyi işlersiniz ve bu nedenle büyük olasılıkla skybox'ı saklamak istersiniz.
Ancak HoloLens gibi holografik bir mikrofonlu kulaklık üzerinde çalışırken gerçek dünya, kameranın işledtiği her şeyin arkasında görünmelidir. Kamera arka planını Skybox dokusu yerine saydam olacak şekilde ayarlayın (HoloLens'te siyah saydam olarak işlenir):
Hiyerarşi panelinde Ana Kamera'ya tıklayın
Denetçi panelinde Kamera bileşenini bulun ve Bayrakları Temizle açılan menüsünü Skybox'tan Düz Renk olarak değiştirin
Arka plan renk seçicisini seçin ve RGBA değerlerini (0, 0, 0, 0) olarak değiştirin
Ad Alanı:UnityEngine.XR.WSA Tür:HolographicSettings
HolographicSettings.IsDisplayOpaque öğesini denetleyerek çalışma zamanında mikrofonlu kulaklığın çevreleyici mi yoksa holografik mi olduğunu belirlemek için betik kodunu kullanabilirsiniz.
Kamera kurulumu
Ne tür bir deneyim geliştirirseniz geliştirin, Ana Kamera her zaman cihazınızın kafaya takılı ekranına bağlı birincil stereo işleme bileşenidir. Kullanıcının başlangıç konumunu (X: 0, Y: 0, Z: 0) olarak hayal ederseniz uygulamanızı yerleştirmek daha kolay olacaktır. Ana Kamera kullanıcının kafasının hareketini izlediğinden, ana kameranın başlangıç konumu ayarlanarak kullanıcının başlangıç konumu ayarlanabilir.
Yapmanız gereken merkezi seçim, HoloLens veya VR çevreleyici kulaklıklar için geliştirme yapmanızdır. Bunu aldıktan sonra, hangi kurulum bölümü geçerliyse bölümüne atlayın.
HoloLens kamera kurulumu
HoloLens uygulamalarında, sahne ortamına kilitlemek istediğiniz nesneler için yer işaretleri kullanmanız gerekir. Kararlılığı en üst düzeye çıkarmak ve birden çok odada yer işaretleri oluşturmak için ilişkisiz alan kullanmanızı öneririz.
MRTK, oyun alanının ve kameranın konumunu otomatik olarak ele almalıdır, ancak iki kez kontrol etmek iyi olur:
Hiyerarşi panelinden MixedRealityPlayspace GameObject öğesini genişletin ve Ana Kamera alt nesnesini bulun
Denetçi panelinde Dönüştür bileşenini bulun ve Konum değerini (X: 0, Y: 0, Z: 0) olarak değiştirin
XRInputSubsystem'da izleme kaynağı modunuzu ayarlayın. Alt sistemi aldıktan sonra TrySetTrackingOriginMode öğesini çağırın:
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Device);
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Unbounded); // Recommendation for OpenXR
Tutturucular ve ARKit/ARCore ile daha iyi çalışan HoloLens uygulamaları için ARSession kullanabilirsiniz.
Önemli
AR Oturumu ve ilgili özelliklerin AR Foundation'ın yüklü olması gerekir.
Kamera değişikliklerini ARSession kullanmadan el ile uygulamak da mümkündür:
Hiyerarşi panelinde Ana Kamera'ya tıklayın
Denetçi panelinde Dönüştür bileşenini bulun ve Konum değerini (X: 0, Y: 0, Z: 0) olarak değiştirin
Unity'de Denetçi bölmesinde kamera
Ana Kameraya TrackedPoseDriver Ekleme
Hiyerarşi panelinde Ana Kamera'ya tıklayın
Denetçi panelinde Dönüştür bileşenini bulun ve Konum değerini (X: 0, Y: 0, Z: 0) olarak değiştirin
Unity'de Denetçi bölmesinde kamera
Windows Mağazası Oynatıcı Ayarları'nın Diğer Ayarlar bölümüne gidin
Unity'nin eski sürümlerinde Windows Holographic olarak listelenebilen cihaz olarak Windows Karma Gerçeklik'ı seçin
Desteklenen Sanal Gerçeklik'i seçin
Ana Kamera nesnesi otomatik olarak kamera olarak etiketlendiğinden Unity tüm hareket ve çeviriyi destekler.
Not
Bu ayarların uygulamanızın her sahnesinde Kamera'ya uygulanması gerekir.
Varsayılan olarak, Unity'de yeni bir sahne oluşturduğunuzda, Hiyerarşide Kamera bileşenini içeren bir Ana Kamera GameObject içerir, ancak ayarlar düzgün uygulanmamış olabilir.
VR kamera kurulumu
Windows Karma Gerçeklik, yalnızca yönlendirme ve oturma ölçeğindeki uygulamalardan oda ölçeğindeki uygulamalara kadar çok çeşitli deneyim ölçeklerinde uygulamaları destekler. HoloLens'te daha ileri gidebilir ve kullanıcıların 5 metreden fazla yürümesini sağlayan, bir binanın tüm katını ve ötesini keşfeden dünya ölçeğinde uygulamalar oluşturabilirsiniz.
Unity'de karma gerçeklik deneyimi oluşturmanın ilk adımı, uygulamanızın hangi deneyimi hedeflediğini belirlemektir:
Windows Mağazası Oynatıcı Ayarları'nın Diğer Ayarlar bölümüne gidin
Unity'nin eski sürümlerinde Windows Holographic olarak listelenebilen cihaz olarak Windows Karma Gerçeklik'ı seçin
Desteklenen Sanal Gerçeklik'i seçin
Ana Kamera nesnesi otomatik olarak kamera olarak etiketlendiğinden Unity tüm hareket ve çeviriyi destekler.
Not
Bu ayarların uygulamanızın her sahnesinde Kamera'ya uygulanması gerekir.
Varsayılan olarak, Unity'de yeni bir sahne oluşturduğunuzda, Hiyerarşide Kamera bileşenini içeren bir Ana Kamera GameObject içerir, ancak aşağıdaki ayarlar düzgün uygulanmaz.
Ad Alanı:UnityEngine.XR Tür:XRDevice
Ayakta veya oda ölçeğindebir deneyim için içeriği zemine göre yerleştirmeniz gerekir. İlk çalıştırma sırasında ayarlanan, kullanıcının tanımlanmış kat düzeyinde çıkış noktasını ve isteğe bağlı oda sınırını temsil eden uzamsal aşamayı kullanarak kullanıcının zemini hakkında neden olursunuz.
Unity'nin kat düzeyinde dünya koordinat sistemiyle çalıştığından emin olmak için Unity'nin RoomScale izleme alanı türünü kullandığını ayarlayabilir ve test edebilirsiniz:
if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
// RoomScale mode was set successfully. App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
// RoomScale mode was not set successfully. App cannot make assumptions about where the floor plane is.
}
SetTrackingSpaceType true döndürürse Unity, dünya koordinat sistemini başvuru aşamasını izlemek için başarıyla değiştirmiştir.
SetTrackingSpaceType false döndürürse, unity büyük olasılıkla kullanıcı kendi ortamında bir kat ayarlamadığından başvuru aşaması çerçevesine geçemedi. Yanlış dönüş değeri yaygın olmasa da, aşama farklı bir odada ayarlanırsa ve cihaz kullanıcı yeni bir aşama ayarlamadan geçerli odaya taşınırsa oluşabilir.
Uygulamanız RoomScale izleme alanı türünü başarıyla ayarladıktan sonra y=0 düzleminde yer alan içerik yerde görünür. 0, 0, 0'daki çıkış noktası, kullanıcının oda kurulumu sırasında durduğu yerde, kurulum sırasında karşılaştıkları ileri yönü temsil eden -Z olacaktır.
Windows Mağazası Oynatıcı Ayarları'nın Diğer Ayarlar bölümüne gidin
Unity'nin eski sürümlerinde Windows Holographic olarak listelenebilen cihaz olarak Windows Karma Gerçeklik'ı seçin
Desteklenen Sanal Gerçeklik'i seçin
Ana Kamera nesnesi otomatik olarak kamera olarak etiketlendiğinden Unity tüm hareket ve çeviriyi destekler.
Not
Bu ayarların uygulamanızın her sahnesinde Kamera'ya uygulanması gerekir.
Varsayılan olarak, Unity'de yeni bir sahne oluşturduğunuzda, Hiyerarşide Kamera bileşenini içeren bir Ana Kamera GameObject içerir, ancak aşağıdaki ayarlar düzgün uygulanmaz.
Ad Alanı:UnityEngine.XR Tür:XRDevice
Yalnızca yönlendirme veya oturma ölçeği deneyimi oluşturmak için Unity'yi sabit izleme alanı türüne ayarlamanız gerekir. Sabit izleme alanı Unity'nin dünya koordinat sistemini sabit referans çerçevesini izleyecek şekilde ayarlar. sabit izleme modunda, kamera varsayılan konumunun hemen önünde düzenleyiciye yerleştirilen içerik (ileri -Z) uygulama başlatıldığında kullanıcının önünde görünür.
360 derecelik video görüntüleyici (konumsal baş güncelleştirmelerinin illüzyonu mahvedeceği) gibi yalnızca yönlendirme deneyimi için XR ayarlayabilirsiniz. InputTracking.disablePositionalTracking to true:
InputTracking.disablePositionalTracking = true;
Oturarak ölçeklendirilen bir deneyim için, kullanıcının daha sonra yerleşik çıkış noktasını daha yeni açmasına izin vermek için XR'yi çağırabilirsiniz. InputTracking.Recenter yöntemi:
MRTK kullanıyorsanız kameranın arka planı otomatik olarak yapılandırılır ve yönetilir. XR SDK veya Eski WSA projeleri için HoloLens'te kameranın arka planını düz siyah olarak ayarlamanızı ve vr için skybox'ı saklamanızı öneririz.
Birden çok kamera kullanma
Sahnede birden çok Kamera bileşeni olduğunda, Unity hangi GameObject'in MainCamera etiketine sahip olduğuna bağlı olarak stereoskopik işleme için hangi kameranın kullanılacağını bilir. Eski XR'de, baş izlemeyi eşitlemek için de bu etiketi kullanır. XR SDK'da baş izleme, kameraya eklenmiş bir TrackedPoseDriver betiği tarafından yönlendirilir.
Derinlik arabelleklerini paylaşma
Uygulamanızın derinlik arabelleğinin Windows ile paylaşılması, uygulamanız için oluşturduğunuz mikrofonlu kulaklığın türüne bağlı olarak hologram kararlılığında iki yükseltmeden birini sağlar:
VR çevreleyici mikrofonlu kulaklıklar , derinlik arabelleği sağlandığında konumsal reprojeksiyonla ilgilenebilir ve hologramlarınızı hem konum hem de yönlendirmede yanlış tahmin için ayarlayabilir.
HoloLens mikrofonlu kulaklıkların birkaç farklı yöntemi vardır. HoloLens 1, derinlik arabelleği sağlandığında otomatik olarak bir odak noktası seçer ve en çok içeriği kesişen düzlem boyunca hologram kararlılığını en iyi duruma getirecektir. HoloLens 2, Derinlik LSR'lerini kullanarak içeriği dengeler (bkz. Açıklamalar).
MRTK'nin yapılandırma iletişim kutusu hem XR SDK'sı hem de eski WSA için derinlik arabelleği ayarlarını ayarlamaya çalışır, ancak bu sekmeleri denetlemek ve Unity'de ayarları doğrulamak iyi olur.
Proje Ayarlarını>Düzenle>XR Eklenti Yönetimi'ne gidin ve menü öğesinin genişletildiğinden emin olun.
Windows Karma Gerçeklik veya OpenXR olmak üzere seçtiğiniz XR çalışma zamanına karşılık gelen menü öğesine tıklayın. Ayrıca, hem Windows Tek Başına hem de Evrensel Windows Platformu sekmeleri kullanılabildiğinden doğru derleme platformunun seçildiğinden emin olun.
Etkinleştirmek ve yapılandırmak için:
OpenXR için Derinlik Gönderim Modu açılan listesinden bir derinlik biçimi veya "Yok" seçeneğini belirleyin.
Windows Karma Gerçeklik için Paylaşılan Derinlik AraBelleği onay kutusunu işaretleyin veya işaretini kaldırın. Ardından Derinlik Arabellek Biçimi açılan listesinden bir biçim seçin.
Not
İyileştirilmiş performans için genellikle 16 bit derinlik arabellekleri kullanılması önerilir. Ancak, 16 bit derinlik biçimi kullanılıyorsa, Unity bu ayarda kalıp arabelleği oluşturmadığından, kalıp arabelleği gerekli efektler (bazı Unity UI kaydırma panelleri gibi) çalışmaz. 24 bit derinlik biçiminin tersine seçilmesi, uç nokta grafik platformunda varsa genel olarak 8 bitlik bir kalıp arabelleği oluşturur.
Proje Ayarlarını>Düzenle>Oynatıcı> Evrensel Windows Platformu sekmesi>XR Ayarları'na gidin.
Windows Karma Gerçeklik SDK öğesini genişletin.
Derinlik Arabellek Paylaşımını Etkinleştir onay kutusunu işaretleyin veya işaretini kaldırın. Derinlik AraBelleği Paylaşımını Etkinleştir seçeneği yeni projelerde varsayılan olarak denetlenmiştir, ancak eski projelerde varsayılan olarak işaretlenmemiş olabilir.
Derinlik arabelleği, Windows ana kameradaki Unity'de ayarladığınız yakın ve uzak düzlemleri kullanarak derinlik arabelleğinizdeki normalleştirilmiş piksel başına derinlik değerlerini metre cinsinden uzaklıklara doğru eşleyebileceğinden görsel kalitesini iyileştirebilir. İşleme geçişiniz derinlik değerlerini tipik yollarla işlerse, genellikle burada sorun olmaz, ancak var olan renk piksellerine kadar gösterirken derinlik arabelleğine yazan yarı saydam işleme geçişleri yeniden üretme işlemini karıştırabilir. İşleme geçişlerinizin son derinlik piksellerinizin çoğunu yanlış derinlik değerleriyle bırakacağını biliyorsanız, "Derinlik Arabelleği Paylaşımını Etkinleştir" seçeneğinin işaretini kaldırarak daha iyi görsel kalitesi elde edebilirsiniz.
Not
İyileştirilmiş performans için genellikle 16 bit derinlik arabellekleri kullanılması önerilir. Ancak, 16 bit derinlik biçimi kullanılıyorsa, Unity bu ayarda kalıp arabelleği oluşturmadığından, kalıp arabelleği gerekli efektler (bazı Unity UI kaydırma panelleri gibi) çalışmaz. 24 bit derinlik biçiminin tersine seçilmesi, uç nokta grafik platformunda varsa genel olarak 8 bitlik bir kalıp arabelleği oluşturur.
Kırpma düzlemlerini kullanma
İçeriğin kullanıcıya çok yakın işlenmesi karma gerçeklikte rahatsız edici olabilir. Kamera bileşeninde yakın ve uzak klip düzlemlerini ayarlayabilirsiniz.
Hiyerarşi panelinde Ana Kamera'ya tıklayın
Denetçi panelinde Kamera bileşeni Kırpma Düzlemleri'nibulun ve Yakın metin kutusunu 0,3 yerine 0,85 olarak değiştirin. Daha da yakın işlenen içerik, kullanıcı rahatsızlığını doğurabilir ve işleme uzaklığı yönergelerine göre kaçınılmalıdır.
MRTK, ifade edilmiş eller ve kumandalar arasında otomatik olarak çalışan bir in-box teleport sistemi sağlar.
MRTK'nın ışınlanma uygulamasını kullanmanızı öneririz.
MRTK kullanmamayı seçerseniz Unity, XR Etkileşim Araç Seti'nde bir ışınlama uygulaması sağlar.
Kendi uygulamanızı seçerseniz, kamerayı doğrudan taşıyabileceğinizi aklınızda bulundurmanız iyi olur. Unity'nin baş izleme için kamera denetiminden dolayı, kameraya hiyerarşide bir ebeveyn vermeniz ve bunun yerine bu GameObject'i taşımanız gerekir. Bu, MRTK'nın Playspace'inin eşdeğeridir.
MRTK'nın ışınlanma uygulamasını kullanmanızı öneririz.
Kendi uygulamanızı seçerseniz, kamerayı doğrudan taşıyabileceğinizi aklınızda bulundurmanız iyi olur. Unity'nin baş izleme için kamera denetiminden dolayı, kameraya hiyerarşide bir ebeveyn vermeniz ve bunun yerine bu GameObject'i taşımanız gerekir. Bu, MRTK'nın Playspace'inin eşdeğeridir.
Yeniden oluşturma modları
Hem HoloLens hem de çevreleyici mikrofonlu kulaklıklar, fotonlar yayıldığında kullanıcının gerçek baş konumuyla ilgili herhangi bir yanlışlık için ayarlama yapmak için uygulamanızın işledtiği her çerçeveyi yeniden oluşturur.
Varsayılan olarak:
Uygulama belirli bir çerçeve için derinlik arabelleği sağlıyorsa VR çevreleyici mikrofonlu kulaklıklar konumsal yeniden oluşturma işlemini üstlenir. Çevreleyici kulaklıklar, hologramlarınızı hem konum hem de yönlendirmede yanlış kullanım için de ayarlar. Derinlik arabelleği sağlanmazsa sistem yalnızca yönlendirmedeki yanlış beyanları düzeltecektir.
HoloLens 2 gibi holografik kulaklıklar , uygulamanın derinlik arabelleği sağlamasına bakılmaksızın konumsal yeniden üretme işlemini üstlenir. İşleme genellikle gerçek dünya tarafından sağlanan kararlı bir arka plan ile seyrek olduğundan HoloLens'te derinlik arabellekleri olmadan konumsal yeniden üretim mümkündür.
Sunduğumuz Unity geliştirme yolculuğunu takip ediyorsanız MRTK temel yapı taşları keşfetmenin tam ortasındasınız demektir. Buradan sonraki yapı taşına devam edebilirsiniz: