HoloLens (1. nesil) Giriş 210: Bakış
Önemli
Karma Gerçeklik Academy öğreticileri HoloLens (1. nesil), Unity 2017 ve Karma Gerçeklik Immersive Headsets düşünülerek tasarlanmıştır. Bu nedenle, bu cihazlar için geliştirme konusunda hala rehberlik arayan geliştiriciler için bu öğreticileri yerinde bırakmanın önemli olduğunu hissediyoruz. Bu öğreticiler, HoloLens 2 için kullanılan en son araç kümeleri veya etkileşimlerle güncelleştirilmez ve Unity'nin daha yeni sürümleriyle uyumlu olmayabilir. Desteklenen cihazlarda çalışmaya devam etmek için bakımları yapılacaktır. HoloLens 2 için yeni bir öğretici serisi yayınlanmıştır.
Bakış , girişin ilk biçimidir ve kullanıcının amacını ve farkındalığını ortaya koyuyor. MR Input 210 (diğer adıyla Proje Gezgini), Windows Mixed Reality bakışla ilgili kavramlara ayrıntılı bir bakıştır. İmlecimize ve hologramlarımıza bağlamsal farkındalık ekleyerek uygulamanızın kullanıcının bakışı hakkında bildiklerinden tam olarak yararlanacağız.
Burada, bakış kavramlarını öğrenmenize yardımcı olacak dost bir astronot var. MR Basics 101'de bakışınızı takip eden basit bir imleç vardı. Bugün basit imlecin bir adım ötesine geçiyoruz:
- İmleci ve hologramlarımızı gözümüzün farkında hale getiriyoruz: her ikisi de kullanıcının nereye baktığına veya kullanıcının bakmadığı yere göre değişir. Bu, onları bağlama duyarlı hale getirir.
- Kullanıcıya neyin hedeflendiği hakkında daha fazla bağlam sağlamak için imlecimize ve hologramlarımıza geri bildirim ekleyeceğiz. Bu geri bildirim sesli ve görsel olabilir.
- Kullanıcıların daha küçük hedefleri vurmasına yardımcı olmak için size hedefleme tekniklerini göstereceğiz.
- Yön göstergesiyle kullanıcının dikkatini hologramlarınıza nasıl çekeceğini göstereceğiz.
- Size hologramlarınızı kullanıcı dünyanızda hareket ettikçe yanına alma tekniklerini öğreteceğiz.
Önemli
Aşağıdaki bölümlerin her birine eklenen videolar Unity'nin eski bir sürümü ve Karma Gerçeklik Araç Seti kullanılarak kaydedilmiştir. Adım adım yönergeler doğru ve güncel olsa da, ilgili videolarda güncel olmayan betikler ve görseller görebilirsiniz. Videolar, gelecek nesiller için ve ele alınan kavramlar hala geçerli olduğu için dahil olmaya devam etmektedir.
Cihaz desteği
Kurs | HoloLens | Çevreleyici kulaklıklar |
---|---|---|
MR Giriş 210: Bakış | ✔️ | ✔️ |
Başlamadan önce
Önkoşullar
- Doğru araçlar yüklü olarak yapılandırılmış bir Windows 10 bilgisayar.
- Bazı temel C# programlama yetenekleri.
- MR Basics 101'i tamamlamış olmanız gerekirdi.
- Geliştirme için yapılandırılmış bir HoloLens cihazı.
Proje dosyaları
- Projenin gerektirdiği dosyaları indirin. Unity 2017.2 veya sonraki bir sürümü gerektirir.
- Dosyaları masaüstünüzde veya ulaşılmaya kolay başka bir konumda arşivden çıkarın.
Not
İndirmeden önce kaynak kodu incelemek isterseniz GitHub'da kullanılabilir.
Errata ve Notlar
- Visual Studio'da, kodunuzda kesme noktalarına ulaşmaları için Araçlar-Seçenekler-Hata>> Ayıklama'nın altında "Yalnızca Kodum" seçeneğinin devre dışı bırakılması (işaretlenmemiş) olması gerekir.
1. Bölüm - Unity Kurulumu
Hedefler
- Unity'i HoloLens geliştirmesi için iyileştirin.
- Varlıkları içeri aktarın ve sahneyi ayarlayın.
- HoloLens'te astronotu görüntüleyin.
Yönergeler
- Unity'i başlatın.
- Yeni Proje'yi seçin.
- Projeyi ModelExplorer olarak adlandırın.
- Konumu daha önce arşivlediğiniz Bakış klasörü olarak girin.
- Projenin 3B olarak ayarlandığından emin olun.
- Proje Oluştur'a tıklayın.
HoloLens için unity ayarları
Dışarı aktarmaya çalıştığımız uygulamanın 2B görünüm yerine çevreleyici bir görünüm oluşturması gerektiğini Unity'ye bildirmemiz gerekiyor. Bunu sanal gerçeklik cihazı olarak HoloLens'i ekleyerek yaparız.
- Proje Ayarlarını > Düzenle Yürütücü'ye >gidin.
- Player Ayarları için Denetçi Paneli'ndeWindows Mağazası simgesini seçin.
- XR Ayarları grubunu genişletin.
- İşleme bölümünde, yeni bir Sanal Gerçeklik SDK'ları listesi eklemek için Sanal Gerçeklik Desteği onay kutusunu işaretleyin.
- listede Windows Mixed Reality göründüğünü doğrulayın. Aksi takdirde, listenin + en altındaki düğmeyi seçin ve Windows Holographic'i seçin.
Ardından betik arka ucumuzu .NET olarak ayarlamalıyız.
- Proje Ayarları > Oynatıcısını Düzenle'ye > gidin (bunu önceki adımdan itibaren kullanmaya devam edebilirsiniz).
- Player Ayarları için Denetçi Paneli'ndeWindows Mağazası simgesini seçin.
- Diğer Ayarlar Yapılandırması bölümünde Betik Arka Ucu'nın.NET olarak ayarlandığından emin olun
Son olarak, HoloLens'te hızlı bir performans elde etmek için kalite ayarlarımızı güncelleştireceğiz.
- Proje Ayarları > Kalitesini Düzenle'ye >gidin.
- Windows Mağazası simgesinin altındaki Varsayılan satırda aşağı dönük oka tıklayın.
- Windows Mağazası Uygulamaları için Çok Düşük'i seçin.
Proje varlıklarını içeri aktarma
- Proje panelinde Varlıklar klasörüne sağ tıklayın.
- Paket Özel Paketini > İçeri Aktar'a tıklayın.
- İndirdiğiniz proje dosyalarına gidin ve ModelExplorer.unitypackage öğesine tıklayın.
- Aç’a tıklayın.
- Paket yüklendikten sonra İçeri Aktar düğmesine tıklayın.
Sahneyi ayarlama
- Hiyerarşi'de Ana Kamera'yı silin.
- HoloToolkit klasöründe Giriş klasörünü ve ardından Prefabs klasörünü açın.
- MixedRealityCameraParent prefab öğesini Prefabs klasöründen Hiyerarşi'ye sürükleyip bırakın.
- Hiyerarşide Yön Işığı'na sağ tıklayın ve Sil'i seçin.
-
Hologramlar klasöründe, aşağıdaki varlıkları hiyerarşinin köküne sürükleyip bırakın:
- AstroMan
- Işıklar
- SpaceAudioSource
- SpaceBackground
- Astronotu görüntülemek için Oyun Modu'nu ▶ başlatın.
- Durdurmak için Yeniden Yürütme Modu'na ▶ tıklayın.
- Hologramlar klasöründe Fitbox varlığını bulun ve Hiyerarşinin köküne sürükleyin.
- HiyerarşipanelindeKimlik Kutusu'nu seçin.
- AstroMan koleksiyonunu Hiyerarşi'denDenetçi panelindeki Fitbox'ın Hologram Koleksiyonu özelliğine sürükleyin.
Projeyi kaydetme
- Yeni sahneyi kaydedin: Sahneyi Farklı > Kaydet.
- Yeni Klasör'e tıklayın ve klasörü Sahneler olarak adlandırın.
- Dosyayı "ModelExplorer" olarak adlandırın ve Sahneler klasörüne kaydedin.
Projeyi derleme
- Unity'de Dosya > Derleme Ayarları'nı seçin.
- Sahneyi eklemek için Açık Sahne Ekle'ye tıklayın.
- Platformlistesinden Evrensel Windows Platformu seçin ve Platform Değiştir'e tıklayın.
- Özellikle HoloLens için geliştiriyorsanız Hedef cihazıHoloLens olarak ayarlayın. Aksi takdirde , Herhangi bir cihazda bırakın.
- Derleme Türü'ninD3D ve SDK'nınEn Son yüklü (SDK 16299 veya üzeri olmalıdır) olarak ayarlandığından emin olun.
- Oluştur'a tıklayın.
- "Uygulama" adlı yeni bir Klasör oluşturun.
- Uygulama klasörüne tek tek tıklayın.
- Klasör Seç'e basın.
Unity tamamlandığında bir Dosya Gezgini penceresi görüntülenir.
- Uygulama klasörünü açın.
- ModelExplorer Visual Studio Çözümünü açın.
HoloLens'e dağıtıyorsanız:
- Visual Studio'da üst araç çubuğunu kullanarak hedefi Hata Ayıklama'dan Yayın'a ve ARM'den x86'ya değiştirin.
- Yerel Makine düğmesinin yanındaki açılan oka tıklayın ve Uzak Makine'yi seçin.
- HoloLens cihazınızın IP adresini girin ve Kimlik Doğrulama Modu'nu Evrensel (Şifrelenmemiş Protokol) olarak ayarlayın. Seç’e tıklayın. Cihazınızın IP adresini bilmiyorsanız Ayarlar > Ağ & İnternet > Gelişmiş Seçenekleri'ne bakın.
- Üst menü çubuğunda Hata Ayıkla -> Hata ayıklama olmadan başlat'a tıklayın veya Ctrl + F5 tuşlarına basın. Cihazınıza ilk kez dağıtılıyorsa, bunu Visual Studio ile eşleştirmeniz gerekir.
- Uygulama dağıtıldığında, Fitbox'ı bir seçme hareketiyle kapatabilirsiniz.
Çevreleyici bir mikrofonlu kulaklığa dağıtıyorsanız:
- Visual Studio'daki üst araç çubuğunu kullanarak hedefi Hata Ayıklama'dan Yayın'a ve ARM'den x64'e değiştirin.
- Dağıtım hedefinin Yerel Makine olarak ayarlandığından emin olun.
- Üst menü çubuğunda Hata Ayıkla -> Hata ayıklama olmadan başlat'a tıklayın veya Ctrl + F5 tuşlarına basın.
- Uygulama dağıtıldığında, tetikleyiciyi bir hareket denetleyicisine çekerek Fitbox'ı kapatabilirsiniz.
2. Bölüm - İmleç ve hedef geri bildirim
Hedefler
- İmleç görseli tasarımı ve davranışı.
- Bakış tabanlı imleç geri bildirimi.
- Bakış tabanlı hologram geri bildirimi.
Çalışmalarımızı bazı imleç tasarım ilkelerine dayandıracağız, örneğin:
- İmleç her zaman mevcuttur.
- İmlecin çok küçük veya büyük olmasına izin vermeyin.
- İçeriği engellemekten kaçının.
Yönergeler
- HoloToolkit\Input\Prefabs klasöründe InputManager varlığını bulun.
- InputManager öğesini sürükleyip Hiyerarşi'ye bırakın.
- HoloToolkit\Input\Prefabs klasöründe İmleç varlığını bulun.
- İmlecisürükleyip Hiyerarşi'ye bırakın.
- HiyerarşideInputManager nesnesini seçin.
- İmleç nesnesini Hiyerarşi'den InputManager'ın SimpleSinglePointerSelector'ın Inspector'ın en altındaki İmleç alanına sürükleyin.
Yapılandırma ve Dağıtma
- Dosyayı Dosya > Derleme Ayarları'ndan yeniden oluşturun.
- Uygulama klasörünü açın.
- ModelExplorer Visual Studio Çözümünü açın.
- Hata Ayıkla -> Hata ayıklamadan Başlat'a tıklayın veya Ctrl + F5 tuşlarına basın.
- İmlecin nasıl çizildiğine ve holograma dokunduğunda görünümü nasıl değiştirdiğini gözlemleyin.
Yönergeler
- Hiyerarşi panelinde AstroMan-GEO_G-Back_Center>> nesnesini genişletin.
- Visual Studio'da açmak için Interactible.cs dosyasına çift tıklayın.
- Interactible.cs dosyasındaki IFocusable.OnFocusEnter() ve IFocusable.OnFocusExit() geri çağrılarındaki satırların açıklamasını kaldırın. Odak (bakışla veya denetleyici işaret ederek) belirli bir GameObject'in collider'ine girdiğinde ve çıkış yaptığı zaman bunlar Karma Gerçeklik Toolkit'in InputManager'ı tarafından çağrılır.
/* TODO: DEVELOPER CODING EXERCISE 2.d */
void IFocusable.OnFocusEnter()
{
for (int i = 0; i < defaultMaterials.Length; i++)
{
// 2.d: Uncomment the below line to highlight the material when gaze enters.
defaultMaterials[i].EnableKeyword("_ENVIRONMENT_COLORING");
}
}
void IFocusable.OnFocusExit()
{
for (int i = 0; i < defaultMaterials.Length; i++)
{
// 2.d: Uncomment the below line to remove highlight on material when gaze exits.
defaultMaterials[i].DisableKeyword("_ENVIRONMENT_COLORING");
}
}
Not
Ve DisableKeyword
üzerini kullanırızEnableKeyword
. Toolkit'in Standart gölgelendiricisi ile bunları kendi uygulamanızda kullanmak için, betik aracılığıyla malzemelere erişmek için Unity yönergelerini izlemeniz gerekir. Bu örnekte, Kaynaklar klasörüne gereken üç vurgulanmış malzeme çeşidini zaten eklemiş olduk (adında vurgu bulunan üç malzemeyi arayın).
Yapılandırma ve Dağıtma
- Daha önce olduğu gibi projeyi derleyin ve HoloLens'e dağıtın.
- Bakış bir nesneye hedeflendiğinde ve hedeflenmediğinde ne olduğunu gözlemleyin.
3. Bölüm - Hedefleme Teknikleri
Hedefler
- Hologramları hedeflemeyi kolaylaştırma.
- Doğal baş hareketlerini sabitler.
Yönergeler
- Hiyerarşi panelinde InputManager nesnesini seçin.
-
Denetçi panelinde Gaze Stabilizer betiğini bulun. Bir göz atmak isterseniz Visual Studio'da açmak için buna tıklayın.
- Bu betik, Raycast veri örneklerini yineler ve kullanıcının duyarlık hedefleme bakışını dengelemeye yardımcı olur.
- DenetçideSaklı Kararlılık Örnekleri değerini düzenleyebilirsiniz. Bu değer, sabitlenmiş değeri hesaplamak için sabitleyicinin yineleme yaptığı örnek sayısını temsil eder.
Bölüm 4 - Yön göstergesi
Hedefler
- Hologramları bulmanıza yardımcı olması için imleç üzerine bir yön göstergesi ekleyin.
Yönergeler
DirectionIndicator.cs dosyasını kullanarak aşağıdakileri yapacağız:
- Kullanıcı hologramlara bakmıyorsa yön göstergesini gösterin.
- Kullanıcı hologramlara bakıyorsa yön göstergesini gizleyin.
- Yön göstergesini hologramları işaret etmek için güncelleştirin.
Haydi başlayalım.
- Hiyerarşi panelinde AstroMan nesnesine tıklayın ve genişletmek için oka tıklayın.
- Hiyerarşi panelinde AstroMan altında DirectionalIndicator nesnesini seçin.
- Denetçi panelinde Bileşen Ekle düğmesine tıklayın.
- Menüde, arama kutusuna Yön Göstergesi yazın. Arama sonucunu seçin.
- Hiyerarşi panelinde İmleç nesnesini sürükleyip Denetçi'dekiİmleç özelliğine bırakın.
- Proje panelindeki Hologramlar klasöründe DirectionalIndicator varlığını Sürükleyip Denetçi'dekiYön Göstergesi özelliğine bırakın.
- Uygulamayı derleyin ve dağıtın.
- Yön göstergesi nesnesinin astronotu bulmanıza nasıl yardımcı olduğunu izleyin.
Bölüm 5 - Billboarding
Hedefler
- Hologramların her zaman size dönük olması için reklam panolarını kullanın.
Bir GameObject'i kullanıcıya her zaman karşı olacak şekilde yönlendirmeli tutmak için Billboard.cs dosyasını kullanacağız.
- Hiyerarşi panelinde AstroMan nesnesini seçin.
- Denetçi panelinde Bileşen Ekle düğmesine tıklayın.
- Menüde, arama kutusuna Billboard yazın. Arama sonucunu seçin.
- DenetçideÖzet EkseniY olarak ayarlayın.
- Deneyin! Uygulamayı daha önce olduğu gibi derleyin ve dağıtın.
- Bakış açısını nasıl değiştirirseniz değiştirin, Billboard nesnesinin nasıl yüz yüze olduğunu görün.
- Betiği şimdilik AstroMan'dan silin.
Bölüm 6 - Tag-Along
Hedefler
- Hologramlarımızın odada bizi takip etmelerini sağlamak için Tag-Along kullanın.
Bu sorun üzerinde çalışırken aşağıdaki tasarım kısıtlamaları tarafından yönlendirileceğiz:
- İçerik her zaman bir bakışta görünmelidir.
- İçerik bu şekilde olmamalıdır.
- Kafa kilitleme içeriği rahatsız edicidir.
Burada kullanılan çözüm, "etiket birlikte" yaklaşımını kullanmaktır.
Etiket boyunca nesne hiçbir zaman kullanıcının görünümünden tamamen ayrılmaz. Etiketle birlikte etiketini, kullanıcının başına lastik bantlarla bağlanmış bir nesne olarak düşünebilirsiniz. Kullanıcı hareket ettikçe, tamamen ayrılmadan görünümün kenarına doğru kaydırarak içerik kolay bir bakışta kalır. Kullanıcı tag-along nesnesine baktığında, daha çok görünüme gelir.
SimpleTagalong.cs dosyasını kullanarak aşağıdakileri yapacağız:
- Tag-Along nesnesinin kamera sınırları içinde olup olmadığını belirleyin.
- Görünüm frustumunun içinde değilse, Tag-Along kısmen görünüm frustumunun içine yerleştirin.
- Aksi takdirde, Tag-Along kullanıcıdan varsayılan bir uzaklık olacak şekilde konumlandırın.
Bunu yapmak için öncelikle Interactible.cs betiğini TagalongAction olarak değiştirmeliyiz.
- 6.a kodlama alıştırmasını (84 ile 87 arasındaki satırları açma) tamamlayarak Interactible.cs dosyasını düzenleyin.
/* TODO: DEVELOPER CODING EXERCISE 6.a */
// 6.a: Uncomment the lines below to perform a Tagalong action.
if (interactibleAction != null)
{
interactibleAction.PerformAction();
}
Interactible.cs ile eşleştirilmiş InteractibleAction.cs betiği, hologramlara dokunduğunuzda özel eylemler gerçekleştirir. Bu durumda, özellikle etiketle birlikte kullanmak için bir tane kullanacağız.
- Betikler klasöründe Visual Studio'da açmak için TagalongAction.cs varlığına tıklayın.
- Kodlama alıştırmasını tamamlayın veya şu şekilde değiştirin:
- Hiyerarşi'nin üst kısmındaki arama çubuğuna ChestButton_Center yazın ve sonucu seçin.
- Denetçi panelinde Bileşen Ekle düğmesine tıklayın.
- Menüde, Tagalong Eylemi arama kutusuna yazın. Arama sonucunu seçin.
- Hologramlar klasöründe Tagalong varlığını bulun.
- HiyerarşideChestButton_Center nesnesini seçin. TagAlong nesnesini Proje panelinden Tagalong Nesnesi özelliğine sürükleyip Denetçi'ye bırakın.
- Tagalong Action nesnesini Denetçi'denInteractible betiğindeki Interactible Action alanına sürükleyin.
- Visual Studio'da açmak için TagalongAction betiğine çift tıklayın.
Aşağıdakileri eklememiz gerekir:
- TagalongAction betiğinde (InteractibleAction'dan devralınan) PerformAction işlevine işlevsellik ekleyin.
- Bakışlı nesneye pano ekleyin ve pivot eksenini XY olarak ayarlayın.
- Ardından nesneye basit Tag-Along ekleyin.
TagalongAction.cs dosyasından çözümümüz şu şekildedir:
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.
using HoloToolkit.Unity;
using UnityEngine;
public class TagalongAction : InteractibleAction
{
[SerializeField]
[Tooltip("Drag the Tagalong prefab asset you want to display.")]
private GameObject objectToTagalong;
private void Awake()
{
if (objectToTagalong != null)
{
objectToTagalong = Instantiate(objectToTagalong);
objectToTagalong.SetActive(false);
/* TODO: DEVELOPER CODING EXERCISE 6.b */
// 6.b: AddComponent Billboard to objectToTagAlong,
// so it's always facing the user as they move.
Billboard billboard = objectToTagalong.AddComponent<Billboard>();
// 6.b: AddComponent SimpleTagalong to objectToTagAlong,
// so it's always following the user as they move.
objectToTagalong.AddComponent<SimpleTagalong>();
// 6.b: Set any public properties you wish to experiment with.
billboard.PivotAxis = PivotAxis.XY; // Already the default, but provided in case you want to edit
}
}
public override void PerformAction()
{
// Recommend having only one tagalong.
if (objectToTagalong == null || objectToTagalong.activeSelf)
{
return;
}
objectToTagalong.SetActive(true);
}
}
- Deneyin! Uygulamayı derleyin ve dağıtın.
- İçeriğin bakış noktasının merkezine nasıl izlediğini, ancak sürekli olarak ve engellemeden nasıl izlediğini izleyin.