HoloLens (1. Nesil) uygulamalarını HoloLens 2'ye HoloLens
Bu kılavuz, geliştiricilerin HoloLens (1. nesil) için mevcut unity uygulamasına sahip geliştiricilerin HoloLens 2 cihazına yönelik uygulamalarını bağlantı noktasına HoloLens uyarlanmış. HoloLens (1. nesil) Unity uygulamasını 2. nesil'e HoloLens adım vardır.
Aşağıdaki bölümlerde her aşamayla ilgili ayrıntılı bilgiler verilmiştir:
|1. Adım||2. Adım||3. Adım||4. Adım|
|En son araçları indirme||Unity Project||ARM için derleme||MRTK v2'ye geçiş|
Önkoşullar
Bağlantı noktası oluşturma işlemini başlatmadan önce uygulamalarınızı özgün durumuna bir anlık görüntü kaydetmek için kaynak denetimi kullanılması kesinlikle önerilir. Ayrıca, işlem sırasında denetim noktası durumları çeşitli zamanlarda kaydetmenizi öneririz. Ayrıca, taşınabilirlik işlemi sırasında yan yana karşılaştırmak için özgün uygulamanın başka bir Unity örneğine sahip olmak da yararlı olabilir.
Not
Bağlantı noktası yüklemeden önce, geliştirme için en son araçların yüklü Windows Mixed Reality olun. Çoğu mevcut HoloLens için bu, Visual Studio 2019'un en son sürümüne güncelleştirmeyi ve uygun Windows SDK'yı yüklemeyi içerir. Aşağıdaki içerik farklı Unity sürümlerine ve Karma Gerçeklik Araç Seti (MRTK) Sürüm 2'ye daha ayrıntılı olarak iner.
Daha fazla bilgi için bkz. Araçları yükleme.
Projeyi Unity'nin en son sürümüne geçirme
MRTK v2kullanıyorsanız, projenizi Unity 2020.3 LTS'yeyükseltmeden önce MRTK 2.7'ye güncelleştirmenizi öneririz. MRTK 2.7 Unity 2018, 2019 ve 2020'leri destekler, böylece Unity'i yükseltmeden önce bile projenizin Unity 2020 için hazır olduğundan emin olun. Şu anda projeniz içinde mevcut olan eklenti bağımlılıklarını değerlendirin ve bu URL'lerin ARM64 için yapılıp yapıla olmadığını belirleme. ARM64'e bağımlı bir eklentiye sahip projeler için, arm için uygulamalarınızı inşa etmek için devam etmek zorundayabilirsiniz.
Unity'de sahne/proje ayarlarını güncelleştirme
Unity 2020.3 LTS'yegüncelleştirdikten sonra, cihazda en iyi sonuçlar için Unity'de belirli ayarları güncelleştirmeniz önerilir. Bu ayarlar Unity için önerilen ayarlar altında ayrıntılı olarak açıklanmıştır.
Yeniden ifade etmek için. .NET betik arka uç Unity 2018'de kullanımdan kaldırılıyor ve Unity 2019'dan sonra kaldırılıyor. Geliştiricilerin projelerini IL2CPP'ye geçmeyi kesinlikle göz önünde bulundurları.
Not
IL2CPP betik arka uç Unity'den Visual Studio derleme sürelerine neden olabilir ve geliştiricilerin IL2CPP derleme sürelerini en iyi duruma getirmesi için geliştirici makinelerini ayarlaması gerekir. Ayrıca, özellikle büyük miktarda varlığa sahip Unity projeleri için (betik dosyaları hariç) veya sürekli değişen sahneler ve varlıklar için bir önbellek sunucusu ayarlamak yararlı olabilir. Unity, bir projeyi aken uygun varlıkları geliştirici makinesi üzerinde bir iç önbellek biçiminde depolar. Öğeler değiştirildiğinde yeniden içe aktarılmış ve yeniden işlenmeli. Bu işlem bir kez yapılabilir ve bir önbellek sunucusuna kaydedilebilir ve sonuç olarak zaman kazanmak için diğer geliştiricilerle paylaşılabilir. Bunun aksine, her geliştirici yeni değişiklikleri yerel olarak yeniden içeri aktarma işlemini işler.
Güncelleştirilmiş Unity sürümüne taşınmaya kadar olan tüm yeni değişiklikleri ele aldıktan sonra, geçerli uygulamalarınızı HoloLens (1. nesil) üzerinde derleme ve test edin. Bu, bir işlemeyi oluşturmak ve kaynak denetimine kaydetmek için iyi bir zaman.
ARM işlemcisi için bağımlılıkları/eklentileri derleme
HoloLens (1. nesil), uygulamaları bir x86 işlemcide yürütürken HoloLens 2 bir ARM işlemcisi kullanır. Mevcut HoloLens uygulamaların ARM'nin destek için üzerine taşınabilir olması gerekir. Daha önce belirtildiği gibi Unity 2018 LTS ARM32 uygulamalarının derlemeyi desteklerken Unity 2019 ve sonrası ARM32 ve ARM64 uygulamalarının derlemeyi destekler. Performansta önemli bir fark olduğu için ARM64 uygulamaları için geliştirme tercih edilir. Ancak bu, tüm eklenti bağımlılıklarını ARM64 için de gerektirir.
Uygulamanıza yönelik tüm DLL bağımlılıklarını gözden geçirme. Projeniz için artık gerekli olan bağımlılıkları kaldırmanızı öneririz. Gerekli kalan eklentiler için ilgili ARM32 veya ARM64 ikililerini Unity projenize alın.
İlgili DLL'leri aldıktan sonra Unity'den bir Visual Studio çözümü derler ve arm işlemcileri için uygulamanın derlenmiş olduğunu test etmek için Visual Studio'de ARM için bir AppX derle. Uygulamayı kaynak denetimi çözümünüzde işleme olarak kaydetmeniz önerilir.
Önemli
MrTK v1 kullanan uygulama, derleme hedefi ARM'ye HoloLens 2'de 2.000.000'de çalıştırabilirsiniz. Bu, tüm eklentilerinizin ARM sürümlerine sahip olduğundan emin olmaktır. Ancak, uygulamanıza el ve göz HoloLens gibi 2 özel işleve erişim sağ olmayacaktır. MRTK v1 ve MRTK v2, her iki sürümün de aynı projede olmasına olanak sağlayan farklı ad alanlarına sahip olur. Bu, bir sürümden diğer sürüme geçiş için yararlıdır.
MRTK sürüm 2'ye güncelleştirme
MRTK Sürüm 2, Unity'nin üzerinde hem HoloLens (1. nesil) hem de 2. nesil'HoloLens araç setidir. Aynı zamanda el etkileşimleri ve HoloLens izleme gibi tüm yeni HoloLens 2 özelliği eklenmiştir.
MRTK sürüm 2'nin kullanımı hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:
Geçiş için hazırlama
MRTK v2 için yeni *.unitypackagedosyalarını almadan önce, 1 envanterini almak) MRTK v1 ve 2 ile tümleştirilmiş özel olarak yapılmış tüm kodlar) giriş etkileşimleri veya UX bileşenleri için özel olarak yapılmış herhangi bir kodun envanterini almak önerilir. MRTK v2 alan bir karma gerçeklik geliştiricisi için en yaygın ve yaygın çakışma, giriş ve etkileşimleri içerir. MRTK v2giriş modelini okumaya ve anlamaya başlamaniz önerilir.
Son olarak, yeni MRTK v2 bir betik modelinden ve sahnedeki yönetici nesnelerinden yapılandırma ve hizmet sağlayıcısı mimarisine geçiş yaptı. Bunun sonucunda daha temiz bir sahne hiyerarşisi ve mimari modeli elde edersiniz ancak yeni yapılandırma profillerini anlamak için öğrenme eğrisi gerekir. Uygulamanın ihtiyaçlarına göre ayar yapmak üzere önemli ayarlar ve profiller hakkında bilgi sahibi olmaya başlamak için Karma Gerçeklik Araç Seti Yapılandırma Kılavuzu'nı okuyun.
Projeyi geri
MRTK v2'ye aktardıktansonra Unity projenizin büyük olasılıkla derleyiciyle ilgili birçok hatası vardır. Bunların nedeni genellikle yeni ad alanı yapısı ve yeni bileşen adlarıdır. betiklerinizi yeni ad alanları ve bileşenlerle değiştirerek bu hataları çözmeye devam edin.
HTK/MRTK ile MRTK v2 arasındaki belirli API farkları hakkında bilgi için MRTK Sürüm 2 wiki'sini kullanma kılavuzuna bakın.
En iyi uygulamalar
- MRTK standart gölgelendiricisi kullanmayı tercih eder.
- Bir defada tek bir yeni değişiklik türü üzerinde çalışma (örneğin: IMixedRealityFocusHandleriçin IFocusable).
- Her değişiklik sonrasında test ve kaynak denetimi kullanma.
- Mümkün olduğunda varsayılan MRTK UX 'i (düğmeler, sayfalar ve diğer) kullanın.
- MRTK dosyalarını doğrudan değiştirmekten kaçınma; MRTK bileşenleri çevresinde sarmalayıcılar oluşturun.
- Bu eylem gelecekteki MRTK alımını ve güncelleştirmelerini kolaylaştırıyor.
- MRTK'da sağlanan örnek sahneleri, özellikle HandInteractionExamples.scene'i gözden geçirin ve keşfedin.
- Dörtlüler, harmanlamacılar ve TextMeshPro metniyle tuval tabanlı kullanıcı arabirimini yeniden oluşturma.
- Derinlik Arabelleği Paylaşımını etkinleştirin veya odak noktasını ayarlayın; daha iyi performans için 16 bit derinlik arabelleği kullanmayı tercih eder. İşleme derinliğini de sağlamak için renk işleme sırasında emin olur. Unity genellikle saydam ve metin oyunu nesneleri için derinlik yazmaz.
- Tek Geçiş örnekli işleme yolu ayarlayın.
- MRTK HoloLens 2 yapılandırma profilini kullanma
Uygulamanızı test etme
MRTK Sürüm 2'de el etkileşimlerinin benzetimini doğrudan Unity'de gerçekebilir ve el etkileşimleri ve göz izleme için yeni API'lerle geliştirebilirsiniz. Kullanıcı HoloLens deneyimi oluşturmak için HoloLens 2 cihazı gereklidir. Daha iyi anlamak için belgeler ve araçlar üzerinde çalışmaya başlamaniz teşvik edildi. MRTK v2, HoloLens (1. nesil) ve havadan dokunma yoluyla seçme gibi geleneksel giriş modellerinde geliştirmeyi destekler (1. nesil) HoloLens test edilebilir.
HoloLens 2 için etkileşim modelinizi güncelleştirme
Dikkat
Projeniz XR'den herhangi birini kullanıyorsa. WSA API'leri, gelecek Unity yayınlarında Unity'nin yeni XR giriş API'leri için aşamalı olarak çıkar. Burada XR giriş API 'lerihakkında daha fazla bilgi edinebilirsiniz.
uygulamanız HoloLens 2 ' ye aktarıldıktan ve bir kez alındıktan sonra, etkileşim modelinizi ve hologram tasarım yerleştirmelerinin güncelleştirilmesini göz önünde bulundurmaya hazır olursunuz. HoloLens (1. gen) ' de, uygulamanızın büyük olasılıkla, görünüm alanına sığacak şekilde, hologramlar sayesinde bir canze ve tamamlama etkileşimi modeli vardır.
HoloLens 2 ' ye en uygun şekilde uygulama tasarımınızı güncelleştirme adımları:
mrtk bileşenleri:, mrtk v2eklediyseniz, daha önce tasarlanan ve en iyi duruma getirilmiş çeşitli bileşenler/betikler vardır HoloLens 2.
Etkileşim modeli: etkileşim modelinizi güncelleştirmeyi düşünün. Çoğu senaryoda, Gaze 'dan geçiş yapmanızı ve uygulamalı ' a geçmeyi öneririz. Hologramlar sayesinde genellikle en yüksek kollu erişim elde edin, bu sonuçlara geçiş yapmak, en fazla etkileşim işaret ışınları ve hareketleri almak.
Hologram yerleşimi: uygulamalı bir etkileşim modeline geçtikten sonra, elleriniz ile yakın etkileşim kullanma hareketlerini kullanarak, bazı hologragramı doğrudan bunlarla etkileşime geçmeyi göz önünde bulundurun. doğrudan elde veya etkileşim kurmak için önerilen hologram türleri, yakalayıp ve hologram incelenirken görünümün HoloLens 2 alanına sığan küçük hedef menülere, denetimlerle, düğmelere ve daha küçük hologramlar türlerine sahiptir.
Her uygulama ve senaryo farklıdır ve geri bildirim ve devam eden dersleri temel alınarak tasarım kılavuzunu iyileştirmeye ve nakletmeye devam edeceğiz.
Uygulamaları x86 'dan ARM 'ye taşıma hakkında ek uyarılar ve dersleri
Düz iletme Unity uygulamaları basittir çünkü bir ARM uygulama paketi oluşturabilir veya paketin çalışması için doğrudan cihaza dağıtabilirsiniz. Bazı Unity yerel eklentileri, bazı geliştirme güçlükleri sunabilir. bu nedenle, tüm Unity yerel eklentilerini Visual Studio 2019 ' ye yükseltmeniz ve ardından ARM için yeniden oluşturmanız gerekir.
Bir uygulama Unity AudioKinetic Wwise eklentisini kullandı ve bu Unity sürümünde bir UWP ARM eklentisi yoktu. Bu, ses özelliklerinin ARM 'de çalıştırmak için önemli bir çaba oluşmasına neden oldu. Geliştirme planlarınız için gereken tüm eklentilerin Unity 'de yüklü ve kullanılabilir olduğundan emin olun.
bazı durumlarda, uygulama gerekli eklentileri için bir UWP/ARM eklentisi mevcut olmayabilir, bu da uygulamanın bağlantı noktası oluşturma ve HoloLens 2 ' de çalıştırma yeteneğini engeller. Sorunu çözmek ve ARM desteği sağlamak için eklenti sağlayıcınızla iletişim kurun.
gölgelendiriciler içindeki minfloat (ve min16float, minınt, vb. gibi çeşitler) HoloLens 2 ' de HoloLens (1. gen) üzerinde farklı davranabilir. Özellikle, bu, en azından belirtilen bit sayısının kullanılacağını garanti eder. Intel/NVIDIA GPU 'Larda, minfloat büyük ölçüde 32 bit olarak kabul edilir. ARM 'de, belirtilen bitlerin sayısı gerçekte öğesine bağlıdır. bu, uygulamada bu sayıların HoloLens (1. gen) HoloLens 2 ' de daha az duyarlık veya aralık içerebilir.
_Asm yönergeler ARM üzerinde çalışmıyor gibi görünmeyeceği anlamına gelir. Bu, _asm yönergelerinin kullanıldığı tüm kodların yeniden yazılması gerekir.
, Xmmintrin. h, emmintrin. h, tmmintrin. h ve ımintrin. h gibi çeşitli üstbilgiler ARM 'de kullanılamadığından ARM, SıMD yönerge kümesini desteklemez.
ARM 'de gölgelendirici derleyicisi, gölgelendirici yüklendikten sonra ilk çizim çağrısı sırasında, gölgelendirici yükleme zamanında değil, gölgelendirici değişti. kaç tane gölgelendiricinin derlenmesi gerektiğine bağlı olarak, gölgelendiricilerin üzerindeki etki, HoloLens 2 ile HoloLens (1. gen) üzerinde farklı bir şekilde nasıl işlenebilmelidir, paketlenebilmelidir.