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
- Bunu koddan ayarlarsanız Unity'nin
Color.clear
MRTK, kamera sistemi profilindeki yapılandırmaya göre belirli kamera ayarlarını otomatik olarak işler.
Ad Alanı: Microsoft.MixedReality.Toolkit.CameraSystem
Tür: MixedRealityCameraSystem
Kameranın opaklığını denetlemek için MixedRealityCamera sisteminin bir IsOpaque özelliği vardır.
CoreServices.CameraSystem.IsOpaque;
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.
Unity projenize Karma Gerçeklik Araç Seti 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ği Dü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 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:
Oda ölçeği veya ayakta deneyimler
Not
HL2 için oluşturuyorsanız, göz düzeyinde bir deneyim oluşturmanızı veya sahnenizin zeminini anlamak için Scene Understanding'i kullanmanızı öneririz.
Unity için MRTK'den MixedRealityPlayspace sınıfını kullanın ve Hedef Ölçek'i Oda veya Ayakta olarak ayarlayın:

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.Floor);
Unity'nin XRRig'iyle çalış.

- 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ğinde bir 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.
Oturarak deneyimler
Unity için MRTK'den MixedRealityPlayspace sınıfını kullanın ve Hedef Ölçeği Oturtu olarak ayarlayın:

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);
Unity'nin XRRig'iyle çalış.

- 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.
XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);
Ad Alanı: UnityEngine.XR
Tür: InputTracking
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:
InputTracking.Recenter();
Oturarak ölçeklendirilmiş bir deneyim oluşturuyorsanız XR'yi arayarak unity'nin dünya kaynağını kullanıcının geçerli baş konumundan daha güncelleyebilirsiniz. InputTracking.Recenter yöntemi.
Kamera arka planını ayarlama
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.
Unity uygulamanızın Windows'a derinlik arabelleği sağlayıp sağlamayacağını ayarlamak için:
- 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.
Unity uygulamanızın Windows'a derinlik arabelleği sağlayıp sağlamayacağını ayarlamak için:
- 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'ni bulun 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.
Kamera yenileniyor
Oturarak ölçeklendirilmiş bir deneyim oluşturuyorsanız XR'yi arayarak unity'nin dünya kaynağını kullanıcının geçerli baş konumundan daha güncelleyebilirsiniz. Eski XR'de InputTracking.Recenter yöntemi veya XR SDK'sında XRInputSubsystem.TryRecenter yöntemi.
Işınlanma
Bu özellik genellikle VR deneyimleri için ayrılmıştı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.
MRTK'nin şu anda yeniden oluşturma modu için yardımcıları yoktur. Daha fazla bilgi için lütfen diğer sekmelerden birine bakın.
Sonraki Geliştirme Denetim Noktası
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:
İsterseniz Karma Gerçeklik platform özelliklerine ve API'lerine atlayabiliriz:
İstediğiniz zaman Unity geliştirme denetim noktalarına geri dönebilirsiniz.
Ayrıca bkz.