Aracılığıyla paylaş


World Locking Tools'un ilk kurulumu

Mümkün olan en ince kurulum

Buradaki öğretici, daha fazla işlem (örneğin uzamsal tutturucular) gerekmeden uygulamanızdaki her şeyi dünya çapında kilitleyerek çalışmaya başlamak için minimum kurulum adımlarını gösterir. Bu deponun Samples deposunda eşdüzeydir.

Hızlı başlangıç kılavuzu

WLT'yi bir projeyle tümleştirmeye yönelik kavramsal açıdan daha ayrıntılı ve daha pragmatik bir yaklaşım burada bulunabilir. Uygun olduğunda, bu daha kapsamlı sayfalara geri başvurur. Hangi yaklaşımın daha uygun olduğu kişisel tercih konusu olsa da, Başlamadan önce sayfasının hızlı bir şekilde okunabilmesi, bu belgedeki enerjilerin nereye ayırılacağı konusunda zaman kazandırabilir.

Desteklenen ortamlar

Unity için World Locking Tools şu anda HoloLens cihaz ailesi için UWP uygulamalarını hedeflemektedir. Hem özgün HoloLens (x86) hem de HoloLens 2 (ARM64) desteklenir.

Unity'nin AR Alt Sistemleri aracılığıyla diğer platformlar için deneysel destek sağlanır.

World Locking Tools sürekli tümleştirme (CI) derlemesi, Visual Studio 2017 ile Unity2018.4.6f1 ile doğrulanır. Bununla birlikte, Unity2018 sürümlerinin ve Unity2019'un bir yelpazesi kullanılarak kapsamlı WLT geliştirmesi de yapılmıştır. Araçların geliştirilmesinde hem Visual Studio 2017 hem de Visual Studio 2019 kullanılmıştır.

Unity ve/veya Visual Studio'nun diğer sürümleriyle ilgili uyumluluk sorunlarıyla karşılaşırsanız, bunu duymak isteriz! Sorunları bildirmenin en iyi yolu GitHub'da sorunlar portalından geçmektir.

Varsayılan arka plan

Dünya Kilitleme Araçları çözümünü kendi projeleriyle tümleştirmek isteyen kişilerin HoloLens cihaz ailesi için uygulama oluşturma ve dağıtma ile ilgili temel bilgileri zaten bildiğiniz varsayılır. Aksi takdirde, bu makalenin sonunda bazı harika başvurular vardır.

Dünya Kilitleme Araçları katmanları

Dünya Kilitleme Araçları dört katmana ayrılmıştır. Katmana işaret eden oklar bağımlı olduğu için, basit bağımlılık grafı şöyle görünür:

Katman Diyagramı

Kesikli çizgiler isteğe bağlı bağımlılıkları gösterir.

Örnekler katmanı MixedRealityToolkit 'i (MRTK) kullansa da, diğer katmanlardan hiçbirinin dış bağımlılığı yoktur ve tüm işlevler MRTK ile uyumlu ancak MRTK'nin bağımsız olarak kullanılabilir.

Uygulamalar bağımlılıkları hakkında daha fazla not aşağıda yer almaktadır.

Katmanlar aşağıdaki gibi özetlenebilir:

Eklenti

Altyapı DLL'siyle doğrudan iletişime olanak sağlayan kesinlik temelli bir arabirim. Bağımsız değişken hazırlama gibi yaygın sorunlar burada gerçekleştirilir ve bileşik yönergelerin birleşiminde sık kullanılan birden çok işlevin bir kısmı oluşturulur. Temel alınan C++ DLL'sinin alt düzey C# arabirimi olarak kalır. Doğrudan kullanımı mevcuttur, ancak gerekli değildir veya tavsiye edilmez.

Temel

Çekirdek, World Locking Tools'un kararlı dünya kilitli alanının avantajlarını elde etmek için gerekli tüm adımların bildirim temelli bir arabirime paketlenmiş bir kapsüllemedir. Çalışan bir uygulamanın yalnızca Çekirdek'ten gelen işlevleri kullanarak göndermesi beklenir.

Araçlar

Araçlar büyük ölçüde doğası gereği tanılamadır. World Locking Tools işlemlerinin görselleştirmeleri, World Locking Tools kullanan herhangi bir projeye kolayca eklenebilen formlara eklenir.

Diğer kullanışlı yardımcı programlar dahil edilir, ancak Çekirdek tekliflerinde son çözümler olmak yerine özel çözümleri kodlamaya başlamada yararlı olması beklenir.

Örnekler

Örnekler katmanı, Dünya Kilitleme Araçları'nı kullanırken yaygın senaryoları ayarlama örnekleri ve World Locking Tools'un çeşitli senaryolarla tümleştirmesindeki en iyi yöntemleri sunmaya çalışır.

UX ve nesne işleme için gerekli MRTK bağımlılıkları, Örnekler katmanındaki betikler ve prefabs ile sınırlıdır. Bu, alt katmanları dış bağımlılıklardan arındırarak bırakır.

Örnekler katmanındaki betiklerin ve varlıkların doğrudan sevkiyat ürünleriyle tümleştirilmesi beklenmemektedir ancak buna karşı bir yasak yoktur. Bunun yerine, yapıları yeniden kullanılabilirlik ve verimlilik yerine basitliği ve netliği tercih eder.

Uygulama

Genel olarak, Uygulama yalnızca World Locking Tools Core bağımlılığına ihtiyaç duyar.

Geliştirme sırasında, beklenmeyen davranışları anlamaya yönelik birçok görselleştirme ve diğer yardımcılar Araçlar katmanında kullanılabilir. Bu yardımcılar ideal olarak tamamlanmış bir uygulamadan çıkarılır veya en azından devre dışı bırakılır. Elbette, geçerli biçimlerinde veya değiştirilmiş diğer kullanımlar için de ücretsizdirler. Ayrıntılar için lisansa bakın.

Gelişmiş kullanım ve World Locking Tools'un tüm özelliklerinin denemesi için Eklenti katmanı, Altyapı DLL'sine alt düzey kesinlik temelli erişim sunar.

Eklenti katmanına erişim gerekli hale gelirse, Çekirdek katmanında sunulan API yüzeyinde bir eksikliğe işaret edebilir. Dünya Kilitleme Araçları ekibi her zaman bu tür boşlukları doldurmak istemektedir. Bu tür içgörüleri takıma katkıda bulunmayı göz önünde bulundurun. Bkz . katkıda bulunma.

Yükleme yolu uzunluğuyla ilgili bir uyarı notu

BAZı MRTK sürümlerinde uzun yükleme yollarıyla ilgili bir sorun vardır. MRTK yüklemesindeki derin alt klasörlerin tam yol uzunluğu Windows yol sınırını (260 karakter) aşabilir. Aşağıdaki formda bir derleme hatası görüntülenirse:

DirectoryNotFoundException: Could not find a part of the path "D:\MyOverTwentyEightCharacterLongLengthInstallPath\MixedReality-WorldLockingTools-Unity\Assets\MRTK\MixedRealityToolkit.Providers\WindowsMixedReality\DotNetAdapter\Plugins\net46\Microsoft.Windows.MixedReality.DotNetWinRT\Editor\Microsoft.Windows.MixedReality.DotNetWinRT.Editor.asmdef"

ancak dosya aslında sürücüde bulunur, o zaman sorun büyük olasılıkla yol uzunluğudur. MRTK ekibi bunun farkında ve bunu geliştirmek için çalışıyor (not: Burada büyük iyileştirmeler yaptıklarına inanıyorum ve bu artık bir sorun değil). Bu arada, geçici çözüm yol ön ekini aşağıdakilerin bir bileşimiyle kısaltmaktır:

  1. Unity projesini daha kısa bir uzunluk yolu köküne yükleyin; örneğin, "D:\Proj"
  2. Depoyu klonlıyorsanız, World Locking Tools'un kökünü varsayılan "\MixedReality-WorldLockingTools-Unity" değerinden daha kısa bir değere kopyalayın, örneğin:
git clone https://github.com/microsoft/MixedReality-WorldLockingTools-Unity.git d:\MyGit\wlt

Bu yol sınırı genellikle World Locking Tools'un kendisi için bir sorun değildir çünkü o kadar derin bir klasör yapısı kullanmaz.

Unity projesine World Locking Tools ekleme

Not

Aşağıda, World Locking Tools ve bağımlılıklarının el ile yüklenmesi açıklanmaktadır. Karma Gerçeklik Özellik Aracı aracılığıyla çok daha kolay bir yükleme işlemi sağlanır. Özellik Aracı aracılığıyla yükleme burada açıklanmıştır. Özellik Aracı WLT'yi yüklerse, aşağıdakileri atlayabilir ve WLT'yi sahnenize eklemeye devam edebilirsiniz

World Locking Tools, temel alınan Frozen World Engine'i yüklemek için nuget kullanır.

Mevcut bir projeye Dünya Kilitleme Araçları ekleniyorsa, HoloLens cihazı derlemek ve dağıtmak için doğrulanmış bir projeyle başlamanız önerilir. Bu, bir uygulamanın HoloLens'te çalıştırılmasıyla ilgili sorunları ilk olarak Dünya Kilitleme Araçları ile ilgili sorunlardan ayırmaya yardımcı olur. Ardından aşağıdaki FrozenWorld Engine kurulumu ve World Locking Tools Assets bölümlerine geçin.

FrozenWorld Altyapısı yüklemesi

Frozen World Engine DLL'si, NuGet'ten mükemmel Unity için NuGet yardımcı programı kullanılarak veya el ile alınabilir.

Unity için NuGet kullanma

nuget.org akışının kaynaklarda olduğundan emin olun. Unity için Unity > Düzenleme > Tercihleri > NuGet bölümünde bunu denetleyin. Aksi takdirde:

Aynı paylaşımı eklemek için Unity > Düzenleme > Tercihleri > NuGet For Unity'de Yeni Kaynak GUI Ekle'yi kullanın.

  • "Yeni Kaynak"ı seçtiğiniz bir adla (örneğin, "NuGet") değiştirin.
  • "source_path" yerine "http://www.nuget.org/api/v2/".

nuget.org akışını onayladıktan sonra Unity > NuGet Manage NuGet > Packages bölümünde Microsoft.MixedReality.FrozenWorld.Engine'in en son sürümünü bulun ve yükleyin. ("FrozenWorld" araması yapın.)

Daha sonraki bir sürüme güncelleştirmek için Unity > NuGet Manage NuGet > Packages'ı yeniden açın ve FrozenWorld.Engine paketini bulun ve Güncelleştir'i seçin. Not: Aradığınız sürümü bulmak için Güncelleştirmeler sekmesine gitmek zorunda olabilirsiniz.

El ile Donmuş Dünya Altyapısı DLL yüklemesi

Assets/NuGet.config'e satır eklemek packageSources için metin düzenleyicisi kullanın, örneğin:

  <packageSources>
    <add key="NuGet" value="http://www.nuget.org/api/v2/" />
  </packageSources>

Henüz bir Assets/NuGet.config dosyanız yoksa, bunu World Locking Tools github deposundan kopyalayabilirsiniz.

Metin düzenleyicisi kullanarak, Frozen World Engine DLL paketini Assets/packages.config dosyasına ekleyin, örneğin:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.MixedReality.Unity.FrozenWorld.Engine" version="1.0.0" />
</packages>

Yine, henüz assets/packages.config adlı bir dosyanız yoksa, dosyayı World Locking Tools github deposundan alabilir veya yukarıdakini "Assets/packages.config" adlı bir metin dosyasına kopyalayabilirsiniz.

NuGet.config ve packages.config kurulumuna sahip olmak için şunları yükleyin:

  1. NuGet indirmelerinden en son nuget.exe edinin.
  2. nuget.exe yolunuzda olduğundan emin olun (burada Bunun Varlıklar'a kopyalandığını varsayıyorum).
  3. Bir PowerShell komut penceresi açın ve dizini Assets klasörüne değiştirin.
  4. Şu komutu çalıştırın:
.\nuget.exe restore

Sonraki bir sürüme yükseltmek için:

  1. Yukarıdaki packages.config dosyasındaki FrozenWorld.Engine sürüm numarasını istenen sürüme güncelleştirin (örneğin, version="1.0.0" version="1.0.1") olur.
  2. Assets/Packages klasöründeki "Microsoft.MixedReality.Unity.FrozenWorld.Engine" ile başlayan her şeyi silin.
  3. nuget.exe yukarıda olduğu gibi yeniden çalıştırın.

Dünya Kilitleme Araçları Varlıkları

Gerekli World Locking Tools .unitypackage dosyalarını projeye aktarın (tercih edilen yöntem) veya içinde kopyalayın. Bunları uygulama geliştirme yolundan çıkarmak için Varlıklar içindeki bir alt klasöre taşınabilirler.

En son kararlı .unitypackage dosyalar Unity Sürümleri için Dünya Kilitleme Araçları'nda bulunabilir.

WorldLocking.Core ve Altyapı katmanı kesinlikle gerekli olacaktır, bu nedenle minimum yükleme paketi WorldLockingCoreEngine.unitypackage olacaktır.

Diğer hangi katmanların gerekli olabileceğini belirlemek için yukarıdaki World Locking Tools katmanları ve bağımlılıkları tartışmasına bakın. Her katman tek bir Unity paketinde yer alır.

Dünya Kilitleme Araçları Örneklerinden bazıları MRTK'nin özelliklerini kullandığından, Örnekler'e unitypackageuyumlu bir MRTK anlık görüntüsü eklenir. En son MRTK sürümü için buraya bakın.

Unity sahnesine World Locking Tools ekleme

Not

Aşağıda listelenen adımların tümü, Toolkit > Utilities > World Locking Tools Karma Gerçeklik menüsünde bulunan WLT Sahne yapılandırma yardımcı programındaki otomatikleştirilmiştir. Yapılandır menüsü

FrozenWorld altyapısını içeren bir Unity projesinde (nuget.org), istenen World Locking Tools Assets katmanlarını (ancak en azından WorldLocking.Core) ve isteğe bağlı olarak MRTK'yi içeri aktarın. Ardından yeni bir sahne oluşturun (veya mevcut bir sahneyi açın).

Not

Kamera hiyerarşisinin köküne fazladan bir düğüm ekleyin. Bu düğüm, baş izlemeli kamerayı dünya kilitli alanına ayarlamak için kullanılacaktır. (MRTK kullanılıyorsa, bu yeni GameObject MixedRealityPlayspace öğesinin üst öğesi olacaktır.)

Temel deneyim

Assets/WorldLocking.Core/Prefabs'dan WorldLockingManager ön bildirimlerini sahnenize sürükleyin. Sahnedeki yeri önemli değildir, ancak kamera ağacında olmamalıdır . Önerilen yapılandırma için örnek bir görünüme bakın.

WorldLockingManager prefab'da kullanılabilir ayarlar vardır, ancak başlamak için bunları varsayılan değerlerine bırakmaları önerilir.

Sunulan seçeneklerin açıklamaları için bkz . Dünya Kilitleme Araçları Bağlamı .

[İsteğe bağlı] MRTK

World Locking Tools, MRTK için tamamlayıcı ama ortogonaldir. MRTK'nin Dünya Kilitleme Araçları ile birlikte kullanılması tamamen isteğe bağlıdır.

Buna göre, Dünya Kilitleme Araçları örnekleri MRTK kullanılarak oluşturulur ve MRTK, Dünya Kilitleme Araçları'ndan en çok yararlanan MR uygulamalarının türlerini geliştirmede genellikle son derece değerlidir.

MRTK kullanıyorsanız, örneklerde yer alan anlık görüntüyü kullanmak yerine en azından aşağıdaki paketlerin en son sürümlerini eklemeniz önerilir:

  • MixedReality.Toolkit
  • MixedReality.Toolkit.Providers
  • MixedReality.Toolkit.Services
  • MixedReality.Toolkit.SDK

[İsteğe bağlı] Süngerimsi ve dünya kilitli tutturucuları görselleştirme

Bunun için Projenin Varlıklarına WorldLocking.Tools eklenmesi gerekir.

Yer işaretlerinizi görselleştirmek istiyorsanız Assets/WorldLocking.Tools/Prefabs'dan AnchorGraphVisual prefab öğesini sahnenize sürükleyin. Denetçideki görselleştirmenin yönlerini değiştirmek için onay kutuları WorldLockingManager'dadır.

Tanılama olarak, WorldLocking.Tools görselleştirmeleri yoğun olarak iyileştirilmemiştir ve çekirdek World Locking Tools işlem süresi ilgili hale gelmeden çok önce performansı düşürecektir.

[İsteğe bağlı] Karma Gerçeklik içinde parametre denetimi için basit bir pano

Mr içinden çalışma zamanında WorldLockingManager'ı denetlemek için kullanılabilecek basit bir HUD kullanılabilir. Bunlar Örnekler paketinde sağlanır. Bunlar olduğu gibi kullanılabilse de, uygulamaların kendi görüntü sistemi ve UX'lerinde benzer özellikler oluştururken desen olarak tasarlanmıştır.

WorldLocking.Examples/Prefabs/Dashboard prefab'ını sürükleyin ve önceki bölümde Yer Işareti Görselleştiricisi alanını Görselleştirici'nin üzerine gelin.

Mevcut bir sahneyi World Locking Tools'a geçirme

Dünya Kilitleme Araçları'na geçiş sırasındaki en büyük değişiklik, uzamsal yer işaretleri kullanarak sanal nesneleri dünyaya kilitleme gereksiniminin kalmamasıdır.

Uzamsal tutturucular geleneksel olarak nesneleri tek tek kilitlemek için kullanılabilen tek araç olmuştur. Ancak World Locking Tools kullanıldığında, bu sanal nesnelerin bulunduğu koordinat alanı zaten dünya kilitlidir. Başka kilitleme gerekmez.

Uzamsal tutturucular gereksizdir, aynı zamanda kamera hiyerarşisinde ek dönüşümleri hesaba katamadıklarından (MRTK "Playspace" dönüşümü gibi) düzgün çalışmazlar.

Bu nedenle, tüm uzamsal yer işaretleri sahneden kaldırılmalıdır ve uzamsal tutturucular ekleyen tüm betikler bunu yapmayı bırakmalıdır. Uzamsal tutturucuların herhangi bir şeyle değiştirilmesi gerekmez; World Locking Tools, hedeflerini gerçek dünyaya sabitleyecektir.

World Locking Tools ile ve World Locking Tools olmadan dünya kilitlemeyi karşılaştırmak istenirse, WorldAnchors'ı kaldırmak yerine WorldLocking.Tools'ta sağlanan ToggleWorldAnchor ile değiştirilebilir.

ToggleWorldAnchor, WorldAnchor ile tam olarak aynı şekilde çalışır ve Önemli fark Dünya Kilitleme Araçları Yöneticisi etkin olduğunda kendisini kolayca devre dışı bırakır ve yoldan çıkar. Dünya Kilitleme Araçları Yöneticisi devre dışı bırakıldığında, normal bir WorldAnchor gibi davranır.

Başka bir nedenle WorldAnchor'lar hala sahnede gerekliyse (örneğin, ağ paylaşımı için), Bunlar WorldAnchorAdapter olarak sağlanan bir bağdaştırıcı ile kullanılabilir.

WorldAnchorAdapter, WorldAnchor tarafından konumlandırılan bir GameObject'in ham konumunu dünya kilitli Unity genel alanına dönüştürür ve ardından dönüşümü hedef nesneye uygular. Bunu kullanmak için, bir nesneye doğrudan WorldAnchor eklemek yerine, WorldAnchor bir ara sunucu nesnesine (genellikle başka bir şekilde boş bir GameObject) uygulanmalıdır ve Update() üzerinde WorldAnchorAdapter WorldAnchor'un pozunu okur, doğru bir şekilde dönüştürür ve hedefe uygular.

Kurulum tamamlandı

Yukarıdaki adımları izledikten sonra, cihaza dağıtılan proje, en iyi şekilde kararlı bir dünya kilitli alanı korumak için World Locking Tools tarafından ayarlanmış olarak çalıştırılır. Görünüme yerleştirilen tüm sabit nesneler hem birbirine göre hem de fiziksel dünyayla görsel olarak tutarlı kalır.

Kullanılabilir örnek uygulamalar

Hem betikler hem de varlıklar dahil olmak üzere örnek sahneler, World Locking Tools'un özelliklerinin daha karmaşık kullanımını göstermek için sağlanır.

Örneğin, WorldLockedPhysicsSample fiziksel olarak simülasyonu yapılan nesnelerin oluşturulup kaldırılabildiği, birbirleriyle ve ortamla (uzamsal eşleme) etkileşimde bulunabileceği basit bir ortam sağlar.

Space Pinning özelliğine daha odaklanmış bir bakış için SpacePin, büyük ölçekli bir sanal nesneyi gerçek dünya özelliklerine hizalamak için çok basitleştirilmiş bir örnek sağlar.

RayPin'ler SpacePin örneği tarafından sunulan özellikleri genişleterek uzamsal ağa karşı ışın testleri ile sanal dünyanın fiziksel dünyaya sabitlenmesine olanak sağlar.

Başlarken başvurular

HOLOLens cihaz ailesine AR uygulamaları oluşturma, oluşturma ve dağıtma ile ilgili temel bilgileri bilmiyorsanız, çalışmaya başlamanıza yardımcı olabilecek bazı başvurular aşağıdadır.

Unity Geliştirmeye Genel Bakış - MR/AR geliştirme için Unity.

MR Basics 100 - HoloLens için geliştirmeye başlama adımlarını izleyin

HoloLens 2 Öğreticileri - HoloLens 2 için geliştirmeye başlama adımlarını izleyin.

Koordinat Sistemleri Ar geliştirmesinde alan etkilerini koordine eder.

  • Dünya Kilitleme Araçları'nın burada açıklanan sorunları çözdüğünü unutmayın.

Sorun mu yaşıyorsunuz?

Sorun giderme kılavuzuna bakın.