Karma gerçeklik başlığı taktığınızda bu, 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 kalitesini ve hologram kararlılığını tamamen iyileştirmek için aşağıda açıklanan kamera ayarlarını yapmalısınız.
HoloLens ile VR çevreleyici başlıklar karşılaştırması
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 kulaklıkla çalışırken, kullanıcının gördüğü her şeyi işliyorsunuz ve bu nedenle büyük olasılıkla skybox'ı saklamak isteyeceksiniz.
Ancak HoloLens gibi holografik bir mikrofonlu kulaklık üzerinde çalışırken gerçek dünya, kameranın işlediğinde 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 Skybox'tan Bayrakları Temizle açılan listesini 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ı:Microsoft.MixedReality.Toolkit.CameraSystem Type:MixedRealityCameraSystem
Kameranın opaklığını kontrol etmek için MixedRealityCamera sisteminin bir IsOpaque özelliği vardır.
CoreServices.CameraSystem.IsOpaque;
Ad Alanı:UnityEngine.XR Tür:XRDisplaySubsystem
Etkin bir şekilde çalışan XRDisplaySubsystem üzerinde displayOpaque öğesini denetleyerek çalışma zamanında kulaklığın çevreleyici mi yoksa holografik mi olduğunu belirlemek için betik kodunu kullanabilirsiniz.
Ad Alanı:UnityEngine.XR.WSA Tür:HolographicSettings
HolographicSettings.IsDisplayOpaque öğesini denetleyerek çalışma zamanında 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 monte 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 için mi yoksa VR çevreleyici başlıklar için mi geliştirme yaptığınızdır. Bunu yaptı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 sınırsız alan kullanmanızı öneririz.
Unity projenizde Karma Gerçeklik Toolkit eklemek ve otomatik olarak yapılandırmak için bu adım adım öğreticiyi izleyin. Unity için MRTK'nin MixedRealityPlayspace sınıfıyla doğrudan çalışmak ve Hedef ÖlçeğiDünya olarak ayarlamak da mümkündür:
MRTK, oyun alanının ve kameranın konumunu otomatik olarak ele almalıdır, ancak iki kez kontrol etmek iyidir:
Hiyerarşipanelinden MixedRealityPlayspace GameObject öğesini genişletin ve Ana Kamera alt nesnesini bulun
Denetçi panelinde Dönüştür bileşenini bulun ve Konum'u(X: 0, Y: 0, Z: 0) olarak değiştirin
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Device);
xrInputSubsystem.TrySetTrackingOriginMode(TrackingOriginModeFlags.Unbounded); // Recommendation for OpenXR
Yer işaretleri ve ARKit/ARCore ile daha iyi çalışan HoloLens uygulamaları için ARSession kullanabilirsiniz.
Önemli
AR Oturumu ve ilgili özellikler için 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'u(X: 0, Y: 0, Z: 0) olarak değiştirin
Unity'de Denetçi bölmesinde kamera
Ana KamerayatrackedPoseDriver ekleme
Hiyerarşi panelinde Ana Kamera'ya tıklayın
Denetçi panelinde Dönüştür bileşenini bulun ve Konum'u(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 Mixed Reality seçin
Desteklenen Sanal Gerçeklik'i seçin
Ana Kamera nesnesi otomatik olarak kamera olarak etiketlendiğinden Unity tüm hareketi 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 Mixed Reality, yalnızca yönlendirmeli ve yerleşik ölçekli 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:
HL2 için oluşturuyorsanız, göz düzeyinde bir deneyim oluşturmanızı öneririz veya sahnenizin zeminini anlamak için Scene Understanding'i kullanmayı göz önünde bulundurun.
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 Mixed Reality seçin
Desteklenen Sanal Gerçeklik'i seçin
Ana Kamera nesnesi otomatik olarak kamera olarak etiketlendiğinden Unity tüm hareketi 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 ölçek veya oda ölçeği deneyimi için içeriği zemine göre yerleştirmeniz gerekir. İlk çalıştırma sırasında ayarlanan, kullanıcının tanımlı kat düzeyi çıkış noktasını ve isteğe bağlı oda sınırını temsil eden uzamsal aşamayı kullanarak kullanıcının zeminini gerekçeli olarak belirlersiniz.
Unity'nin kat düzeyinde kendi dünya koordinat sistemiyle çalıştığından emin olmak için Unity'nin RoomScale izleme alanı türünü kullanıp kullanmadığı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 referans aşama çerçevesini 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 zemin ayarlamadığından başvuru aşama çerçevesine geçememiştir. Yanlış dönüş değeri yaygın olmasa da, aşama farklı bir odada ayarlanırsa ve kullanıcı yeni bir aşama ayarlamadan cihaz geçerli odaya taşınırsa bu durum 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 yerdedir ve -Z kurulum sırasında karşılaştıkları ileri yönü temsil eder.
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 Mixed Reality seçin
Desteklenen Sanal Gerçeklik'i seçin
Ana Kamera nesnesi otomatik olarak kamera olarak etiketlendiğinden Unity tüm hareketi 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ğinde bir deneyim 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, düzenleyiciye kameranın varsayılan konumunun hemen önüne yerleştirilen içerik (ileri -Z) uygulama başlatıldığında kullanıcının önünde görünür.
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 skybox'ı VR için 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, kafa izlemeyi eşitlemek için de bu etiketi kullanır. XR SDK'sında baş izleme, kameraya eklenmiş bir TrackedPoseDriver betiği tarafından yönlendirilir.
Derinlik arabelleklerini paylaşma
Uygulamanızın derinlik arabelleğinin Windows'a her karede paylaşılması, uygulamanız için oluşturduğunuz kulaklık türüne bağlı olarak hologram kararlılığında iki artış sağlar:
VR çevreleyici mikrofonlu kulaklıklar , derinlik arabelleği sağlandığında konumsal reprojeksiyon ile ilgilenebilir ve hologramlarınızı hem konum hem de yönlendirmede yanlış kullanım için ayarlayabilir.
HoloLens 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ğe kesişen düzlem boyunca hologram kararlılığını en iyi duruma getirecektir. HoloLens 2, Derinlik LSR kullanarak içeriği kararlı hale getirecektir (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'deki ayarları doğrulamak iyi bir işlemdir.
Proje Ayarlarını>Düzenle>XR Eklenti Yönetimi'ne gidin ve menü öğesinin genişletildiğinden emin olun.
seçtiğiniz XR çalışma zamanına karşılık gelen menü öğesine (Windows Mixed Reality veya OpenXR) 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 listesinde bir derinlik biçimi veya "Yok" seçin.
Windows Mixed Reality 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
Geliş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 tersinin seçilmesi, uç nokta grafik platformunda varsa genellikle 8 bitlik bir kalıp arabelleği oluşturur.
Proje Ayarlarını>Düzenle Yürütücü>>Evrensel Windows Platformu sekmesi>XR Ayarları'na gidin.
Windows Mixed Reality SDK öğesini genişletin.
Derinlik Arabelleği 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 işaretlidir, 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şleyebildiğinden görsel kalitesini iyileştirebilir. İşleme geçişleriniz derinlik değerlerini tipik yollarla işliyorsa, genellikle burada sorun olmaz, ancak var olan renk piksellerinde gösterilirken derinlik arabelleğine yazan yarı saydam işleme geçişleri yeniden üretmenin kafasını 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 kalite elde edebilirsiniz.
Not
Geliş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 tersinin seçilmesi, uç nokta grafik platformunda varsa genellikle 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 klips düzlemlerini ayarlayabilirsiniz.
Hiyerarşi panelinde Ana Kamera'ya tıklayın
Denetçi panelinde Kamera bileşeni Kırpma Düzlemleri'ni bulun ve Yakın metin kutusunu 0,3 yerine 0,85 olarak değiştirin. Daha da yakın bir şekilde işlenen içerik kullanıcı rahatsızlığı doğurabilir ve işleme uzaklığı yönergelerine göre kaçınılmalıdır.
MRTK, eklemli eller ve denetleyiciler arasında otomatik olarak çalışan bir yerleşik 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 o 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 o 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 asıl baş konumunun yanlış anlaşılmasını sağlamak için uygulamanızın işleyip her çerçeveyi yeniden oluşturur.
Varsayılan olarak:
Vr çevreleyici mikrofonlu kulaklıklar , uygulama belirli bir çerçeve için derinlik arabelleği sağlıyorsa konumsal yeniden oluşturma işlemini üstlenir. Çevreleyici kulaklıklar ayrıca hologramlarınızı hem konum hem de yönlendirmede yanlış kullanım için ayarlar. Derinlik arabelleği sağlanmazsa sistem yalnızca yönlendirmedeki yanlış ifadeleri düzeltecektir.
HoloLens 2 gibi holografik kulaklıklar, uygulamanın derinlik arabelleği sağlamasına bakılmaksızın konumsal yeniden oluşturma işlemini üstlenir. HoloLens'te derinlik arabellekleri olmadan konumsal yeniden oluşturma mümkündür, ancak işleme genellikle gerçek dünya tarafından sağlanan kararlı bir arka planla seyrek olarak oluşturulduğundan.
Örneğin, katı gövde kilitli içerikle (örneğin, 360 derecelik video içeriği) yalnızca yönlendirme deneyimi oluşturuyorsanız, reprojection modunu yalnızca ReprojectionMode.OrientationOnly olarak ayarlayarak açıkça yönlendirme olarak ayarlayabilirsiniz.
Ortaya koyduğ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: