IMPLEMENTASI KOMPUTASI PARALEL PADA DUNIA BISNIS KHUSUSNYA PERFILM-AN
Pada bagian ini penulis akan membahas
salah satu implementasi komputasi parallel pada dunia bisnis yaitu pada dunia
perfilman yaitu rendering film. Kemajuan di bidang komputasi, khususnya dalam
bidang komputer grafis memberikan kemudahan untuk memodelkan suatu benda dalam
alam 3 dimensi virtual di komputer. Kita dapat membuat suatu benda dalam wujud
3 dimensi dan mengubah-ubah sudut pandang, menentukan pencahayaan, bahkan
menyusun gerakan benda dalam alam 3 dimensi virtual tersebut. Perkembangan ini
muncul dari kebutuhan di bidang manufaktur untuk memiliki komputer yang dapat
membantu perancangan (computer aided design-CAD). Ditemukannya
teknik-teknik dan metoda rendering suatu obyek 3 D ke dalam media 2 D
membuat benda yang dihasilkan oleh perangkat lunak ini menjadi semakin nyata dan
menyerupai aslinya.
Komputasi Paralel mempunyai prinsip yang
bersesuaian dengan algoritma Divide and Conquer, yaitu membagi-bagi proses
menjadi bagian-bagian yang cukup kecil dan memungkinkan untuk dikerjakan oleh
sebuah unit komputasi.
Terdapat 2 klasifikasi parallel computer yang penting, yaitu : Sebuah komputer
dengan banyak unit komputasi internal, atau lebih dikenal sebagai Shared Memory
Multiprocessor. Beberapa komputer yang terhubung melalui sebuah jaringan, atau
lebih dikenal sebagai Distributed Memory Multicomputer.
Pada bagian ini yaitu pada rendering
Film digunakan unit Komputasi parallel Distributed Memory Multicomputer. Hal
ini dikarenakan computer yang digunakan untuk membuat rendering filmnya adalah
Kluster Komputer. Kluster computer adalah proses menghubungkan beberapa
computer agar dapat bekerja secara bersama-sama dengan sebuah jaringan sebagai
media penghubungnya.
Komponen kluster biasanya saling
terhubung dengan cepat melalui sebuah interkoneksi yang sangat capat, atau juga
melalui jaringan local (LAN). Keuntungan memakai Kluster Komputer ini yaitu
pemrosesan dapat dilakukan lebih cepat karena
mempunyai mesin-mesin yang masing-masing multiprocessor. Terdapat
incremental Scalability dimana penambahan system-sistem baru dengan inkremen
yang kecil. Dalam Kluster Komputer kegagalan yang terjadi di dalam satu node
tidak berarti atau disebut dengan “Loss of service”. Dan yang terakhir yaitu
biaya yang dibutuhkan lebih murah, hal ini dikarenakan Kluster computer dapat
menghasilkan power komputasi yang sama atau lebih tinggi dari computer parallel
sebenarnya.
3D Rendering merupakan salah satu proses
yang sangat penting dalam melakukan pengolahan gambar 3D. Tanpa dirender suatu
gambar yang diolah oleh perangkat lunak animasi 3D hanya akan tampil dalam
bentuk kumpulan point dan wireframe sederhana. Proses render melakukan
“pembungkusan” tekstur pada objek yang bersesuaian sesuai cahaya yang datang
pada objek tersebut. Namun proses render membutuhkan daya komputasi yang sangat
besar karena banyaknya titik koordinat yang harus dikomputasi, terutama jika data
3D yang diolah cukup rumit.
3D Rendering terdiri dari proses yang
bertujuan untuk membentuk sebuah gambar dari sebuah model yang dibentuk oleh
perangkat lunak animasi, model tersebut berisi data geometri, titik pandang,
tekstur dan cahaya yang diperlukan untuk membuat gambar yang utuh.3D Rendering
merupakan proses yang sangat penting dan telah digunakan untuk berbagai macam
penggunaan, seperti program permainan komputer, efek spesial pada film dan
program simulasi.
Salah satu cara untuk memecahkan masalah
tersebut adalah dengan menggunakan algoritma Divide and Conquer yang diterapkan
kedalam metode Komputasi Parallel. Divide and Conquer merupakan salah satu
strategi algoritma yang memecah suatu masalah besar menjadi beberapa bagian
untuk kemudian dikerjakan satu persatu. Dalam Komputasi Parallel tiap-tiap
bagian dikerjakan oleh unit pemrosesannya masing-masing, sesuai dengan
kesepakatan Divide pada awal komputasi. Komputasi Parallel terbukti jauh lebih
efektif untuk melakukan rendering objek 3D dibanding hanya menggunakan sebuah
unit komputasi. Sebagai contoh suatu perusahaan animasi asal Jepang,
membutuhkan waktu 165 tahun jika proses render yang dilakukan untuk membuat
animasi berdurasi 100 menit hanya menggunakan sebuah unit komputasi. Sedangkan
ketika perusahaan tersebut menggunakan metode Komputasi Parallel, proses
tersebut hanya membutuhkan waktu 1 tahun saja.
Salah satu masalah kompleks yang hingga
kini masih membutuhkan kemampuan komputasi yang besar adalah melakukan proses
render terhadap objek 3D. Proses render objek 3D sendiri membutuhkan waktu yang
cukup lama, terlebih jika objek yang diberikan cukup rumit.
Sebenarnya operasi render objek 3D hanya
merupakan kumpulan dari beberapa operasi primitif, namun operasi primitif yang
dilakukan pada proses render sangatlah banyak. Untuk itu digunakan metode Komputasi
Parallel sehingga tiap-tiap operasi primitif yang dilakukan dapat dikerjakan
dengan menggunakan algoritma Divide and Conquer agar tiap bagian dari operasi
Divide pada perhitungan yang dilakukan dapat dikerjakan oleh masing-masing unit
komputasi. Beberapa operasi primitif yang digunakan dalam 3D Rendering adalah
operasi penghitungan jarak antara 2 titik,operasi perkalian bilangan bulat yang
besar. Tentunya hampir kesemua operasi primitif tersebut dapat dipecahkan
dengan menggunakan algoritma Divide and Conquer sehingga menjadikan proses 3D
Rendering sangat cocok untuk diselesaikan dengan algoritma Divide and Conquer.
Selain itu, perfilman yang mengandalkan
spesial efek merupakan salah satu industri yang paling banyak mengandalkan HPC
Cluster. Rangkaian film The Lord of the Ring yang akan diputar pada pertengahan
Desember ini merupakan salah satu film yang paling banyak mengandalkan digital
content creation (DCC) dan menuntut kapasitas pemrosesan yang besar untuk
rendering gambar- gambar beresolusi tinggi dalam berbagai format.
WETA Digital, sebuah perusahaan animasi
dan spesial efek yang bermarkas di Selandia Baru, membangun fasilitas render
farm berbasis cluster hingga skalabilitas ribuan prosesor untuk mengerjakan
film ini. Jika sekuel Lord of The Ring dikerjakan dengan personal computer (PC)
yang tercepat saat ini, dibutuhkan waktu lebih dari 10 tahun untuk
menyelesaikan proses rendering. Bagi para artis grafis 3D atau animator, hal
yang paling menyita waktu adalah menunggu proses rendering.
Beberapa waktu lalu Pixar, sebuah studio
3D spesial efek membangun HPC Cluster baru berbasis 1.920 prosesor Intel Xeon
untuk menggantikan mesin Sun Enterprise Render Server yang dipakai untuk
produksi film Monster Inc.Oracle, vendor aplikasi database terkemuka telah
mendukung teknologi cluster dengan meluncurkan Oracle 9i.
Berpikir sedikit optimistis, dengan
dukungan ini setidaknya kita bisa mengevaluasi ulang kebutuhan kita membeli
mainframe yang mahal untuk menjalankan aplikasi enterprise Anda dan
menggantikan dengan mesin berbasis HPC Cluster. Dan mungkin, dengan sedikit
percaya diri, mesin tersebut dapat merupakan produk rakitan sendiri. Selain
dapat menjadi indikasi kegiatan riset dan pencapaian teknologi kepemilikan
superkomputer, hal itu juga merupakan masalah prestisius bangsa. Salah satu
proyek yang cukup ambisius tahun ini adalah RedGrid, sebuah supercluster RRC
yang dibangun oleh Cray dengan prosesor AMD Opteron dan diprediksikan menjadi
superkomputer nomor dua tercepat di dunia.
Di negara tetangga seperti Thailand,
Malaysia, dan Singapura terdapat banyak sekali proyek HPC Cluster yang dibangun
untuk kebutuhan riset dan industri. Bagaimana dengan Indonesia? Mungkin sampai
saat ini belum ada satu lembaga penelitian atau universitas pun yang memiliki
HPC Cluster. Pertanyaan perlu atau tidak merupakan hal yang relatif dan
mengingat bahwa di negara kita hampir tidak ada riset teknologi maju ataupun
dasar. Kecenderungan kita adalah membeli sebuah solusi jadi dan bukan know-how,
membuat bangsa ini sangatlah sukar untuk maju secara teknis dalam bidang
teknologi.
Pemodelan merupakan bagian yang
terpenting dalam proses pembuatan gambar 3D dalam komputer. Dari model inilah
semuanya bermula. Semakin baik dan presisi proses modeling semakin baik pula
kualitas gambar/animasi yang dihasilkan. Pemodelan dapat dilakukan dengan alat
bantu seperti digitizer 2D/3D atau scanner 3D maupun dibuat secara manual di
komputer. Demi kecepatan dan ketelitian memang akan lebih baik jika kita
menggunakan alat bantu, tetapi karena harga perangkat digitizer ini tidak dapat
dibilang murah, maka pemodelan secara manual kadang menjadi pilihan yang paling
tepat.
Objek-objek sederhana seperti bola,
silinder, tube, prisma, kotak, limas, kerucut, dan benda geometris semacam ini
biasanya telah disediakan fasilitas pembuatannya dalam program 3D Modelling
komersial. Kita cukup menentukan parameter-parameter benda tersebut seperti
koordinat pusat, tinggi, lebar, jari-jari, tebal dan lain-lain. Untuk bentuk-bentuk
objek yang lebih kompleks, kita coba uraikan dengan maksud mencari kemungkinan
pembuatannya dari operasi logika objek-objek geometri sederhana seperti di
atas. Misalkan, bentuk barbel beban bulat, bisa dibentuk dari operasi logika
ADD antara 2 buah bola dengan sebuah silinder. Bentuk manik kalung mutiara
dapat dibuat dari operasi SUB antara objek bola dengan objek silinder. Masih
ada lagi jenis logika yang dapat digunakan untuk pembentukan objek misalkan
INTERSECTION yakni untuk membentuk objek yang merupakan pepotongan volume 2
buah benda 3 dimensi. Bentuk piring terbang misalnya, dapat dibuat dengan
operasi INTERSECTION dari dua buah objek bola besar.
Untuk benda-benda yang lebih kompleks
lagi, maka kita mengenal metoda lain yang dalam paket program Autodesk 3D
Studio dikenal dengan nama Loftering. Objek 3D dapat dibentuk dengan proses
loftering dari objek 2 dimensi yang telah ada. Objek 2D ini dapat dibuat dari
bentuk bangun 2D dasar, digambar bebas (freehand), gabungan antara gambar bebas
dan bentuk geometri dasar, maupun dibuat melalui persamaan-persamaan
matematis. Loftering secara awam dapat diartikan sebagai proses
memberikan komponen ketebalan dari objek 2D menurut suatu path yang kita
tentukan.
Proses pemberian ketebalan yang paling
sederhana contohnya jika kita membuat suatu logo/teks dalam 2D, misalkan logo
perusahaan, dan kita menginginkan memberikan ketebalan tertentu, maka dengan
program Lofter cukup kita load objek 2D tersebut dan kita beri path garis lurus
sepanjang ketebalan yang diinginkan dalam vektor arah ketebalan, lalu kita
lakukan proses loftering. Maka jadilah objek 3D yang kita inginkan. Contoh
variasi bentuk path lain yang dapat kita terapkan adalah lingkaran (untuk
membuat objek putar misalnya pion catur seperti pada gallery), helix (membuat
model DNA misalnya), spyline, dan lain-lain. Ini tergantuk kreativitas kita
sendiri.
Fasilitas lain yang dapat membantuk kita
memodelkan suatu benda adalah fasilitas deformasi, untuk mengisi keterbatasan
path sederhana. Contoh deformasi adalah scaling (misalkan kita membuat
terompet, maka ukuran irisan lingkaran pada ujung satu tentu akan berbeda dengan
di ujung lainnya), beveling (memodifikasi sudut-sudut benda), rotation,
leveling (misalkan untuk membuat benda yang ujungnya berupa bujur sangkar dan
pangkalnya berbentuk lingkaran/bentuk 2D lainnya), dan lain-lain.
Dari pemodelan ini hasil akhirnya berupa
meshes file yang berisikan informasi koordinat-kordinat vertex (titik sudut)
suatu objek 3D serta wireframenya (rangka kawat yang menghubungkan antar titik
sudut). Representasi objek dalam tahap ini masih berupa kerangka objek
tersebut.
Objek 3D yang telah ada harus
didefinisikan kembali propertiesnya, misalkan material penyusun objek itu
(kadang-kadang berarti juga kita harus membuat materialnya), mapping/pemetaan
ukuran pola material (misalkan material ubin marmer, maka harus kita
definisikan berapa besar ubin marmer relatif terhadap objek yang akan diset
dengan material tersebut). Material selain berisi pola material (optional),
mencakup juga sifat-sifat transparansi, pemantulan cahaya, efek cermin, warna,
sifat pendar, dan lain-lain.
Setelah objek kita berikan
sifat-sifatnya, maka lingkungan objek juga harus didefinisikan. Pertama kita
harus menentukan sifat lingkungan (berkabut tidaknya, sifat penyerapan cahaya
oleh lingkungan), kemudian latar belakang lingkungan juga kita harus set yang
dapat berupa warna/gradasi warna maupun berupa gambar. Pencahayaan menjadi hal
yang penting juga karena merupakan komponen yang dijadikan dasar dalam
melakukan rendering. Pencahayaan umumnya meliputi 3 jenis:
·
Cahaya Lingkungan
·
Cahaya Lampu Penerang
·
Cahaya Lamput Sorot
Dari sini juga kita tentukan apakah kita
gunakan efek bayangan atau pun tidak. Lampu-lampu yang dipasang juga harus kita
perhatikan letak, arah sorot dan lebar sorot(untuk lampu sorot), warna dan
terangnya lampu.
Yang terakhir kita perlu juga untuk
menentukan sudut pandang kita terhadap objek yang kita buat. Untuk ini kita
perlu meletakkan kamera yang kita gunakan untuk melihat. Properties dari kamera
ini meliputi letak, arah sorot, ukuran lensa, dan lain-lain. Pandangan kamera
ini yang akan kita gunakan untuk merepresentasikan objek dalam hasil rendering.
Untuk mendapatkan hasil rendering yang
berupa file animasi (gambar bergerak) maka kita perlu menentukan pergerakan 3
unsur pembentuk gambar 3D yakni objek, lampu, dan kamera.Gambar
bergerak/animasi sebenarnya adalah kumpulan gambar-gambar diam yang ditampilkan
secara sekuensial dalam kecepatan tertentu (misalkan 25 gambar per menit).
Untuk mendapatkan kumpulan gambar-gambar itu, maka kita mendefinisikan dulu
berapa gambar yang ingin kita buat. Untuk kecepatan gambar yang normal (dengan
tidak mengorbankan kemulusan gerak) biasanya berkisar 30 gambar per detik. Jadi
jika kita membuat animasi sepanjang 5 detik paling tidak dibutuhkan 150 gambar.
Posisi ketiga unsur pembentuk gambar 3D
di atas pada setiap gambarnya (lebih sering kita sebut frame) secara sederhana
ditentukan dengan mengeset posisi awal dan posisi akhir ketiga unsur tersebut
dalam setiap range urutan gambar. Frame yang menjadi acuan baik posisi awal dan
posisi akhir 3 unsur di atas sering dinamakan dengan keyframe.
Dengan didefinisikannya seluruh gerak
dari 3 unsur di atas, maka sampailah kita pada langkah terakhir yang
membutuhkan kerja keras perangkat lunak dan perangkat keras komputer. Pada
proses ini komputer akan menerjemahkan pixel per pixel yang merepresentasikan
proyeksi/pandangan dari dunia 3 dimensi yang telah kita buat menjadi sebuah
gambar bitmap utuh dengan ukuran dan resolusi yang kita tentukan. Ada banyak
metoda rendering yang menentukan bagaimana representasi ketiga komponen tersebut
pada pixel gambar, misalnya wireframe, flat, gourad, phong, metalic, dan
lain-lain yang akan kita bahas secara lebih detail pada artikel terpisah.
Untuk rendering gambar diam, hanya
dibutuhkan rendering 1 frame saja, sementara untuk gambar bergerak, kita
mestilah lebih sabar, karena komputer harus melakukan rendering untuk seluruh
gambar/frame yang kita telah tentukan.
Terdapat banyak hasil yang dapat
diperoleh dan ditampilkan dari proses 3D Rendering pada suatu sketsa wireframe,
diantaranya :
1.
Shading ; “Variasi warna dan
kecerahan yang timbul pada suatu permukaan berdasarkan pencahayaan yang
dilakukan”
2.
Texture-Mapping ; “Detail yang
muncul pada suatu permukaan”
3.
Bump-Mapping ; “Kontur yang
muncul pada suatu permukaan”
4. Fogging / Participating Medium ; “Bagaimana
berkas cahaya berubah jika melewati udara yang tidak murni”
5.
Shadows ; “Efek dari cahaya yang
terhalang”
6.
Soft Shadows ; “Variasi efek dari
cahaya yang terhalang tidak sempurna”
7.
Reflection ; “Refleksi yang
tampak pada permukaan kaca atau gelas”
8.
Transparency ; “Transmisi cahaya
yang berbeda-beda jika melewati medium tertentu”
9. Translucency ; “Transmisi cahaya
yang berbeda-beda jika memantul pada medium tertentu”
10. Refraction ; “Cahaya yang berubah arahnya karena efek
transparency”
11. Indirect Illumination ; “Cahaya yang datang pada suatu
objek namun tidak berasal dari sumber cahaya yang sebenarnya melainkan refleksi
dari permukaan objek lain”
12. Caustics ; “Pantulan cahaya menyilaukan yang timbul pada
suatu objek”
13. Depth Of Field ; “Objek yang berada jauh di depan maupun
di belakang objek yang menjadi fokus akan tampak buram”
14. Motion Blur ; “Objek yang bergerak dengan kecepatan
tinggi atau objek yang direkam oleh kamera yang berada dalam kecepatan tinggi
akan tampak buram”
15. Photorealistic Morphing ; “Teknik yang memungkinkan hasil
proses render objek 3D menjadi tampak terlihat lebih nyata”
16. Non-Photorealistic Rendering ; “Teknik yang memungkinkan
hasil proses render objek 3D menjadi terlihat seperti hasil lukisan atau
gambar”
Melakukan 3D Rendering tentu akan
merupakan masalah yang sangat merepotkan jika tidak menggunakan algoritma
memadai, dikarenakan banyaknya point dan polygon yang harus dikalkulasi setiap
proses. Penggunaan algoritma Divide and Conquer tentu sangat membantu agar
pekerjaan penghitungan yang sangat banyak dalam proses render dapat dikerjakan
oleh beberapa unit komputasi sekaligus secara bersamaan. Hal ini juga telah
dibuktikan dengan banyaknya perusahaan animasi dan film yang sering melakukan
pekerjaan proses render menggunaan sistem komputasi paralel di dalam perusahaan
mereka.
Sumber:
http://id.wikipedia.org/wiki/Komputasi_paralel
https://computing.llnl.gov/tutorials/parallel_comp/
https://dsitompul.files.wordpress.com/2008/11/komputasi-paralel3.doc
http://www.scribd.com/doc/32982265/Parallel-Processing
http://www.gudangmateri.com/2009/12/pemrosesan-paralel.html
http://yanboyz.blogspot.com/2009/07/teori-komputasi-parallel-untuk.html
http://backtocampus.zulhipni.web.id/?p=14
http://mahadisuta.blogspot.com/2012/12/implementasi-komputasi-paralel-dalam.html