Anda di halaman 1dari 12

LAPORAN PRAKTIKUM

GRAFIK KOMPUTER
Dosen Pengampu : Sri Rahayu, S.Kom., M.Kom.
Disusun untuk memenuhi Tugas Pertemuan ke-11 Praktikum Grafika Komputer

“Bayangan”

Disusun oleh :
Muhammad Arif Syamsudin
2106067
Informatika B

PROGRAM STUDI TEKNIK INFORMATIKA


INSTITUT TEKNOLOGI GARUT
2022
KATA PENGANTAR

Puji dan syukur saya ucapkan kehadirat Allat SWT. atas rahmat dan
karunia-Nya saya dapat menyelesaikan laporan ini. Laporan ini dibuat untuk
memenuhi tugas Praktikum Grafik Komputer pada pertemuan ke-11 mengenai
materi “Bayangan” dan juga untuk menambah ilmu pengetahuan mengenai Grafik
Komouter itu sendiri.
Saya sadari bahwa laporan ini masih jauh dari kata sempurna. Hal itu
dikarenakan masih adanya keterbatasan kemampuan dan pengetahuan saya. Oleh
karena itu saya mengharapkan kritik dan saran yang bersifat membangun dari para
pembaca. Semoga laporan ini bermanfaat bagi kita.
Akhir kata, saya ucapkan permintaan maaf apabila ada kesalahan dalam
penulisan laporan ini.

Garut, 3 Januari 2023

Muhammad Arif Syamsudin

i
DAFTAR ISI

KATA PENGANTAR ............................................................................................ i


DAFTAR ISI .......................................................................................................... ii
BAB I PENDAHULUAN ...................................................................................... 1
A. Latar Belakang ............................................................................................. 1
B. Rumusan Masalah ........................................................................................ 2
C. Tujuan .......................................................................................................... 2
BAB II HASIL DAN PEMBAHASAN ................................................................ 3
Hasil Screenshoot : .............................................................................................. 7
Keterangan ........................................................................................................... 7
BAB III KESIMPULAN ....................................................................................... 8
DAFTAR PUSTAKA ............................................................................................ 9

ii
BAB I
PENDAHULUAN

A. Latar Belakang
Untuk menghasilkan gambar yang realistik perlu memodelkan
pencerminan dan pembiasan maupun memunculkan bayangan karena pengaruh
dari adanya cahaya. Dengan memodelkan pencerminan untuk benda yang reflektif
seperti cermin akan dihasilkan pantulan ataupun bayangan benda. Dan efek
pembiasan cahaya dapat dimodelkan pada benda yang transparan untuk
menghasilkan penampakan obyek lain yang berada di belakang obyek transparan
tersebut serta efek pengumpulan cahaya bias. Effek bayangan ini sangat penting
karena dengan adanya effek tersebut seolah-olah benda tersebut nampak nyata.
Bayangan sebuahobyek benda harus disesuaikan dengan bentuk benda aslinya dan
asal sumber cahaya tersebut berada dan banyaknya sumber cahaya.
Dalam bidang grafika komputer, bayangan merupakan salah satu teknik
yang sering digunakan untuk memberikan kesan visual yang lebih realistis pada
objek yang dibuat dengan komputer. Bayangan dapat memberikan kesan
ketebalan, kebulatan, dan kedalaman pada objek yang dibuat, sehingga dapat
menciptakan visual yang lebih nyata dan memukau bagi penonton. Selain itu,
bayangan juga dapat membantu dalam menciptakan ilusi ruang yang nyata dalam
visual yang dibuat dengan komputer. Namun, untuk dapat mengaplikasikan teknik
bayangan dalam grafika komputer dengan baik, diperlukan pengetahuan tentang
teknik-teknik penghasilan bayangan, jenis-jenis bayangan, dan aplikasi bayangan
dalam grafika komputer.
Dalam dunia nyata, cahaya merupakan kebutuhan yang sangat penting.
Tanpa adanya cahaya, maka tidak mungkin suatu benda atau objek dapat terlihat.
Suatu benda atau objek dapat terlihat karena memantulkan sebagian atau seluruh
cahaya yang mengenainya. Cahaya yang mengenai suatu benda atau objek akan
mengakibatkan terbentuknya bayangan dari objek tersebut. Fenomena ini dapat
disimulasikan ke dalam teknologi grafika komputer. Terdapat beberapa model
pencahayaan dan bayangan yang dapat disimulasikan pada grafika komputer.
Pada pencahayaan antara lain: ambient light, diffuse reflection, specular

1
reflection. Pada bayangan antara lain: flat shading, diffuse shading. phong
shading.

B. Rumusan Masalah
Berdasarkan latar belakang masalah yang telah diuraikan diatas, maka laporan
ini akan membahas tentang “Bayangan” dalam Grafik Komputer, sehingga dalam
penelitian ini rumusan masalahnya sebagai berikut:
1. Apa itu bayangan pada Grafika Komputer?
2. Bagaimana program atau source code untuk menampilkan bayangan pada
sebuah objek dalam Grafika Komputer yang diterapkan pada Open GL?
3. Bagaimana keterangan atau penjelasan terhadap source code/program yang
dibuat?
4. Bagaimana cara menerapkan pemodelan bayangan di Open GL?

C. Tujuan
Berdasarkan rumusan masalah diatas, maka penelitian ini bertujuan sebagai
berikut:
1. Mengetahui dan memahami apa itu bayangan.
2. Mampu menampilkan source code atau program untuk menampilkan bayangan
pada sebuah objek dalam Grafika Komputer yang diterapkan pada Open GL.
3. Mampu menerapkan code/program yang di buat.
4. Mampu menerapkan pemodelan bayangan pada Ooen GL.

2
BAB II
HASIL DAN PEMBAHASAN

Pada bab ini akan disampaikan terkait source code atau program yang
sudah di buat, yaitu menampilkan bayangan pada sebuah objek yang disertai
dengan pencahayaan.

#include <math.h>
#include <stdio.h>
#include <GL/glut.h>

double rx = 0.0;
double ry = 0.0;

float l[] = {1.0, 80.0, 0.0}; // koordinat sumber cahaya


float n[] = {0.0, -1.0, 0.0};
float e[] = {0.0, -60.0, 0.0};

void help();

// obyek yang akan digambar


void draw()
{
glutSolidTorus(10,20,20,10);
}

// Membuat proyeksi bayangan


void glShadowProjection(float*l, float*e, float*n)
{
float d, c;
float mat[50];

d = n[0]*l[0] + n[1]*l[1] + n[2]*l[2];


c = e[0]*n[0] + e[1]*n[1] + e[2]*n[2] - d;

3
mat[0] = l[0] * n[0] + c; // Membuat matrik. Open GL menggunakan kolom
matrik
mat[4] = n[1] * l[0];
mat[8] = n[2] * l[0];
mat[12] = -l[0] * c-l[0] * d;
mat[5] = l[1] * n[1] + c;
mat[9] = n[2] * l[1];
mat[13] = -l[1] * c-l[1] * d;
mat[2] = n[0] * l[2];
mat[6] = n[1] * l[2];
mat[10] = l[2] * n[2] + c;
mat[14] = -l[2] * c-l[2] * d;
mat[3] = n[0];
mat[7] = n[1];
mat[11] = n[2];
mat[15] = -d;

glMultMatrixf(mat); // Kalikan matrik


}

void render()
{
glClearColor(0.0,0.6,0.9,0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLightfv(GL_LIGHT0, GL_POSITION, l);
glDisable(GL_CULL_FACE);
glDisable(GL_LIGHTING);
glColor3f(1.0,1.0,0.0);

glBegin(GL_POINTS);
glVertex3f(l[0], l[1], l[2]);
glEnd();

glColor3f(0.8,0.8,0.8);

4
glBegin(GL_QUADS);
glNormal3f(0.0,1.0,0.0);
glVertex3f(-1300.0, e[1] - 0.1, 1300.0);
glVertex3f(1300.0, e[1] - 0.1, 1300.0);
glVertex3f(1300.0, e[1] - 0.1, -1300.0);
glVertex3f(-1300.0, e[1] - 0.1, -1300.0);
glEnd();

// Gambar bayangan glPushMatrix(); glRotatef(ry,0,1,0);


glEnable(GL_LIGHTNG); glColor3f(0.0,0.0,0.8); draw();
glPopMatrix();

// Sekarang gambar bayangan yang muncul


glPushMatrix();
glShadowProjection(l,e,n);
glRotatef(ry,0,1,0);
glRotatef(rx,1,0,1);
glDisable(GL_LIGHTING);
glColor3f(0.0,0.0,0.8);
draw();
glPopMatrix();
glutSwapBuffers();
}

void keypress(unsigned char c, int a, int b)


{
if ( c==27 ) exit(0);
else if ( c=='s' ) l[1] -= 5.0;
else if ( c=='w' ) l[1] += 5.0;
else if ( c=='a' ) l[1] -= 5.0;
else if ( c=='d' ) l[1] += 5.0;
else if ( c=='q' ) l[1] -= 5.0;
else if ( c=='e' ) l[1] += 5.0;
else if ( c=='h' ) help();
}

5
void help()
{
printf("Proyeksi Bayangan sebuah Objek Torus\n");
}

void idle()
{
rx += 0.4;
ry += 0.7;
render();
}

void resize(int w, int h)


{
glViewport(0,0,w,h);
}

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


{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutCreateWindow("2106067_Muhammad Arif Syamsudin");
glutReshapeFunc(resize);
glutReshapeWindow(400,400);
glutKeyboardFunc(keypress);
glutDisplayFunc(render);
glutIdleFunc(idle);
glEnable(GL_NORMALIZE);
glEnable(GL_LIGHTING);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHT0);
glEnable(GL_TEXTURE_2D);
glMatrixMode(GL_PROJECTION);

6
glLoadIdentity();
gluPerspective(60.0f, 1.0, 1.0, 400.0);

// Reset koordinat sebelum dimodifikasi/diubah


glMatrixMode(GL_MODELVIEW); glLoadIdentity();
glTranslatef(1.0,0.0,-150.0);

glutMainLoop();
return 0;
}

Hasil Screenshoot :

Keterangan : Pada hasil screenshoot di atas merupakan hasil dari pembuatan


bayangan pada sebuah objek yang disertai dengan pencahayaan, dimana objek di
atas merupakan objek Torus. Pada pembuatannya kita masukkan fungsi
glutSolidTorus(10,20,20,10); pada void draw, kemudian untuk bayangan dan
pencahayaannya saya merujuk pada program yang ada di Modul 11 terkait
bayangan.

7
BAB III
KESIMPULAN

Kesimpulan dalam pembahasan mengenai materi Bayangan ini, suatu


objek akan terbentuk dengan fungsi program yang di inginkan dan yang kita
masukkan pada source code atau program sesuai aturan yang berlaku. Kemudian
objek tersebut akan teratur bayangan yang disertai pencahayaannya dengan
memerhatikan sintaks atau fungsi program yang kita masukkan atau yang kita
perintahkan, serta memerhatikan jenis-jenis pencahayaan yang akan digunakan.

8
DAFTAR PUSTAKA

Darmawan, M. Q. (n.d.). Pengertian Objek Solid dan Lighting. Retrieved from


www.academia.edu:
https://www.academia.edu/44119470/Pengertian_Objek_Solid_dan_Lighti
ng
Rahayu, S. (2022). MODUL 11. Bayangan, 4.

Anda mungkin juga menyukai