Minggu, 27 Juni 2010

MAKALAH GRAFIKA KOMPUTER

KATA PENGANTAR

Pertama-tama kami mengucapkan syukur kepada Tuhan Yang Maha Esa, karena berkatNya lah akhirnya kami satu tim dapat menyelesaikan makalah mengenai pengenalan open GL dan penggambaran obyek dengan open GL ini.

Adapun pembuatan makalah ini ditujukan untuk penyelesaian tugas untuk mata kuliah Grafika Kmputer Program studi Teknik Perangkat Lunak FTEKNIK UNHALU, lain juga sebagai pengantar kepada kita untuk lebih mengerti tentang OpenGL dan Penggambaran Obyek dengan OpenGL selain itu untuk menambah khasanah keilmuan tentang bahasa pemrograman yang lebih berminat pada bidang pemrograman.

Bahasa pemrograman merupakan implementasi dari algoritma yang dibuat oleh pemrogram dalam memberikan perintah kepada komputer untuk menyelesaikan masalah tertentu. Sampai saat ini banyak bahasa program yang dikembangkan seiring dengan kebutuhan akan kemudahan dalam pemrograman. Bahasa pemrograman dikategorikan dalam beberapa kategori berdasarkan kedekatannya dengan bahasa manusia, yaitu bahasa tingkat tinggi (high level language), bahasa tingkat menengah (middle level language), dan bahasa tingkat rendah (low level language). Semakin tinggi tingkatan sebuah bahasa, semakin dekat dengan basaha manusia (dalam hal ini bahasa Inggris). Dari sudut pandang yang berbeda, bahasa pemrograman dikategorikan menjadi bahasa deklaratif, bahasa imperatif, dan bahasa fungsional. Bahasa prosedural dan object-oriented termasuk bahasa imperatif.

OpenGL adalah interface perangkat lunak untuk perangkat keras grafis. This interface consists of about 150 distinct commands that you use to specify the objects and operations needed to produce interactive three-dimensional applications. Interface ini terdiri dari sekitar 250 berbeda perintah yang Anda gunakan untuk menentukan objek dan operasi interaktif yang diperlukan untuk menghasilkan aplikasi tiga dimensi. Mungkin, OpenGL kurang begitu familiar di kalangan mahasiswa, maka dari itu dalam makalah ini kami akan menjabarkan bahasa pemograman khususnya Delphi secara umum bersama contoh-contoh sintaksnya dengan harapan dapat mengenalkan bahasa pemrograman ini.

Akhirnya tak ada gading yang tak retak, makalah ini masih penuh kekurangan dan kesalahan maka kami berharap para pembaca dapan memberikan saran dan petunjuk agar makalah ini menjadi lebih berisi, semoga makalah ini dapat bermanfaat dan berkenan di hati para pembaca.

Kendari , Desember 2009

Penyusun

DAFTAR ISI

Kata Pengantar ………………………………………………………………… 1

Daftar Isi …………………………………………………………..................... 2

Daftar Gambar …………………………………………………….....................3

Bab I Pendahuluan ……………………………………………...........................4

1.1 Latar Belakang …………………………………………………….. 4

1.2 Maksud dan Tujuan …………………………………………………4

1.3 Manfaat ……………………………………………….................... .4

Bab II Pembahasan ...…………………………………………………………...5

Studi kasus ……………………………………………………………...9

Bab III Penutup ………………………………………………………………..16

kesimpulan dan saran …………………………………….....................16

Daftar pustaka …………………………………………………….....................17

Lampiran ………………………………………………………….....................18

DAFTAR GAMBAR

Gambar 1. Proses Dalam Grafik Pipa………………………………………………….6

Gambar 2. Kurva Bezier............................................................................................. ...8

Gambar 3. Kurva Sinus..................................................................................................8

Gambar 4. Kurva cosinus...............................................................................................9

Gambar 5. Kurva Parabola............................................................................................9

Studi kasus

Gambar 1. Kurva Bezier…………………………………………………………………...….10

Gambar 2. Kurva B-Splines dengan derajat (p) yang berbeda-beda.............................11

Gambar 3. Ruled Surface Silinder.................................................................................12

Gambar 4. Ruled Surface Kerucut.................................................................................12

Gambar 5. Ruled Surface Bilinear Patch.......................................................................12

Gambar 6. Kurva B-Splines dengan titik kontrol awal dan

akhir yang berhimpit....................................................................................12

Gambar 7. Kurva B-Splines dengan derajat yang berbeda dan titik kontrol

awal dan akhir yang berhimpit.....................................................................13

Gambar 8. Sumbu Putar X……………………………………………………………..13

Gambar 9. Sumbu Putar Y ………………………………………………………….…13

Gambar 10. Sumbu Putar Z……………………………………… ……………….....13

Gambar 11. Kurva Bezier ……………………………………………………...….…..14

Gambar 12. Rotational Object Dari Kurva Bezier pada gambar 11...............................15

Gambar 13. Perbandingan Ruled Surface Silinder……………………………… .......15

BAB I

PENDAHULUAN

1.1 Latar Belakang

Dengan adanya kemajuan teknologi, terutama teknologi komputer maka banyak bidang yang memanfaatkannya. Salah satunya adalah bidang entertainmen yang meliputi film, iklan, animasi maupun game. Kesemuanya itu membutuhkan adanya obyek yang dimanipulasi. Sebelum komputer grafik berkembang maka obyek yang digunakan adalah obyek yang sesungguhnya sehingga sering terjadi kesulitan mencari obyek yang sesuai dengan keinginan. Setelah komputer grafik berkembang dan semakin maju maka obyek yang digunakan dibentuk dengan menggunakan rekayasa komputer. Kelebihan obyek yang direkayasa dengan menggunakan komputer adalah bentuk yang bisa disesuaikan dengan kebutuhan dan biaya pengadaan obyek yang relatif lebih murah.

Dalam pemanfaatan komputer grafik untuk manipulasi obyek, ada dua jenis obyek yang bisa dimodelkan, yaitu obyek sederhana dan obyek kompleks. Obyek sederhana dimodelkan dengan menggunakan persamaan geometri, sedangkan obyek kompleks dimodelkan dengan merangkai banyak segitiga menjadi satu kesatuan obyek. Obyek sederhana mudah dimodelkan tetapi bentuk yang dihasilkan kurang bervariasi. Sedangkan obyek kompleks lebih sulit dimodelkan tetapi bentuknya sangat bervariasi. Untuk memodelkan obyek dengan cukup mudah dan bentuk bisa bervariasi, biasanya digunakan gabungan dari obyek sederhana dan obyek kompleks. Untuk menghasilkan bentuk permukaan yang lebih bervariasi, dapat digunakan kurva bezier. Bahasa pemograman Delphipun juga dapat digunakan.

1.2 Maksud dan Tujuan

Adapun maksud dan tujuan dari makalah ini yuitu agar kita dapat lebih memahami defenisi dari Open GL dan Penggambaran obyek dengan OpenGL, khususnya penggambaran kurva Bezier pada bahasa pemrograman Borland Delphi.

1.3 Manfaat

Manfaatnya yaitu agar dapat digunakan sebagai bahan pengetahuan tentang OpenGL dan penggambaran obyek OpenGL dengan menggunakan bahasa pemrograman Borland Delphi.

BAB II

PEMBAHASAN

A. Pengenalan OpenGL

OpenGL merupakan spesifikasi standar yang mendefinisikan sebuah cross-bahasa, lintas-platform API untuk menulis aplikasi yang menghasilkan 2D dan 3D computer graphics. interfacenya terdiri dari lebih dari 250 fungsi panggilan yang berbeda dapat digunakan untuk menarik kompleks tiga dimensi dari adegan sederhana primitives. openGL dikembangkan oleh silicon graphics inc (sgi) pada tahun 1992 dan banyak digunakan dalam cad, virtual reality, visualisasi ilmiah, visualisasi informasi, dan simulasi penerbangan. openGL juga digunakan dalam permainan video, dimana ia bersaing dengan direct3d on microsoft windows platform. openGL pada awalnya didesain untuk digunakan pada bahasa pemrograman C/C++, namun dalam perkembangannya openGL dapat juga digunakan dalam bahasa pemrograman yang lain seperti java, tcl, ada, visual basic, delphi, maupun fortran. namun openGL di-package secara berbeda-beda sesuai dengan bahasa pemrograman yang digunakan.

Openg GL melayani dua tujuan:

v Untuk menyembunyikan kompleksitas dari interfacing dengan berbagai 3D accelerators, memamerkan oleh programmer dengan satu, seragam API.

v Untuk menyembunyikan kemampuan yang berbeda dari hardware platform, oleh semua yang memerlukan mendukung implementasi penuh fitur openGL set (menggunakan software emulation jika diperlukan).

OpenGL dasar operasi adalah menerima primitif seperti titik, garis dan poligon, dan mengkonversikannya ke dalam piksel. Hal ini dilakukan oleh sebuah pipa grafis dikenal sebagai negara openGL mesin. OpenGL paling baik mengeluarkan perintah primitives ke pipa grafis, atau mengkonfigurasi bagaimana pipa proses ini primitives. Setiap tahap yang dilakukan pipa tetap berfungsi dan telah dikonfigurasi hanya dalam batasan ketat. OpenGL 2,0 menawarkan beberapa tahapan yang sepenuhnya menggunakan Programmable GLSL.

OpenGL adalah tingkat rendah, API prosedural, yang memerlukan programmer untuk mendikte langkah-langkah yang tepat. Ini kontras dengan deskriptif (alias pemandangan grafik atau tetap mode) API, dimana programmer hanya perlu menjelaskan dan dapat membiarkan librari mengatur rincian rendering itu. OpenGL rendah dari tingkat-desain memerlukan pemrogram untuk memiliki pengetahuan baik dari pipa grafis, tapi juga memberikan sejumlah kebebasan untuk melaksanakan novel rendering algorithms.

OpenGL memiliki sejarah yang berpengaruh pada pengembangan 3D accelerators, mempromosikan dasar tingkat fungsionalitas yang sekarang umum di tingkat konsumen hardware:

· Rasterised poin, garis dan poligon sebagai dasar primitif

· A transform and lighting pipeline Sebuah mentransformasi dan pencahayaan pipa

· Z-buffering Z-buffering

· Texture mapping Texture mapping (Pemetaan Textur)

· Alpha blending Alpha blending

Gambar 1. proses dalam grafik pipa

Versi sederhana dari pipa Graphics Proses; tidak termasuk sejumlah fitur seperti campuran, dan logika VBOs ops.

Sebuah deskripsi singkat dari proses dalam pipa grafis dapat berupa:

1. Evaluasi, jika perlu, dari fungsi polinom yang menentukan masukan tertentu,

seperti NURBS permukaan, kurva mendekati permukaan dan geometri.

2. Vertex operasi, mengubah dan pencahayaan mereka tergantung pada materi

mereka. Also clipping non visible parts of the scene in order to produce the viewing volume.Kliping juga tidak terlihat bagian-bagian dari adegan dalam rangka untuk

menghasilkan volume melihat. Per-fragmen operasi, seperti memperbarui nilai

tergantung masuk dan disimpan

3. Rasterisation atau konversi informasi sebelumnya ke dalam piksel. The polygons are represented by the appropriate colour by means of interpolation algorithms.Yang poligon

yang diwakili oleh warna yang sesuai dengan menggunakan algoritma interpolasi.

4. Per-fragmen operasi, seperti nilai-nilai memperbarui masuk dan tergantung pada

kedalaman tersimpan sebelumnya nilai-nilai, atau kombinasi warna, antara lain.

5. Terakhir, fragmen dimasukkan ke dalam Frame buffer.

Banyak modern 3D accelerators menyediakan fungsionalitas jauh di atas dasar ini, tetapi fitur baru ini umumnya perangkat tambahan ini dasar pipa daripada radikal revisi itu.

B. Penggambaran Obyek dengan OpenGL

Saat ini telah banyak perangkat lunak yang digunakan untuk membantu pembuatan objek openGL. Akan tetapi sebagian besar perangkat lunak hanya memiliki kemampuan untuk menciptakan objek-objek sederhana yang kemudian digabung-gabungkan atau diolah lebih lanjut. Karena itu dibutuhkan perangkat lunak yang dapat membuat objek yang kompleks namun fleksibel dalam pembuatannya, sehingga perangkat lunak tersebut dapat menjadi software pendukung untuk software pengolahan objek yang lebih besar.

Kurva banyak diperlukan dalam bidang analisis data seperti statistik. Oleh karena itu penggambaran tentang kurva ini sangat penting, khususnya dalam menampilkan deretan data menjadi sebuah kurva. Untuk itu Delphi menyediakan fungsu khusus untuk membuat kurva seperti kurva bezier.Kurva lain yang sangat berguna dan yang dapat di pelajari yaitu kurva kurva yang dibentuk dari fungsi-fungsi trigonometri seperti kurva sinus, parabola dan lain sebagainya.

A. Kurva Bezier

Kurva bezier adalah kurva yang dibentuk dari empat titik. Kurva di bentuk dari titik pertama ke titik ke empat menggunakan titik kedua dan titik ketiga sebagai titik kontrol. Kemudian dilakukan interpolasi terhadap keempat titiknya sehingga kurva yang dihasilkan akan tampak halus (smooth). Kurva benzier ini dapat di buat dengan memanfaatkan metoda PolyBezier(), yaitu fungsi untuk membuat sederetan kurva Bezier. Kurva pertama dibuat berdasarkan empat titik pertama. Setiap kurva berikutnya memerlukan tiga titik lagi. Titik akhir sebelumnya menjadi titik pertam kurva selanjutnya. Berikut contoh gambar kurva bezier yang terdiri dari 7 titik dan hasinya dapat dilihat pada gambar 2. kurva tidak pernah menyentuh posisi titik-titik kontrolnya.

Gambar 2. Kurva Bezier

B. Kurva Sinus

Walaupun Delphi menyediakan fungsi-fungsi trigonomerti seperti sin(), Cos(), dan lain-lain tetapi tidak menyediakan fungsi khusus untuk menggambar kurvanya. Fungsi dasar kurva sinus adalah Y = sin(±) dengan sudut antara 0 sampai dengan 360. fungsi ini akan menggambarkan kurva sinus (gelombang) satu siklus. Agar grafiknya terlihat jelas, pada persamaan dasar tersebut ditambahkan konstanta-konstanta untuk mengatur posisinya pada kavas yang ada. Berikut gambar kurva sinus yang di bentuk dengan fungsi penggambaran garis lurus LineTo dari titik awal ke titik-titik berikutnya yang di dapat dari persamaan sinus tersebut.

Gambar 3. Kurva Sinus

C. kurva cosinus

Dengan menggeserkan sudutnya sebesar 90 akan di peroleh kurva cosinus. Kurva cosinus di dapat dengan rumus y = cos(±). Pada sudut 0 kurva akan berada ada puncaknya. Berikut ini contoh gambar kurva cosinus.

Gambar 4. Kurva cosinus

D. kurva Parabola

Kurva parabola di dapat dari persamaan dasar Y= X­­² dengan Y untuk nilai pada sumbu mendatar. Dengan perkalilan nilai tersebut, nilai Y akan bertambah dengan cepat sehingga sehingga kurvas akan keluar kanvas. Oleh karena itu pada penggambaran parabola ini perlu dilakukan penskalaan pada nilai Y dengan menambahkan Faktor pembagi (penskala) agar sesuai dengan kanvasnya. Berikut ini gambar parabola pada kanvas dengan penyesuaian posisi kurvanya. Misalnya saja faktor pembaginya 150.

Gambar 5. Kurva Parabola

( Untuk Listing Program dapat Dilihat pada Lampiran )

Studi Kasus

Membuat perangkat lunak agar user dapat membuat kurva Bezier dan B-Splines, kemudian kurva tersebut diolah lebih lanjut sehingga menghasilkan ruled surface maupun rotational object. Pembuatan objek kurva dilakukan dengan menginputkan titik kontrol dari kurva. Kurva yang terbentuk dapat digunakan untuk menciptakan ruled surface serta rotational object. Objek yang dihasilkan tersebut dapat disimpan dalam format file obj yang selanjutnya dapat digunakan oleh aplikasi pengolahan objek 3D lainnya. Pembuatan perangkat lunak ini menggunakan bahasa pemrograman Borland Delphi 7 dengan library OpenGL.

­Kurva Bezier

Kurva Bezier dibentuk oleh 4 buah titik 1 titik berfungsi sebagai titik awal (x0,y0), 1 sebagai titik akhir (x3,y3). dan 2 titik yang lain, yaitu (x1,y1) dan (x2,y2) berfungsi sebagai titik control. Kurva Bezier pada dua dimensi terbentuk dari dua persamaan yang menentukan titik-titik pada kurva tersebut, berdasarkan nilai inputan t yang nilainya kontinu antara 0 sampai dengan 1. Persamaan kesatu menghasilkan nilai x dan persamaan lainnya menghasilkan nilai y. Dengan meningkatnya nilai dari t yang disubstitusikan kedalam persamaan, dihasilkan titik-titik hasil x(t),y(t) yang bergerak dari titik awal sampai titik akhir kurva (Gambar 6).

Gambar 1. Kurva Bezier

Kurva B-Splines (Bourke, Paul, 1996)

Cara lain untuk membuat kurva ialah dengan menggunakan metode kurva B-Splines yang merupakan perkembangan dari kurva Bezier. Pada kurva B-Splines titik kontrol, tidak terbatas hanya 4 buah melainkan banyak titik kontrol. Kurva B-Splines juga lebih fleksibel, karena perubahan yang dilakukan pada titik kontrol tertentu hanya akan mempengaruhi bentuk kurva pada segmen didekat titik kontrol tersebut. Hal ini dikarenakan segmen kurva pada B-Splines hanya dipengaruhi oleh beberapa titik kontrol yang ada di dekatnya.

Bila terdapat n buah titik kontrol, maka Ct dapat dihasilkan melalui fungsi yang kontinu C(t), seperti pada persamaan 3 :

dimana:

Pi = Titik control ke i

p = derajat, biasanya bernilai 3 atau 4

N = blending function atau basis.

Beberapa elemen penting pada pembentukan kurva B-Splines adalah :

· Derajat (p) - mengatur seberapa dekat kurva tersebut melewati titik kontrol dari

kurva B-Splines. Semakin kecil derajat dari kurva B-Splines tersebut, maka semakin

dekat pula kurva tersebut akan melewati titik-titik kontrol pembentuknya, dan

sebaliknya apabila derajat kurva tersebut semakin besar, maka jarak titik kontrol kurva dengan kurva akan semakin jauh.

· Blending function atau basis function (N) – merupakan fungsi yang menentukan seberapa besar lengkungan dari kurva B-Splines, yang dipengaruhi oleh besarnya derajat, knot vektor dan t.

Gambar 2 adalah beberapa contoh kurva B-Splines yang memiliki 4 buah titik kontrol, dengan derajat p = 1, 2 dan 3. p = 1 hanyalah berupa garis lurus, dengan meningkatnya derajat, maka bentuk kurva akan menjadi semakin halus.

Gambar 2. Kurva B-Splines dengan derajat (p) yang berbeda-beda

Garis putus-putus pada gambar 2 menunjukan garis poligon yang terbentuk dari 4 titik kontrol kurva yang ada, sedangkan garis lurus adalah kurva B-Splines. Dapat dilihat bahwa kurva B-Splines yang terbentuk berada pada convex hull dari titik kontrol. Pada gambar berikut ini, sebelah kiri menunjukkan kurva B-Splines yang memiliki titik kontrol awal dan akhir yang sama, yaitu pada pojok kiri bawah. Kurva B-Splines pada sebelah kanan memiliki titik kontrol awal dan akhir yang sama tetapi pada bagian tengah bawah.

Rules Surface dan Rotational Object

Ruled surface adalah obyek 3D yang berupa suatu permukaan. Sebuah permukaan disebut ruled jika setiap titik pembentuknya dilalui setidaknya satu garis yang terletak pada permukaan tersebut. Ruled surface mempunyai bentuk parametrik. Ruled surface terdiri dari garis – garis lurus yang menghubungkan setiap pasang titik yang berkoresponden dari kedua kurva yang sudah diinputkan. Secara garis besar, ruled surface dibagi menjadi tiga kelompok, seperti disebutkan dalam [1], yaitu:

a. Silinder.

Gambar 3. Ruled Surface Silinder

b. Kerucut

Gambar 4. Ruled Surface Kerucut

c. Bilinear patch

Gambar 5. Ruled Surface Bilinear Patch

Ruled surface yang dibentuk dengan menggunakan kurva yang teratur bisa juga dihasilkan dengan Rotational Object. Rotational Object adalah sebuah kurva yang rotasi terhadap salah satu sumbu koordinat sehingga menghasilkan sebuah obyek yang simetri terhadap sumbu tersebut. Untuk melakukan rotasi pada sumbu x, matrik dapat dilihat pada persamaan 8, rotasi pada sumbu y dapat dilihat pada persamaan 9 dan rotasi sumbu z dapat dilihat pada persamaan 10. Arah putaran terhadap sumbu x dapat dilihat pada gambar 8, terhadap sumbu y dapat dilihat pada gambar 9 dan terhadap sumbu z dapat dilihat pada gambar 10.

Gambar 6. Kurva B-Splines dengan titik kontrol awal dan akhir yang berhimpit.

Sama seperti Gambar 3. sebelah kanan, Gambar 4 menunjukkan beberapa contoh kurva B-Splines dengan derajat yang berbeda-beda dan titik kontrol awal dan akhir yang berhimpit dan berada di bagian tengah bawah.

Gambar 7. Kurva B-Splines dengan derajat yang berbeda dan titik kontrol awal dan akhir yang berhimpit.

Gambar 8. Sumbu Putar X

(8)


Gambar 10. Sumbu Putar Z


Melalui matrik-matrik tersebut diatas, objek-objek dalam ruang 3

Pengujian, dilakukan uji coba dalam menggambar sebuah kurva Bezier yang terlihat pada gambar 11, dimana titik-titik yang terlihat adalah ke-4 titik kontrol pembentuk kurva Bezier tersebut.Detail objek-objek yang terdapat pada gambar 11 adalah sebagai berikut :

1. Kurva Bezier

Titik Kontrol 1 = -1 1 1

Titik Kontrol 2 = - 0.5 0 0

Titik Kontrol 3 = 0.5 1 0

Titik Kontrol 4 = 1 0 0

Gambar 11. Kurva Bezier

Gambar 12 menunjukkan hasil pembentukan rotational object yang terjadi apabila dilakukan perputaran terhadap kurva bezier yang terbentuk seperti pada gambar 11. Gambar 12a bentuk rotational object dengan sumbu x sebagai sumbu putar. Gambar 12b bentuk rotational object dengan sumbu y sebagai sumbu putar. Gambar 12c bentuk rotational object dengan sumbu z sebagai sumbu putar. Gambar 12d bentuk rotational object dengan garis y=1 sebagai sumbu putar. Detail setiap rotational object pada gambar 12 adalah :

- Angle From = 0

- Angle To = 360

- Increment Angle = 5

- Sumbu Putar = a) Sumbu x b) Sumbu y c) Sumbu z d) y = 1

- Warna = clWhite

- Skeleton = true

- Visible = true

Dalam pengujian Ruled Surface silinder dibutuhkan dua buah kurva yang akan menjadi komponen pembentuk Ruled Surface silinder. Pada gambar 13 terlihat penggambaran Ruled Surface silinder, dimana kurva pertama ialah kurva Bezier dan kurva kedua adalah kurva B-Splines. Gambar 13a adalah penggambaran Ruled Surface silinder pada saat variabel skeleton bernilai false dan gambar 13b adalah penggambaran Ruled Surface silinder pada saat variabel skeleton bernilai true. Objek-objek yang tergambar pada gambar 13 adalah sebagai berikut :


1. Kurva Bezier

Titik Kontrol 1 = -1 1,8 -0,5

Titik Kontrol 2 = -0.5 1,3 -1

Titik Kontrol 3 = 0.5 0,2 0

Titik Kontrol 4 = 1 1 0

2 Kurva B-Splines

Derajat = 3

Titik Kontrol 1 = -1 1 1

Titik Kontrol 2 = -0.5 0 0

Titik Kontrol 3 = 0.5 1 0

Titik Kontrol 4 = 1 0,5 1,3

Titik Kontrol 5 = 1 0 1

3 Ruled Surface Silinder

Kurva1 = 0

Kurva2 = 1

Color = clwhite

Visible = true

Skeleton = a) False b) True


Gambar 12. Rotational Object Dari Kurva Bezier pada gambar 11

Gambar 13. Perbandingan Ruled Surface Silinder