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