• Tidak ada hasil yang ditemukan

MEMOTRET MELALUI RAYCAST

Dalam dokumen Membuat Video Game Dengan 3D Unity (Halaman 120-124)

MENAMBAHKAN MUSUH DAN MENGEMBANGKAN GRAFIS GAME 3D

4.1 MEMOTRET MELALUI RAYCAST

BAB 4

bukan permainan sampai player dapat memengaruhi simulasi dan menerapkan keterampilan mereka. Pemotretan dalam game 3D dapat diimplementasikan dengan beberapa pendekatan berbeda, dan salah satu pendekatan terpenting adalah raycasting.

Light (Cahaya)

Sebelum kita membahas lebih jauh tentang raycasting, mari kita pelajari dulu tentang Lighting.

Dalam segala bentuk media visual, cahaya sangat berperan dalam menentukan bagaimana suatu scene dipersepsikan. Cahaya terang dan sedikit kuning dapat membuat scene terlihat cerah dan hangat. Ambil scene yang sama dan berikan cahaya biru intensitas rendah, dan itu akan terlihat menakutkan dan membingungkan. Warna lampu juga akan berpadu dengan warna skybox untuk memberikan hasil yang tampak lebih realistis. Sebagian besar scene yang mengupayakan realisme atau efek dramatis menggunakan setidaknya satu cahaya (dan seringkali banyak). Di jam-jam sebelumnya, Anda secara singkat bekerja dengan lampu untuk menyorot elemen lain. Di bagian ini, Anda bekerja dengan lampu lebih langsung.

Ulangi Properti

Lampu yang berbeda memiliki banyak sifat yang sama. Jika lampu memiliki properti yang telah tercakup di bawah jenis lampu yang berbeda, itu tidak tercakup lagi. Ingatlah bahwa jika dua jenis cahaya yang berbeda memiliki properti dengan nama yang sama, properti tersebut melakukan hal yang sama.

Apa Itu Light/Cahaya?

Dalam Unity, lampu bukanlah objek itu sendiri. Sebaliknya, lampu adalah komponen.

Ini berarti bahwa saat Anda menambahkan cahaya ke scene, Anda sebenarnya hanya menambahkan objek game dengan komponen Cahaya, yang dapat berupa jenis cahaya apa pun yang dapat Anda gunakan.

Baking Versus Waktu Nyata

Sebelum Anda mulai benar-benar bekerja dengan lampu, Anda perlu memahami dua cara utama menggunakan cahaya: dipanggang dan waktu nyata. Hal yang perlu diingat adalah bahwa semua cahaya dalam game kurang lebih bersifat komputasional. Cahaya harus ditentukan oleh mesin dalam tiga langkah: 1. Warna, arah, dan jangkauan sinar cahaya yang disimulasikan dihitung dari sumber cahaya. 2. Ketika sinar cahaya mengenai permukaan, mereka menerangi dan mengubah warna permukaan. 3. Sudut benturan dengan permukaan dihitung, dan cahaya memantul. Langkah 1 dan 2 diulang lagi dan lagi (tergantung pada pengaturan cahaya). Dengan setiap pantulan, sifat sinar cahaya diubah oleh permukaan yang mereka tabrak (seperti di kehidupan nyata). Proses ini diulang untuk setiap cahaya di setiap bingkai dan menciptakan iluminasi global (di mana objek menerima cahaya dan warna berdasarkan objek di sekitarnya). Proses ini sedikit terbantu oleh fitur Precomputed Realtime GI, yang diaktifkan secara default dan tidak memerlukan usaha dari Anda. Dengan fitur ini, sebagian dari proses kalkulasi cahaya yang dijelaskan di atas dihitung sebelum scene dimulai sehingga hanya sebagian kalkulasi yang perlu dilakukan saat runtime. Anda mungkin sudah melihat ini dalam operasi. Jika Anda pernah membuka scene Unity untuk pertama kalinya dan memperhatikan bahwa elemen scene gelap untuk sesaat, Anda telah melihat proses pra- perhitungan. Baking, di sisi lain, mengacu pada proses pra-perhitungan cahaya dan bayangan sepenuhnya untuk tekstur dan objek selama pembuatan. Anda dapat melakukan ini dengan Unity atau dengan editor grafis. Misalnya, jika Anda membuat tekstur dinding dengan bintik gelap di atasnya yang menyerupai bayangan manusia dan kemudian meletakkan model manusia di sebelah dinding tempat ia berada, model itu akan tampak seperti membuat bayangan di dinding. Namun, kenyataannya adalah bahwa bayangan itu "dipanggang" ke dalam tekstur. Baking dapat membuat game Anda berjalan lebih cepat karena mesin tidak

perlu menghitung cahaya dan bayangan setiap frame; namun, baking tidak terlalu diperlukan untuk kebutuhan Anda saat ini karena permainan yang dibahas dalam buku ini tidak cukup rumit untuk membutuhkannya.

Point Lights Jenis lampu pertama yang akan Anda kerjakan adalah point light. Pikirkan titik cahaya sebagai bola lampu. Semua cahaya dipancarkan dari satu lokasi pusat ke segala arah. Lampu titik adalah jenis lampu yang paling umum untuk menerangi area interior. Untuk menambahkan titik cahaya ke scene, pilih GameObject > Light > Point Light. Setelah berada di scene, objek game Point Light dapat dimanipulasi seperti yang lainnya. Tabel 5.1 menjelaskan sifat titik cahaya.

Tabel 4.1 Tabel Properti Titik Cahaya Properti Deskripsi

Type Menentukan jenis cahaya yang dikeluarkan komponen. Karena ini adalah point light, maka tipenya harus Point. Mengubah properti Type mengubah jenis cahaya.

Range Mendikte seberapa jauh cahaya bersinar. Penerangan memudar secara merata dari sumber cahaya ke kisaran yang ditentukan.

Color Menentukan warna cahaya bersinar. Warna adalah aditif, yang berarti jika Anda menyinari lampu merah pada objek biru, itu akan menjadi ungu.

Mode Menentukan apakah cahaya adalah cahaya waktu nyata, cahaya yang dipanggang, atau campuran keduanya.

Intensity Mendikte seberapa terang cahaya bersinar. Perhatikan bahwa cahaya masih bersinar hanya sejauh yang ditentukan oleh properti Range.

Indirect Multiplier Menentukan seberapa terang cahaya setelah memantul dari benda. (Unity mendukung Global Illumination, artinya ia menghitung hasil pantulan cahaya.)

Shadow Type Menentukan bagaimana bayangan dihitung untuk sumber ini dalam sebuah scene. Bayangan lembut lebih realistis tetapi juga lebih intensif kinerja.

Cookie Menerima peta kubus (seperti kotak langit) yang menentukan pola agar cahaya dapat menembus. Cookie dibahas secara lebih rinci nanti dalam jam ini.

Draw Halo Menentukan apakah halo bercahaya muncul di sekitar cahaya.

Halo dibahas secara lebih rinci nanti di jam ini.

Render Mode Menerima aset suar cahaya dan mensimulasikan efek cahaya terang yang menyinari lensa kamera.

Culling Mask Menentukan pentingnya cahaya ini. Tiga pengaturan tersebut adalah Otomatis, Penting, dan Tidak Penting. Cahaya yang penting dirender dalam kualitas yang lebih tinggi, sedangkan cahaya yang kurang penting dirender dengan lebih cepat. Gunakan pengaturan Otomatis untuk saat ini.

Menambahkan Titik Cahaya ke Scene

Ikuti langkah-langkah berikut untuk membuat scene dengan beberapa pencahayaan titik dinamis:

1. Buat proyek atau scene baru dan hapus lampu arah yang ada secara default.

2. Tambahkan pesawat ke scene (dengan memilih GameObject > 3D Object > Plane).

Pastikan bahwa pesawat diposisikan pada (0, .5, 0) dan diputar ke (270, 0, 0). Bidang harus terlihat oleh kamera, tetapi hanya dari satu sisi dalam tampilan Scene.

3. Tambahkan dua kubus ke scene. Posisikan mereka di (-1.5, 1, -5) dan (1.5, 1, -5).

4. Tambahkan titik cahaya ke scene (dengan memilih GameObject > Light > Point Light).

Posisikan titik lampu pada (0, 1, -7). Perhatikan bagaimana cahaya menerangi sisi dalam kubus dan bidang latar belakang (lihat Gambar 4.1).

5. Atur jenis bayangan cahaya ke Hard Shadows dan coba pindahkan. Lanjutkan menjelajahi sifat-sifat cahaya. Pastikan untuk bereksperimen dengan warna, jangkauan, dan intensitas cahaya.

Gambar 4.1 Hasil dari Ini Coba Sendiri.

Spotlight/Lampu Sorot

Lampu sorot sangat mirip dengan lampu depan mobil atau senter. Cahaya lampu sorot dimulai di titik pusat dan memancar keluar dalam bentuk kerucut. Dengan kata lain, lampu sorot menerangi apa pun yang ada di depan mereka sambil membiarkan yang lainnya dalam kegelapan. Sedangkan titik cahaya mengirimkan cahaya ke segala arah, Anda dapat mengarahkan lampu sorot. Untuk menambahkan sorotan ke scene, pilih GameObject > Create Other > Spotlight. Alternatifnya, jika Anda sudah memiliki cahaya di scene Anda, Anda dapat mengubah jenisnya menjadi Spot, dan itu menjadi sorotan. Lampu sorot hanya memiliki satu properti yang belum tercakup: Sudut Titik. Properti Spot Angle menentukan radius kerucut cahaya yang dipancarkan oleh lampu sorot.

Menambahkan Spotlight ke Scene

Sekarang Anda memiliki kesempatan untuk bekerja dengan lampu sorot di Unity.

Untuk singkatnya, latihan ini menggunakan proyek yang dibuat di sebelumnya untuk lampu titik. Jika Anda belum menyelesaikan latihan itu, lakukan dan lanjutkan dengan langkah- langkah berikut:

1. Gandakan scene Point Light dari proyek sebelumnya (dengan memilih Edit > Duplicate) dan beri nama Spotlight scene baru.

2. Klik kanan Point light pada tampilan Hierarchy dan pilih Rename. Ganti nama objek Spotlight. Di Inspector, ubah properti Type menjadi Spot. Posisikan objek cahaya pada (0, 1, -13).

3. Bereksperimenlah dengan sifat-sifat lampu sorot. Perhatikan bagaimana rentang, intensitas, dan sudut titik membentuk dan mengubah efek cahaya.

Lampu Arah

Jenis lampu terakhir yang akan Anda gunakan pada jam ini adalah lampu arah. Lampu terarah mirip dengan lampu sorot karena dapat diarahkan. Namun, tidak seperti lampu sorot, lampu arah menerangi seluruh scene. Anda dapat menganggap cahaya terarah mirip dengan matahari. Faktanya, Anda menggunakan cahaya terarah sebagai matahari di Jam 4, “Medan dan Lingkungan.” Cahaya dari cahaya terarah memancar secara merata dalam garis paralel di seluruh scene. Scene baru hadir dengan lampu arah secara default. Untuk menambahkan cahaya arah baru ke scene, pilih GameObject > Light > Directional Light. Alternatifnya, jika Anda sudah memiliki cahaya dalam sebuah scene, Anda dapat mengubah jenisnya ke Directional, dan itu menjadi cahaya terarah. Lampu penunjuk arah memiliki satu properti tambahan yang belum tercakup: Ukuran Cookie. Cookie akan dibahas kemudian dalam jam ini, tetapi pada dasarnya properti ini mengontrol seberapa besar cookie dan dengan demikian berapa kali diulang di seluruh scene.

Menambahkan Cahaya Terarah ke Scene

Sekarang Anda akan menambahkan cahaya terarah ke scene Unity. Sekali lagi, latihan ini dibangun di atas proyek yang dibuat di sebelumnya. Jika Anda belum menyelesaikan latihan itu, lakukan, lalu ikuti langkah-langkah berikut:

1. Gandakan scene Spotlight dari proyek sebelumnya (dengan memilih Edit > Duplicate) dan beri nama scene baru Directional Light.

2. Klik kanan Spotlight pada tampilan Hierarchy dan pilih Rename. Ubah nama objek Directional Light. Di Inspector, ubah properti Type menjadi Directional.

3. Ubah putaran lampu menjadi (75, 0, 0). Perhatikan bagaimana langit berubah saat Anda memutar lampu. Hal ini disebabkan scene menggunakan skybox prosedural.

Skybox dibahas lebih detail di Jam 6, "Game 1: Pembalap Luar Biasa."

4. Perhatikan bagaimana cahaya terlihat pada objek di scene. Sekarang ubah posisi lampu menjadi (50, 50, 50). Perhatikan bahwa cahaya tidak berubah. Karena arah cahaya berada pada garis sejajar, maka posisi cahaya tidak menjadi masalah. Hanya rotasi cahaya arah yang penting.

5. Percobaan dengan sifat-sifat cahaya terarah. Tidak ada jangkauan (karena jangkauan tidak terbatas), tetapi perhatikan bagaimana warna dan intensitas mempengaruhi scene.

Area Lights dan Emissive Materials

Ada dua jenis cahaya lagi yang tidak tercakup dalam teks ini: area lights dan material emissive. Area light adalah fitur yang ada untuk proses yang disebut lightmap baking. Topik- topik ini lebih maju daripada yang Anda butuhkan untuk proyek game dasar sehingga tidak tercakup dalam buku ini. Jika Anda ingin mempelajari lebih lanjut tentang ini, lihat kekayaan dokumentasi online Unity. Bahan memancarkan adalah bahan yang diterapkan pada objek yang benar-benar mentransmisikan cahaya. Jenis lampu ini bisa sangat berguna untuk layar TV, lampu indikator, dan sebagainya.

Dalam dokumen Membuat Video Game Dengan 3D Unity (Halaman 120-124)