IMPLEMENTASI OBYEK GRAFIS 3-D DENGAN POV-Ray
J NTETI , Vol. 2, No. 3, Agustus 2013
5
IMPLEMENTASI OBYEK GRAFIS 3-D
DENGAN POV-Ray
Rudy Hartanto
1 Abstract — The development of 3-D graphics applications leads to the generation of photo-realistic graphics image, which is implemented many applications, such us design, simulation, games as well as to making animated films. Rendering techniques used to generate the graphics image is still les realistic, because lack of real-world lighting models. Subsequent research led to the global illumination models that used a model of the light rays as in the actual physical environment. The algorithm that can implement global illumination models are ray-tracing algorithm. This algorithm is capable of producing 3-D graphic image of a high quality photo-realistic, but requires a complex mathematical equation and computation. POV-Ray is a tool used to implement the ray-tracing models to produce photo-realistic graphics image. These results show that the POV-Ray can generate 3-D graphic image of high qualityt.
Intisari — Perkembangan aplikasi grafis 3-D mengarah pada pembangkitan citra grafis foto-realistis, yang sangat diperlukan mulai dari aplikasi perancangan, simulasi, game sampai pembuatan film animasi. Teknik rendering yang digunakan untuk membangkitkan citra grafis masih belum realistis, karena belum didasarkan pada model pencahayaan dunia nyata. Penelitian selanjutnya mengarah pada model iluminasi global yang menggunakan model berkas cahaya seperti pada lingkungan fisik sebenarnya. Salah satu algoritma yang dapat mengimlementasikan model iluminasi global adalah algoritma ray-tracing. Algoritma ini mampu menghasilkan citra grafis 3-D kualitas tinggi mendekati foto-realistis, namun membutuhkan persamaan matematis dan komputasi yang kompleks. POV-Ray adalah salah satu tool yang digunakan untuk mengimplementasikan model ray-tracing untuk menghasilkan citra grafis foto-realistis. hasil penelitian ini menunjukkan bahwa POV-Ray dapat menghasilkan citra grafis 3-D kualitas tinggi.
Kata kunci— Foto-realistis, iluminasi global, ray-tracing, POV- Ray.
I. P ENDAHULUAN Teknologi grafis 3-dimensi telah merambah ke berbagai bidang aplikasi, mulai dari aplikasi grafis sederhana pada handphone sampai pada aplikasi pemodelan dan visualisasi canggih pada film animasi yang diproses dengan menggunakan komputer super.
Aplikasi pemodelan grafis pada industri meliputi industri automotif, kimia, televisi, periklanan, film, game multimedia dan berbagai aplikasi yang menggunakan komputer untuk memvisualisasikan data [1].
Sejak berkembangnya grafika komputer pada tahun 1960 sudah banyak topik diskusi tentang bagaimana membangkitkan citra foto yang realistis dari model 3-D. Untuk menghasilkan citra foto realistis maka perlu secara tepat mensimulasikan fenomena cahaya dengan obyek dan teksturnya agar dapat terlihat realistis. Foto-realistis sangat diperlukan dalam berbagai aplikasi. Misalnya pada aplikasi perancangan obyek 3-D seperti perancangan mobil atau motor, pesawat terbang dan bangunan, simulator penerbangan, atau pada game dan film animasi. Teknik rendering cukup baik untuk mesin waktu-nyata karena cukup cepat dan hampir semua kartu grafis menggunakannya. Namun citra yang dihasilkan terlihat tidak terlalu realistis, karena tidak dapat mensimulasikan refleksi, refraksi, bayangan, dan aspek lain dalam rangka memberikan impresi yang diperlukan untuk citra foto-realistis. Hal ini karena algoritma yang digunakan dalam proses rendering dan rasterisasi tidak didasarkan pada model pencahayaan dunia nyata.
Kesulitan dalam mencapai hasil seperti citra foto-realistis mendorong para peneliti mengarah pada isu iluminasi global yang mengacu pada simulasi berbasis fisik dari berkas cahaya yang dihamburkan (scatered) dalam suatu lingkungan buatan [2]. Iluminasi global bukanlah suatu algoritma melainkan suatu efek yang ingin dicapai. Algoritma awal yang dikembangkan untuk mensimulasikan iluminasi gobal adalah algoritma ray-tracing. Dalam perkembangannya ray-tracing telah banyak digunakan dalam grafika komputer dan mampu menghasilkan gambar 3-D dengan kualitas tinggi yang mendekati foto-realistis. Pada makalah ini akan mengimplementasikan suatu obyek grafis 3-D foto-realistis dengan menggunakan POV-Ray.
Fenomena tentang bagaimana menghasilkan obyek 3-D yang terlihat realistis sudah menjadi salah satu topik penelitian yang intens pada bidang grafika komputer. Salah satu faktor yang menentukan agar suatu obyek garfis 3-D dapat terlihat realitstis adalah ray-tracing. Namun ray-tracing membutuhkan komputasi atas persamaan matematis yang cukup kompleks. Terdapat beberapa tool maupun pustaka grafis untuk implementasinya, seperti OpenGL, POVRay, dan Yafaray. Sudah banyak penelitian yang membahas tentang metoda untuk menghasilkan model 3-D yang terlihat realistis. Johnson [3] telah melakukan penelitian untuk meningkatkan citra yang dibangkitkan dengan komputer agar terlihat realistis dengan menggunakan sejumlah besar koleksi fotografi. Berdasarkan pada citra komputer grafis, mereka mengambil sejumlah gambar nyata dengan struktur global yang sama. Selanjutnya dilakukan proses identifikasi area yang sesuai antara citra komputer dengan citra nyata dengan menggunakan algoritma ko-segmentasi pergeseran-rerata. Pengguna selanjutnya dapat mentransfer warna, tone, dan tekstur secara otomatis dari area 1 Dosen, Jurusan Teknik Elektro dan Teknologi Informasi
Fakultas Teknik Universitas Gadjah Mada, Jln. Grafika 2 Yogyakarta 55281 INDONESIA (telp: 0274-552305; fax: 0274- 552305; e-mail: rudy@mti.gadjahmada.edu)
6 J NTETI , Vol.2, No.3, Agustus 2013
yang cocok dengan citra grafis. Hasilnya berupa citra hibrida yang terlihat lebih realistis.
Roger Olsson dan Youzhi Xu [4] meneliti tentang simulasi lingkungan berbasis ray-tracing interaktif untuk membangkitkan runtun citra video terpadu. Mereka telah menciptakan lingkungan simulasi interaktif berbasis ray- tracing untuk membangkitkan runtun video Integral Imaging (II) sebagai suatu cara untuk membantu mengembangkan, mengevaluasi dan mengadopsi teknik baru untuk membangkitkan video 3-D. Model generik II juga dimaksudkan sebagai dasar dari lingkungan simulasi. Model ini memberi fasilitas untuk untuk merender II dengan
Gbr. 1. Ide dasar Ray-Tracing. [8] menggunakan MegaPOV, yaitu versi custom dari POVRay. Artzi Aner Ben, Ravi Ramamoorthi, dan Maneesh Agrawala
Setiap kali obyek dikenai cahaya, maka warna permukaan [5] melakukan penelitian untuk menyelesaikan permasalahan pada titik tersebut akan dihitung. Untuk keperluan ini maka perhitungan bayangan yang efisien dari lingkungan dalam berkas cahaya akan dikirim balik ke masing-masing sumber konteks ray-tracing. Penelitian ini menunjukkan bahwa cahaya untuk menentukan jumlah cahaya yang datang dari koherensi pada ranah spasial dan sudut dapat digunakan untuk sumber cahaya. Warna dari piksel permukaan obyek akan mengurangi jumlah berkas-bayangan yang harus dilacak ditentukan berdasarkan jalur berkas ke sumber cahaya. Teknik sampai faktor 20 dengan mempertahankan pesat galat di ini dapat menangani fenomena fisik dari cahaya serta refleksi, bawah 0,01%. refraksi, atau difusi [8]. Berkas bayangan ini akan diuji untuk
Tushar Udeshi and Charles
D. Hansen [6], mengetahui apakah titik permukaan terletak dalam bayangan mengembangkan suatu teknik untuk membangkitkan gambar atau tidak. Jika permukaan obyek bersifat reflektif atau sederhana dalam ruangan yang mendekati foto realistis, transparan, maka berkas yang baru akan diset dan dilacak dengan menggunakan CPU dan perangkat keras grafis paralel. untuk menentukan kontribusi dari refleksi atau refraksi cahaya
Sasaran yang ingin dicapai adalah dapat memanfaatkan pada warna akhir dari permukaan obyek. sebanyak mungkin efek iluminasi global dengan mempertahankan pesat frame yang tinggi. Penelitian ini juga
ASIL AN EMBAHASAN
III. H D P menjelaskan metoda untuk membangkitkan shoft shadow, pendekatan pantulan tunggal dari pencahayaan tidak langsung,
A. Menghitung Berkas Cahaya yang Terlihat dan efek refleksi serta refraksi.
Alat bantu dasar untuk pembangkitan berkas cahaya adalah titik pandang, dan bidang gambar. Untuk membangkitkan
AY RACING
II. R T berkas cahaya, maka diperlukan representasi matematis untuk berkas cahaya. Suatu berkas dapat dinyatakan dengan titik Ray-tracing adalah suatu teknik rendering yang menghitung pusat dan arah perambatan yang idealnya dinyatakan dengan citra dari adegan dengan mensimulasikan cara cahaya garis parametris 3-D [9]. merambat dalam dunia nyata [7]. Ray-tracing menentukan
Pelacakan berkas mempunyai tiga tahap: visibilitas permukaan dengan melacak berkas imaginer dari
1. Pembangkitan berkas, untuk menghitung pusat dan arah mata pengamat ke obyek dalam adegan. Ide dari ray-tracing masing-masing berkas piksel berdasarkan geometri kamera. datang dari fisika. Untuk merancang lensa, fisikawan akan menggambar jalur berkas cahaya mulai dari sumber cahaya,
2. Titik perpotongan berkas, untuk mendapatkan titik yang disebut dengan ray-tracing. perpotongan obyek terdekat dengan berkas yang kelihatan. Dalam dunia nyata berkas cahaya dipancarkan dari sumber
3. Bayangan, untuk menghitung warna piksel berdasarkan cahaya dan menerangi obyek. Cahaya dapat memantul dari hasil titik perpotongan berkas. obyek atau melewati obyek yang transparan. Pantulan cahaya ini yang mengenai mata pengamat atau lensa kamera. Program ray-tracing seperti POVRay dimulai dengan mensimulasikan kamera dan melacak berkas cahaya ke belakang keluar dari adegan gambar. Pengguna dapat menentukan lokasi kamera, sumber cahaya dan sembarang media yang dilewati cahaya seperti seperti kabut, air, dan lain sebagainya. Untuk setiap piksel gambar, satu atau lebih berkas yang terlihat ditembakkan dari kamera kedalam adegan untuk melihat apakah terdapat potongan dengan obyek. Berkas cahaya ini
Gbr. 2 Berkas dari mata ke titik pada bidang gambar [9].
berasal dari pengamat, yang direpresentasikan dengan kamera, dan melewati jendela pengamat yang merepresentasikan citra akhir seperti yang diperlihatkan pada Gbr. 1.
4AC. Jika diskriminan negatif maka akar persamaannya adalah imajiner dan garis berkas dan bola tidak berpotongan. Jika diskriminan positif, maka terdapat dua solusi: pertama adalah berkas memasuki bola dan solusi kedua, berkas meninggalkan bola. Jika diskriminan bernilai nol, maka berkas mengenai permukaan bola, tepat menyentuh pada satu titik. Dengan menyusun kembali persamaan di atas maka diperoleh
)
− c ) · (p
Persamaan di atas dapat ditulis dalam bentuk vektor (p
2 = 0.
2 − R
)
c
2
c
− R
2
)
c
) dan jari-jari R dapat dinyatakan dengan persamaan implisit (x − x
, z c
c , y c
Suatu bola dengan pusat c = (x
− c )
2 = 0.
Untuk suatu berkas p(t) = e + td dan suatu permukaan implisit f(p) = 0, maka titik perpotongan akan muncul saat titik berkas memenuhi persamaan implisit, sehingga nilai t yang dicari adalah penyelesaian dari persamaan
− c )
2 −
Nilai dari akar persamaan di atas sangat bergantung pada nilai diskriminan yaitu B
2 + Bt + C = 0.
At
Pada persamaan di atas semua parameter telah diketahui nilainya kecuali t, sehingga dapat dipandang sebagai persamaan kuadrat klasik dalam t yaitu persamaan ABC yang mempunyai bentuk
2 = 0.
− R
− c ) · (e
Sembarang titik p yang memenuhi persamaan ini berada pada bola. Jika titik pada berkas p(t) = e + td diisikan dalam persamaan, maka akan diperoleh persamaan dalam t yang dipenuhi oleh nilai t yang menghasilkan titik pada bola
− c )t + (e
2
Dengan menyusun kembali persamaan di atas akan diperoleh (d · d )t
2 = 0.
− R
− c )
− c ) · (e + td
(e + td
f (p(t)) = 0 atau f(e + td) = 0.
1 = + ∞.
) akan lebih dekat ke mata dibanding p(t
Untuk p(0) = e, dan p(1) = s, sehingga secara umum jika 0 < t
2 ).
Dengan demikian jika t < 0, maka p(t) akan berada “di belakang” mata. Fakta ini berguna saat mencari obyek terdekat yang terkena berkas yang tidak berada di belakang mata. Untuk menghitung berkas yang terlihat diperlukan nilai e (diketahui) dan s.
Metode pembangkitan berkas dimulai dari koordinat
orthonormal frame , yang dikenal dengan camera frame yang
ditandai dengan e untuk titik mata atau titik pandang, dan u, v serta w yang merupakan tiga vektor basis. Vektor basis diorganisasikan dengan u yang menunjuk ke kanan ( dari sudut pandang kamera), v menunjuk ke atas dan w menunjuk ke belakang sehingga membentuk sistem koordinat tiga dimensi, seperti yang diperlihatkan pada Gbr. 3.
Berkas yang terlihat harus dimulai dari bidang yang didefinisikan oleh titik e serta vektor u dan v. Dimensi gambar didefinisikan dengan empat angka, yaitu untuk keempat sisi gambar.
Gbr. 3 Vektor dari frame kamera [9].
l dan r adalah posisi ujung kiri dan kanan gambar yang diukur dari e sepanjang arah u, b dan t adalah posisi ujung bawah dan atas gambar yang diukur dari e sepanjang arah v. Umumnya l < 0 < r dan b < 0 < t, seperti yang diperlihatkan pada Gbr. 4.
, maka p(t
]. Titik perpotongan dasar adalah saat t = 0 dan t
2
< t
1
Garis parametris 3-D dari mata e ke suatu titik s pada bidang gambar seperti yang diperlihatkan pada Gbr. 2, diberikan oleh persamaan: p(t) = e + t(s – e), (1) persamaan di atas diinterpretasikan sebagai “gerakan maju dari e sepanjang vektor (s - e) yaitu potongan jarak t untuk mendapatkan titik p”. Jadi jika t diketahui maka dapat ditentukan titik p. Titik e adalah pusat berkas, dan s – e adalah arah berkas.
1
7
J NTETI , Vol. 2, No. 3, Agustus 2013
vertikal. Hal ini berarti bahwa piksel pada posisi (i, j) dalam gambar raster mempunyai posisi
u = l + (r − l )(i + 0.5)/n x
,
(2)
v = b + (t − b )(j + 0.5)/n y ,
dengan (u, v) adalah koordinat dari posisi piksel pada bidang gambar, relatif terhadap pusat e dan sumbu {u, v}.
Dalam sudut pandang ortografik dapat disederhanakan dengan menggunakan posisi bidang gambar piksel sebagai titik awal berkas, dan seperti yang diketahui bahwa arah berkas adalah arah pandang. Maka prosedur untuk membangkitkan berkas ortografik menjadi
Hitung u dan v menggunakan persamaan (2) Arah.berkas -dw + uu + vv Pusat.berkas e
B. Titik Perpotongan Obyek dan Berkas
Setelah membangkitkan berkas e + td, maka langkah berikutnya adalah mencari titik perpotongan dengan sembarang obyek untuk t > 0. Dalam praktek yang menjadi masalah umum adalah mencari titik perpotongan pertama antara berkas dan permukaan obyek yang terjadi pada saat t dalam rentang [t , t
1
- (y − y
- (z − z
- 2d · (e
Gbr. 4 Proyeksi Perspektif, pusat sama tapi arah berbeda [9].
x
x n
y
piksel kedalam kotak berukuran (r – l) x (t – b), maka piksel-piksel akan berjarak sebesar (r – l)/n
x
horisontal dan (t − b)/n
y
Untuk mengepaskan gambar dengan n
Permukaan yang tidak menerima penerangan sama sekali akan dirender sebagai hitam sempurna yang sering tidak diinginkan. Salah satu cara untuk menghindari bayangan hitam adalah dengan menambah suatu komponen konstanta ke model shading, untuk memberi kontribusi ke warna piksel yang bergantung pada obyek yang dikenai, dan sama sekali tidak bergantung pada geometri permukaan. Metode ini dikenal sebagai ambient shading, karena seakan-akan permukaan diterangi oleh cahaya lingkungannya yang datang secara seragam dari mana-mana. Untuk memudahkan dalam menyetel parameter, ambient shading biasanya dinyatakan sebagai hasil kali dari warna permukaan dengan warna cahaya lingkungan, sehingga dapat disetel untuk permukaan individual atau untuk seluruh permukaan bersama-sama. Bersama dengan model Blinn-Phong, ambient shading melengkapi versi lengkap dari model shading:
dengan k
Vektor normal pada titik p diberikan oleh gradien n
= 2(p − c ). unit normalnya adalah (p − c)/R.
C. Shading
Setelah permukaan yang terlihat untuk suatu piksel diketahui, maka nilai piksel dihitung dengan mengevaluasi model shading. Model shading dirancang untuk menangkap refleksi cahaya, tempat permukaan yang diterangi oleh sumber cahaya dan memantulkan sebagian cahaya ke kamera. Variabel terpenting dalam refleksi cahaya adalah arah sinar l, yang berupa vektor satuan yang menunjuk ke sumber cahaya; arah pengamat v yaitu vektor satuan yang menunjuk ke mata atau kamera; permukaan normal n yaitu vektor satuan yang tegak lurus terhadap permukaan pada titik tempat terjadinya refleksi; dan karakteristik dari permukaan yaitu warna, kilap, atau sifat yang lain bergantung pada model.
I a
L = k a
8 J NTETI , Vol.2, No.3, Agustus 2013
2) Ambient Shading
adalah specular coefficient atau warna specular dari permukaan.
s
- k
, (3)
adalah koefisien permukaan lingkungan atau warna lingkungan, dan I
Banyak permukaan riel memperlihatkan beberapa variasi refleksi kilap, menghasilkan sorotan cahaya, atau refleksi specular yang muncul dan akan bergerak disekitar dengan berubahnya sudut-pandang. Model yang sangat sederhana dan digunakan secara luas untuk sorotan (highlight) specular adalah yang diusulkan oleh Phong tahun 1975 yang kemudian diperbaharui oleh Blinn tahun 1976. Idenya adalah menghasilkan refleksi sesuai dengan kecerahan saat v dan l diletakkan secara simetris melintasi permukaan normal, yaitu saat refleksi cermin akan muncul, refleksi akan menurun secara halus saat vektor menjauh dari konfigurasi cermin seperti yang diperlihatkan pada Gbr. 5.
Gbr. 7. Pengecekan interval awal mulai pada ɛ untuk menghindari perpotongan dengan permukaan [9].
Pada Gbr. 6 di atas, berkas p + tl tidak mengenai obyek sehingga tidak dalam bayangan. Titik q berada dalam bayangan karena berkas q + tl mengenai obyek. Vektor l dari kedua titik adalah sama karena sumber cahaya dianggap sangat jauh. Berkas yang menentukan bayangan keluar atau masuk disebut dengan berkas bayangan untuk membedakan dengan berkas terlihat.
Gbr. 6. Titik P tidak dalam bayangan sementara titip Q berada dalam bayangan [9].
Setelah menentukan dasar ray-tracing, maka bayangan dapat ditambahkan dengan mudah. Bayangkan titik p pada permukaan yang tertutupi, titik akan berada dalam bayangan jika pengamat melihat pada arah l dan melihat obyek. Jika obyek tidak terlihat, maka cahaya tidak diblok.
3) Bayangan
a adalah intensitas cahaya lingkungan.
a
I max(0, n · h ) p
, (4) Dengan k
I max(0, n · h ) n
d I max(0, n · l ) + k s
1) Blinn-Phong Shading
Gbr. 5. Geometri untuk Blinn-Phong sadhing [9].
Seberapa dekat dengan konfigurasi cermin dapat ditentukan dengan membandingkan vektor separo h (garis bagi sudut antara v dan l) ke permukaan normal. Jika vektor separo dekat dengan permukaan normal, maka komponen specular akan menjadi cerah, namun jika semakin jauh maka akan redup. Hasil ini dapat diperoleh dengan menghitung dot product antara h dan n, selanjutnya menggunakan hasilnya untuk pangkat p > 1. Pangkat atau eksponen Phong mengendalikan kejelasan kilap permukaan.
Blinn-Phong shading model didefinisikan sebagai berikut.
L = kd I max(0, n · l ) + k s
J NTETI , Vol. 2, No. 3, Agustus 2013
9
Dalam implementasinya berkas bayangan akan mencek kondisi t [ɛ, ∞ ), dengan ɛ adalah suatu konstanta positif
∈ kecil, seperti yang diperlihatkan pada Gbr. 7.
SI
D. POVRay
POVRay (The Persistence of Vision Ray-tracer) dikembangkan dari DKBTrace 2.12 (yang ditulis oleh David K. Buck dan Aaron A.Collins) oleh sekelompok orang yang membentuk suatu tim yang disebut POV_Team. Informasi tentang POV_Team dan segala sesuatu tentang aplikasi Gbr. 8 Proyeksi Perspektif . POVRay dapat dilihat di alamat http://www.povray.org [7]. PovRay adalah perangkat lunak untuk ray-tracing yang
Definisi kamera menggambarkan posisi, tipe proyeksi dan bersifat open source, untuk penggambaran grafika komputer sifat dari bagaimana kamera melihat adegan. Nilai default
3-D. Terdapat beberapa aplikasi serupa seperti Lightwave kamera: Modeler, Rhinoceros 3-D, dan Moray. PovRay tersedia untuk platform komputer PC, Macintosh dan Unix, dan saat ini DEFAULT CAMERA: merupakan salah satu perangkat lunak ray-tracing yang
camera { perspective
banyak digunakan karena relatif mudah digunakan, murah dan
location <0,0,0> mempunyai kualitas tinggi. direction <0,0,1>
POVRay menciptakan gambar foto-realistis 3-dimensi
right 1.33*x
dengan menggunakan teknik rendering yang disebut ray-
up y tracing . Suatu file teks yang berisi informasi yang sky <0,1,0> }
menggambarkan obyek dan pencahayaan dalam suatu adegan akan dibaca dan selanjutnya digunakan untuk membangkitkan CAMERA TYPE: perspective gambar adegan tersebut dari sudut pandang kamera. Ray-
angle : ~67.380 ( direction_length=0.5*
bukanlah algoritma yang dapat diproses dengan cepat,
tracing right_length/tan(angle/2) )
namun dapat menghasilkan citra kualitas tinggi yang realistis
confidence : 0.9 (90%) dengan efek refleksi, bayangan, perspektif dan efek yang lain. direction : <0,0,1> Ray-tracing dimulai dari kamera. Berkas (rays) akan focal_point: <0,0,0>
dilacak mundur dari kamera ke adegan. Definisi kamera
location : <0,0,0>
menggambarkan posisi, tipe proyeksi dan bagaimana kamera
look_at : z
melihat adegan. Kamera POVRay mempunyai sepuluh model
right : 1.33*x
berbeda, yang masing-masing menggunakan metode proyeksi
sky : <0,1,0>
berbeda untuk memproyeksikan adegan ke layar. Untuk
up : y
mulai menggunakan perangkat lunak ray-tracing maka
variance : 1/128
pengguna perlu menentukan posisi pengamat, selanjutnya menentukan dimana letak obyek dan sumber cahaya yang
F. Obyek pada POVRay
akan terlihat oleh kamera, dan juga menentukan sifat tekstur permukaan obyek, interiornya (jika obyek transparan) dan POVRay mendefinisikan hampir semua obyek secara media yang akan dilalui cahaya seperti kabut, embun atau api. matematis. Berikut ini akan dibahas beberapa obyek yang Seperti yang telah dijelaskan sebelumnya bahwa perangkat digunakan. lunak ray-tracing akan melakukan pelacakan terbalik, yaitu dimulai dari piksel yang akan muncul sebagai gambar akhir. 1) Bola (Sphere)
Sintaksis dari obyek bola adalah:
E. Proyeksi Perspektif
SPHERE: Proyeksi perspektif menentukan perspektif kamera yang
sphere { <Center>, Radius
mensimulasikan bagaimana cahaya yang dipantulkan obyek
[OBJECT_MODIFIERS...] }
sampai ke film atau sensor pencitraan pada kamera. Sudut pengamat (horisontal) akan ditentukan oleh rasio antara Dengan <Center> adalah vektor yang menentukan panjang dari vektor direction dan panjang vektor right. Sudut koordinat x,y,z dari pusat bola dan Radius berupa bilangan pengamat harus lebih besar dari 0 dan lebih kecil dari 180 , pecahan yang menentukan jari-jari, seperti yang diperlihatkan seperti yang diperlihatkan pada Gbr. 8. pada Gbr. 9. Bola dapat diskalakan secara tidak seragam untuk menghasilkan bentuk elipsoide.
10 J NTETI , Vol.2, No.3, Agustus 2013
4) Kerucut
Statemen cone akan menciptakan suatu kerucut dengan panjang tertentu, seperti yang diperlihatkan pada Gbr. 12. Sintaksnya adalah CONE:
cone { <Base_Point>, Base_Radius, <Cap_Point>, Cap_Radius [ open ] [OBJECT_MODIFIERS...] } Gbr. 9. Bola.
Struktur data bola adalah:
struct Sphere_Struct { OBJECT_FIELDS VECTOR Center; DBL Radius; } 2) Kotak (Box)
Suatu kotak sederhana dapat didefinisikan dengan daftar Gbr. 12. Kerucut (Cone). dua sudut kotak dengan menggunakan sintaks berikut. BOX: Struktur kerucut sama seperti yang digunakan pada tabung.
box { <Corner_1>, <Corner_2>
Kerucut ideal mempunyai struktur dengan nilai-nilai sebagai
[OBJECT_MODIFIERS...] } berikut.
Dengan <Corner_1> dan <Corner_2> adalah vektor yang
Base (0,0,0)
mendefinisikan koordinat x, y, z dari titik sudut kotak yang
Apex (0,0,1)
berlawanan (corner 1 dan corner 2), seperti yang
Apex_radius = 1
diperlihatkan pada Gbr. 10. Sedangkan struktur kotak adalah
Base_radius = 0 sebagai berikut. Dist = 0 struct Box_Struct
Kerucut yang didefinisikan dalam POV-Ray mempunyai
{ OBJECT_FIELDS
VECTOR bounds[2]; } dua nilai jari-jari yang berbeda.
5) Bidang (Plane)
Bidang primitif merupakan cara sederhana untuk mendefinisikan permukaan rata yang tidak terbatas. Bidang adalah obyek padat dengan ukuran tak terbatas, yang membagi ruang-POV menjadi dua bagian, di dalam dan di luar bidang. Spesifikasi bidang adalah sebagai berikut.
PLANE: plane{ <Normal>, Distance Gbr. 10. Kotak .
[OBJECT_MODIFIERS...] } 3)Tabung (cylinder)
Vektor <normal> mendefinisikan normal permukaan dari Statemen cylinder akan menciptakan suatu tabung dengan bidang. Normal permukaan adalah suatu vektor yang panjang tertentu dengan kedua tutup paralel seperti yang menunjuk ke atas dari permukaan dengan sudut 90 , seperti diperlihatkan pada Gbr. 11. Sintaks untuk tabung adalah yang diperlihatkan pada Gbr. 12.
CYLINDER: Cylinder { <Base_Point>, <Cap_Point>, Radius [ open ][OBJECT_MODIFIERS...] } Gbr. 12. Bidang (Plane) Gbr. 11. Tabung.
Struktur ideal suatu tabung adalah Struktur bidang adalah sebagai berikut.
Base(0,0,0) Plane Structure Apex(0,0,1) struct Plane_Struct
Apex_radius=base_radius=1 { OBJECT_FIELDS VECTOR Normal_Vector; Dist=0 DBL Distance; }; J NTETI , Vol. 2, No. 3, Agustus 2013
11
G. Implementasi kerucut terpotong dengan tekstur marbel. Sintaksisnya adalah sebagai berikut.
Pada penelitian ini akan dibuat suatu citra grafis 3-D yang #declare daun_meja_bulat = menggambarkan suatu ruang yang di dalamnya terdapat meja
cylinder { <0, 0, 0>, <0, .15, 0>, 5
bulat dari kaca dengan kaki meja dari batu marbel putih. Di
texture {T_Glass1 scale 3 } } // tekstur
atas meja terdapat cangkir berisi coklat. Di depan meja ada
kaca
kursi bulat, dan di sebelahnya terdapat hiasan bola yang menyerupai lampu berdiri. Pada dinding belakang terdapat Untuk kaki meja terdiri dari gabungan dua buah gambar foto yang diberi pigura kayu. kerucut terpotong. Hampir semua adegan gambar pada dasarnya terdiri dari sumber cahaya, kamera atau mata pengamat, dan obyek. #declare kaki_meja =
union
Seperti yang telah dibahas sebelumnya ray-tracer seperti
{ cone { <0, 1, 0>, 1.7, <0, 4, 0>, 1 // Kaki meja atas
POV-Ray bekerja dengan mengirim “berkas cahaya” dari
texture { marble_putih scale 3} }
kamera dan mengikuti berkas cahaya tersebut melalui refleksi, refraksi, dan absorbsi sampai berkas tersebut mencapai cone { <0, 1, 0>, 1.7, <0, 0, 0>, 4 // Kaki meja
bawah sumber cahaya atau hilang dalam bayangan. texture {marble_putih scale 3} } } 1) Kamera
Langkah pertama adalah menentukan lokasi mata pengamat yang dalam hal ini diwakili oleh kamera. Informasi yang diperlukan oleh kamera adalah posisi kamera terhadap obyek dan posisi titik yang akan dilihat kamera.
camera { location <-17, 9, -16> look_at <0, 0, 0> }
Instruksi di atas dapat diartikan bahwa kamera berada posisi 17 satuan ke kiri, 9 satuan ke atas dan 16 satuan ke depan. Kamera menghadap ke depan pada pusat sumbu.
2) Sumber cahaya
Sumber cahaya memerlukan informasi tentang lokasi dan warna, yang dalam hal ini dipilih warna putih. Pada penelitian ini menggunakan dua sumber cahaya dengan posisi yang Gbr. 13. Susunan obyek primitif yang membentuk meja. berbeda.
5) Perancangan Kursi // Posisi Sumber Cahaya
Terdiri dari gabungan tiga obyek primitif, yaitu dua obyek
light_source { <-7,9,-9> // sumber cahaya 1
kerucut terpotong dan satu obyek tabung, seperti yang
color rgb <1,1,1> } // warna cahaya putih diperlihatkan pada Gbr. 14. light_source { <19,19,-10> // sumber cahaya 2 color rgb <1,1,1> } // warna cahaya putih
Sumber cahaya pertama berada pada posisi koordinat (- 7,9,-9) dan sumber cahaya kedua pada koordinat (19,19, -10).
3) Perancangan Obyek Hal yang paling esensial selanjutnya adalah merancang
obyek dalam gambar. Terdapat 5 obyek dalam gambar yang terdiri dari Meja kaca bulat, kursi bundar, hiasan bola dengan penyangga, foto dengan pigura yang menempel di dinding, dan cangkir berisi coklat. Selain itu terdapat dua dinding, yaitu dinding belakang dan dinding samping serta lantai.
4) Perancangan Meja Gbr. 14. Susunan obyek untuk membentuk kursi.
Obyek meja terdiri dari gabungan dua bagian obyek, yaitu daun meja yang berbentuk bulat dan kaki meja bulat seperti Kaki kursi terdiri dari gabungan dua buah kerucut yang diperlihatkan pada Gbr. 13. Daun meja dibuat dari obyek saling berlawanan dengan tekstur marbel putih. Sedangkan tabung dengan ketebalan 0,15 dan jari-jari 5 dengan tekstur untuk dudukan kursi dari obyek tabung dengan tekstur kaca. Sedangkan kaki meja disusun dari dua buah objek White_Wood.
12 J NTETI , Vol.2, No.3, Agustus 2013
Gbr. 16. Susunan obyek pembentuk foto dan pigura .
Setelah bagian demi bagian obyek gambar telah tersusun, selanjutnya digabungkan sehingga membentuk sebuah gambar utuh seperti diperlihatkan pada Gbr. 18. Proses penggabungan dilakukan dengan menggunakan koding yang relatif sederhana dan singkat.
9) Hasil Gabungan Obyek Gambar
Pegangan cangkir disusun dari obyek donat dan dua obyek tabung. Dan untuk isi minuman coklat disusun dari obyek tabung dengan ukuran lebih kecil dari badan cangkir.
Untuk merancang cangkir yang berisi coklat diperlukan 9 obyek primitif, seperti yang diperlihatkan pada Gbr. 17. Badan cangkir dibentuk dari selisih dua buah tabung dengan ukuran berbeda. Untuk bibir dan alas cangkir disusun masing- masing dari satu dan dua obyek donat (torus).
8) Perancangan Cangkir
Untuk gambar foto dilakukan dengan cara menjadikan foto sebagai image-map yang selanjutnya dijadikan sebagai struktur pigmen obyek. Dalam hal ini format foto yang digunakan adalah format GIF.
#declare pigura= difference { box { <0, 0, 0>, <10, 10, 0.7> } // 10x10x1 Kotak Luar box { <0.4, 0.4, -1>, <9.6, 9.6, 2> } // Kotak Dalam texture { kayu } }
Kode programnya adalah sebagai berikut.
Terdiri dari gabungan tiga obyek primitif, yaitu dua kotak untuk membentuk bingkai pigura dan kotak untuk tempat foto, seperti yang diperlihatkan pada Gbr. 16. Untuk membentuk bingkai pigura dilakukan dengan mencari selisih antara dua kotak yang mempunyai ukuran berbeda. Kotak luar berukuran 10 x 10 dengan tebal 0.7 akan dikurangi dengan kotak dalam yang berukuran 9,2 x 9,2 dengan ketebalan 3. Agar hasilnya berupa bingkai sempurna, maka ukuran kotak dalam (pengurang) harus lebih tebal.
#declare kursi_bulat= merge { cone { <0, 0, 0>, 2, <0, 3, 0>, 1 // Kaki kursi texture {marble_putih // bawah scale 3 } } cone { <0, 3, 0>, 1, <0, 5, 0>, 2 // Kaki kursi texture {marble_putih // atas scale 3 } } Cylinder { <0,5,0>, <0,5.5, 0>, 2 //Dudukan texture { White_Wood scale 3 } } }
7) Perancangan Foto dengan Pigura
6) Perancangan Hiasan Bola
cone { <0, 1, 0>, 0.5, <0, 0, 0>, 3.5 texture {Gold_Metal }} Gbr. 15. Susunan Obyek untuk membentuk hiasan lampu bola.
Terakhir untuk alasnya dibuat dari kerucut dengan jari-jari atas sama dengan jari-jari tiang lampu dan jari-jari bawah 3,5.
cylinder { <0,1,0>, <0,17,0>, 0.5 texture {Gold_Metal } }
Sedang untuk tiang lampu dibuat dari tabung dengan jari-jari 0,5 dan panjang 16. Teksturnya dibuat sama yaitu Gold_metal.
cone { <0, 17, 0>, 0.5, <0, 19, 0>, 2.5 texture {Gold_Metal } }
Untuk penyangga lampu dibuat dari obyek kerucut dengan jari-jari atas 2,5 dan jari-jari bawah sesuai dengan tiang penyangga yaitu 0,25. Tekstur menggunakan model Gold_Metal.
#declare bola_kaca = // Obyek lampu bentuk Bola Sphere { <0,0,0>, 3 texture { marble_putih } }
Terdiri dari gabungan empat obyek primitif, berurutan dari atas ke bawah yaitu bola, kerucut, tabung dan kerucut seperti yang diperlihatkan pada Gbr. 15. Bola dibuat dari obyek Sphere dengan radius 3. J NTETI , Vol. 2, No. 3, Agustus 2013
13 ESIMPULAN
III. K Kesimpulan Dari hasil perancangan dan implementasi obyek dengan menggunakan POV-Ray, dapat ditarik suatu kesimpulan:
1. Algoritma ray-tracing untuk menghitung dan membentuk pola pantulan, bayangan, maupun refraksi dapat diimplementasikan dengan baik.
2. Obyek dengan berbagai bentuk maupun ukuran dapat dengan mudah disusun dengan menggunakan instruksi yang disediakan oleh POV-Ray.
3. Tekstur dan sifat pigmen dari masing-masing permukaan obyek terhadap sumber cahaya dapat diimplementasikan
Gbr. 17. Susunan obyek untuk membentuk cangkir.
dengan baik oleh POV-Ray, sehingga gambar terlihat lebih realistis. Obyek hasil rendering dengan POV-Ray terlihat cukup realistis. Tekstur permukaan obyek yang dibuat sesuai dengan sifat obyek aslinya serta bayangan yang terjadi karena adanya
EFERENSI
R dua sumber cahaya dapat diimplementasikan dengan baik. [1]
D. P. Cleveland, "A 3-Dimensional Geometric Modeler Using
Gambar bayangan, pantulan, maupun refraksi cahaya dari dua
OpenGL ," Department of Computer Science and Engineering
sumber cahaya yang berseberangan mengenai obyek maupun Auburn University, Alabama, 1996. latar belakang hasil penerapan algoritma ray-tracing dapat
D. Shklyar. [Online]. Available:
[2] diimplementasikan dengan baik oleh POV-Ray.
http://www.cgsociety.org/index.php/cgsfeatures/cgsfeaturespecial/3d _rendering_history_pt.2_-_to_photorealism_and_beyond. [Accessed
30 May 2012 ].
[3] M. K. Johnson, K. Dale, S. Avidan, H. Pfister, W. T. Freeman and W.
Matusik, "CG2Real: Improving the realism of Computer Generated Images using a Large Collection of Photograps ," IEEE Transactions on Visualization and Computer Graphics, vol. 17, no. 9, September 2011.
[4] R. Olsson and Y. Xu, "An Interactive Ray-tracing based simulation
environment for generating integral imaging video sequences ," Three-Dimensional TV, Video and Display, vol. IV, 2005.
A. Ben, Artzi, R. Ramamoorthi and M. Agrawala, "Efficient complex
[5] shadows from environments maps ," ACM SIGGRAPH, vol. 4, 2004.
TusharUdeshi and C. D. Hansen, "Towards Interactive Photorealistic
[6]
Rendering of Indoor Scenes: A Hybrid Approach ," in 10th Eurographics Workshop on Rendering, 1999.
POV-Team, "“POV-Ray ™ Version 3.1, User's Documentation,"
[7] 1999. [Online]. Available: http://POV.org.
B. Feriel, S. Simon and W. Dongming, "Ray Tracing," in ING4 SI
[8] International, 2011/2012., 2012.
S. Peter and S. Marschner, “Fundamentals of Computer Graphics”,
[9]
Third Edition, Massachusetts: A K Peters, Natick, Massachusetts, Gbr. 18. Hasil penggabungan obyek membentuk gambar utuh hasil rendering 2009. dengan POV-Ray