Komposit Video dalam Blender dan Efisiensi Tahap Pasca-Produksi

18.04.11

Kategori: Animation , Blender

Dua-tiga hari ke depan, tahap pasca-produksi pembuatan video pembukaan serial Dagelan Bakoel akan selesai. Sambil menunggu proses render beberapa cut terakhir (yang paling lama), saya ceritakan saja sedikit pengalaman terkait tahap ini, terutama pada proses render dan video-compositing.



Format Output Render: OpenEXR

Render dilakukan dalam dua tahap, yang pertama menghasilkan deretan gambar dalam format OpenEXR, dan yang kedua (untuk koreksi warna, tweaking hasil render, dan menambah beberapa efek lensa dan cahaya) menghasilkan video dalam format AVI Raw. Penggunaan OpenEXR mungkin perlu sedikit diberi justifikasi, meski sudah umum digunakan, karena ternyata masih ada studio yang menggunakan format-format lama seperti Truevision TGA (TARGA) dan PNG.

OpenEXR adalah format gambar raster yang dikembangkan oleh Industrial Light & Magic, anak perusahaan Lucasfilm Ltd. yang bergerak di bidang efek visual. Perbedaan utama OpenEXR dibanding format gambar umum lainnya adalah perekaman informasi per-pixel sebagai nilai floating-point, sehingga mampu menyimpan dynamic range1 jauh lebih lebar dan warna lebih presisi ketimbang format gambar yang menggunakan integer. Bagi yang gemar akan detail-detail seperti ini, dokumen ulasan teknis OpenEXR berisi lebih banyak data menarik.

Blender sendiri telah mendukung format ini sejak versi 2.42. Sampai versi 2.57, fasilitas khusus OpenEXR yang dimanfaatkan Blender adalah dukungannya terhadap berbagai format kompresi dan jumlah kanal gambar yang tidak terbatas.

Kanal gambar ekstra dalam output Blender berformat OpenEXR adalah Z-Buffer. Kanal ini menyimpan informasi kedalaman dalam satuan Blender Unit, yang dapat diekstrak kembali untuk keperluan alpha-mask dan beberapa efek lensa seperti depth of field. Sebagaimana saya perlihatkan berikut ini, kanal Z-Buffer dari file gambar OpenEXR dapat dikonversi menjadi peta kedalaman dengan memperkecil Z-index (di sini saya bagi 1000) dan mengubah nilai integernya menjadi citra grayscale:

Kanal Z-Buffer dalam file OpenEXR

Setidaknya sekali, saya memanfaatkan kanal Z-Buffer dalam file hasil render ini. Saat itu, layer render yang seharusnya hanya berisi karakter di depan kamera, ternyata ditambahi seorang rekan dengan objek lain di belakangnya. Dengan konfigurasi node hampir seperti ilustrasi di atas, saya kemudian dapat membuat filter untuk mengisolasi dan menghilangkan objek selain yang berada dekat dengan kamera, sehingga proses render tidak perlu diulang.

Render Layer

Memisahkan satu gambar menjadi beberapa lapis dapat memberi kita kendali lebih besar terhadap hasil akhir, dan (sampai batas tertentu) dapat pula membantu mempercepat proses render. Saya ambil contoh salah satu cut dalam video pembukaan Dagelan Bakoel, berikut:

Contoh komposit lapisan render dalam satu cut adegan.

Gambar pada cut ini, di tengah, saya pisahkan menjadi empat lapis render. Lapisan latar belakang, kanan atas, adalah lapisan dengan waktu render yang cukup lama karena banyaknya pepohonan dengan jumlah mesh tinggi. Kamera tidak bergerak, sehingga saya dapat merender lapisan latar ini satu frame saja, alih-alih ratusan frame, dan menggunakan satu frame tersebut di sepanjang cut.

Tiga elemen gambar lain, yaitu jalan, karakter dan gerobak, saya pisahkan untuk keperluan penguatan bayangan. Konfigurasi bayangan untuk ketiga komponen gambar tersebut berlainan, sehingga harus saya urai ke dalam lapisan-lapisan render terpisah.

Masih banyak teknik komposit video lain untuk meningkatkan efisiensi produksi tanpa mengorbankan kualitas hasil, yang sepenuhnya memanfaatkan solusi perangkat open source (Blender, OpenEXR, Gimp). Meski sebagian besar teknik tersebut membutuhkan familiaritas dengan masing-masing perangkat, rata-rata masih kurang terdokumentasi. Beberapa tulisan mendatang yang tengah saya susun akan mendokumentasikan satu persatu trik komposit sederhana yang saya gunakan.


1. Rasio antara intensitas cahaya paling terang dan yang paling redup dalam sebuah gambar.