Mengubah Objek 3D Hellosceneform untuk Augmented Reality


Berikut ini adalah pengalaman penulis mencoba merubah object 3D aplikasi Hello Sceneform untuk keperluan membuat Augmented Reality (AR) menggunakan ARCore.

Proyek ini adalah bagian dari kerjasama penulis dengan salah satu Tim Penelitian Jurusan Fisika Universitas Brawijaya Malang.

ARCore adalah library Google Play untuk keperluan AR.

Library ini berupa plugin, yang perlu di instal secara tersendiri pada device smartphone yang akan digunakan.

Untuk Android, di Play Store saat percobaan ini dilakukan, ARCore telah berubah nama menjadi Google Play Service for AR. 

Keterangan lebih lanjut mengenai ARCore dapat dibaca di website mereka, yaitu di https://developers.google.com/ar/

Sedangkan Hello Sceneform adalah aplikasi output dari project Android Studio Hellosceneform, yang dapat di download di link Github, di bawah ini. 


Tidak hanya di Android Studio, platform pengembangan ARCore, sebenarnya dapat menggunakan juga iOS, Unity, dan Unreal. 

Namun dalam percobaan ini lebih memilih menggunakan Android Studio, dikarenakan lisensi distribusi aplikasi apk-nya lebih bersifat free (gratis).

Kebutuhan Smartphone

Skema kerja ARCore adalah menyatukan dunia 3D nyata yang dideteksi menggunakan kamera sebagai lapisan pertama, dengan 3D virtual yang dilapiskan diatas sebagai lapisan kedua.

ARCore mendeteksi permukaan datar yang tertangkap kamera. Kemudian dengan sensor gyro mendeteksi posisi device sekaligus sebagai acuan koordinat ruang, untuk meletakkan object 3D dunia virtual.

Sehingga selain membutuhkan kamera yang beresolusi tinggi, untuk dapat menjalankan ARCore diperlukan smartphone dilengkapi sensor gyro.

Selain itu, device Android yang digunakan juga membutuhkan kecepatan processor dan konsumsi RAM yang tinggi, terutama jika object 3D yang akan ditampilkan mempunyai jumlah polygon yang banyak.

Oleh karena itu, dalam percobaan ini menggunakan smartphone dengan spesifikasi sebagai berikut: 
  • Merek : Samsung Galaxy A8 
  • Layar : 5.6 inch FHD+ Super AMOLED (1080x2220) 440 ppi 
  • Ram : 4Gb 
  • Memory internal : 64Gb 
  • Prosesor : Octa core 2.2 GHz 
  • Kamera : 16Mp + 24Mp / 24Mp 
  • Baterai : 3.700 mAh 
  • Fitur/sensor : Face recognition, Fingerprint, gyro 

Spesifikasi Komputer

Android Studio adalah software Google yang digunakan untuk membuat aplikasi Android menggunakan komputer.

Penulis adalah Android developer yang telah membuat lebih dari 50 aplikasi dan game pendidikan, dengan nama Computational Lab di Play Store.

Sedangkan ntuk menjalankan project Hellosceneform, membutuhkan Android Studio versi terbaru, dengan dukungan grafis yang cukup tinggi.

Sehingga percobaan ini menggunakan Android Studio versi 3.5 dan spesifikasi komputer sebagai berikut: 
  • Merek laptop : HP 
  • Processor : Intel Core i3 gen 7 (2.3 GHz, 3 MB cache, 2 cores) 
  • RA: : 8GB DDR4 
  • HDD : 1TB 5400 rpm SATA 
  • Layar : 14" diagonal HD (1366 x 768) 
  • VGA : AMD Radeon 520 Graphics (2 GB GDDR5 dedicated) 
  • Fitur : WiFi, Bluetooth, Webcam, Windows 10
Meskipun pihak Google sendiri merekomendasikan minimal menggunakan RAM 4 GB sudah cukup. Namun dalam implementasinya, konsumsi memori Android Studio dengan spesifikasi komputer RAM 8 GB di atas masih kurang.

Terbukti selama percobaan, masih seringkali terjadi crash saat kompilasi.

Oleh karena itu, untuk pembuatan AR menggunakan platform ARCore, sebenarnya membutuhkan komputer dengan spesifikasi hardware dan software yang lebih tinggi dengan yang digunakan di atas.

File Obj 

Obyek 3D yang dapat ditampilkan menggunakan library ARCore adalah file obj. 

File ini berupa text sederhana, yang dapat dibuka dengan file editor seperti notepad, dan berisi informasi vertex, arah garis normal, koordinat texture, dan face polygon.


Semakin banyak informasi yang diberikan, menunjukkan obyek obj membutuhkan konsumsi memori yang tinggi untuk menanmpilkannya.

Selain itu, file ini biasanya dilengkapi dengan file pendukung lain yang berupa informasi tentang material yang digunakan, yang berupa texture yang disimpan dalam file berekstensi mtl, jpg dan png.

Informasi lebih lanjut mengenai tipe file obj dapat dibaca di Wikipedia (2019) dengan artikel yang berjudul “Wavefront .obj file”, dengan link di sini.

Percobaan ini menggunakan file obj bunga mawar buatan Yaschan (2013), yang di download di Turbosquid dengan alamat di bawah ini: 


File-file terkait obyek bunga mawar di atas, dalam percobaan ini diubah ke nama erato.obj, erato.mtl dan erato.jpg. Untuk menggantikan file andy.obj bawaan project Hellosceneform.

Berdasarkan percobaan, ukuran vertex file obj yang akan dimasukkan project Hellosceneform harus bervolume dibawah 1.0x1.0x1.0, dan tidak boleh terlalu kecil.

Dikarenakan ukuran aslinya bervolume lebih besar batas volume tersebut, obyek bunga mawar diperkecil lebih dahulu, dengan mengubah informasi vertex, dengan skala tinggi maksimal harus 1.0.

Modifikasi kode program 

Kemudian untuk memasukkan ke project Hellosceneform, file-file erato di atas perlu dimasukkan ke folder sampledata yang terdapat di dalam folder app. 


Kemudian terdapat dua kode yang perlu diubah, yaitu file grandle app dan HelloSceneformActivity.

Untuk file grandle app diubah sebagaimana yang semula ditujukan untuk andy.obj, diubah diarahkan ke erato.obj.


File sfa dan sfb akan digenerate otomatis saat project di rebuild. Namun Android Studio tidak di set untuk menggenerate ulang jika terdapat modifikasi terhadap file obj.

Sehingga jika dilakukan perubahan terhadap file erato dan yang terkait lainnya, lebih baik file sfa dan sfb di hapus secara manual terlebih dahulu.

Selain itu, dalam file HellosceneformActivity harus diganti menyesuaikan nama file sfb yang tergenerate, seperti contoh berikut: 

Jalankan 

Skema kerja ARCore adalah menggabungkan 2 layer. Layer pertama adalah dunia nyata 3D, dan layer kedua adalah dunia 3D dalam sistem. 

Kedua layer tersebut digabungkan dengan kamera, dan dengan sensor gyro. 

Berikut ini adalah hasil uji coba penulis yang dapat dilihat dalam video: 



Referensi

Komentar



Postingan populer dari blog ini

Apps Script untuk Cetak Sertifikat

Kumpulan Source Code Greenfoot

Menyembunyikan Failed Load Images di Blogger

Kode Greenfoot Game Flappy Bird

Algorithma Bilangan Prima dengan Javascript

Checking Data yang Belum Dimasukkan dalam Daftar Menggunakan Query Google Sheet

Kebodohan Karyawan Menyalahkan Sistem

Algorithma Coretan Abstrak dengan HTML5 Canvas

Mencoba Submit Theme di Wordpress.org

Generate Karakter Acak dan Menempatkannya di Sel Google Sheets dengan Apps Script