Advertisement
  1. Code
  2. Coding Fundamentals
  3. Game Development

Pengantar Vuforia pada kesatuan untuk membuat aplikasi Augmented Reality

Scroll to top
Read Time: 10 min

() translation by (you can also view the original English article)

What You'll Be Creating

Tutorial ini akan mencakup bagaimana untuk mengimplementasikan aplikasi dasar ditambah kenyataan dengan Vuforia SDK pada kesatuan. Seluruh tutorial, Anda akan belajar bagaimana untuk menghasilkan sebuah adegan yang kompatibel dengan Vuforia dan bagaimana menerapkan berbagai skrip, termasuk ray-tracing, untuk dapat berinteraksi dengan objek dalam adegan.

Membuat akun pengembang

Sebelum memulai, Anda harus mendaftar untuk rekening pengembang Vuforia. Pergi ke Portal pengembang Vuforia untuk membuat account.

Setelah Anda membuat account, saatnya untuk men-download paket persatuan Vuforia. Pergi ke halaman download dan men-download paket khusus untuk kesatuan.

Membuat sasaran gambar

Target gambar yang diperlukan dalam rangka untuk perangkat kamera untuk mengenali referensi dan lagu itu. Orientasi dan ukuran sebenarnya gambar target secara langsung mempengaruhi atribut yang sama gambar dilapiskan.

Gambar dapat ditetapkan sebagai target. Namun, fitur gambar target secara efektif menentukan seberapa baik target dilacak. Dalam tutorial ini, kita akan menggunakan alat online untuk menghasilkan gambar target kaya fitur. Menghasilkan sasaran gambar dengan menggunakan alat online Augmented Reality penanda Generator, dan menyimpan gambar pada komputer Anda.

Mempersiapkan adegan kesatuan

Paket Vuforia

Membuat proyek kesatuan 3D baru dan kemudian klik dua kali kesatuan paket yang Anda download untuk Vuforia. Ini akan meminta jendela berikut. Klik semua untuk memilih semua konten paket, dan kemudian memukul impor. Ini akan mengimpor semua alat yang diperlukan untuk aplikasi AR.

Importing Vuforia PackageImporting Vuforia PackageImporting Vuforia Package

Gambar Target

Langkah berikutnya adalah untuk mengimpor file target gambar. Untuk mendapatkan gambar file target, kita perlu menggunakan halaman pengembang Vuforia.

Pergi ke Portal pengembang Vuforia dan kemudian login ke account Anda. Di bawah tab berkembang, Anda akan melihat Target manajer. Pertama Anda perlu menambahkan database. Gunakan tombol Ruangan Khusus dan menambah database.

Nama database Anda seperti yang Anda inginkan, dan pilih perangkat sebagai jenis.

Creating Database for targetsCreating Database for targetsCreating Database for targets

Sekarang kita siap untuk menambahkan target dalam database ini. Klik pada tombol Tambahkan Target, dan jendela berikut akan muncul. Jenis harus dipilih sebagai satu gambar dalam kasus kami. Pilih target gambar yang kami dihasilkan dengan menggunakan alat online. Jika Anda memiliki kesulitan meng-upload file, mencoba mengubahnya menjadi .jpg file format dan meng-upload lagi.

Lebar adalah parameter penting. Ini harus sesuai ukuran sebenarnya dari gambar target yang Anda akan akhirnya mencetak pada kertas. Saya mengatur lebar 40. Ada ada unit karena cocok unit adegan Anda.

Adding target imageAdding target imageAdding target image

Setelah Anda menambahkan target ke dalam database Anda, Vuforia tingkat target Anda. Dengan target gambar generator kami digunakan, fitur tinggi dan karena itu ia mendapat bintang 5, yang berarti sangat mudah untuk Vuforia untuk mengenali dan melacak target ini.

Sekarang Anda perlu untuk men-download database ini. Untuk melakukannya, tekan tombol Download Database dan memilih Editor persatuan sebagai platform pengembangan.

Downloading databaseDownloading databaseDownloading database

Setelah Anda men-download database, double klik di atasnya dan mengimpor semua konten ke adegan kesatuan kita bekerja pada.

ARCamera objek

Kita mulai dengan menambahkan objek ARCamera Vuforia kami adegan. Untuk melakukannya, cukup ikuti aset > Vuforia > Prefabs direktori dan menambahkan ARCamera obyek dengan menyeret dan menjatuhkan ke TKP.

ARCamera directoryARCamera directoryARCamera directory

Pilih objek ARCamera dan di bawah tab inspektur, Anda akan melihat bagian kunci lisensi App. Kunci lisensi ini akan didapatkan dari portal pengembang Vuforia.

Login di akun Vuforia pada Portal pengembang dan di bawah tab berkembang, Anda akan menemukan bagian lisensi Manager. Klik tombol Tambahkan License Key. Pada halaman berikut, pilih pembangunan sebagai jenis proyek dan menetapkan nama aplikasi untuk proyek Anda. Nama ini tidak penting, dan Anda dapat mengubah ini nanti jika Anda inginkan.

Generating the License KeyGenerating the License KeyGenerating the License Key

Memukul berikutnya, dan kemudian mengkonfirmasi Anda kunci lisensi pada halaman berikutnya.

Pilih lisensi yang baru Anda buat. Itu akan mengungkapkan kunci lisensi yang kita butuhkan untuk copy dan paste ke objek ARCamera. Salin lisensi ini dan kemudian menyisipkannya ke bagian kunci lisensi App di bawah pengaturan ARCamera.

Revealing License KeyRevealing License KeyRevealing License Key
Copy and Paste License KeyCopy and Paste License KeyCopy and Paste License Key

Database beban perilaku, pilih opsi beban ARdemo Database. Setelah Anda check it, pilihan lain yang disebut Aktifkan akan muncul tepat di bawah ini. Cek pilihan ini juga.

ARdemo bagian dari beban ARdemo Database pilihan tergantung pada bagaimana Anda bernama database Anda.

Loading DatabaseLoading DatabaseLoading Database

Gambar objek Target

Objek kedua kita butuhkan dalam adegan kami adalah objek Target gambar.

Di bawah aset > Vuforia > direktori Prefabs, Anda juga akan menemukan objek "ImageTarget". Menambahkan objek ini ke adegan Anda dan pilih untuk mengungkapkan pilihan.

Di bawah bagian gambar Target perilaku, Anda akan melihat opsi Database. Pilih database Anda dari dropdown menu dan pilih target gambar tertentu yang Anda ingin tetapkan ke objek target gambar dari opsi "Gambar Target" menu dropdown. Jika Anda memiliki beberapa gambar target untuk satu database, mereka akan semua terdaftar di sini.

Parameter yang lebar dan tinggi akan diatur secara otomatis tergantung pada nilai yang Anda tetapkan saat membuat gambar target di Vuforia's pengembang portal.

Image target behaviour settingsImage target behaviour settingsImage target behaviour settings

Peningkatan grafis

Langkah berikutnya adalah untuk menciptakan grafis dan mengikat mereka ke target gambar. Anda juga dapat membuat GameObject atau Anda dapat mengimpor model 3D Anda sendiri ke dalam kesatuan dan menggunakannya. Dalam tutorial ini kita akan menggunakan objek kubus 3D sederhana demi kesederhanaan.

Menambahkan objek kubus adegan seperti yang ditunjukkan dalam gambar berikut.

Adding a cube objectAdding a cube objectAdding a cube object

Set x, y dan z parameter untuk skala pilihan di bawah mengubah ke 40, sehingga cocok ukuran gambar target kami dihasilkan.

Jika Anda menetapkan nilai lebar lain untuk target gambar Anda ketika menghasilkan di portal pengembang, gunakan nilai yang dipilih untuk sesuai dengan ukuran penuh gambar target.

Scaling the cubeScaling the cubeScaling the cube

Langkah terakhir untuk mendapatkan kerja app AR kami adalah untuk mengatur objek kubus sebagai anak target gambar. Untuk melakukannya, cukup drag objek kubus dan drop objek imageTarget di bawah menu hirarki.

Keadaan akhir adegan harus sebagai berikut:

Final state of the sceneFinal state of the sceneFinal state of the scene

Sekarang tekan tombol Play untuk menjalankan aplikasi Anda. Itu akan menggunakan webcam Anda. Mendapatkan gambar target yang dicetak atau membukanya dari telepon sehingga melalui webcam Anda Vuforia, Anda dapat mendeteksi. Saya melakukan yang terakhir dan membuka gambar target dari telepon.

Berikut adalah screenshot sebenarnya pandangan webcam. Anda dapat melihat bahwa objek kubus mencakup target seluruh gambar, karena kita cocok nilai faktor skala untuk objek 3D dan gambar target.

Initial test of augmentationInitial test of augmentationInitial test of augmentation

Interaksi script

Sejauh ini, kami telah mengembangkan aplikasi AR dasar yang mengakui dan melacak sasaran gambar dan menampilkan grafis 3D yang ditunjuk. Namun, untuk aplikasi AR yang lengkap, kita juga perlu untuk dapat berinteraksi dengan benda-benda, peningkatan realitas.

Untuk tujuan ini, kita harus mampu mendeteksi mana kita diklik — atau menyentuh, dalam kasus perangkat mobile. Kami akan melakukan hal ini dengan menerapkan ray-pengusut.

Pertama, Buat folder bernama "script" di bawah aset untuk tetap mengatur semuanya. Kami akan menyimpan file script kami dalam folder ini. Kemudian membuat C# Script file dalam folder ini. Nama "rayTracer". Penamaan ini penting karena fakta bahwa kode berikut harus sesuai nama file tertentu ini. Jika Anda memilih untuk menggunakan nama yang berbeda untuk script file, Anda juga harus mengubah kode yang tersedia sesuai.

Creating a script fileCreating a script fileCreating a script file

Ray-pengusut Script

Copy dan paste kode berikut ke dalam file C# Script Anda telah menciptakan dan bernama "rayTracer".

1
using UnityEngine;
2
using System.Collections;
3
using System.Collections.Generic;
4
5
public class rayTracer : MonoBehaviour {
6
7
    private List<GameObject> touchList = new List<GameObject>();
8
  private GameObject[] touchPrev;
9
	private RaycastHit hit;
10
11
	
12
	void Update () {
13
14
		#if UNITY_EDITOR
15
16
		if (Input.GetMouseButton(0) || Input.GetMouseButtonDown(0) || Input.GetMouseButtonUp(0)) {
17
18
			touchPrev = new GameObject[touchList.Count];
19
			touchList.CopyTo (touchPrev);
20
			touchList.Clear ();
21
22
			Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
23
			//Debug.DrawRay(ray.origin, ray.direction*10000, Color.green, 10, false);

24
25
			if (Physics.Raycast (ray, out hit)) {
26
27
				GameObject recipient = hit.transform.gameObject;
28
				touchList.Add (recipient);
29
30
				if (Input.GetMouseButtonDown(0)) {
31
					recipient.SendMessage ("touchBegan", hit.point, SendMessageOptions.DontRequireReceiver);
32
33
				}
34
				if (Input.GetMouseButtonUp(0)) {
35
					recipient.SendMessage ("touchEnded", hit.point, SendMessageOptions.DontRequireReceiver);
36
37
				}
38
				if (Input.GetMouseButton(0)) {
39
					recipient.SendMessage ("touchStay", hit.point, SendMessageOptions.DontRequireReceiver);
40
41
				}
42
			}
43
44
			foreach (GameObject g in touchPrev) {
45
				if(!touchList.Contains(g)){
46
					g.SendMessage ("touchExit", hit.point, SendMessageOptions.DontRequireReceiver);
47
				}
48
			}
49
		}
50
51
		#endif
52
53
		if (Input.touchCount > 0) {
54
55
			touchPrev = new GameObject[touchList.Count];
56
			touchList.CopyTo (touchPrev);
57
			touchList.Clear ();
58
	
59
			foreach (Touch touch in Input.touches) {
60
61
				Ray ray = Camera.main.ScreenPointToRay (touch.position);
62
63
				if (Physics.Raycast (ray, out hit)) {
64
65
					GameObject recipient = hit.transform.gameObject;
66
					touchList.Add (recipient);
67
68
					if (touch.phase == TouchPhase.Began) {
69
						recipient.SendMessage ("touchBegan", hit.point, SendMessageOptions.DontRequireReceiver);
70
71
					}
72
					if (touch.phase == TouchPhase.Ended) {
73
						recipient.SendMessage ("touchEnded", hit.point, SendMessageOptions.DontRequireReceiver);
74
75
					}
76
					if (touch.phase == TouchPhase.Stationary || touch.phase == TouchPhase.Moved) {
77
						recipient.SendMessage ("touchStay", hit.point, SendMessageOptions.DontRequireReceiver);
78
79
					}
80
					if (touch.phase == TouchPhase.Canceled) {
81
						recipient.SendMessage ("touchExit", hit.point, SendMessageOptions.DontRequireReceiver);
82
83
					}
84
				}
85
			}
86
87
			foreach (GameObject g in touchPrev) {
88
				if(!touchList.Contains(g)){
89
					g.SendMessage ("touchExit", hit.point, SendMessageOptions.DontRequireReceiver);
90
				}
91
			}
92
		}
93
	}
94
}

Script ini mendeteksi klik mouse kedua jika Anda bekerja pada editor persatuan dan menyentuh masukan jika Anda telah dikerahkan aplikasi pada perangkat mobile dengan layar sentuh.

Setelah Anda membuat skrip rayTracer, Anda harus mengaktifkannya dengan menetapkan ke salah satu obyek dalam adegan. Aku memilih objek yang ARCamera dan menambahkan skrip rayTracer sebagai komponen dengan menggunakan tombol Tambahkan komponen di bawah tab Inspektur.

Assigning rayTracer scriptAssigning rayTracer scriptAssigning rayTracer script

Objek bahan

Sekarang kita akan menetapkan bahan untuk objek kubus dan mengubah warna bahan atas interaksi dengan kubus.

Di bawah aset, bahan-bahan dan nama itu seperti yang Anda inginkan.

Creating materialCreating materialCreating material

Sekarang menetapkan bahan ini dengan menyeret dan menjatuhkan lebih dari objek kubus.

Interaksi Script

Membuat C# Script baru di bawah folder skrip dan nama itu "interaksi".

Salin C# kode berikut ke dalam file skrip "interaksi" dan kemudian menambahkan file script ini ke objek kubus sebagai komponen, seperti yang kita lakukan dengan file script "rayTracer". Namun, kali ini ia harus komponen objek kubus — hal ini penting untuk dapat hanya berinteraksi dengan objek kubus.

1
using UnityEngine;
2
using System.Collections;
3
4
public class interaction : MonoBehaviour {
5
6
    public static Color defaultColor;
7
	public static Color selectedColor;
8
	public static Material mat;
9
10
	void Start(){
11
12
		mat = GetComponent<Renderer> ().material;
13
14
		mat.SetFloat("_Mode", 2);
15
		mat.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
16
		mat.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
17
		mat.SetInt("_ZWrite", 0);
18
		mat.DisableKeyword("_ALPHATEST_ON");
19
		mat.EnableKeyword("_ALPHABLEND_ON");
20
		mat.DisableKeyword("_ALPHAPREMULTIPLY_ON");
21
		mat.renderQueue = 3000;
22
23
		defaultColor = new Color32 (255, 255, 255, 255);
24
		selectedColor = new Color32 (255, 0, 0, 255);
25
26
		mat.color = defaultColor;
27
	}
28
29
	void touchBegan(){
30
		mat.color = selectedColor;
31
	}
32
33
	void touchEnded(){
34
		mat.color = defaultColor;
35
	}
36
37
	void touchStay(){
38
		mat.color = selectedColor;
39
	}
40
41
	void touchExit(){
42
		mat.color = defaultColor;
43
	}
44
}

Script ini "interaksi", kami merujuk kepada bahan objek kubus sebagai "mat".

Kami menciptakan dua benda materi yang berbeda, bernama defaultColor dan selectedColor. defaultColor dipilih untuk menjadi putih, seperti menunjukkan parameter RGBA, yang adalah (255, 255, 255, 255).

Kami menginisialisasi objek kubus warna bahan sebagai defaultColor oleh baris berikut:

Mat.Color = defaultColor;

Kami memiliki empat fungsi yang berbeda untuk empat negara yang berbeda:

  • touchBegan() disebut Instant Anda menyentuh pada objek.
  • touchEnded() disebut ketika Anda melepaskan jari Anda.
  • touchStay() disebut tepat setelah Anda menyentuh pada objek-fungsi ini mengikuti touchBegan(). Jadi, jika Anda menetapkan warna yang berbeda untuk materi Anda dalam fungsi ini, Anda tidak mungkin melihat warna yang ditetapkan dalam fungsi touchStay(), karena itu adalah instan pertama sentuhan diakui.
  • touchExit() disebut seperti ketika Anda tarik jari Anda dari permukaan objek kubus, daripada melepaskan jari, yang memanggil fungsi touchEnded() seperti yang dijelaskan di atas.

Dalam kode kita, ketika kita menyentuh pada objek kubus, kami menetapkan objek selectedColor untuk mat.color, yang merupakan warna bahan kami objek kubus.

Dengan menetapkan selectedColor dalam fungsi touchStay(), kami memastikan bahwa warna objek kubus akan sama dengan selectedColor selama kita tetap jari kita pada objek kubus. Jika kita melepaskan kami jari atau seret keluar dari objek kubus, kami menetapkan defaultColor untuk bahan warna parameter dengan memanggil fungsi touchEnded() atau touchExit() sesuai dengan tindakan kita mengambil.

Sekarang menjalankan proyek dan klik pada objek kubus setelah gambar target diakui dan objek kubus telah muncul. Itu harus berubah merah dan putih lagi ketika Anda melepaskan Anda klik atau memindahkannya dari permukaan objek kubus.

Final resultFinal resultFinal result

Anda dapat melakukan percobaan dengan warna yang berbeda untuk tindakan berbeda empat untuk memahami mereka secara menyeluruh.

Kesimpulan

Dalam tutorial ini, kami telah pergi melalui pengenalan Vuforia SDK untuk kesatuan bersama dengan portal pengembang, dan kita telah melihat bagaimana untuk menghasilkan gambar target dan kunci lisensi yang sesuai.

Selain itu, kami menghasilkan file script kustom untuk dapat berinteraksi dengan grafik ditambah. Tutorial ini adalah hanya sebuah pengantar untuk memungkinkan Anda untuk mulai menggunakan Vuforia dengan persatuan dan menciptakan aplikasi AR Anda sendiri.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.