მოდით შევქმნათ გაფართოებული რეალობის აპლიკაცია MEMES- ისთვის!: 8 ნაბიჯი
მოდით შევქმნათ გაფართოებული რეალობის აპლიკაცია MEMES- ისთვის!: 8 ნაბიჯი
Anonim
მოდით შევქმნათ გაფართოებული რეალობის აპლიკაცია MEMES– ისთვის!
მოდით შევქმნათ გაფართოებული რეალობის აპლიკაცია MEMES– ისთვის!

ამ ინსტრუქციურად ჩვენ ვაპირებთ გავაკეთოთ გაძლიერებული რეალობის აპლიკაცია Android- ისა და IOS- ისთვის Unity3D- ში, რომელიც იყენებს Google API- ს მემეების მოსაძებნად. ჩვენ გამოვიყენებთ Vuforia– ს სახმელეთო თვითმფრინავის გამოვლენას Unity– ში, ასე რომ ეს მობილური აპლიკაცია იმუშავებს Android– ისა და IOS– ის უმეტეს მომხმარებლებისთვის. Vuforia– ს გამოყენება ასევე მოგვცემს საშუალებას, რომ სურათები ერთ ადგილას იყოს მიმაგრებული, ასე რომ ჩვენ შეგვიძლია გავატაროთ სურათების ეს ველი და ობიექტები დარჩეს იქ, სადაც არიან.

ჩვენ ასევე ვაპირებთ გამოვცადოთ ახალი IBM Watson API, ასე რომ ჩვენ შეგვიძლია გავაკეთოთ ეს ძიებები ჩვენი ხმით და გამოვიყენოთ მათი ბუნებრივი ენის დამუშავება.

ცუდი ამბავი ის არის, რომ არცერთი API არ არის სრულიად უფასო, მაგრამ კარგი ამბავი ის არის, რომ ორივე თავისუფალია ცდის. Google– ის პერსონალური ძიების API გაძლევთ 100 უფასო ძიებას დღეში, ხოლო IBM Watson API გაძლევთ პირველ თვეს უფასოდ.

მოკლედ, ეს აპლიკაცია მიიღებს ჩვენს გამოსვლას Unity– ის მიკროფონიდან, გაუგზავნის IBM Watson– ის სერვერებს, რომლებიც დაგვიბრუნებენ ტექსტს. ჩვენ შემდეგ ავიღებთ ამ ტექსტს და გავუგზავნით მას Google სერვერებს, რომლებიც დაგვიბრუნებენ სურათების URL– ების ჩამონათვალს JSON სახით.

ნაბიჯი 1: შექმენით IBM Watson SDK ერთობაში

შექმენით IBM Watson SDK ერთობაში
შექმენით IBM Watson SDK ერთობაში

Watson API– ს გასააქტიურებლად, ჯერ უნდა მიიღოთ თქვენი რწმუნებათა სიგელები მათი საიტიდან. გადადით Console.bluemix.net– ზე, შექმენით და შექმენით ანგარიში და შედით სისტემაში. გადადით თქვენს IBM ანგარიშზე და გადადით ღრუბლის ქარხნის ორგებზე და შექმენით ახალი სივრცე. ახლა გადადით თქვენს დაფაზე და დააწკაპუნეთ სერვისების დასათვალიერებლად, დაამატეთ მეტყველება ტექსტურ სერვისს, რადგან ეს არის ის, რასაც ჩვენ გამოვიყენებთ. შეარჩიეთ თქვენი რეგიონი, ორგანიზაცია და სივრცე და შექმენით პროექტი. ახლა თქვენ ნახავთ თქვენს API სერთიფიკატებს ბოლოში.

ჩამოტვირთეთ Unity, თუ ის ჯერ არ გაქვთ და შემოიტანეთ IBM Watson SDK ერთობაში არსებული აქტივების მაღაზიიდან. ჩვენ შეგვიძლია გამოვცადოთ ეს ცარიელი თამაშის ობიექტის შექმნით და ვუწოდოთ მას IBM Watson და დავამატოთ სტრიქონის მაგალითი. ეს სკრიპტი უკვე არის ჩაწერილი აუდიო ერთიანობიდან და გადაეგზავნება უოტსონის სერვერებს დამუშავებისათვის.

ჯერჯერობით ჩვენ უბრალოდ გამოვიყენებთ ამ სკრიპტის მაგალითს, რადგან ჩვენ კიდევ ბევრი გვაქვს გასაკეთებელი, მაგრამ შესაძლოა შემდეგ ჯერზე უფრო ღრმად ჩავწვდეთ უოტსონის ნივთებს, რადგან მე მსურს რაიმე გავაკეთო Vision API– ით.

ნაბიჯი 2: გამოსცადეთ IBM Watson Text to Speech

გამოსცადეთ IBM Watson– ის ტექსტი მეტყველებაზე
გამოსცადეთ IBM Watson– ის ტექსტი მეტყველებაზე

ეს სკრიპტი ეძებს ინტერფეისის ტექსტურ ობიექტს, ასე რომ შევქმნათ ახალი ინტერფეისის ღილაკი, რომელიც მოგვცემს საჭირო ტექსტს, ჩვენ მოგვიანებით გამოვიყენებთ ღილაკს. დააყენეთ ტილო ეკრანის ზომით და შეცვალეთ ღილაკი ოდნავ. გაამაგრეთ იგი ქვედა მარცხნივ. გადაიტანეთ ეს ტექსტი ცარიელ სლოტში. გახსენით სკრიპტი და მოდით დავამატოთ ჩვენი IBM Watson სერთიფიკატები, ვიპოვოთ სად გამოიყენება "resultsField" ტექსტი და დავაყენოთ ის მხოლოდ "alt.transcript" - ზე, რადგან ჩვენ ვაპირებთ ამ ტექსტის გამოყენებას Google- ის საძიებლად. სანამ ჩვენ შევამოწმებთ ამას, ჩვენ გვჭირდება ტექსტის ზომა დინამიურად, ასე რომ რასაც ჩვენ ვიტყვით, მოთავსდება ყუთში. დაუბრუნდით ტექსტს და დააყენეთ ის საუკეთესოდ. ჩაწერეთ რამდენიმე ტექსტი მის შესამოწმებლად. როდესაც ჩვენ ვაწკაპუნებთ დაკვრაზე, ჩვენი სიტყვები გადაიწერება ტექსტზე Watson Text to Speech API.

ნაბიჯი 3: დააყენეთ Google Custom Search API

დააყენეთ Google Custom Search API
დააყენეთ Google Custom Search API

შემდეგი ნაჭერი, რაც უნდა გავაკეთოთ, არის Google საბაჟო ძებნის api დაყენება Unity– ში გამოსაყენებლად. მაღალ დონეზე ჩვენ გავაკეთებთ HTTP თხოვნას Unity– დან Google სერვერებზე, რომელიც დაგვიბრუნებს პასუხს JSON ფორმატში.

ასე რომ, გადადით Google Custom Search JSON API დაყენების გვერდზე, დააწკაპუნეთ, რომ მიიღოთ API გასაღები და შექმნათ ახალი აპლიკაცია. შეინახეთ ეს ღია. ახლა ჩვენ შეგვიძლია გადავიდეთ მართვის პანელში. განათავსეთ ყველაფერი საიტების მოსაძებნად, დაასახელეთ რაც უნდა და დააწკაპუნეთ შექმნაზე.

დააწკაპუნეთ მართვის პანელზე და გაძლევთ საშუალებას შეცვალოთ ცვლილებები: ჩვენ გვსურს, ძირითადად, მოძებნოთ მემები და ჩართოთ სურათების ძებნა. ძებნის საიტებზე გადართეთ ის მთელ ვებ – გვერდზე. დააწკაპუნეთ განახლებაზე, რომ შეინახოთ ყველაფერი.

ახლა იპოვეთ google api explorer და გადადით საბაჟო ძებნის API- ზე. ეს საშუალებას მოგვცემს დავაფორმოს Google– ისგან მიღებული JSON პასუხი. ასე რომ, ჩაწერეთ ახლა არაფერი, ჩაწერეთ თქვენი საძიებო სისტემის ID, ჩაწერეთ 1 ფილტრში, რომ არ მივიღოთ დუბლიკატი, ჩაწერეთ 10 რიცხვში, რადგან ეს არის მაქსიმალური რაოდენობის შედეგი, რომლის დაბრუნებაც ჩვენ შეგვიძლია ერთდროულად, ჩადეთ სურათი ძებნის ტიპისთვის, რადგან ეს არის ის, რისი დაბრუნებაც ჩვენ გვინდა. დასაწყისისთვის ჩაწერეთ 1 და ბოლოს ველში ჩადეთ "ელემენტი/ბმული", რადგან თითოეული დაბრუნებული ერთეულისთვის ჩვენ მხოლოდ სურათის ბმული გვინდა. როდესაც დააწკაპუნებთ შესრულებაზე დაინახავთ, რომ ჩვენ ვიღებთ 10 მშვენიერ გამოსახულების ბმულს.

ახლა ჩვენ უნდა მივიღოთ ეს სურათები Unity– ში.

ნაბიჯი 4: შექმენით Vuforia ერთობაში

შექმენით Vuforia ერთობაში
შექმენით Vuforia ერთობაში

მოდით ვიფორია იმუშაოს, ასე რომ ჩვენ შეგვიძლია გამოვიყენოთ მათი სახმელეთო თვითმფრინავების ამოცნობა. შეინახეთ მიმდინარე სცენა და გადადით მშენებლობის პარამეტრებზე. გადართეთ თქვენი პლატფორმა Android- ზე ან IOS- ზე და თუ IOS- ში ჩართავთ რაიმე პაკეტის იდენტიფიკატორს, დაამატეთ კამერა და მიკროფონი გამოყენების აღწერა. XR პარამეტრების ქვეშ შეამოწმეთ Vuforia დამატებული რეალობის მხარდაჭერა.

ახლა სცენაზე წაშალეთ მთავარი კამერა და დაამატეთ Vuforia ARCamera. გადადით კონფიგურაციის განყოფილებაში და შეცვალეთ თვალთვალის რეჟიმი პოზიციურზე. წაშალეთ ყველა მონაცემთა ბაზა, რადგან ჩვენ არ გვჭირდება ისინი.

ახლა დაამატეთ თვითმფრინავის პოვნა და ჩვენ უნდა გადავლახოთ მისი ნაგულისხმევი ქცევა, რადგან ჩვენ გვსურს განვათავსოთ მიწისზედა საფეხურის სცენა მხოლოდ ერთხელ, ასე რომ ვიპოვოთ განლაგების ეტაპის ერთხელ სკრიპტი Vuforia ვებსაიტზე. შემოიტანეთ ეს სკრიპტი Unity– ში და განათავსეთ იგი თვითმფრინავის მაძიებელზე, ამოიღეთ ძველი სკრიპტი, რომელიც იქ იყო. შეცვალეთ რეჟიმი ინტერაქტიული და დარწმუნდით, რომ "OnInteractiveHitTest" ფუნქცია იძახება იმ ერთობის მოვლენაზე. სანამ ჩვენ აქ ვართ, მოდით დავაყენოთ ღილაკი, რომელიც ადრე გავაკეთეთ, რომ გააქტიურდეს მას შემდეგ რაც აღმოვაჩინეთ გრუნტის სიბრტყე, დავადგინოთ მისი ნაგულისხმევი მდგომარეობა არააქტიურად. ახლა განათავსეთ ადგილზე თვითმფრინავი და შეცვალეთ იგი შუა ჰაერში, რადგან ჩვენ გვინდა, რომ ყველა სურათი ჰაერში მოფრინდეს. გადაიტანეთ ეს მიწისქვეშა თვითმფრინავი თვითმფრინავის მაძიებლის ცარიელ ჭრილში.

ნაბიჯი 5: შექმენით სურათის ასაწყობი

შექმენით სურათის ასაწყობი
შექმენით სურათის ასაწყობი

სანამ ჩვენ დავიწყებთ ყველა ამ ნაწილის გაერთიანებას, ჩვენ უნდა შევქმნათ ასაწყობი სათამაშო ობიექტი, რომელიც შეგვიძლია გამოვყოთ ყოველ ჯერზე, როდესაც სურათი ჩატვირთულია. ასე რომ შექმენით ცარიელი თამაშის ობიექტი მიწის ზედაპირის საფეხურის ქვეშ და დაარქვით მას "picPrefab". შექმენით ოთხკუთხედი, როგორც ბავშვი და შეაფასეთ იგი 2 -ით, გადაატრიალეთ მისი y 180 გრადუსით ისე, რომ მშობლებმა წინ მიიტანონ ვექტორი, რომელიც ნაჩვენებია ლურჯი ისრის სახით, ოთხკუთხედის წინა მხარეს.

შექმენით ახალი სკრიპტი სახელწოდებით "PictureBevivior" და დაამატეთ იგი ჩვენს picPrefab- ში.

ახლა გადაიტანეთ ეს სურათის ასაწყობი თქვენი აქტივების საქაღალდეში და ეს არის ის, რასაც ჩვენ ვაპირებთ თითოეული სურათის განთავსებას.

ჩვენი "PictureBevior" სკრიპტი ასე უნდა გამოიყურებოდეს:

System. Collection- ების გამოყენებით;

System. Collections. Generic- ის გამოყენებით; UnityEngine- ის გამოყენებით; საჯარო კლასი PictureBevior: MonoBehaviour {public Renderer quadRenderer; პირადი Vector3 სასურველი პოზიცია; void დაწყება () {// შეხედეთ კამერის transform. LookAt (Camera.main.transform); Vector3 სასურველიAngle = ახალი Vector3 (0, transform.localEulerAngles.y, 0); transform.rotation = Quaternion. Euler (სასურველიAngle); // ძალა ჰაერში სასურველი Position = transform.localPosition; transform.localPosition += ახალი ვექტორი 3 (0, 20, 0); } void Update () {transform.localPosition = Vector3. Lerp (transform.localPosition, სასურველიPosition, Time.deltaTime * 4f); } public void LoadImage (string url) {StartCoroutine (LoadImageFromURL (url)); } IEnumerator LoadImageFromURL (სტრიქონის url) {WWW www = ახალი WWW (url); შემოსავლის დაბრუნება www; quadRenderer.material.mainTexture = www.texture; }}

ნაბიჯი 6: შექმენით სკრიპტი Google API– სთვის

შექმენით სკრიპტი Google API– სთვის
შექმენით სკრიპტი Google API– სთვის

ახლა მოდით გადმოვიტანოთ ოთხკუთხედის მითითება ჩვენი "picPrefab" - დან.

ჩვენ მხოლოდ ორი სკრიპტი გვაქვს დარჩენილი, ასე რომ, მოდით შევქმნათ C# სკრიპტი სახელწოდებით GoogleService.cs და PictureFactroy.cs.

"GoogleService" - ის შიგნით ჩასვით ეს კოდი, რომელიც ქმნის ჩვენს მოთხოვნას:

System. Collection- ების გამოყენებით;

System. Collections. Generic- ის გამოყენებით; UnityEngine- ის გამოყენებით; UnityEngine. UI გამოყენებით; საჯარო კლასი Google სერვისი: MonoBehaviour {public PictureFactory pictureFactory; საჯარო ტექსტის ღილაკი ტექსტი; private const string API_KEY = "განათავსე API გასაღები აქ !!!!!"; public void GetPictures () {StartCoroutine (PictureRoutine ()); } IEnumerator PictureRoutine () {buttonText.transform.parent.gameObject. SetActive (ყალბი); string query = buttonText.text; შეკითხვა = WWW. EscapeURL (მოთხოვნა + "მემები"); // ძველი სურათების წაშლა pictureFactory. DeleteOldPictures (); // კამერის წინ ვექტორის შენახვა, ასე რომ ჩვენ შეგვიძლია ვიმოძრაოთ ობიექტების განთავსებისას Vector3 cameraForward = Camera.main.transform.forward; // ჩვენ შეგვიძლია მივიღოთ მხოლოდ 10 შედეგი ერთდროულად, ასე რომ ჩვენ უნდა შევაჯამოთ და შევინარჩუნოთ ჩვენი პროგრესი დაწყებული რიცხვის შეცვლით ყოველი 10 int rowNum = 1; for (int i = 1; i <= 60; i + = 10) {string url = "https://www.googleapis.com/customsearch/v1?q=" + query + "& cx = 011535004225295624669%3Afeb1gwic6bs & filter = 1 & num = 10 & searchType = სურათი & დაწყება = " + i +" & ველები = ერთეულები%2 შეხება & გასაღები = " + API_KEY; WWW www = ახალი WWW (url); შემოსავლის დაბრუნება www; pictureFactory. CreateImages (ParseResponse (www.text), rowNum, cameraForward); rowNum ++; } შემოსავლის დაბრუნება ახალი WaitForSeconds (5f); buttonText.transform.parent.gameObject. SetActive (ჭეშმარიტი); } სია ParseResponse (სიმებიანი ტექსტი) {სია urlList = ახალი სია (); string urls = text. Split ('\ n'); foreach (სიმებიანი ხაზი urls- ში) {if (line. Contains ("link")) {string url = line. Substring (12, line. Length-13); // png ან jpg გაფილტვრა არ ჩანს Google– დან, ასე რომ ჩვენ ამას ვაკეთებთ აქ: if (url. Contains (".jpg") || url. Contains (".png")) {urlList. Add (url); }}} urlList დაბრუნება; }}

ნაბიჯი 7: შექმენით ჩვენი სურათების ქარხანა

შექმენით ჩვენი სურათების ქარხანა
შექმენით ჩვენი სურათების ქარხანა

შიგნით PictureFactory.cs აყენებს ამ კოდს, რომ შექმნას ჩვენი ყველა სურათი და იტვირთება მათი ტექსტურა URL– დან.

System. Collection- ების გამოყენებით;

System. Collections. Generic- ის გამოყენებით; UnityEngine- ის გამოყენებით; საჯარო კლასი PictureFactory: MonoBehaviour {public GameObject picPrefab; საჯარო GoogleService googleService; public void DeleteOldPictures () {if (transform.childCount> 0) {foreach (Transform child in this.transform) {Destroy (child.gameObject); }}} public void CreateImages (ListurlList, int resultNum, Vector3 camForward) {int picNum = 1; Vector3 ცენტრი = Camera.main.transform.position; foreach (string url in urlList) {Vector3 pos = GetPosition (picNum, resultNum, camForward); GameObject pic = მყისიერი (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 + ახალი ვექტორი 3 ((picNum % 5) * 3, 0, rowNum * 3.5f); } დაბრუნების pos; }}

ნაბიჯი 8: ჩვენ დავასრულეთ

ჩვენ დავასრულეთ!
ჩვენ დავასრულეთ!
ჩვენ დავასრულეთ!
ჩვენ დავასრულეთ!

შექმენით ცარიელი თამაშის ობიექტი სახელწოდებით GoogleService და განათავსეთ მასზე "GoogleSerivice" სკრიპტი.

გადაიტანეთ "PictureFactory" სკრიპტი მიწის საფეხურზე, რადგან ჩვენი ყველა სურათი შეიქმნება, როგორც ამ თამაშის ობიექტის შვილები.

გადაიტანეთ შესაბამისი ცნობები ინსპექტორში, იგივე გააკეთეთ google სერვისისთვის.

ბოლო რაც ჩვენ უნდა გავაკეთოთ არის დავრწმუნდეთ, რომ ჩვენი "GetPictures" ფუნქცია იძახება. მოდით გადავიდეთ ჩვენი ღილაკის "onClick" ღონისძიებაზე და დავურეკოთ იქიდან.

ახლა ჩვენ შეგვიძლია დააწკაპუნოთ პიესაზე და გამოვცადოთ ეს. დარწმუნდით, რომ ჩართეთ სახმელეთო სიბრტყის ეტაპი და ღილაკი. თქვით სიტყვა და დააწკაპუნეთ ღილაკზე ამ ტექსტზე ძიების შესასრულებლად!

ახლა რომ მიიღოთ ეს აპლიკაცია თქვენს ტელეფონში, შეაერთეთ იგი და გადადით ფაილი-> მშენებლობის პარამეტრები. დააჭირეთ აშენებას და გაშვებას!

შემატყობინეთ კომენტარებში, თუ თქვენ გაქვთ რაიმე შეკითხვა!

გირჩევთ: