Membuat Project VR Sederhana yang Dapat Berjalan di Cardboard maupun di Gear VR

Ditulis oleh Ariska Hidayat, dipublikasi pada 20 Aug 2016 dalam kategori Tutorial
Membuat Project VR Sederhana yang Dapat Berjalan di Cardboard maupun di Gear VR
Hello Developers,
Tidak terasa perkembangan teknologi semakin maju cepat. Kita dapat melihat meningkatnya kecepatan processing pada smartphone sekarang. Banyaknya inovasi teknologi yang ikut mewarnai kehidupan developer, salah satunya adalah teknologi VR. Banyak variasi dan berbagai bentuk, bahan, kualitas dan fitur. Tetapi karena digunakan didekat mata sehingga teknologi VR menjadi sangat sensitif perihal kualitas, jika kualitasnya buruk maka akan cepat terasa pusing dan mual. Maka oleh karena itu dibutuhkan kualitas yang baik jika ingin nyaman dalam memanfaatkan teknologi VR.
Samsung bekerjasama dengan Oculus mengembangkan sebuah perangkat VR yang bernama Samsung Gear VR, yang didesain khusus untuk kenyamanan dalam bermain game/aplikasi. Saat ini sudah lebih dari 250 game sudah tersedia di Store Oculus dan spesifikasi device yang digunakan pun cukup tinggi sehingga kualitas dalam bermain sangat terjamin.
Samsung Gear VR sudah terdapat teknologi seperti kontrol tap and swipe, juga beberapa tombol untuk memudahkan pengguna untuk bermain. Jadi untuk bisa menghubungkan kontrol tersebut harus menghubungkan usb mini yang terdapat di GearVR ke Device. Device-device yang dapat digunakan hanya smartphone/phablet tertentu saja yang bertujuan menjaga kualitas dan kepuasan dari pemain.  Device yang dapat digunakan seperti Samsung S6, Samsung S6 Edge, Samsung S7, Samsung S7 Edge, dan Samsung Note 5 atau lebih baru.
Dalam mengembangkan Game, developer dituntut untuk membuat game yang menarik dan menyenangkan. Tetapi untuk memenuhi hal tersebut, Developer harus mencoba dan merasakan untuk bermain sehingga mendapatkan ide dan inspirasi dari game tersebut. Di tutorial ini akan menjelaskan bagaimana membuat game VR dengan mudah dapat dimainkan di Cardboard maupun di Gear VR. Sehingga kamu dapat mencoba game kamu di device manapun.

Membuat Project VR Sederhana

Buat Project 3D baru
Buka Aplikasi unity dan kemudian buat project 3d baru dengan nama SampleVRUniversal. Kemudian klik Create Project
new project
Kemudian masukkan Object 3D sederhana dengan cara klik kanan pada Hirachy -> 3D Object -> Cube. Atur posisi di 0,0,0 supaya terlihat di kamera.
create box
Kemudian tambahkan pointer. klik kanan pada Main Camera -> 3D Object -> Sphere. atur posisi z dengan nilai 2 dan scale 0.05. Jangan lupa hapus Component Sphere Collider. Lihat seperti gambar dibawah ini:
create sphere
Setelah itu, masukkan SDK Cardboard ke project. Sebelumnya Anda juga harus mendownload terlebih dahulu GoogleVRForUnity.unitypackage atau lebih lengkapnya Anda dapat download di Google VR for Unity. kemudian masukkan package yang telah didownload dengan cara klik menu Assets > Import Package > Custom Package... Kemudian cari file GoogleVRForUnity.unitypackage yang telah didownload. Untuk mengubah tampilan camera menjadi mode VR cukup drag file GvrViewerMain ke Hierarchy. Secara otomatis Main Camera akan terlihat modus VR ketika terinstal di Android
add GvrViewerMain
 
Menambahkan Script pada Cube
Kemudian membuat script yang sekiranya dapat digunakan baik di Cardboard maupun di GearVR. Tambahkan script pada Cube. klik Add Component > Newscript. Contoh nama script TeleportUniversal.cs. Kemudian tulis script seperti dibawah ini.
Contoh Script untuk Select object seperti dibawah ini:
void Update () {
 RaycastHit hit;
        Vector3 posMainCam = Camera.main.transform.position;
        Vector3 direction = Camera.main.transform.TransformDirection(Vector3 .forward);
        if ( Physics.Raycast(posMainCam, direction, out hit))
        {
            if (hit.transform.name.Equals( "Cube"))
            {
                // ketika pointer diatas object yang bernama "Cube"

                if ( Input.GetMouseButtonDown(0))
                {
                    // ketika klik/tap Object yang bernama "Cube"

                }
            }
        }
        else
        {
            // Ketika pointer diluar object

        }
}
Contoh sederhana yang kita lakukan terhadap object "Cube" adalah yang pertama mengubah warna ketika pointer diatas object.
 
public void IsSelected(bool selected)
    {
        GetComponent<Renderer>().material.color = selected ? Color.green : Color.red;
    }
Kemudian membuat object Cube berpindah ketika diklik/ditap
 
public void Teleport()
    {
        Vector3 direction = Random.onUnitSphere;
        float distance = 5 * Random.value + 1.5f;
        transform.localPosition = Camera.main.transform.localPosition + direction * distance;
    }
Code untuk keluar dari aplikasi
if (Input.GetKeyUp(KeyCode.Escape))
        {
            Application.Quit();
        }
Jadi keseluruhan dapat ditulis seperti ini
using UnityEngine;
public class TeleportUniversal : MonoBehaviour
{
    void Update()
    {
        RaycastHit hit;
        Vector3 posMainCam = Camera.main.transform.position;
        Vector3 direction = Camera.main.transform.TransformDirection(Vector3 .forward);
        if ( Physics.Raycast(posMainCam, direction, out hit))
        {
            if (hit.transform.name.Equals( "Cube"))
            {
                // ketika pointer diatas object yang bermana Cube

                IsSelected( true);
                if ( Input.GetMouseButtonDown(0))
                {

                    // ketika klik Object yang bernama Cube
                    Teleport();
                }
            }
        }
        else
        {
            // Ketika pointer diluar object

            IsSelected( false);
        }
        if ( Input.GetKeyUp( KeyCode.Escape))
        {
            Application.Quit();
        }
    }
    public void Teleport()
    {
        Vector3 direction = Random.onUnitSphere;
        float distance = 5 * Random.value + 1.5f;
        transform.localPosition = Camera.main.transform.localPosition + direction * distance;
    }

    public void IsSelected( bool selected)
    {
        GetComponent< Renderer>().material.color = selected ? Color.green : Color.red;
    }
}

 

Jalankan di Device Andorid
Pastikan device andorid Anda support Gyroscope. Kemudian masuk ke Build Settings yang berada di menu File > Build Settings. Jangan lupa untuk menyimpan Scene dan menambahkannya di list scenes. kemudian switch ke platform Android. Setelah itu buka player settings, atur Default Orientation menjadi Lanscape Left dan isi Bundle Indetifier. Kemudian Klik Build and Run pada jendela Build Settings.
Hasil Screenshot sebagai berikut:
 show google cardboad
Cara mengujinya dengan arahkan pointer ke arah box merah dan tap layer. Setiap object di tap maka akan berpindah tempat.

 Porting Project ke Gear VR

Kita sudah tidak mengubah apapun di project, tetapi hanya mengkondisikan supaya bisa dijalankan di Gear VR. Pertama-tama menghapus object GvrViewerMain dari Hierarky. Jika ingin mencoba di device, Buka laman Oculus Signature File (osig) Generator dan salin ID Device yang ada di Command Prompt ke kolom Device ID pada halaman Osig Generator. Untuk melihat device id Anda dapat mendownload dan menginstall aplikasi ini Device Id Fetch di android Anda.
Osig Generator
Download file Osig tersebut, kemudian buat folder /Assets/Plugins/Android/assets didalam Project View setelah itu letakkan file osig tersebut didalam folder assets yang telah didownload.
save osig
Untuk mengoptimalkan rendering texture, gunakan ETC2 (GLES 3.0)
texture compressing
Jangan lupa centang Virtual Reality Support dan minimum API level adalah Kitkat (API 19)
vr support
Kemudian klik Build and Run, Hasil screenshot
Screenshot_20160805-173229
Ketika sudah dicolokkan dengan Samsung Gear VR maka akan masuk ke permainan.
show gear vr
Contoh Project ini Anda dapat download di https://github.com/Ariska138/SampleVRUniversal
Untuk game di Gear VR di anjurkan FPS stabil di angka 60. Untuk performa dan fitur lain Anda dapat baca tutorial Mengembangkan Game Unity ke Samsung Gear VR. Semoga bermanfaat. Terimakasih.
sumber gambar cover: http://www.gizmodo.com.au/2016/03/google-is-finally-selling-vr-headsets-directly https://www.amazon.com/Samsung-Gear-VR-Virtual-Warranty/dp/B016OFYGXQ

Artikel Lainnya

Berlangganan Informasi CodePolitan Melalui Email

Jangan sampai kamu melewatkan informasi penting tentang pemrograman dan teknologi! Kamu bisa berlangganan Newsletter CodePolitan dengan cara mengisi formulir di samping.

Promo potongan 10% untuk bergabung dalam kelas online Menjadi Web Programmer