laporan praktikum dhani

31
1 LAPORAN PRAKTIKUM KOMPUTER GRAFIK Nama praktikan Nomor mahasiswa Tanggal kumpul Tanda tangan praktikan Sri Ramadhani 1214370338 12 juni 2014 Nama Penilai Tanggal koreksi Nilai Tanda tangan Dosen Indri Sulistianingsih, S.kom 12 juni 2014 Universitas Pembangunan Panca Budi Fakultas Teknik Jurusan Sistem Komputer Medan 2014 KELAS TI4-D SORE

Upload: manuel-livingston

Post on 19-Jan-2016

160 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Laporan Praktikum Dhani

1

LAPORAN PRAKTIKUM

KOMPUTER GRAFIK

Nama

praktikan

Nomor

mahasiswa

Tanggal

kumpul

Tanda tangan

praktikan

Sri Ramadhani 1214370338 12 juni 2014

Nama Penilai Tanggal

koreksi

Nilai Tanda tangan

Dosen

Indri Sulistianingsih, S.kom 12 juni 2014

Universitas Pembangunan Panca Budi

Fakultas Teknik

Jurusan Sistem Komputer

Medan

2014

KELAS

TI4-D SORE

Page 2: Laporan Praktikum Dhani

2

KATA PENGANTAR

Segala puji syukur saya ucapkan kehadirat Allah SWT, atas berkat rahmatnya penulis

dapat menyelesaikan tugas “Laporan Praktikum Kompuer Grafik” guna memenuhi syarat

dalam menyelesaikan tugas UAS (ujian akhir semester), Adapun pembuatan laporan 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.

Penulis menyadari baahwa laporan ini masih jauh dari kesempurnaan dan masih

banyak kekurangan, baik dari segipenulisan maupun dari tata bahasa,oleh karena itu penulis

mengharapkan kritik dan saran kepada ibu . atas bimbingannya saya ucapkan terima kasih.

Medan, 12 juni 2014

Penulis

Page 3: Laporan Praktikum Dhani

3

DAFTAR ISI

Kata Pengantar …………………………………………………………. 2

Daftar isi ………………………………………………………………... 3

BAB I PENDAHULUAN

I.I latar Belakang ………………………………………………………. 4

I.II tujuan ………………………………………………………………. 4

BAB II LANDASAN TEORI

I.I Transformasi 2 dimensi …………………………………………….. 6

I.II Transformasi 3 dimensi …………………………………………… 7

I.V Defenisi 3 dimensi ………………………………………………....10

I.V pengertian dari OpenGL ………………………………………….. 13

BAB III HASIL PERCOBAAN

1. Primitif drawing ………………………………………………. 17

2. Contoh 2 dimensi dan 3 dimensi ……………………………… 25

BAB IV

Analisa percobaan …………………………………………………….. 29

Penutup ……………………………………………………………….. 30

Saran ………………………………………………………………….. 30

Daftar pustaka ………………………………………………………... 31

Page 4: Laporan Praktikum Dhani

4

BAB I

PENDAHULUAN

1.Latar belakang

Grafik komputer adalah bagian dari ilmu komputer yang berkaitan dengan

pembuatan dan manipulasi gambar (visual ) secara digital. 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.

2.Tujuan praktikum

Mahasiswa mampu menggambar objek 2 dimensi dan 3 dimensi menggunakan bahasa

pemrograman visual C++ dan OpenGL

Mahasiswa mampu mengimplementasikan fungsi transformasi 2 dimensi dan 3

dimensi.

Page 5: Laporan Praktikum Dhani

5

BAB II

LANDASAN TEORI

I.I TRANSFORMASI DUA DIMENSI

a. Translasi

Translasi dilakukan dengan penambahan translasi pada suatu titik koordiant dengan

translation vector atau shif vector yaitu (tx, ty).

Translasi adalah transformasi dengan bentuk yang tetap memindahkan objek apa adanya.

Titik akan di translasi akan di pindahkan ke lokasi menurut garis lurus.. obyek grafik 2D,

dalam hal ini di gunakan bentuk struktur (type data oracle) dan array. Menggambarka

obyek 2D yang sudah di tentukan.

b. Rotasi

Rotasi 2 dimensi memindahkan sebuah obyek menurut garis melingkar. Untuk melakukan

rotasi di perlukan sudut rotasi a’ dan pivot point. Nilai positif dari sudut rotasi

menentukan arah rutasi berlawanan dengan arah jarum jam.sedangka sudut rotasi negatif

memutar objet searah jarum jam.

I.II DEFENISI OBYEK 2 DIMENSI

Grafik komputer 2 dimensi biasa disebut dengan 2D atau bidang adalah bentuk dari benda

yang memiliki panjang dan lebar. Grafik 2 Dimensi merupakan teknik penggambaran

yang berpatokan pada titik koordinat sumbu x (datar) dan sumbu y (tegak). Agar dapat

tampil dengan sempurna, gambar yang akan ditampilkan dengan teknik ini harus

memiliki nilai koordinat x dan y minimum 0 dan maksimum sebesar resolusi yang

digunakan.

2 Dimensi Dalam Komputer Grafik

a. Grafik komputer 2 dimensi

Yaitu sebuah generasi gambar digital berbasis komputer. Yang kebanyakan

mengambil objek 2 dimensi. Model Grafik 2D merupakan kombinasi dari

model geometri (juga disebut sebagai grafik vektor), gambar digital (raster

Page 6: Laporan Praktikum Dhani

6

graphics), fungsi matematika, dan sebagainya. Komponen-komponen ini dapat

dimodifikasi dan dimanipulasi oleh transformasi geometri dua dimensi, Cara

yang paling mudah untuk membuat sebuah gambar 2D kompleks yaitu dimulai

dengan sebuah "canvas" kosong yang diisi dengan warna latar tertentu, yang

kemudian kita "draw", "paint", atau "paste" suatu warna kedalamnya, dengan

urutan-urutan tertentu. Intinya, kanvas tersebut merupakan "frame buffer" atau

bayangan dari layar komputer.

Model-model yang digunakan pada disain grafis 2D biasanya tidak

mendukung bentuk-bentuk tiga-dimensi, atau fenomena yang bersifat tiga

dimensi, seperti pencahayaan, bayangan, pantulan, refraksi, dan sebagainya.

Namun demikian, mereka dapat membuat model berlapis-lapis (layer); nyata,

translusen, dan transparan, yang dapat ditumpuk dalam urutan tertentu.

Banyak antarmuka grafis atau yang kita kenal dengan GUI (Grapical User

Interface) yang berbasiskan model grafis 2D. Software-software yang

mendukung GUI dapat menciptakan "keadaan visual" dalam berinteraksi

dengan komputer, sehingga para pengguna tidak selalu harus melihat tulisan.

Grafik 2D juga penting bagi kendali peralatan-peralatan semacam printer,

plotter, shredder, dan sebagainya. Mereka juga digunakan pada beberapa video

dan games sederhana seperti solitaire, chess, atau mahjong.

I.III TRANSFORMASI 3 DIMENSI

Grafika komputer 3D menggunakan matriks 4x4 untuk mengubah dan mentayangkan model

3D dalam bentuk citra 2D. Grafika komputer 3D memiliki 5 jenis dasar matriks transformasi:

Matriks model (Model matrix): Menyimpan orientasi dan posisi model relatif

terhadap suatu posisi.

Matriks pandangan (View matrix): Menyimpan transformasi pandangan relatif

terhadap posisi asal (yang bernilai (0,0,0)).

Matriks proyeksi (Projection matrix): Menyimpan transformasi untuk mengubah

ruang 3D menjadi citra 2D, dan sebaliknya.

Matriks dunia (World matrix): Menyimpan orientasi dan posisi suatu posisi relatif

terhadap posisi asal.

Page 7: Laporan Praktikum Dhani

7

Matriks lokal (Local matrix): Menyimpan orientasi dan posisi suatu posisi relatif

terhadap suatu posisi lain.

Saat penayangan citra, kamera pandangan digunakan sebagai kerangka acuan ruang maya.

Apabila kamera harus berpindah (translate) sejarak +10 unit di Poros-Z, maka seluruh model

di ruang maya harus berpindah -10 di Poros-Z. Jadi, kamera sebenarnya tidak berpindah,

melainkan ruang maya yang berpindah. Setiap benda (termasuk kamera) grafika komputer

mempunyai matriks model yang menyimpan posisi dan orientasi model. Sementara, kamera

juga memiliki matriks pandangan dan proyeksi. Matriks dunia dan matriks lokal tidak wajib

diperlukan, dan bisa dianggap bernilai identitas.

Berikut adalah contoh transformasi matriks dengan kode palsu OpenGL:

void Draw(void)

{

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

glViewport(0,0,1024,768);

gluPerspective(45.0f,(GLFloat)(1024)/(GLFloat)(768),0.125f,1024.0f); /* Kode

viewport di sini, transformasi matriks proyeksi di sini*/

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

gluLookAt ( 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,-1.0f, 0.0f, 1.0f, 0.0f); /* Kode kamera,

transformasi matriks pandangan */

glTranslatef(1.0f,2.0f,3.0f); /* Kode perpindahan, transformasi matriks dunia */

glPushMatrix();

{

glTranslatef(4.0f,5.0f,6.0f); /* Kode perpindahan, transformasi matriks lokal */

glPushMatrix();

{

glTranslatef(7.0f,8.0f,9.0f); /* Kode perpindahan, transformasi matriks model */

DrawModel(); /* Menggambarkan model nomor 1 */

Page 8: Laporan Praktikum Dhani

8

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(7.0f,8.0f,9.0f);/* Kode perpindahan, transformasi matriks model */

DrawModel(); /* Menggambarkan model nomor 2 */

}

glPopMatrix();

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(10.0f,11.0f,12.0f);/* Kode perpindahan, transformasi matriks lokal */

glPushMatrix();

{

glTranslatef(13.0f,14.0f,15.0f);/* Kode perpindahan, transformasi matriks model */

DrawModel(); /* Menggambarkan model nomor 3 */

}

glPopMatrix();

glPushMatrix();

{

glTranslatef(16.0f,17.0f,18.0f); /* Kode perpindahan, transformasi matriks model

*/DrawModel(); /* Menggambarkan model nomor 4 */

}

glPopMatrix();

}

glPopMatrix();

}

Page 9: Laporan Praktikum Dhani

9

I.IV DEFENISI 3 DIMENSI

Grafika komputer 3D (Inggris: 3D Computer graphics) adalah representasi dari data

geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap

grafika komputer 2D. Hasil ini kadang kala ditampilkan secara waktu nyata (real time) untuk

keperluan simulasi. Secara umum prinsip yang dipakai adalah mirip dengan grafika komputer

2D, dalam hal: penggunaan algoritma, grafika vektor, model frame kawat (wire frame

model), dan grafika rasternya.

Grafik 3 Dimensi merupakan teknik penggambaran yg berpatokan pada titik koordinat sumbu

x(datar), sumbu y(tegak), dan sumbu z(miring).Representasi dari data geometrik 3 dimensi

sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D.

Tiga Dimensi, biasanya digunakan dalam penanganan grafis. 3D secara umum merujuk pada

kemampuan dari sebuah video card (link). Saat ini video card menggunakan variasi dari

instruksi-instruksi yang ditanamkan dalam video card itu sendiri (bukan berasal dari

software) untuk mencapai hasil grafik yang lebih realistis dalam memainkan game komputer.

Grafika komputer 3D sering disebut sebagai model 3D. Namun, model 3D ini lebih

menekankan pada representasi matematis untuk objek 3 dimensi. Data matematis ini belum

bisa dikatakan sebagai gambar grafis hingga saat ditampilkan secara visual pada layar

komputer atau printer. Proses penampilan suatu model matematis ke bentuk citra 2 D

biasanya dikenal dengan proses 3D rendering.

Grafik 3D merupakan perkembangan dari grafik 2D. Didalam grafika komputer, 3D

merupakan bentuk grafik yang menggunakan representasi data geometri tiga dimensi.

Suatu objek rangka 3D apabila disinari dari arah tertentu akan membentuk bayangan pada

permukaan gambar.

Proses pembuatan grafik komputer 3D dapat dibagi ke dalam tiga fase, yaitu 3D modeling

yang mendeskripsikan bentuk dari sebuah objek, layout dan animation yang mendeskripsikan

gerakan dan tata letak sebuah objek, dan 3D rendering yang memproduksi image dari objek

tersebut.

Di dalam dunia game, 3D secara umum merujuk pada kemampuan dari sebuah video card

(link). Saat ini video card menggunakan variasi dari instruksi-instruksi yang ditanamkan

Page 10: Laporan Praktikum Dhani

10

dalam video card itu sendiri (bukan berasal dari software) untuk mencapai hasil grafik yang

lebih realistis dalam memainkan game komputer.

2D dan 3D dalam bentuk animasi

Animasi adalah suatu rangkaian gambar diam secara inbetween dengan jumlah yang banyak,

bila kita proyeksikan akan terlihat seolah – olah hidup (bergerak), seperti yang pernah kita

lihat film – film kartun di tevisi maupun dilayar lebar jadi Animasi kita simpulkan

menghidupkan benda diam diproyeksikan menjadi bergerak.

Untuk membuat ilusi gerakan tersebut, sebuah gambar pada layar komputer dengan sangat

cepat digantikan oleh gambar lainnya yang mirip dengan gambit sebelumnya

Animasi komputer adalah seni menghasilkan gambar bergerak melalui penggunaan komputer

dan merupakan sebagian bidang komputer grafik dan animasi. Animasi semakin banyak

dihasilkan melalui grafik komputer 3D, walaupun grafik komputer 2D masih banyak ada.

Kadangkala sasaran animasi adalah komputer itu sendiri, kadangkala sasaran adalah antara

lain, seperti filem. Untuk menghasilkan gambar pergerakan, image (gambar) dipaparkan pada

screen komputer dan diganti dengan image (gambar) baru yang selaras gambar sebelumnya

dengan pantas. Teknik ini serupa dengan bagaimana gambar bergerak dihasilkan melalui

televi dan film. Animasi komputer 3D pada asasnya merupakan pengganti digit bagi seni

animasi gerak (stop motion); patung animasi dibina pada screen komputer dan dipasang

dengan rangka siber. Kemudian anggota badan, mata, mulut, pakaian, dan lain-lain bagi

patung 3D digerakkan oleh juru animasi. Akhirnya, animasi dihasilkan.

Jenis animasi yang banyak dikenal adalah animasi 2D dan 3D. Perbedaan dari animasi 2D

dan 3D adalah dilihat dari sudut pandangnya. Animasi 2D menggunakan koordinat x dan y,

sedangkan animasi 3D menggunakan koordinat x, y dan z yang memungkinkan kita dapat

melihat sudut pandang objek secara lebih nyata.

A. animasi 2 dimensi

Animasi jenis ini juga biasa disebut dengan film kartun. Kartun sendiri berasal dari kata

Cartoon, yang artinya gambar yang lucu. Contohnya misalnya: Looney Tunes, Tom and

Jerry, Scooby Doo, Doraemon, dan lainnya.

Page 11: Laporan Praktikum Dhani

11

B. animasi 3 dimensi

Animasi 3D adalah pengembangan dari animasi 2D. Dengan animasi 3D, karakter yang

diperlihatkan semakin hidup dan nyata, mendekati wujud manusia aslinya. Contohnya Toy

Story, Monster Inc., Finding Nemo, The Incredible, Shark Tale. Cars, hingga Final Fantasy.

Disini kita bisa melihat perbedaan visual jika dbandingkan dengan animasi 2D. Kesemuanya

itu biasa juga disebut dengan animasi 3D atau CGI (Computer Generated Imagery).

Untuk model animasi 3D, objek atau model tersebut dibuat dengan komputer dengan

menggunakan software tertentu, seperti 3d Max atau lainnya, yang kemudian dirangkakan

dengan tulang rangka virtual untuk membuat efek 3 dimensi nya.

Sedangkan untuk model animasi 2D, animasi dibuat dengan menggunakan beberapa gambar

yang memiliki layer terpisah yang berarti tanpa menggunakan rangka virtual. Kemudian

anggota badan, mata, mulut dan sebagainya dari objek tersebut dibuat seolah – olah bergerak

oleh animator dengan menggunakan ”key frame” secara terus menerus atau frame by frame.

Proses tersebut disebut sebagai proses ‘tweening motion” atau “morphing

C. Game 2 dimensi

Game dua dimensi dapat diketahui berdasarkan ruangnya yang hanya memiliki dua sisi ( X

dan Y). Sedangkan untuk gambarnya sendiri dapat menggunakan Vector maupun Bitmap.

Untuk membuat animasi bergerak (berjalan,melompat,berlari,dll) kita harus membuat gambar

satu persatu yang disebut dengan(frame).

Kerealisasian gerakan ditentukan dari gambar yang dibuat, jumlah gambar(frame) yang

digunakan, serta hitungan gambar per detik (frame per second ( semakin tinggi hitungan

gambar per detik maka semakin mulus gerakan yang akan dihasilkan)).

Game dua dimensi ini memiliki 2 konsep, yaitu:

- Static View, dimana semua objek berada pada satu bidang dan gerakan karakter utama

hanya terbatas pada bidang itu saja.

- Side Scrolling View, dimana objek-objek dan gambar latar akan terus bergerak ke

kanan dan ke kiri sesuai dengan kecepatan gerakan karakter yang dimainkan.

Contoh game berbasis 2 dimensi diantaranya adalah Pac-man, Space Invader, Mario Bros,

dan game-game sederhana lainnya.

Page 12: Laporan Praktikum Dhani

12

D. Game 3 Dimensi

Setelah munculnya game 2D muncullah game dengan tampilan 3D datar (3D Plaine) hal ini

sering membuat bingung karena sering disebut game 2D tapi mereka tidaklah sama. Game

seperti ini bukan 2D tapi tidak juga full 3D. Biasanya gameplaynya memang mirip game 2D

dimana kita hanya bisa bergerak secara horizontal dan vertical namun beberapa gambarnya di

render secara 3D. Teori grafik seperti ini disebut dengan 2.5D atau pseudo-3D sedangkan

pada istilah game lebih dikenal dengan isometric/diametric atau bahkan trimetric projection.

Berbeda dengan game 2D, dalam game 3D anda akan menemui tiga sisi (X,Y,Z).

Game bertipe ini menggunakan 2 macam tipe pemodelan:

-3d ini merupakan model/ object 3 dimensi yang nantinya akan anda jadikan sebagai karakter

utama, bangunan, object-object seperti senjata,musuh, permukaan tanah ,pohon, bukit,dll.

Object 3d seperti ini bisa anda buat dengan menggunakan program seperti “3D

S.Max”,”Maya”,”Hash”,dll

E. grafik 2 dimensi

gambar 2d juga berperan dalam membuat game bertipe 3D fungsi gambar 2d antara lain:

- sebagai texture untuk object

- sebagai latar belakang ( langit , pemandangan,dll)

- sebagai meteran untuk nyawa , gambar untuk speedometer (untuk game racing), dll.

Sedangkan untuk membuat animasi dalam 3D dapat digunakan bones(tulang) yang layaknya

manusia dapat digerakkan. Selain itu animasi tetap juga dapat menggunakan bitmap (gambar

2d) untuk animasi pada texture air, api,dll

I.V Penertian syntax pada OpenGL

1. fungsi OpenGL

Pada komputer memory untuk menampilkan gambar biasanya di isi dengan gambar yang

berasal dari peringatan gambar paling akhir, jadi perlu di bersihkan dengan warna latar

belakang sebelum di gambar lagi.

Page 13: Laporan Praktikum Dhani

13

Contoh berikut ini perintah yang di gunakan untuk membersihkan layar latar belakang

dengan warna hitam dan buffer apa yang di bersihkan. Dalam hal ini, buffer yang akn di

bersihkan karena buffer warna merupakan tempat gambar di simpan,

glClearColor 0, 0, 0, 0

glClear GL_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT

2. Spesifikasi warna

Pada OpenGL mendeskripsikan objek dengan warna objek proses yang berjalan sendiri –

sendiri. Sebelum warna di ubah maka semua objek yang di gambarkan sesudah perintah

tersebut akan menggunakan warna terakhir yang dapat pada coloring scheme. Untuk warna di

gunakan perintah glcolor3f. Contoh berikut menunjukkan warna yang di tampilkan adalah

warna merah.

glColor3f 1, 0, 0

3. Menggambar Dibidang 3D dan 2D

Untuk menggambar grafik jenis apapun pada komputer biasanya di mulai engan pixel. Pixel

adalah elemen terkecil dari layar monitor yang mempunyai aitribut warna posisi..

Sedangkan untuk membentukgaris poligon, bjek dan lain – lain dapat di lakukan melalui

urutan pixel yang berbeda. Menggambarkan dengan menggunakanOpenGL mempunyai

perbedaan dengan bahasa lain, yaitu tidak perlu memikirkan koordinat layar secara fisik

tetapi hanya perlu menspesifikasikan posisi koordinat dengan volume penglihatan. OpenGL

memikirkan sendiri bagaimana caranya menggambar titik, garis, dan lainnya yang berada

dalam ruang 3 dimensi dan 2 dimensi pada layar monitor.

Area gambar yang di batasi ini adalah ruang koordinat kartesian yang mempunyai range dari

-100 hingga 100 untuk sumbu x, y dan z. Secara sederhana bidang inidapat di anggap sebagai

bidang gambar untuk perintah OpenGL.

Untuk menggambar titik di gunakan satu perintah OpenGL yaitu : glVertex. Fungsi ini dapat

mempunyai 2 sampai 4 parameter dan berbagai macam tipe data. Sebagai contoh perintah

glVertex di bawah ini akan menspesifikasikan sebuah titik pada posisi 4 sumbu x, 4 sumbuy,

Page 14: Laporan Praktikum Dhani

14

dan 0 untuk sumbu z. glVertex3f 4, 4, 0. Setelah di ketahui cara untuk menspesifikasina

sebuah titik di ruang pada OpenGL. Selanjutnya yang harus di tambahkan adalah informasi

tambahan mengenai titik tersebut, apakah titik tersebut akhir dari sebuah garis atau merupan

sebuah titik sudut dari sebuah poligon atau lainnya, karena defenisi geometrik dari sebuah

Vertex sebenarnya bkanlah hanya sebuah titik pada layar tetapi lebih merupakan sebuah titik

dimana terjadi interksi antara dua buah garis atau kurva.

Primitif adalah interpretasi sejumlah set atau deretan titik pada sebuah bentuk yang di gambar

pada layar. Pada OpenGL terdapat sepuluh macam primitif dari mulai menggambar sebuah

titik hingga poligon. Untuk itu di gunakan perintah glBigen sebagai cara memberi tau

OpenGL untuk memulai menginterpretasi sederetan titik sebagai titik sebagai salah satu

bentuk primitif. Dn untuk mengakhiri deretan titik ini di gunakan perintah glend.

sebagai contoh :

glBegin bmpolygon //spesifikasikan titik sebagai primitif

glVertex3f 4, 4, 0 //spesifikasi posisi titik

glEnd //mengakhiri perintah gambar titik

maksud dari :

#include <GL/glut.h> untuk mendefenisi file hider, membaca file atau memanggil file

hider pertama.

Void draw dot(int x, int y) untuk menggambar dari titik x ke y

Gl Vertex 2i untuk menentukan 2 titik koordinat

Int main untuk menentukan atau mengatur tampilan dengan menggunakan RGB (red

grend blue).

Grafik komputer 3D merupakan suatu grafis yang menggunakan 3 titik perspektif

dengan cara matematis dalam melihat suatu objek, dimana gambar tersebut dapat

dilihat secara menyeluruh dan nyata. Untuk perangkat-perangkat lunak yang

digunakan untuk grafik komputer 3D ini banyak bergantung pada aloritma-algoritma.

Page 15: Laporan Praktikum Dhani

15

Animasi Komputer

Animasi Komputer adalah seni membuat gambar bergerak melalui komputer.

Biasanya ini digunakan pada film-film animasi berbudget besar. Tetapi film-film non

animasi juga banyak yang menggunakan teknik ini, sebut saja Lord Of The Ring,

Harry Potter, dsb.

Page 16: Laporan Praktikum Dhani

16

BAB III

HASI PERCOBAAN

1. Primitive drawing

Pada tutorial 01 telah diberikan contoh program untuk merepresentasikan model obyek

segiempat 2D. OpenGL memiliki beberapa komponen dasar untuk merepresentasikan suatu

obyek. Komponen dasar tersebut, disebut sebagai OpenGL Geometric primitives. Gambar 2

menggambarkan semua OpenGL Geometric primitives yang tersedia.

openGL Primitives

Setiap obyek harus dimodelkan sebagai kombinasi dari komponen-komponen dasar tersebut.

Sebagai contoh, obyek segiempat pada tutorial 01 tersebut dimodelkan dengan menggunakan

Page 17: Laporan Praktikum Dhani

17

komponen dasar GL_POLYGON. Obyek tersebut dapat pula dimodelkan dengan komponen

dasar GL_TRIANGLES atau pun GL_QUAD.

Secara umum perintah-perintah dalam OpenGL memenuhi aturan sebagai berikut:

openGL Commands

Dalam OpenGL, menggambar geometric primitives selalu dilakukan di antara fungsi

glBegin(PRIMITIVES)

// Fungsi Menggambar Primitives di sini

glEnd()

Page 18: Laporan Praktikum Dhani

18

Obyek kompleks dapat dibuat dengan kombinasi dari primitif ini. Adapun contoh grafik

primitif yang lain adalah :

-simbol tertentu. Teks merupakan

kumpulan lebih dari dua karakter.

angan dan

warna. Citra raster disimpan dalam komputer sebagai larik bernilai numerik. Larik tersebut

dikenal sebagai piksel map atau bitmap. Ada tiga cara untuk menghasilkan citra grafik yaitu

citra didisain dengan tangan, citra yang didapat dari perhitungan dan citra yang discan.

Pemaparan citra raster dinyatakan oleh piksel dengan video displays (Cathod-ray Tube CRT),

flat panel dispalys (LCD), hardcopy (printer laser, dot matrix printers, ink-jet printers).

Contoh proses pemaparan permukaan adalah citra yang ditangkap lalu disimpan di frame

buffer, kemudian digunakan untuk mewarnai sebuah titik pada permukaan pemapar.

Selanjutnya proses scan di CRT. Frame buffer adalah matriks 2 dimensi yang mewakili piksel

pada pemapar. Ukuran matriks harus cukup untuk menyimpan kedalam warna pemapar untuk

semua piksel. Sebagai contoh pemapar (monitor) berresolusi 1280 x 1024 mempunya

kedalaman warna 24 bit (~16 juta warna) membutuhkan ruang simpan sekitar 4 Mb.

Contoh fungsi dari primitive drawing

2 dimensi

#include <GL/glut.h>

void userdraw()

{

static int tick=0;

void drawDot(int x, int y);

glBegin(GL_LINES);

glVertex2i(300,250);

glVertex2i(300,250);

glVertex2i(50,50);

glVertex2i(300,250);

Page 19: Laporan Praktikum Dhani

19

glVertex2i(50,250);

glVertex2i(300,250);

glVertex2i(300,50);

glVertex2i(50,250);

glEnd();

}

void display(void)

{

//BERSIH LAYAR

glClear(GL_COLOR_BUFFER_BIT);

userdraw();

glutSwapBuffers();

}

int main(int argc, char **argv)

{

glutInit(&argc,argv);//Inisialisasi Toolkit

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);

glutInitWindowPosition(100,100);

glutInitWindowSize(640,480);

glutCreateWindow("Diamond");

glClearColor(1.0f,0.0f,0.0f,0.0f);

gluOrtho2D(0.,700.,0.,400.);

glutIdleFunc(display);

glutDisplayFunc(display);

glutMainLoop();

return 0;

}

Page 20: Laporan Praktikum Dhani

20

2. Contoh projek gambar 5 titik

#include <GL/glut.h>

void display(void)

{

/* bersihkan layar dari titik pixel yang masih ada */

glClear (GL_COLOR_BUFFER_BIT);

/* gambar 5 titik di layar */

glColor3f (1.0, 1.0, 0.0);

/* posisi vertex */

Page 21: Laporan Praktikum Dhani

21

glBegin(GL_POINTS);

glVertex3f (0.0, 0.0, 0.0);

glVertex3f (0.0, 0.8, 0.0);

glVertex3f (0.8, 0.0, 0.0);

glVertex3f (0.0, -0.8, 0.0);

glVertex3f (-0.8, 0.0, 0.0);

glEnd();

glFlush ();

}

void kunci(unsigned char key, int x, int y)

{

switch (key)

{

/* aplikasi berhenti ketika tombol q ditekan */

case 27 : case 'q': exit(0); break;

}

glutPostRedisplay();

}

Page 22: Laporan Praktikum Dhani

22

int main(int argc, char *argv[])

{

glutInitWindowSize(400,400);

glutInitWindowPosition(100,100);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

glutCreateWindow("Primitif");

glutDisplayFunc(display);

glutKeyboardFunc(kunci);

glutMainLoop();

return 0;

}

Page 23: Laporan Praktikum Dhani

23

3. Contoh latihan fungsi dari 3 dimensi

DIAMON

#include <GL/glut.h>

void userdraw()

{

static int tick=0;

void drawDot(int x, int y);

glBegin(GL_LINES);

glVertex2i(100,250);

glVertex2i(300,250);

glVertex2i(100,250);

glVertex2i(200,200);

glVertex2i(200,200);

glVertex2i(300,250);

glVertex2i(100,250);

glVertex2i(200,50);

glVertex2i(200,200);

glVertex2i(200,50);

glVertex2i(300,250);

glVertex2i(200,50);

glEnd();

}

void display(void)

{

//BERSIH LAYAR

glClear(GL_COLOR_BUFFER_BIT);

userdraw();

Page 24: Laporan Praktikum Dhani

24

glutSwapBuffers();

}

int main(int argc, char **argv)

{

glutInit(&argc,argv);//Inisialisasi Toolkit

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);

glutInitWindowPosition(100,100);

glutInitWindowSize(640,480);

glutCreateWindow("Diamond");

glClearColor(1.0f,0.0f,0.0f,0.0f);

gluOrtho2D(0.,640.,0.,350.);

glutIdleFunc(display);

glutDisplayFunc(display);

glutMainLoop();

return 0;

}

Page 25: Laporan Praktikum Dhani

25

#include <Windows.h>

#include <iostream>

#include <gl\GL.h>

#include <gl\GLU.h>

#include <gl\glut.h>

#include <math.h>

void cube()

{

//menggambar kubus dan transformasi tarnslasi ke titik 0.5 0.5 0.5 dan skala 1 1 1

glPushMatrix();

glTranslated(0.5,0.5,0.5);//cube

glScaled(1.0,1.0,1.0);

glutSolidCube(1.0);

glPopMatrix();

}

void setMaterial()

{

//set properties of surfaces material

GLfloat mat_ambient[] = {0.7f,0.7f,0.7f,1.0f}; // ada 4 jenis material yang dipakai,

dengan kombinasi warna tertentu

GLfloat mat_diffuse[] = {0.6f,0.6f,0.6f,1.0f};

GLfloat mat_specular[] = {1.0f,1.0f,1.0f,1.0f};

GLfloat mat_shininess[] = {50.0f};

glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);

glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);

glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);

glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);

}

Page 26: Laporan Praktikum Dhani

26

void setLighting()

{

//set light sources

GLfloat lightIntensity[] = {0.7f,0.7f,0.7f,1.0f};//mensetting pencahayaan

GLfloat light_position[] = {2.0f,6.0f,3.0f,0.0f};

glLightfv(GL_LIGHT0,GL_DIFFUSE,lightIntensity);

glLightfv(GL_LIGHT0,GL_POSITION,light_position);

}

void setViewport()

{

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

double winHt = 1.0;//half height of the window

glOrtho(-winHt*64/48,winHt*64/48,-winHt,winHt,0.1,100.0);

}

void setCamera()

{

//set the camera

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

gluLookAt(3.3,3.3,3.0,0,0.25,0,0.0,1.0,0.0);

}

void displayObject()

{

setMaterial();

setLighting();

setViewport();

setCamera();

Page 27: Laporan Praktikum Dhani

27

//startDrawing

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

cube();//memanggil fungsi menggambar kubus

glFlush();//mengirim smua objek untuk dirender

}

void main(int argc, char **argv)

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);

glutInitWindowSize(640,480);

glutInitWindowPosition(100,100);

glutCreateWindow("simple 3d scene");

glutDisplayFunc(displayObject);//fungsi dari display object yang menggabungkan

kubus lighting material dan kamera

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

glShadeModel(GL_SMOOTH);

glEnable(GL_DEPTH_TEST);

glEnable(GL_NORMALIZE);

glClearColor(1.0f,1.0f,1.0f,0.0f);

glViewport(0,0,640,480);

glutMainLoop();

}

Page 28: Laporan Praktikum Dhani

28

Page 29: Laporan Praktikum Dhani

29

BAB IV

HASIL ANALISA PERCOBAAN

Perencanaan bangunan bertingkat memerlukan suatu analisa yang tepat lewat penggunaan

program

komputer yang tepat pula. Salah satu program komputer yang digunakan dalam perhitungan

gedung tersebut

adalah ETABS. Namun tidak menutup kemungkinan adanya penggunaan program komputer

lain dalam

membantu mendapatkan beban yang terjadi pada struktur utama yang berasal dari struktur

pendukung.

Bangunan perkantoran tingkat menengah dengan denah sederhana dalam skripsi ini akan

dianalisa dan

dibandingkan perilaku yang terjadi padanya. Beban yang diberikan adalah beban statik dan

beban dinamik.

Beban statik yang terjadi adalah beban akibat gaya gravitasi sedangkan untuk beban gempa

adalah dengan

analisa statik ekivalen dan analisa respon spektrum. Dengan mengambil portal yang mewakili

dari bangunan

tersebut, baik arah-x maupun arah-y, maka dilakukan pula analisa yang sama seperti pada

kasus 3 dimensi

tersebut. Hasil perhitungan yang dianalisa didapatkan dari output program ETABS baik

displacement

maupun gaya dalam kolom. Perilaku struktur dalam hal ini ditunjukkan oleh displacement

dan gaya-gaya

dalam tadi. Dengan demikian akan diketahui masing-masing perilaku portal sebagai wujud

struktur 2

dimensi dan gedung yang diwujudkan sebagai struktur 3 dimensi. Dalam hal ini pula, akan

disusun tabeltabel

perbandingan analisa statik-dinamik yang terjadi pada struktur 2 dimensi dan 3 dimensi serta

prosentase selisih perbandingan analisa statik-dinamik pada perwujudan struktur yang sama.

Dengan hasil

yang diperoleh lewat perbandingan yang ada, maka akan lebih optimal jika perancang

struktur.

Page 30: Laporan Praktikum Dhani

30

PENUTUP

a. Kesimpulan

jadi, perbedaan antara grafik 3D dan 2D secara umum terletak pada komposisi objeknya.

Pada bidang Cartesian, grafik 2D hanya memiliki sumbu X dan Y, sedangkan grafik 3D

memiliki axis X, Y, dan Z. Dimana hal ini membuat objek grafik 3D memiliki volume

atau memiliki isi. Sehingga objek 3D dapat dilihat dari berbagai macam sudut. Sedangkan

Grafik 2D hanya memiliki satu sudut pandang saja, yaitu sisi yang sejajar dengan posisi si

penglihat. Oleh sebab itu kita tidak dapat melihat bagian belakang maupun samping

sebuah objek 2D.

Contoh penggunaan grafik 2D misalnya pada typhography, cartography, menggambar

teknik, periklanan, dll. Sedangkan contoh objek 3D misalkan benda-benda yang ada di

sekitar kita. Contoh lain yang paling sering menggunakan grafik 2D dan 3D adalah

pembuatan animasi dan game seperti yang telah dijelaskan diatas.

b. Saran

Setelah melihat uraian di atas, penyusun mempunyai saran.

Terlebih dahulu harus belajar algoritma, karena algorima adalah salah satu kunci untuk

dapat memahami permasalahan yang akan dihadapi didalam pembuatan grafik komputer.

Bila ingin membuat suatu gambar/grafik, pilihlah program aplikasi yang lebih bagus

menurut anda, lebih kompleks, dan yang khusus menanganipembuatan gambar/grafik

serta yang mengikuti perkembangan jaman .

Harus memahami sintak-sintak (gaya bahasa penulisan dalam bahasa pemrograman ) yang

terdapat dalam bahasa pemrograman ataupun fitur – fitur yang terdapat didalam program

aplikasi.

Page 31: Laporan Praktikum Dhani

31

DAFTAR PUSTAKA

https://docs.google.com/document/d/15Us0Xa9Su30BmYysaQ8vTWnivvJbOT-

84BvOJFkBJM0/edit?pli=1

DARI CATATAN DARI PERTEMUAN 1 SAMPAI AKHIR

file:///C:/Users/User/Documents/Makalah%20Grafik%20Komputer%20Yoga%20Finish.ht

m

file:///C:/Users/User/Documents/Laporan%20Tugas%20Grafika%20Komputer%20bangun

%202%20dimensi%20Code%20Block.htm