İçindekiler:
- Adım 1: IBM Watson SDK'sını Unity'de kurun
- Adım 2: IBM Watson Text to Speech'i Test Edin
- 3. Adım: Google Özel Arama API'sını kurun
- Adım 4: Unity'de Vuforia'yı kurun
- Adım 5: Bir Prefabrik Resim Oluşturun
- Adım 6: Google API için bir Komut Dosyası oluşturun
- Adım 7: Resim Fabrikamızı Oluşturun
- Adım 8: Bitirdik
Video: MEMES için Artırılmış Gerçeklik Uygulaması Yapalım!: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Bu Eğitilebilir Tabloda, Unity3D'de Android ve IOS için mem aramak için Google API'sini kullanan bir artırılmış gerçeklik uygulaması yapacağız. Unity'de Vuforia'nın yer düzlemi algılama özelliğini kullanacağız, böylece bu mobil uygulama çoğu Android ve IOS kullanıcısı için çalışacak. Vuforia'yı kullanmak aynı zamanda resimlerin tek bir yerde sabitlenmesini sağlar, böylece bu resim alanından geçebilir ve nesneler oldukları yerde kalırlar.
Bu aramaları sesimizle yapabilmemiz ve doğal dil işlemelerinden yararlanabilmemiz için yeni IBM Watson API'sini de test edeceğiz.
Kötü haber şu ki, bu API'lerin hiçbiri tamamen ücretsiz değil, ancak iyi haber şu ki, ikisi de denemekte özgür. Google özel arama API'si size günde 100 ücretsiz arama sağlar ve IBM Watson API'si size ilk ayı ücretsiz verir.
Kısacası, bu uygulama konuşmamızı Unity'deki mikrofondan alacak, bunu bize metni döndürecek olan IBM Watson sunucularına gönderecek. Daha sonra bu metni alacağız ve bize JSON biçiminde bir resim URL'si listesi verecek olan Google sunucularına göndereceğiz.
Adım 1: IBM Watson SDK'sını Unity'de kurun
Watson API'yi çalıştırmak için önce kimlik bilgilerinizi sitelerinden almanız gerekir. Console.bluemix.net'e gidin, oluşturun ve hesaplayın ve oturum açın. IBM hesabınıza gidin ve bulut dökümhanesi Orgs'a gidin ve yeni bir alan oluşturun. Şimdi kontrol panelinize gidin ve hizmetlere göz atmak için tıklayın, konuşmayı metin hizmetine ekleyin çünkü kullanacağımız şey bu. Bölgenizi, organizasyonunuzu ve alanınızı seçin ve projeyi oluşturun. Şimdi API kimlik bilgilerinizi altta göreceksiniz.
Henüz sahip değilseniz Unity'yi indirin ve Unity'deki varlık deposundan IBM Watson SDK'yı içe aktarın. Bunu boş bir oyun nesnesi oluşturarak test edebilir ve buna IBM Watson adını verebilir ve örnek akış komut dosyasını ekleyebiliriz. Bu komut dosyası, Unity'den gelen sesi kaydedecek ve işlenmek üzere Watson sunucularına gönderecek şekilde zaten ayarlanmıştır.
Şimdilik sadece bu örnek betiği kullanacağız çünkü yapacak daha çok işimiz var ama belki bir dahaki sefere Watson konusuna daha derine inebiliriz çünkü Vision API ile bir şeyler yapmak istiyorum.
Adım 2: IBM Watson Text to Speech'i Test Edin
Bu komut dosyası bir UI metin nesnesi arıyor, bu yüzden yeni bir UI düğmesi oluşturalım, bu bize ihtiyacımız olan metni verecek, düğmeyi daha sonra kullanacağız. Tuvali ekran boyutuyla ölçeklenecek şekilde ayarlayın ve düğmeyi biraz yeniden boyutlandırın. Sol alta sabitleyin. Bu metni boş yuvaya sürükleyin. Komut dosyasını açın ve IBM Watson kimlik bilgilerimizi ekleyelim, "resultsField" metninin nerede kullanıldığını bulalım ve onu yalnızca "alt.transcript" olarak ayarlayın çünkü bu metni google'da arama yapmak için kullanacağız. Şimdi bunu test etmeden önce, metin boyutunu dinamik olarak yapmamız gerekiyor, böylece ne söylersek söyleyelim kutunun içine sığacak. Metne geri dönün ve en uygun şekilde ayarlayın. Test etmek için bir metin yazın. Şimdi oynat'ı tıkladığımızda, sözlerimiz Watson Text to Speech API'sinden metne dönüştürülecek.
3. Adım: Google Özel Arama API'sını kurun
Yapmamız gereken bir sonraki parça, Unity'de kullanmak üzere Google özel arama api'sini ayarlamak. Yüksek düzeyde, Unity'den Google sunucularına, bize JSON biçiminde bir yanıt verecek bir HTTP isteği yapacağız.
Bu nedenle, Google Özel Arama JSON API kurulum sayfasına gidin, bir API anahtarı almak için tıklayın ve yeni bir uygulama oluşturun. Bunu açık tut. Artık kontrol paneline geçebiliriz. Sitelerin araması için herhangi bir şey koyun, ne olursa olsun adlandırın ve oluştur'u tıklayın.
Kontrol paneline tıklayın ve bazı değişiklikler yapalım: biz esas olarak memleri aramak ve görsel aramayı açmak istiyoruz. Aranacak siteler altında, bunu tüm web'e değiştirin. Her şeyi kaydetmek için güncelle'yi tıklayın.
Şimdi google api gezginini bulun ve özel arama API'sine gidin. Bu, Google'dan aldığımız JSON yanıtını biçimlendirmemizi sağlayacaktır. Şimdilik sorgu için herhangi bir şey koyun, arama motoru kimliğinizi yapıştırın, yinelenenleri almamak için filtreye 1 koyun, num'un altına 10 koyun, çünkü bu, bir seferde döndürebileceğimiz maksimum sonuç sayısıdır, arama türü için resim koyun çünkü geri dönmek istediğimiz tek şey bu. Başlangıç için 1 girin ve son olarak alanların altına "öğeler/bağlantı" koyun çünkü iade edilen her öğe için yalnızca resim bağlantısını istiyoruz. Şimdi yürütmeyi tıkladığınızda, döndürülen 10 güzel resim bağlantısı aldığımızı göreceksiniz.
Şimdi bu resimleri Unity'ye almalıyız.
Adım 4: Unity'de Vuforia'yı kurun
Vuforia'yı çalıştıralım, böylece onların yer düzlemi algılamasından yararlanalım. Mevcut sahnenizi kaydedin ve yapı ayarlarına gidin. Platformunuzu Android veya IOS'a değiştirin ve IOS'ta paket tanımlayıcı için bir şey koyduysanız, bir kamera ve mikrofon kullanım açıklaması ekleyin. XR ayarları altında, desteklenen Vuforia artırılmış gerçeklik seçeneğini işaretleyin.
Şimdi sahnede ana kamerayı silin ve bir Vuforia ARCamera ekleyin. Yapılandırma bölümüne gidin ve izleme modunu konumsal olarak değiştirin. Tüm veritabanlarının işaretini kaldırın çünkü onlara ihtiyacımız yok.
Şimdi bir uçak bulucu ekleyin ve varsayılan davranışını geçersiz kılmamız gerekiyor çünkü yer düzlemi aşamasını yalnızca bir kez dağıtmak istiyoruz, bu nedenle Vuforia web sitesinde Sahne Alanı Bir Kez Konuşlandırma komut dosyasını bulalım. Bu komut dosyasını Unity'ye getirin ve orada bulunan eski komut dosyasını kaldırarak uçak bulucuya koyun. Modu etkileşimli olarak değiştirin ve bu Unity Etkinliğinde "OnInteractiveHitTest" işlevinin çağrıldığından emin olun. Hazır buradayken yer düzlemini bulduktan sonra daha önce yaptığımız butonu aktif hale getirelim, default durumunu inaktif olarak ayarlayalım. Şimdi sahneye bir yer uçağı koyun ve onu orta havaya değiştirin çünkü tüm resimlerin havada yüzmesini istiyoruz. Bu yer düzlemini uçak bulucudaki boş yuvaya sürükleyin.
Adım 5: Bir Prefabrik Resim Oluşturun
Tüm bu parçaları bir araya getirmeye başlamadan önce, her resim yüklendiğinde somutlaştırabileceğimiz önceden hazırlanmış bir oyun nesnesi oluşturmamız gerekiyor. Bu nedenle, yer düzlemi aşamasının altında boş bir oyun nesnesi oluşturun ve buna "picPrefab" adını verin. Bunun bir alt öğesi olarak bir dörtlü oluşturun ve onu 2 ile ölçeklendirin, y'sini 180 derece döndürün, böylece mavi ok olarak gösterilen ebeveyn ileri vektörü dörtlü ön olur.
"PictureBehavior" adında yeni bir komut dosyası oluşturun ve onu picPrefab'ımıza ekleyin.
Şimdi bu resmi hazır yapıyı varlıklar klasörünüze sürükleyin ve bu, her bir resmi koyacağımız şeydir.
"PictureBehavior" betiğimiz şöyle görünmelidir:
System. Collections'ı kullanarak;
System. Collections. Generic kullanarak; UnityEngine'i kullanarak; public class PictureBehavior: MonoBehaviour { public Renderer quadRenderer; özel Vector3 istenenKonum; void Start(){ //kamera dönüşümüne bakın. LookAt (Camera.main.transform); Vector3 istenenAçı = yeni Vector3 (0, transform.localEulerAngles.y, 0); transform.rotation = Quaternion. Euler (istenenAçı); //havaya zorla istenenPosition = transform.localPosition; transform.localPosition += new Vector3 (0, 20, 0); } void Update(){ transform.localPosition = Vector3. Lerp (transform.localPosition, desirePosition, Time.deltaTime * 4f); } public void LoadImage(string url){ StartCoroutine (LoadImageFromURL (url)); } IEnumerator LoadImageFromURL(string url){ WWW www = new WWW(url); getiri getirisi www; quadRenderer.material.mainTexture = www.texture; } }
Adım 6: Google API için bir Komut Dosyası oluşturun
Şimdi referansı "picPrefab" dan dörtlü oluşturucuya sürükleyelim.
Yapmamız gereken yalnızca iki komut dosyası kaldı, bu nedenle GoogleService.cs ve PictureFactroy.cs adlı bir C# komut dosyası oluşturalım.
"GoogleService" içine, isteğimizi yapan şu kodu yapıştırın:
System. Collections'ı kullanarak;
System. Collections. Generic kullanarak; UnityEngine'i kullanarak; UnityEngine. UI'yi kullanarak; public class GoogleService: MonoBehaviour { public PictureFactory pictureFactory; genel Metin düğmesiMetin; private const string API_KEY = "API ANAHTARINI BURAYA KOYUN!!!!!"; public void GetPictures(){ StartCoroutine (PictureRoutine()); } IEnumerator PictureRoutine(){ buttonText.transform.parent.gameObject. SetActive (yanlış); dize sorgusu = buttonText.text; sorgu = WWW. EscapeURL (sorgu + " memler"); //eski resimleri sil imageFactory. DeleteOldPictures(); // nesneler yerleştirilirken hareket edebilmemiz için kamera ileri vektörünü kaydedin Vector3 cameraForward = Camera.main.transform.forward; //bir seferde sadece 10 sonuç alabiliriz, bu yüzden her 10 int satırNum = 1'den sonra başlangıç numarasını değiştirerek döngüye girmeli ve ilerlememizi kaydetmeliyiz; for (int i = 1; i <= 60; i += 10) { string url = "https://www.googleapis.com/customsearch/v1?q=" + sorgu + "&cx=011535004225295624669%3Afeb1gwic6bs&filter=1&num =10&searchType=image&start=" + i + "&fields=items%2Flink&key=" + API_KEY; WWW www = yeni WWW (url); getiri getirisi www; pictureFactory. CreateImages (ParseResponse(www.text), rowNum, cameraForward); satırNum++; } getiri getirisi yeni WaitForSeconds (5f); buttonText.transform.parent.gameObject. SetActive (doğru); } Liste ParseResponse(dize metni){ Liste urlList = yeni Liste (); string urls = text. Split ('\n'); foreach (url'lerde dize satırı) { if (line. Contains("bağ")){ string url = line. Substring (12, line. Length-13); //png veya jpg ile filtreleme Google'dan çalışmıyor gibi görünüyor, bu yüzden burada yapıyoruz: if (url. Contains (".jpg") || url. Contains (".png")) { urlList. Add (url); } } } urlList'i döndür; } }
Adım 7: Resim Fabrikamızı Oluşturun
PictureFactory.cs içinde, tüm resimlerimizi oluşturmak ve dokularını bir URL'den yüklemek için bu kodu koydu.
System. Collections'ı kullanarak;
System. Collections. Generic kullanarak; UnityEngine'i kullanarak; public class PictureFactory: MonoBehaviour { public GameObject picPrefab; genel GoogleService googleService; public void DeleteOldPictures(){ if (transform.childCount > 0) { foreach (Bu.transform'da çocuğu dönüştür) { Destroy (child.gameObject); } } } public void CreateImages(ListurlList, int sonuçNum, Vector3 camForward){ int picNum = 1; Vector3 merkezi = Camera.main.transform.position; foreach (urlList'te dize url'si) { Vector3 pos = GetPosition (picNum, sonuçNum, camForward); GameObject pic = Örnekleme (picPrefab, pos, Quaternion.identity, this.transform); pic. GetComponent (). LoadImage (url); picNum++; } } Vector3 GetPosition(int picNum, int rowNum, Vector3 camForward){ Vector3 pos = Vector3.zero; if (picNum <= 5) { pos = camForward + new Vector3 (picNum * -3, 0, rowNum * 3.5f); } else { pos = camForward + yeni Vector3 ((picNum % 5) * 3, 0, rowNum * 3.5f); } dönüş konumu; } }
Adım 8: Bitirdik
GoogleService adlı boş bir gameobject oluşturun ve üzerine "GoogleSerivice" komut dosyasını yerleştirin.
Tüm resimlerimiz bu oyun nesnesinin çocukları olarak oluşturulacağından, "PictureFactory" komut dosyasını yer düzlemi aşamasına sürükleyin.
Müfettişteki uygun referansları sürükleyin, aynı şeyi google hizmeti için yapın.
Yapmamız gereken son şey, "GetPictures" fonksiyonumuzun çağrıldığından emin olmaktır. O halde butonumuzun "onClick" olayına gidelim ve oradan çağıralım.
Şimdi play'e tıklayıp bunu test edebiliriz. Yer düzlemi aşamasını ve düğmesini etkinleştirdiğinizden emin olun. Bir kelime söyleyin ve o metin üzerinde arama yapmak için düğmeye tıklayın!
Şimdi bu uygulamayı telefonunuza yüklemek için takın ve Dosya->Yapı Ayarları'na gidin. İnşa et ve koş!
Herhangi bir sorunuz varsa yorumlarda bana bildirin!
Önerilen:
Artırılmış Gerçeklik ile Hafızanızı Güçlendirin Mind Palace: 8 Adım
Artırılmış Gerçeklik ile Hafızanızı Güçlendirin Zihin Sarayı: Sherlock Holmes'taki gibi zihin saraylarının kullanımı, hafıza şampiyonları tarafından karıştırılmış bir destedeki kartların sırası gibi birçok bilgiyi hatırlamak için kullanılmıştır. Zihin sarayı veya loci yöntemi, görsel anımsatıcıların olduğu bir hafıza tekniğidir
GlobalARgallery - Küresel Artırılmış Gerçeklik Galerisi: 16 Adım
#GlobalARgallery - Küresel Artırılmış Gerçeklik Galerisi: #GlobalARgallery, okulların (ve diğerlerinin) dünyanın dört bir yanında eşzamansız olarak bağlantı kurma ve deneyimleri, sanat eserlerini, hikayeleri, zaman çizelgelerini, sergileri, sunumları ve hayal edebileceğiniz her şeyi paylaşma fırsatıdır. Bunların hepsi A'da görünüyor
OpenCV ve Python 3.5 Kullanarak Dragonboard410c veya Dragonboard820c için Artırılmış Gerçeklik (AR): 4 Adım
OpenCV ve Python 3.5 Kullanarak Dragonboard410c veya Dragonboard820c için Artırılmış Gerçeklik (AR): Bu talimat, artırılmış gerçeklik uygulamasını çalıştırmak için OpenCV, Python 3.5 ve Python 3.5 bağımlılıklarının nasıl kurulacağını açıklar
Yeni Başlayanlar İçin Artırılmış Gerçeklik Uygulaması: 8 Adım
Yeni Başlayanlar için Artırılmış Gerçeklik Uygulaması: Bu eğitim, yeni başlayanlar için nasıl artırılmış gerçeklik uygulaması yapacağınızı gösterecektir. Android veya IOS için işaretleyicisiz bir AR uygulaması yapmak için Unity3D ve Vuforia'nın yer düzlemi algılamasını kullanacağız. Unity'ye bir 3D model eklemeyi ve onu taşımayı
CityCoaster - İşletmeniz İçin Kendi Artırılmış Gerçeklik Altlığınızı Oluşturun (TfCD): 6 Adım (Resimlerle)
CityCoaster - İşiniz İçin Kendi Artırılmış Gerçeklik Altlığınızı İnşa Edin (TfCD): Fincanınızın altında bir şehir! CityCoaster, Rotterdam Lahey Havalimanı için şehrin kimliğini ifade edebilecek, lounge alanında müşterilerini artırılmış gerçeklikle eğlendirebilecek bir ürün düşünülerek doğmuş bir projedir. Böyle bir ortamda