HoloLens (1. Nesil) uygulamalarını HoloLens 2'ye taşıma
Bu kılavuz, HoloLens (1. nesil) için mevcut unity uygulamasıyla geliştiricilerin uygulamalarını HoloLens 2 cihazına taşımasına yardımcı olmak için uyarlanmıştır. HoloLens (1. nesil) Unity uygulamasını HoloLens 2'ye taşımanın dört temel adımı vardır.
Aşağıdaki bölümlerde her aşama için ayrıntılı bilgiler yer almaktadır:
Adım 1 | 2. Adım | 3. Adım | 4. Adım |
---|---|---|---|
En son araçları indirme | Unity Projesini Güncelleştirme | ARM için derleme | MRTK v2'ye geçiş |
Önkoşullar
Taşıma işlemine başlamadan önce uygulamanızın özgün durumunu kaydetmek için kaynak denetimini kullanmanızı kesinlikle öneririz. Ayrıca işlem sırasında denetim noktası durumlarını çeşitli zamanlarda kaydetmenizi öneririz. Taşıma işlemi sırasında yan yana karşılaştırma yapmak için özgün uygulamanın başka bir örneğinin Unity'de açılması yararlı olabilir.
Not
Taşımadan önce, Windows Karma Gerçeklik geliştirme için en son araçların yüklü olduğundan emin olun. Mevcut HoloLens geliştiricilerinin çoğu için bu, Visual Studio 2019'un en son sürümüne güncelleştirme ve uygun Windows SDK'sını yükleme işlemini içerir. Aşağıdaki içerik, farklı Unity sürümlerine ve Karma Gerçeklik Toolkit (MRTK) Sürüm 2'ye daha ayrıntılı bir şekilde göz atıyor.
Daha fazla bilgi için bkz . Araçları yükleme.
Projenizi Unity'nin en son sürümüne geçirme
MRTK v2 kullanıyorsanız, projenizi Unity 2020.3 LTS'ye yükseltmeden önce MRTK 2.7'ye güncelleştirmenizi öneririz. MRTK 2.7 Unity 2018, 2019 ve 2020'yi destekleyerek Unity'yi yükseltmeden önce bile projenizin Unity 2020 için hazır olduğundan emin olmanıza olanak tanır. Projenizde mevcut olan eklenti bağımlılıklarını değerlendirin ve bu DLL'lerin ARM64 için oluşturulup oluşturulamayacağını belirleyin. Sabit ARM'ye bağımlı eklentiye sahip projeler için uygulamanızı ARM için oluşturmaya devam etmeniz gerekebilir.
Unity'de sahne/proje ayarlarını güncelleştirme
Unity 2020.3 LTS'ye güncelleştirdikten sonra cihazdaki en iyi sonuçlar için Unity'deki belirli ayarları güncelleştirmenizi öneririz. Bu ayarlar Unity için önerilen ayarlar altında ayrıntılı olarak özetlenmiştir.
Tekrar etmek gerekirse, .NET betik arka ucu Unity 2018'de kullanım dışı bırakılıyor ve Unity 2019'dan itibaren kaldırılıyor. Projenizi IL2CPP'ye geçirmeyi kesinlikle düşünmelisiniz.
Not
IL2CPP betik arka ucu Unity'den Visual Studio'ya kadar daha uzun derleme sürelerine neden olabilir. Geliştiriciler, IL2CPP derleme sürelerini iyileştirmek için geliştirici makinelerini ayarlamalıdır. Özellikle çok miktarda varlığı olan Unity projeleri (betik dosyaları hariç) veya sürekli değişen sahneler ve varlıklar için önbellek sunucusu ayarlamanın da avantajı olabilir. Bir projeyi açarken Unity, uygun varlıkları geliştirici makinesinde bir iç önbellek biçiminde depolar. Öğeler değiştirildiğinde yeniden içeri aktarılmalı ve yeniden işlenmelidir. Bu işlem bir kez yapılabilir, bir önbellek sunucusuna kaydedilebilir ve ardından yeni değişikliklerin yerel olarak yeniden içeri aktarılmasını işleyen her geliştiricinin aksine zaman kazanmak için diğer geliştiricilerle paylaşılabilir.
Güncelleştirilmiş Unity sürümüne geçmenin neden olduğu hataya neden olan değişiklikleri ele aldıktan sonra holoLens'te (1. nesil) geçerli uygulamalarınızı derleyin ve test edin. Bu, bir işlemeyi oluşturmak ve kaynak denetimine kaydetmek için uygun bir zamandır.
ARM işlemcisi için bağımlılıkları/eklentileri derleme
HoloLens (1. nesil) uygulamaları x86 işlemci üzerinde yürütür; HoloLens 2 bir ARM işlemci kullanır. ARM'yi desteklemek için mevcut HoloLens uygulamalarının üzerine taşıması gerekir. Daha önce belirtildiği gibi Unity 2018 LTS ARM32 uygulamalarını derlemeyi desteklerken Unity 2019 ve üzeri, ARM32 ve ARM64 uygulamalarını derlemeyi destekler. Arm64 uygulamaları için geliştirme tercih edilir çünkü performansta önemli bir fark vardır. Ancak bu, tüm eklenti bağımlılıklarının DA ARM64 için derlenmesini gerektirir.
Uygulamanızdaki tüm DLL bağımlılıklarını gözden geçirin. Projeniz için artık gerekli olmayan bağımlılıkları kaldırmanızı öneririz. Gerekli kalan eklentiler için ilgili ARM32 veya ARM64 ikili dosyalarını Unity projenize alın.
İlgili DLL'leri aldıktan sonra Unity'den bir Visual Studio çözümü derleyin ve uygulamanızın ARM işlemcileri için derlendiğini doğrulamak üzere Visual Studio'da bir ARM için AppX derleyin. Uygulamayı kaynak denetimi çözümünüzde işleme olarak kaydetmenizi öneririz.
Önemli
MRTK v1 kullanan uygulamalar, diğer tüm gereksinimlerin karşılandığı varsayılarak derleme hedefi ARM olarak değiştirildikten sonra HoloLens 2'de çalıştırılabilir. Bu, tüm eklentilerinizin ARM sürümlerine sahip olduğunuzdan emin olmak içerir. Ancak uygulamanız, el ve göz izleme gibi HoloLens 2'ye özgü işlevlere erişemez. MRTK v1 ve MRTK v2, her iki sürümün de aynı projede olmasını sağlayan farklı ad alanlarına sahiptir ve bu da bir sürümden diğerine geçiş için kullanışlıdır.
MRTK sürüm 2'ye güncelleştirme
MRTK Sürüm 2 , Unity'nin hem HoloLens (1. nesil) hem de HoloLens 2'yi destekleyen yeni araç setidir. Ayrıca el etkileşimleri ve göz izleme gibi tüm yeni HoloLens 2 özelliklerinin eklendiği yerdir.
MRTK sürüm 2'yi kullanma hakkında daha fazla bilgi için aşağıdaki kaynaklara göz atın:
Geçiş için hazırlama
MRTK v2 için yeni *.unitypackage dosyalarını almadan önce, (1) MRTK v1 ile tümleşen özel olarak oluşturulmuş kodların ve (2) giriş etkileşimleri veya UX bileşenleri için özel olarak oluşturulmuş kodların envanterini almanızı öneririz. MRTK v2'yi alan karma gerçeklik geliştiricisi için en yaygın ve yaygın çakışma giriş ve etkileşimleri içerir. MRTK v2 giriş modelini gözden geçirmenizi öneririz.
Son olarak, yeni MRTK v2 bir betik modelinden ve sahne içi yönetici nesnelerinden yapılandırma ve hizmet sağlayıcısı mimarisine geçiş yaptı. Bu, daha temiz bir sahne hiyerarşisi ve mimari modeline neden olur, ancak yeni yapılandırma profillerini anlamak için bir öğrenme eğrisi gerektirir. Uygulamanızın gereksinimlerine göre ayarlamanız gereken önemli ayarları ve profilleri tanımaya başlamak için Karma Gerçeklik Araç Seti Yapılandırma Kılavuzu'nu okuyun.
Projeyi geçirme
MRTK v2'yi içeri aktardıktan sonra Unity projenizde büyük olasılıkla derleyiciyle ilgili birçok hata vardır. Bunlar, yeni ad alanı yapısı ve bileşen adları nedeniyle yaygındır. Betiklerinizi yeni ad alanları ve bileşenlerde 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'sinde taşıma kılavuzuna bakın.
En iyi yöntemler
- MRTK standart gölgelendiricisine ön onay verin.
- Aynı anda bir hataya neden olan değişiklik türü üzerinde çalışın (örnek: IFocusable to IMixedRealityFocusHandler).
- Her değişiklik sonrasında test edin ve kaynak denetimini kullanın.
- Mümkün olduğunda varsayılan MRTK UX'yi (düğmeler, slates vb.) 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ır.
- ÖZELLIKLE HandInteractionExamples.scene olmak üzere MRTK'de sağlanan örnek sahneleri gözden geçirin ve keşfedin.
- Dörtlüler, harmanlamalar ve TextMeshPro metinleriyle tuval tabanlı kullanıcı arabirimini yeniden oluşturun.
- Derinlik AraBelleği Paylaşımı'nı etkinleştirin veya odak noktasını ayarlayın; daha iyi performans için 16 bit derinlik arabelleği kullanın. Rengi işlerken derinliği de işlediğinizden emin olun. Unity genellikle saydam ve metin oyun nesneleri için derinlik yazmaz.
- Tek Geçişli Örnekli İşleme'yi seçin.
- MRTK için HoloLens 2 yapılandırma profilini kullanma
Uygulamanızı sınama
MRTK Sürüm 2'de, el etkileşimlerini doğrudan Unity'de simüle edebilir ve el etkileşimleri ve göz izleme için yeni API'lerle geliştirebilirsiniz. HoloLens 2 cihazı, tatmin edici bir kullanıcı deneyimi oluşturmak için gereklidir. Daha iyi anlamak için belgeleri ve araçları incelemenizi öneririz. MRTK v2 , HoloLens (1. nesil) üzerinde geliştirmeyi destekler ve "hava dokunma ile seçme" gibi geleneksel giriş modelleri HoloLens'te (1. nesil) test edilebilir.
HoloLens 2 için etkileşim modelinizi güncelleştirme
Dikkat
Projeniz XR'nin herhangi birini kullanıyorsa. WSA API'leri, gelecekteki Unity sürümlerinde Unity'nin yeni XR giriş API'leri için bunların aşamalı olarak çıkarıldığını unutmayın. XR giriş API'leri hakkında daha fazla bilgiyi burada bulabilirsiniz.
Uygulamanız HoloLens 2 için taşınabilir ve hazırlandıktan sonra etkileşim modelinizi ve hologram tasarım yerleşimlerinizi güncelleştirmeyi düşünmeye hazır olursunuz. HoloLens'te (1. nesil), uygulamanızın büyük olasılıkla görüntüleme alanına sığacak kadar uzakta hologramlarla bir bakış ve işleme etkileşim modeli vardır.
Uygulama tasarımınızı HoloLens 2'ye en uygun olacak şekilde güncelleştirmek için:
- MRTK bileşenleri: Ön çalışmada MRTK v2'yi eklediyseniz HoloLens 2 için tasarlanmış ve iyileştirilmiş olan çeşitli bileşenler/betikler vardır.
- Etkileşim modeli: Etkileşim modelinizi güncelleştirmeyi göz önünde bulundurun. Çoğu senaryoda, bakış ve işlemeden ellere geçmenizi öneririz. Hologramlarınızdan bazıları kollarınızın ucundan uzakta olabilir ve ellere geçiş yapmak, ışınları ve tutma hareketlerini gösteren uzak etkileşimlere neden olabilir.
- Hologram yerleşimi: Bir eller etkileşim modeline geçtikten sonra, kullanıcıların elleriyle yakın etkileşim tutma hareketlerini kullanarak onlarla doğrudan etkileşim kurabilmesi için bazı hologramları daha yakına taşımayı göz önünde bulundurun. Doğrudan yakalamaya veya etkileşime geçmeye yaklaşacak hologram türleri şunlardır:
- küçük hedef menüler
- denetimler
- düğmeler
- daha küçük hologramlar, yakalanıp incelendiğinde HoloLens 2 görüş alanına sığar.
Uygulamalar ve senaryolar farklılık gösterir; geri bildirimler ve devam eden öğrenmeler temelinde tasarım kılavuzlarını iyileştirmeye ve göndermeye devam edeceğiz.
Uygulamaları x86'dan ARM'ye taşıma hakkında ek ipuçları
Basit 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 zorlukları sunabilir. Bu nedenle, tüm Unity yerel eklentilerini Visual Studio 2019'a yükseltmeniz ve ardından ARM için yeniden oluşturmanız gerekir.
Bir uygulama Unity AudioKinetic Wwise eklentisini kullandı. Kullanımdaki Unity sürümünün UWP ARM eklentisi yoktu ve arm üzerinde çalıştırmak için söz konusu uygulamada ses özelliklerini yeniden çalıştırmak için önemli bir çaba gösterildi. Geliştirme planlarınız için gerekli tüm eklentilerin Unity'de yüklü ve kullanılabilir olduğundan emin olun.
Bazı durumlarda, uygulamayı taşıma ve HoloLens 2'de çalıştırma özelliğini engelleyen, uygulama gerektiren eklentiler için bir UWP/ARM eklentisi olmayabilir. Sorunu çözmek ve ARM desteği sağlamak için eklenti sağlayıcınıza başvurun.
Gölgelendiricilerdeki minflot (ve min16float, minint vb. gibi çeşitler), HoloLens 2'de HoloLens'te (1. nesil) olduğundan farklı davranabilir. Özellikle, bunlar en az belirtilen sayıda bitin kullanılacağını garanti eder. Intel/Nvidia GPU'larında minfloatlar büyük ölçüde 32 bit olarak değerlendirilir. ARM'de, belirtilen bit sayısına gerçekten uyulur. Uygulamada, bu sayılar HoloLens 2'de HoloLens'te (1. nesil) olduğundan daha az duyarlığa veya aralığa sahip olabilir.
_asm yönergeleri ARM'de çalışmıyor gibi görünüyor, yani _asm yönergeleri kullanan tüm kodlar yeniden yazılmalıdır.
ARM, ARM'de xmmintrin.h, emmintrin.h, tmmintrin.h ve immintrin.h gibi çeşitli üst bilgiler kullanılamadığından SIMD yönerge kümesini desteklemez.
ARM üzerindeki gölgelendirici derleyicisi, gölgelendirici yüklendikten veya gölgelendiricinin bağlı olduğu bir şey, gölgelendirici yükleme zamanında değil, ilk çizim çağrısı sırasında çalışır. Çerçeve hızı üzerindeki etkisi, derlemesi gereken gölgelendiricilere bağlı olarak, HoloLens 2 ile HoloLens (1. nesil) arasında gölgelendiricilerin nasıl işlenmesi, paketlenmesi ve farklı şekilde güncelleştirilmesi gerektiğiyle ilgili etkilere bağlı olarak fark edilebilir.