Google Cardboard ReticlePointer GazeInput Kullanımı

Arkadaşlar merhaba. Bu yazıda sizlere Google Cardboard’da nesneyle nasıl etkileşime geçildiğini anlatacağım. Yapacağım örnek bir nesneyle etkileşime geçip onun materyalini (rengini) değiştirme üzerine olacak ve eklediğim prefab ve scriptlerin ne işe yaradığını bu yazıda açıklıyor olacağım. Projeyi de github’dan indirip inceleyebilirsiniz.

1.Gerekli paketlerin projeye import edilmesi

Öncelikle yeni bir proje oluşturduktan sonra Google Cardboard SDK unity packageini indiriyoruz.

Assets > Import Package > Custom Package den indirdiğimiz dosyayı seçip projemize import ediyoruz.

2.Prefabların sahneye eklenmesi

Arama bölgesine GvrEventSystem yazıp belirtilen prefabı sahnenin ana dizinine ekliyoruz.

GvrEventSystem

GvrEventSystem sahnedeki eventların algılanmamızı sağlıyor.

Bir sonraki aşamada Camera’ya GvrReticlePointer prefabını ekliyoruz.

GvrReticlePointer

GvrReticlePointer ise sahnedeki nesnelerle iletişime geçebilmemiz için sahne ortasındaki pointerı (beyaz noktayı) bizim için otomatik oluşturuyor. (Main Camerayi Capsule içine almamın nedeni mouse controlleriyle alakalı, yani vr controllerine etki eden bir durum değil.)

3.Gerekli scriptlerin projeye entegrasyonu

Kamereya eklenecek scriptler;

  • Gvr Pointer Physics Raycaster (Sahnedeki 3D nesneler için)
  • Gvr Pointer Graphics Raycaster (Sahnedeki UI elementlerinin etkileşime geçmesi için)

Şuan sadece 3d nesnelerle etkileşim yapacağımız için camera’nın inspector penceresinde add component butonuna tıklayıp Gvr Pointer Physics Raycaster scriptini ekliyoruz.

Gvr Pointer Physics Raycaster

Ayarlamalarımızı yaptıktan sonra sahneye iki tane küp ekliyoruz ve materyallerini belirliyoruz.

Etkileşime geçeceğimiz nesneye tıklayıp inspector penceresinden yapacağımız adımları sırayla uyguluyoruz.

  • Add component diyerek Event Trigger scriptini ekliyoruz. (Bu unity içerisinde olan, nesnelerle hangi şekilde etkileşime geçebileceğimizi ve etkilenecek nesneyi belirtebileceğimiz bir scipt.
event trigger

Add New Event Type > PointerEnter ı seçiyoruz. Bunu seçenek pointerla seçilen nesnenin üzerine gelindiğinde işlem yapmasını sağlamak. Eğer PointerClick deseydik hedef script tıkladığımızda devreye girecekti.

pointer enter

Sonrasında + butonuna tıklayarak event trigger listesine yeni bir baseEventData ekleyip etkileşime geçildiğinde etkilenicek nesneyi belirtilen alana sürüklüyoruz.

Bu aşamada yukarıda yazan No Function yazan yerde istediğimiz etkileşimi yaratabilmemiz için yeni bir script yazmamız gerekiyor. Eğer materyal değişimi için bunu kullanıcaksanız paylaşacağım kod yeterli ama örneğin pointerla üzerine gelindiğinde belirli bi yere hareket ettirmek istiyorsanız yine kodlarınızı scripte yazıp buraya referans göstermelisiniz.

  • Material Changer diye bir script oluşturup seçilen nesnemin inspector penceresinden add component diyerek scriptimi ekliyorum.
material changer

Oluşturduğum scriptin içerisine alttaki kodları ekliyorum.

using System.Collections;
using System.Collections;using
System.Collections.Generic;
using UnityEngine;

public class MaterialChanger : MonoBehaviour
{
public GameObject HedefNesne;

public void ChangeMaterial(Material mat)
{
HedefNesne.GetComponent<Renderer> ().material = mat;
}
}
  • Sonrasında Event Trigger scriptinin üzerindeki No function ‘ı MaterialChanger > ChangeMaterial olarak belirtiyorum.

Son olarak hangi nesnenin üzerindeki materyalin hangi materyalle değişmesini istediğimi belirtiyorum. None (material) yazan kısma istenilen materyali sürükleyip bırakıyoruz.

Bu küçük örnekte olayın mantığını anladığımızı düşünüyorum. Sizde bunu ihtiyaç duyduğunuz projelere entegre ederek kullanabilirsiniz.

gaze input materyal degistirme