Örnek olay incelemesi - Gerçekliğinizdeki deliklere bakma

İnsanlar karma gerçekliği ve Microsoft HoloLens ne yapabileceklerini düşündüklerinde, genellikle "Odama hangi nesneleri ekleyebilirim?" veya "Alanımın üzerine ne katman ekleyebilirim?" gibi sorulara bağlı kalırlar. Çevrenizdeki gerçek fiziksel nesneleri incelemek veya incelemek için aynı teknolojiyi kullanarak göz önünde bulundurabileceğiniz başka bir alanı (aslında bir sihir numarası) vurgulamak istiyorum.

Teknoloji

RoboRaid'de duvarlarınızı kıran uzaylılarla savaştıysanız, Parçalar'da bir duvar kasası açtıysanız veya 2015'te E3'teki Halo 5 deneyiminde UNSC Infinity hangarını görecek kadar şanslıysanız, neden bahsettiğimi gördünüz demektir. Hayal gücünüze bağlı olarak, bu görsel hile alçıpanınıza geçici delikler açmak veya dünyaları gevşek bir zemin tahtasının altına gizlemek için kullanılabilir.

RoboRaid, duvarlarınızın arkasına üç boyutlu borular ve diğer yapıyı ekler, sadece işgalciler içeri girdikçe oluşturulan deliklerden görülebilir.

RoboRaid, duvarlarınızın arkasına üç boyutlu borular ve diğer yapıyı ekler, sadece işgalciler içeri girdikçe oluşturulan deliklerden görülebilir.

HoloLens'te bu benzersiz hologramlardan birini kullanan bir uygulama, gerçekliğin kendisini gerçek bir pencerede sunduğu şekilde duvarlarınızın arkasında veya zemininizde içerik yanılsamasını sağlayabilir. Sola doğru hareket edin, sağ tarafta ne varsa görebilirsiniz. Yaklaşın ve her şeyin biraz daha fazlasını görebilirsiniz. En önemli fark, gerçek deliklerin size geçmesine izin vermeleridir, ancak zemininiz inatla bu sihirli holografik içeriğe tırmanmanıza izin vermez. (Kapsamına bir görev ekleyeceğim.)

Arka planda

Bu numara iki efektin birleşimidir. İlk olarak, holografik içerik "uzamsal yer işaretleri" kullanılarak dünyaya sabitlenir. Bu içeriği "dünya kilitli" yapmak için yer işaretleri kullanmak, siz ilerledikçe veya temel alınan uzamsal eşleme sistemi odanızın 3B modelini güncelleştirse bile, baktığınız şeyin yakınındaki fiziksel nesnelerden görsel olarak uzaklaşmadığı anlamına gelir.

İkincisi, bu holografik içerik görsel olarak çok belirli bir alanla sınırlıdır, bu nedenle yalnızca gerçekliğinizdeki deliğin içinden görebilirsiniz. Bu tıkanıklık, hileyi satan mantıksal bir delikten, pencereden veya kapıdan bakmayı gerektirmek için gereklidir. Görünümün çoğunu engelleyen bir şey olmadan, uzayda gizli bir Jurassic boyutuna kadar bir çatlak kötü yerleştirilmiş bir dinozora benzeyebilir.

Bu gerçek bir ekran görüntüsü değil, MR Basics 101'in gizli yeraltı dünyasının HoloLens'te nasıl göründüğüne ilişkin bir çizimdir. Siyah kutu görünmüyor, ancak içeriği bir sanal delikten görebilirsiniz. (Gerçek bir cihaza bakarken, gözleriniz sanki orada değilmiş gibi daha uzak bir mesafeye odaklandığından zemin daha da kaybolacak gibi görünür.)

Bu gerçek bir ekran görüntüsü değil, MR Basics 101'in gizli yeraltı dünyasının HoloLens'te nasıl göründüğüne ilişkin bir çizimdir. Siyah kutu görünmüyor, ancak içeriği bir sanal delikten görebilirsiniz. (Gerçek bir cihaza bakarken, gözleriniz sanki orada değilmiş gibi daha uzak bir mesafeye odaklandığından zemin daha da kaybolacak gibi görünür.)

Dünya çapında kilitleyen holografik içerik

Unity'de holografik içeriğin dünya kilitli kalmasına neden olmak, WorldAnchor bileşeni eklemek kadar kolaydır:

myObject.AddComponent<WorldAnchor>();

WorldAnchor bileşeni, yakındaki fiziksel nesnelere göre kararlı kalmasını sağlamak için GameObject'in (ve dolayısıyla hiyerarşideki nesnenin altındaki diğer her şeyin) konumunu ve dönüşünü sürekli olarak ayarlar. İçeriğinizi yazarken, nesnenizin kök özetinin bu sanal delikte ortalandığı şekilde oluşturun. (Nesnenizin pivotu duvarın derinlerindeyse, konumunda ve dönüşte küçük ince ayarları çok daha belirgin olacaktır ve delik çok kararlı görünmeyebilir.)

Sanal delik dışında her şeyi kapatıyor

Duvarlarınızda gizli olan görünümü seçmeli olarak engellemenin çeşitli yolları vardır. En basiti, HoloLens'in eklenebilir bir ekran kullanması gerçeğinden yararlanır ve bu da tamamen siyah nesnelerin görünmez göründüğü anlamına gelir. Bunu Unity'de herhangi bir özel gölgelendirici veya malzeme hilesi yapmadan yapabilirsiniz; yalnızca siyah bir malzeme oluşturun ve içeriğinizde kutu oluşturan bir nesneye atayın. 3B modelleme yapmak istemiyorsanız, birkaç varsayılan Dörtlü nesne kullanın ve bunları biraz üst üste bindirin. Bu yaklaşımın bir dizi dezavantajı vardır, ancak bu bir şeyi çalıştırmanın en hızlı yoludur ve daha sonra yeniden düzenlemeyi düşünseniz bile düşük kalitede bir kavram kanıtının çalışması harikadır.

Yukarıdaki "kara kutu" yaklaşımının önemli bir dezavantajı, iyi fotoğraf çekmemesidir. HoloLens'in ekranında efektiniz mükemmel görünse de, alacağınız tüm ekran görüntüleri duvar veya zeminden kalanlar yerine büyük siyah bir nesne gösterir. Bunun nedeni, fiziksel donanım ve ekran görüntülerinin bileşik hologramlar ve gerçekliğin farklı olmasıdır. Bir an için sahte matematiğin içine sapalım...

Sahte matematik uyarısı! Bu sayılar ve formüller, herhangi bir doğru ölçüm değil, bir noktayı göstermek içindir!

HoloLens aracılığıyla gördükleriniz:

( Reality * darkening_amount ) + Holograms

Ekran görüntülerinde ve videoda gördükleriniz:

( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha

İngilizce: HoloLens aracılığıyla gördükleriniz, karartılmış gerçekliğin (güneş gözlüğü gibi) ve uygulamanın göstermek istediği hologramların basit bir birleşimidir. Ancak ekran görüntüsü aldığınızda, kameranın görüntüsü piksel başına saydamlık değerine göre uygulamanın hologramlarıyla karıştırılır.

Bunu atlatma yollarından biri, "kara kutu" malzemeyi yalnızca derinlik arabelleğine yazacak şekilde değiştirmek ve diğer tüm opak malzemelerle sıralamaktır. Bunun bir örneği için GitHub'daki MixedRealityToolkit içindeki WindowOcclusion.shader dosyasına göz atın. İlgili satırlar buraya kopyalanır:

"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0

("Offset 50, 100" satırının ilgisiz sorunlarla ilgilenmek olduğuna dikkat edin, bu nedenle bunu dışarıda bırakmak mantıklı olacaktır.)

Bunun gibi görünmez bir tıkanıklık malzemesi uygulamak, uygulamanızın ekranda ve karma gerçeklik ekran görüntülerinde doğru görünen bir kutu çizmesine olanak sağlar. Bonus puanlar için, daha az görünmez piksel çizmek için akıllıca şeyler yaparak bu kutunun performansını daha da artırmayı deneyebilirsiniz, ancak bu gerçekten otların içine girebilirsiniz ve genellikle gerekli olmayacaktır.

İşte Unity'nin çizdiği mr basics 101'in gizli yeraltı dünyası. Yeraltı dünyasının pivotunun kutunun ortasında olduğunu ve bu da deliğin gerçek zemininize göre mümkün olduğunca sabit tutulmasına yardımcı olduğunu unutmayın.

İşte Unity'nin çizdiği mr basics 101'in gizli yeraltı dünyası. Yeraltı dünyasının pivotunun kutunun ortasında olduğunu ve bu da deliğin gerçek zemininize göre mümkün olduğunca sabit tutulmasına yardımcı olduğunu unutmayın.

Kendiniz yapın

HoloLens'iniz var ve etkiyi kendiniz denemek mi istiyorsunuz? Yapabileceğiniz en kolay şey (kodlama gerekmez) ücretsiz 3B Görüntüleyici uygulamasını yüklemek ve ardından GitHub'da sağladığım download.fbx dosyasını yükleyip odanızdaki saksı modelini görüntülemektir. HoloLens'e yüklerseniz işteki illüzyonu görebilirsiniz. Modelin önündeyken yalnızca küçük deliğin içini görebilirsiniz; diğer her şey görünmez. Başka bir taraftan modele bakın ve tamamen kaybolur. 3B Görüntüleyici'nin hareket, döndürme ve ölçek denetimlerini kullanarak sanal deliği aklınıza gelen herhangi bir dikey yüzeye konumlandırarak fikir üretin!

Unity düzenleyicinizde bu modeli görüntülemek, saksı etrafında büyük bir siyah kutu gösterir. HoloLens'te kutu kaybolur ve sihirli bir pencere efektine yol açar.

Unity düzenleyicinizde bu modeli görüntülemek, saksı etrafında büyük bir siyah kutu gösterir. HoloLens'te kutu kaybolur ve sihirli bir pencere efektine yol açar.

Bu tekniği kullanan bir uygulama oluşturmak istiyorsanız Karma Gerçeklik öğreticilerindekiMR Basics 101 öğreticisine göz atın. 7. bölüm, zemininizde gizli bir yeraltı dünyasının ortaya çıkarıldığı bir patlamayla sona erer (yukarıda gösterildiği gibi). Öğreticilerin sıkıcı olması gerektiğini kim söyledi?

Bu fikri bir sonraki adımda nereye götürebileceğinize dair bazı fikirler şunlardır:

  • Sanal delik içindeki içeriği etkileşimli hale getirmenin yollarını düşünün. Kullanıcılarınızın duvarlarının ötesinde bazı etkilere sahip olması, bu numaranın sağlayabilecekleri merak duygusunu gerçekten geliştirebilir.
  • Nesneler aracılığıyla bilinen alanlara geri dönmenin yollarını düşünün. Örneğin, sehpanıza holografik bir delik açıp altındaki zemini nasıl görebilirsiniz?

Yazar hakkında

Eric Rehmeyer'in resmi Eric Rehmeyer
Kıdemli Yazılım Mühendisi @Microsoft

Ayrıca bkz.