Friday, April 26, 2013

Low Poly vs High Poly 3D Model

Definisi
Low poly dan high poly adalah istilah yang biasa digunakan untuk menggambarkan jumlah poligon (atau triangles) yang membentuk suatu model 3D. Tidak ada patokan baku berapa jumlah poligon yang harus dimiliki suatu model untuk masuk kategori low atau high poly, hanya saja secara umum model low poly memiliki poligon yang jauh lebih kecil daripada model high poly, biasanya di kisaran ribuan atau 4 digit. Sedangkan model high poly bisa mencapai puluhan bahkan ratusan ribu poligon dalam satu model.
Apa bedanya?
Jumlah poligon akan mempengaruhi beberapa hal:
  1. Kualitas model saat dirender in game.
    Jumlah poligon yang lebih banyak akan membuat sebuah model terlihat lebih 'mulus' dibandingkan model dengan jumlah poligon lebih rendah. Contoh paling sederhana bisa kita lihat perbandingan antara karakter beberapa game Final Fantasy  (Cloud FFVII, Squall FFVIII, Tidus FFX, dan Lightning FFXIII).
    Cloud FFVIISquall FFVIIITidur FFXLighting FFXIII

    Rata-rata game console saat ini dapat menangani game dengan jumlah poligon jauh lebih banyak daripada jaman dulu, terutama dengan peningkatan dari prosesor, memory, dan hardware graphic yang bersangkutan.
  2. Performa game saat merender model, terutama untuk jumlah yang banyak.
    Rendering adalah proses menampilkan model 3D ke layar dalam sebuah aplikasi atau game, dengan cara mengolah informasi yang dimiliki model-model 3D dan informasi pendukungnya (sumber cahaya, efek kamera, dll) untuk menghasilkan tampilan 3D yang meyakinkan.  http://en.wikipedia.org/wiki/Rendering_(computer_graphics) Proses rendering ini bukan hanya memproses per model, bahkan pada dasarnya akan dilakukan per permukaan poligon. Karena itu, semakin banyak poligon yang digunakan, proses rendering pun akan semakin lambat.
Pakai model yang mana untuk game 3D saya?
Game umumnya menggunakan teknik real-time rendering, yaitu proses rendering dilakukan tiap frame, atau sekitar 30 kali per detik. Dengan teknik ini, proses rendering akan sangat mempengaruhi performa game kita, walaupun dalam game masih  banyak proses yang perlu dilakukan, misalnya collision detection, game logic, AI, dll. Berbeda dengan animasi untuk film atau cutscene (adegan) in-game yang umumnya menggunakan teknik pre-rendering, yaitu merender ke dalam suatu file terpisah yang nantinya akan ditampilkan ke pengguna dalam bentuk film. Dengan menggunakan pre-rendering, pengguna hanya akan melihat hasil akhir sesuai dengan jumlah waktu adegan yang bersangkutan, tanpa dipengaruhi prosesnya, padahal sebuah film 3D pendek sekitar 5 menit saja bisa membutuhkan waktu pre-rendering selama berjam-jam.
Model high poly akan membutuhkan waktu yang lebih lama untuk dirender, karena jumlah poligonnya lebih banyak, lebih banyak pula waktu yang dibutuhkan untuk memproses semua poligon tersebut. Model seperti ini lebih cocok untuk animasi yang membutuhkan detail dan kualitas yang sangat tinggi. Sedangkan model low poly akan jauh lebih cepat di render, dan untuk pemrosesan seperti collision detection, physics simulation, dan proses-proses lain yang membutuhkan informasi model 3D dalam game, akan membutuhkan waktu yang lebih cepat dibandingkan model high poly, sehingga lebih umum digunakan dalam game.
Raiden 3, contoh game dengan processing model 3D vs peluru yang intensif
Walaupun begitu, tetap perlu kita sesuaikan dengan kebutuhan game kita. Jika tidak terlalu membutuhkan pengolahan informasi model 3D, misalnya game point and click, dimana jika kita menekan sebuah trigger maka akan dijalankan suatu animasi yang sudah ditentukan, maka kita bisa saja menggunakan model high poly. Tapi jika game kita akan mengolah informasi model 3D tersebut sebagai bagian dari gameplay, misalnya game First Person Shooting, dimana tiap peluru akan diperiksa apakah mengenai seorang pemain, dan titik tabrakan model pemain dan peluru akan mempengaruhi jalannya permainan (apakah akan terjadi headshot, mengenai tangan sehingga pemain tidak bisa menggunakan senjata, atau mengenai kaki sehingga pemain menjadi lebih lambat, dst) akan jauh lebih menguntungkan jika kita menggunakan model low poly.

Tapi kalau pakai low poly model artinya kualitas game saya lebih jelek dong?
Ada beberapa hal yang bisa kita lakukan untuk membuat kualitas game kita lebih bagus dari sisi grafis walaupun kita menggunakan model low poly. Beberapa platform (terutama console dan PC, karena memiliki hardware lebih canggih) memiliki fitur-fitur yang dapat kita gunakan:
  1. Bump mapping dan normal mapping
    Bump map dan normal map adalah suatu file gambar yang bisa digunakan sebagai informasi tambahan selain file tekstur dalam merender sebuah model 3D. Dua file ini akan digunakan sebagai informasi kedalaman yang akan diperhitungkan dalam merender bayangan di suatu permukaan objek. Dengan teknik ini, kita bisa membuat efek seperti relief pada tembok batu menggunakan model tembok yang sebenarnya datar.
    <gambar tile bump mapped>
  2. Post processing menggunakan shader
    Shader adalah teknologi yang digunakan dalam proses graphic rendering secara umum, tapi penggunaannya luar biasa banyak (sebenarnya bump mapping dan normal mapping adalah contoh implementasi shader yang sudah dihandle di tingkat rendering library atau bahkan pada tingkat hardware). Kita bisa membuat efek-efek tembahan menggunakan shader, misalnya membuat efek motion blur, bloom, dan masih banyak lagi. Tapi untuk menggunakan shader ini kita harus mempelajari bahasa shader, biasanya HLSL atau GLSL, dan konsepnya cukup berbeda dari bahasa pemrograman biasa.
Ada pertanyaan atau komentar? Tulis saja di bawah :)
 

3 comments:

  1. permisi minta gan link sumbernya dong buat artikel nya :D
    biar bisa buat referensi skripsi hha :D

    ReplyDelete
    Replies
    1. Sumbernya? Pengalaman di industri gan :) Bikin game di Agate Studio.

      Delete
  2. Tak kirain saya aja yang ngga nemu jawaban berapa jumlah yang baku buat nentukan low poly , med poly sama high poly. Rupanya emang ngga ada aturannya .. Thx gan :)

    ReplyDelete