İçindekiler:

Artırılmış Gerçeklik Vuforia 7 Yer Düzlem Tespiti.: 8 Adım
Artırılmış Gerçeklik Vuforia 7 Yer Düzlem Tespiti.: 8 Adım

Video: Artırılmış Gerçeklik Vuforia 7 Yer Düzlem Tespiti.: 8 Adım

Video: Artırılmış Gerçeklik Vuforia 7 Yer Düzlem Tespiti.: 8 Adım
Video: Artırılmış Gerçeklik Nedir? 2024, Kasım
Anonim
Artırılmış Gerçeklik Vuforia 7 Yer Düzlem Algılama
Artırılmış Gerçeklik Vuforia 7 Yer Düzlem Algılama
Artırılmış Gerçeklik Vuforia 7 Yer Düzlem Algılama
Artırılmış Gerçeklik Vuforia 7 Yer Düzlem Algılama

Vuforia'nın Unity 3D için artırılmış gerçeklik SDK'sı, AR'de yer uçaklarını algılamak için ARCore ve ARKit kullanır. Bugünün öğreticisi, Android veya IOS için bir AR uygulaması yapmak için Unity'deki yerel entegrasyonlarını kullanacak. Gökyüzünden yere düşen bir arabamız olacak ve biz yaklaştığımızda kapıları otomatik olarak açılacak. AR'de video yapmayı da ele alacağız. Devam etmek için bilgisayarınızda Unity 3D'nin kurulu olması gerekir (ücretsizdir). Bu talimatlar tamamen yeni başlayanlar içindir, bu yüzden her şeyi ayrıntılı olarak ele alacağız!

Vuforia'nın SLAM'inin en iyi yanı, desteklediği IOS ve Android cihazlarının miktarıdır. Tam bir cihaz listesi burada bulunabilir:

library.vuforia.com/articles/Solution/grou…

Adım 1: Yeni Bir Proje Başlatın

Yeni Bir Proje Başlatın
Yeni Bir Proje Başlatın

Henüz sahip değilseniz Unity 3D'yi buradan indirin:

Sahip olduğunuz cihaza bağlı olarak Vuforia Artırılmış Gerçeklik ve Android veya IOS desteği yüklediğinizden emin olun.

Unity'yi açın ve yeni bir Unity projesi başlatın, istediğiniz gibi adlandırın.

İlk önce, unutmamak için kurmak için uygulama kurulumundan çıkalım. Bu yüzden sahneyi kaydedin ve "ana" olarak adlandırın.

Dosyaya gidin, ayarları oluşturun ve derleme platformunuzu Android veya IOS olarak değiştirin. Oynatıcı ayarlarında XR ayarlarına gidin ve Vuforia Artırılmış Gerçeklik Desteklenir'i kontrol edin.

Android kullanıyorsanız, başka bir şey yapmanız gerekmez, ancak IOS'ta diğer ayarlara gidin ve paket tanımlayıcınız için bir şeyler eklediğinizden emin olun. "com. ŞirketinizinAdı. UygulamanızAdı" biçimini kullanın.

Kamera kullanım açıklaması için herhangi bir şey koyun ve hedef minimum yapı sürümünü en az 9.0 olarak değiştirin.

Bunu kapatın ve şimdi diğer her şeyi ayarlayalım.

Adım 2: Vuforia'yı Ayarlayalım

Vuforia'yı Ayarlayalım
Vuforia'yı Ayarlayalım

Şimdi her şeyi ayarlayalım.

Üst menüdeki gameobject'e gidin ve ARCamera'yı tıklayın. Şimdi ana kamerayı sahnenizden silin.

ARCamera'yı seçin ve denetçinin sağ tarafında Vuforia Yapılandırmasını Aç'a tıklayın. Burada herhangi bir resim hedefi kullanmadığımız için veri kümeleri koleksiyonunu tıklayın ve her şeyin işaretini kaldırın.

Cihaz izleyiciye tıklayın ve cihaz pozunu izle'ye tıklayın. İzlemeyi rotasyonelden pozisyonel olarak değiştirin.

Şimdi oyun nesnesi sekmesine geri dönün ve Vuforia, Ground Plane ve Plane Finder'a tıklayın. Bu, yer düzlemimizi bulan komut dosyalarını barındırır.

İhtiyacımız olan son şey yer düzlemi aşamasıdır, bu yüzden üst menüde oyun nesnesine tekrar gidin ve Vuforia, Yer Düzlemi'ni tıklayın ve Yer Düzlemi Aşamasını seçin. Şimdi buna çocuğumuz olan her şey AR'de görünecek.

Adım 3: Yeni Bir Komut Dosyası Ekleyin

Yeni Komut Dosyası Ekle
Yeni Komut Dosyası Ekle
Yeni Komut Dosyası Ekle
Yeni Komut Dosyası Ekle

Bu yer düzlemi algılamasının varsayılan davranışı, ekrana her bastığınızda yeni bir nesne yerleştirmektir. İstediğimiz şey, ekrana her bastığınızda nesneyi yeniden konumlandırmak. Varlıklar klasörünüze sağ tıklayın ve yeni bir C# betiği oluşturun. "DeployStageOnce" olarak adlandırın ve her şeyi bu kodla değiştirin:

Sistemi kullanarak;

UnityEngine'i kullanarak; Vuforia'yı kullanarak; ortak sınıf DeployStageOnce: MonoBehaviour { public GameObject AnchorStage; özel PositionalDeviceTracker _deviceTracker; özel GameObject _previousAnchor; public void Start () { if (AnchorStage == null) { Debug. Log("AnchorStage belirtilmelidir"); dönüş; } AnchorStage. SetActive(yanlış); } public void Awake() { VuforiaARController. Instance. RegisterVuforiaStartedCallback(OnVuforiaStarted); } public void OnDestroy() { VuforiaARController. Instance. UnregisterVuforiaStartedCallback(OnVuforiaStarted); } private void OnVuforiaStarted() { _deviceTracker = TrackerManager. Instance. GetTracker(); } public void OnInteractiveHitTest(HitTestResult sonuç) { if (sonuç == null || AnchorStage == null) { Debug. LogWarning("İsabet testi geçersiz veya AnchorStage ayarlanmadı"); dönüş; } var çapa = _deviceTracker. CreatePlaneAnchor(Guid. NewGuid(). ToString(), sonuç); if (çapa != boş) { AnchorStage.transform.parent = çapa.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive(true); } if (_previousAnchor != null) { Destroy(_previousAnchor); } _previousAnchor = çapa; } }

Bu betiğin kullanıldığından emin olmak için OnInteractiveHitTest() işlevini çağırmamız gerekiyor, bu yüzden Unity'ye geri dönün ve uçak bulucu oyun nesnesine tıklayın. Modu Otomatik'ten Etkileşimli'ye değiştirin. Az önce yaptığımız komut dosyasını uçak bulucu oyun nesnesine sürükleyin. ContentPositioningBehavior komut dosyasını kaldırın. DeployStageOnce komut dosyasında bir oyun nesnesi için bir nokta göreceksiniz, uçak bulucuyu oraya sürükleyin ve bu komut dosyasını bulun, listenin en üstünden OnInteractiveHitTest işlevini seçin. Artık kullanıcı ekrana her tıkladığında fonksiyonumuz çağrılacak!

Adım 4: Arabayı Ekleyelim

Arabayı Ekleyelim
Arabayı Ekleyelim

Bu ücretsiz araba 3D modelini buradan indirin (.obj sürümünü edindiğinizden emin olun):

www.turbosquid.com/3d-models/max-exterior-…

Ayrıca, bu sesi indirin çünkü araba yere çarptığında çalacağız:

freesound.org/people/PaulMorek/sounds/1967…

Bu dosyaların her ikisini de açın ve varlıklar klasörünüze sürükleyin.

Arabaya tıklayın ve sağa bakın, üstteki açılır menüden Dış Malzemeler (Eski) Kullanmak için Gömülü Malzemeleri Kullan'ı değiştirin. Artık arabadaki tüm malzemelerin rengini değiştirebileceğiz.

Arabayı bir çocuk yaparak yer düzlemi sahnenize sürükleyin. x, y ve z üzerinde ölçeği.035 olarak değiştirin.

Şimdi arabaların çocuk oyun nesnelerinin her birini gözden geçirin ve malzemelerini istediğiniz renge değiştirin.

Arabanın temel oyun nesnesine sert bir gövde bileşeni ekleyin ve ayrıca bir kutu çarpıştırıcısı ekleyin, tüm arabayı kaplayacak şekilde ölçeklendirin. Ayrıca, yer düzlemi aşamasına bir kutu çarpıştırıcı ekleyin ve onu, yer düzlemi aşamasından birkaç kat daha geniş olacak şekilde ölçeklendirin. Bu şekilde arabayı gökyüzünden düşürebiliriz ve Unity'nin yerleşik fizik motorunu kullanarak yere çarpacaktır.

Adım 5: Arabayı Gökyüzüne Kaldırın

Arabayı Gökyüzüne Koy
Arabayı Gökyüzüne Koy

Arabanın kök oyun nesnesine bir ses kaynağı bileşeni ekleyin, araba çarpma sesini ses klibi noktasına sürükleyin.

Şimdi kullanıcı ekrana bastığında arabayı havaya kaldıracak ve ardından araba yere çarptığında çarpışma sesini çalacak bir script yapmamız gerekiyor. Bu nedenle, varlıklar klasörüne sağ tıklayın ve yeni bir C# betiği oluşturun ve buna "CarController" adını verin.

Oradaki tüm kodu bununla değiştirin:

System. Collections'ı kullanarak;

System. Collections. Generic kullanarak; UnityEngine'i kullanarak; public class CarController: MonoBehaviour { private bool soundPlayed = false; // Güncelleme çerçeve başına bir kez çağrılır void Update () { if (!soundPlayed && transform.localPosition.y <.05f) { soundPlayed = true; StartCoroutine (DelayPlaySound()); } } public void MoveCar(){ transform.localPosition += new Vector3 (0, 10, 0); transform.eulerAngles += new Vector3 (5, 20, 5); soundPlayed = yanlış; } IEnumerator DelayPlaySound(){ verim dönüşü yeni WaitForSeconds (.2f); GetComponent(). Play(); } }

MoveCar fonksiyonunu yukarıdaki resimdeki gibi OnInteractiveHitTest olayına ekleyin. Artık kullanıcı ekrana tıkladığında çağrılacak.

Adım 6: Lambo Kapıları

Lambo Kapılar
Lambo Kapılar

Yani araba oyunu nesnesini genişletir ve kapıları bulursanız, her iki kapının da tek bir ağ olduğunu fark edeceksiniz. Kapıları açmak istiyorsak tek seçeneğimiz dikey açılan Lambo kapılar olacak. Bu işi yapmak için önce pivot noktalarını değiştirmemiz gerekiyor.

Arabanın çocuğu olan boş bir oyun nesnesi yapın. Kapıları içeri sürükleyin ve onları bu yeni oyun nesnesinin bir çocuğu yapın. Ana oyun nesnesini, kapı menteşelerinden pivot noktasının olması gereken yere taşıyın. Şimdi çocuk kapıları tekrar yerine taşıyın. Şimdi kapılar ebeveynini döndürdüğümüzde, pivot noktası doğru yerde.

Arabaya yaklaştığınızda kapıları açan bir senaryo yapacağız ama bunu yapmadan önce olayı "tetiklemek" için bir yola ihtiyacımız var. Kapı ana oyun nesnenize bir kutu çarpıştırıcısı ekleyin ve onu her iki yönde de arabanın üzerinden biraz geçecek şekilde ölçeklendirin. "isTrigger"ı kontrol edin. Şimdi ana kameraya bir kutu çarpıştırıcı ekleyin ve uygun şekilde ölçeklendirin. Ayrıca "isTrigger"ı da kontrol edin. Kameranıza bir Rigid Body bileşeni ekleyin ve "useGravity" seçeneğinin işaretini kaldırın. Kameranız seçiliyken, denetçinin üst kısmındaki etiketini "Ana Kamera" olarak değiştirin.

"LamboDoorBehavior" adlı yeni bir komut dosyası ekleyin ve aşağıdaki kodu ekleyin. Komut dosyasını kapınızın ebeveynine sürükleyin.

System. Collections'ı kullanarak;

System. Collections. Generic kullanarak; UnityEngine'i kullanarak; public class LamboDoorBehavior: MonoBehaviour { private float currAngle = 0; özel kayan nokta istenenAçı = 0; // Güncelleme çerçeve başına bir kez çağrılır void Update () { currAngle = Mathf. LerpAngle (currAngle, desireAngle, Time.deltaTime * 3f); transform.localEulerAngles = new Vector3 (currAngle, 0, 0); } public void OpenDoors(){ istenenAçı = 60f; } public void CloseDoors(){ istenenAçı = 0; } void OnTriggerEnter(Collider col){ if (col. CompareTag ("Ana Kamera")) { OpenDoors (); } } void OnTriggerExit(Collider col){ if (col. CompareTag ("Ana Kamera")) { CloseDoors (); } } }

Bu komut dosyası, iki nokta (veya bu durumda iki açı) arasında enterpolasyon yapan birlik içinde Lerp() işlevini kullanarak AR'de kapıları kapattığınızda kapılarınızın yavaş açılmasına neden olacaktır.

Adım 7: AR'de Video Oynatma

AR'de Video Oynatma
AR'de Video Oynatma
AR'de Video Oynatma
AR'de Video Oynatma

Yapmamız gereken son şey, AR'de video oynatmak.

Arabanızın çocuğu olan herhangi bir oyun nesnesine sağ tıklayın ve bir 3B nesne, Quad oluşturun. Bu, dörtlü arabanızın bir çocuğu olmasını sağlayacaktır. Bu dörtlü, arabanızın ön paneline sığacak ve orada olması gerektiği gibi görünecek şekilde konumlandırın ve yeniden boyutlandırın. Videoyu oynatacağımız şey bu.

Quad'inize bir video oynatıcı bileşeni ekleyin. Kaynağı URL olarak değiştirin ve bir. MP4 dosyasına sabit bir bağlantı bulun veya bir video dosyasını varlıklar klasörünüze sürükleyin ve ardından bu klibi boş yuvaya sürükleyin. Bir URL'den video akışı yapmak istiyorsanız, Instragram harika bir kaynaktır. Google Chrome'da herhangi bir Instagram videosuna sağ tıklayın ve incele'ye tıklayın. Videoyu içeren div'i bulun ve bağlantıyı oradan kopyalayın (yukarıda resmedilen bu yönteme sahibim).

Birden fazla oynamasını istiyorsanız döngüyü kontrol ettiğinizden emin olun. Bu oyun nesnesine bir ses kaynağı bileşeni ekleyin ve çıkış kaynağını video oynatıcıdaki ses kaynağına değiştirin. Yeni oluşturduğunuz ses kaynağınızı o yuvaya sürükleyin.

Sonunda işimiz bitti!

Adım 8: Uygulamayı Telefonunuza Yükleyin

Uygulamayı Telefonunuza Yükleyin!
Uygulamayı Telefonunuza Yükleyin!

Android için derleme yapıyorsanız, dosyaya gidebilir ve telefonunuz takılıyken derlemeye basıp çalıştırabilirsiniz.

Bir iPhone veya iPad için geliştiriyorsanız, uygulama mağazasından Xcode'u indirdiğinizden emin olun. Ayrıca, www.apple.developer.com adresinden ücretsiz bir elma geliştirici hesabına kaydolun. Dosyaya gidin ve derlemeye basın. Xcode'dan oluşturulan dosyayı açın ve telefonunuzu takın. Geliştirme ekibinizi seçin ve oynat düğmesine basın.

Kamerayı biraz hareket ettirmeniz gerekebilir, ancak bir saniye verin ve ekrana dokunun ve arabanızın gökyüzünden yere düştüğünü görmelisiniz! Artık içeri girebilir ve kontrol panelinde video oynatmanızı izleyebilirsiniz!

Eğlenin ve yorumlarda herhangi bir sorunuz varsa bana bildirin!

Önerilen: