Anda di halaman 1dari 15

Membuat Karakter Kartun Doraemon menggunakan openGL

Berikut ini adalah salah satu dari beberapa pada mata kuliah komputer grafis, tugas yang di
berikan untuk menguji pemahaman mahasiswa dalam menggunakan bahasa pemrograman
openGL dan tugas ini akan dinilai sebagai nilai Ujian Akhir Semester (UAS).
Pada ini penulis di berikan tugas untuk membuat objek berupa bentuk karakter dan berisi
ekspresi gambar, dari beberapa judul yang diberikan akhirnya penulis menentukan untuk
membuat karakter kartun yaitu karakter kartun doraemon. sperti ini....

saya menggunakan aplikasi Dev c++ dalam pembuatan karakter kartun ini.. Aplikasi tersebut
dapat anda download di di link berikut di sini..
Mari kita lihat apa yang dapat di hasilkan dari kode program berikut ini.. berikut langkah langkah nya..
/
***************************************************************************
****/
Pertama kita akan meng include kan beberapa file header...
Kita menambahkan header <math.h> untuk dapat menggunakan fungsi matematika
/**************************
* Includes
*
**************************/
#include <windows.h>
#include <gl/gl.h>
#include <math.h>
/
***************************************************************************
****/
Kemudian kita akan mendeklarasikan beberapa variabel yang kita butuhkan..
const double PI = 3.14;
int i,radius,jumlah_titik,x_tengah,y_tengah;
int r,jt,x_t,y_t,j,s,xa,ya;
/
***************************************************************************
****/
Pemberian nama Doraemon by Arta pada jendela output program

Langkah selanjutnya jika teman-teman ingin mengganti nama jendela program kita,
seperti ini ..

untuk mengganti nama windownya ktia dapat menggantinya pada bagian ini..
WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE,
"GLSample", "Doraemon by Arta",
/
***************************************************************************
****/
pada bagian berikut inilah merupakan bagian terpenting dari program ini..
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
glClear (GL_COLOR_BUFFER_BIT);
--> Baris pertama untuk merubah warna dasar dari program..
--> Baris Kedua untuk membersihkan window, kemudian window diberi warna sesuai
dengan warna yang telah kita tetapkan sebelumnya dengan menggunakan
glClearColor();
Fungsi ini akan menghapus window dan memberi warna yang telah kita definisikan
sebelumnya dengan menggunakan glClearColor

/
***************************************************************************
****/
Kemudian ktia mulai menggambar menggunakan bentuk - bentuk dasar yang telah disediakan
oleh openGL..
glBegin (GL_TRIANGLE_FAN);
//latar
glColor3f (0.0f, 0.8f, 0.0f); glVertex2f (0.87f, 0.95f);
glColor3f (0.0f, 0.8f, 0.0f); glVertex2f (-0.87f, 0.95f);
glColor3f (1.0f, 1.0f, 1.0f); glVertex2f (-0.87f, -0.8f);
glColor3f (1.0f, 1.0f, 1.0f); glVertex2f (0.87f, -0.8f);
glEnd ();
//end latar
//kaki kiri
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0,1.0,1.0);
glVertex2f(-0.02,-0.48);
glVertex2f(-0.27,-0.48);

glVertex2f(-0.31,-0.5);
glVertex2f(-0.34,-0.53);
glVertex2f(-0.34,-0.57);
glVertex2f(-0.32,-0.6);
glVertex2f(-0.3,-0.61);
glVertex2f(-0.25,-0.62);
glVertex2f(-0.1,-0.59);
glVertex2f(-0.05,-0.57);
glVertex2f(-0.02,-0.55);
glVertex2f(-0.01,-0.52);
glVertex2f(-0.01,-0.50);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f(0.0,0.0,0.0);
glVertex2f(-0.02,-0.48);
glVertex2f(-0.27,-0.48);
glVertex2f(-0.31,-0.5);
glVertex2f(-0.34,-0.53);
glVertex2f(-0.34,-0.57);
glVertex2f(-0.32,-0.6);
glVertex2f(-0.3,-0.61);
glVertex2f(-0.25,-0.62);
glVertex2f(-0.1,-0.59);
glVertex2f(-0.05,-0.57);
glVertex2f(-0.02,-0.55);
glVertex2f(-0.01,-0.52);
glVertex2f(-0.01,-0.50);
glEnd();
// kaki kanan
glBegin(GL_TRIANGLE_FAN);
glColor3f(1.0,1.0,1.0);
glVertex2f(0.02,-0.48);
glVertex2f(0.27,-0.48);
glVertex2f(0.31,-0.5);
glVertex2f(0.34,-0.53);
glVertex2f(0.34,-0.57);
glVertex2f(0.32,-0.6);
glVertex2f(0.3,-0.61);
glVertex2f(0.25,-0.62);
glVertex2f(0.1,-0.59);
glVertex2f(0.05,-0.57);
glVertex2f(0.02,-0.55);
glVertex2f(0.01,-0.52);
glVertex2f(0.01,-0.50);
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f(0.0,0.0,0.0);

glVertex2f(0.02,-0.48);
glVertex2f(0.27,-0.48);
glVertex2f(0.31,-0.5);
glVertex2f(0.34,-0.53);
glVertex2f(0.34,-0.57);
glVertex2f(0.32,-0.6);
glVertex2f(0.3,-0.61);
glVertex2f(0.25,-0.62);
glVertex2f(0.1,-0.59);
glVertex2f(0.05,-0.57);
glVertex2f(0.02,-0.55);
glVertex2f(0.01,-0.52);
glVertex2f(0.01,-0.50);
glEnd();
//end kaki
//badan
glBegin(GL_TRIANGLE_FAN);
glColor3f(0.0,0.0,1.0);
glVertex2f(0.29,0.12);//TANGAN KANAN
glVertex2f(0.29,0.0);
glVertex2f(0.55,0.3);
glVertex2f(0.5,0.35);
glVertex2f(0.2,0.19);//body atas
glVertex2f(-0.29,0.19);//tangan kiri
glVertex2f(-0.3,0.18);
glVertex2f(-0.32,0.15);
glVertex2f(-0.33,0.12);
glVertex2f(-0.34,0.09);
glVertex2f(-0.35,0.05);
glVertex2f(-0.357,0.02);
glVertex2f(-0.36,-0.03);
glVertex2f(-0.365,-0.05);
glVertex2f(-0.36,-0.1);
glVertex2f(-0.34,-0.13);
glVertex2f(-0.3,-0.15);
glVertex2f(-0.3,0.05);
glVertex2f(-0.29,-0.3);
glVertex2f(-0.28,-0.4);
glVertex2f(-0.275,-0.48);
glVertex2f(-0.27,-0.5);//body bawah
glVertex2f(-0.03,-0.5);
glVertex2f(-0.01,-0.4);
glVertex2f(0.0,-0.4);
glVertex2f(0.01,-0.4);
glVertex2f(0.03,-0.5);
glVertex2f(0.27,-0.5);

glVertex2f(0.28,-0.4);
glVertex2f(0.29,-0.3);
glEnd();
//garis badan
glBegin(GL_LINE_LOOP);
glColor3f(0.0,0.0,0.0);
glVertex2f(0.29,0.12);//TANGAN KANAN
glVertex2f(0.29,0.0);
glVertex2f(0.55,0.3);
glVertex2f(0.5,0.35);
glVertex2f(0.2,0.19);//body atas
glVertex2f(-0.29,0.19);//tangan kiri
glVertex2f(-0.3,0.18);
glVertex2f(-0.32,0.15);
glVertex2f(-0.33,0.12);
glVertex2f(-0.34,0.09);
glVertex2f(-0.35,0.05);
glVertex2f(-0.357,0.02);
glVertex2f(-0.36,-0.03);
glVertex2f(-0.365,-0.05);
glVertex2f(-0.36,-0.1);
glVertex2f(-0.34,-0.13);
glVertex2f(-0.3,-0.15);
glVertex2f(-0.3,0.05);
glVertex2f(-0.29,-0.3);
glVertex2f(-0.28,-0.4);
glVertex2f(-0.275,-0.48);
glVertex2f(-0.27,-0.5);//body bawah
glVertex2f(-0.03,-0.5);
glVertex2f(0.0,-0.43);
glVertex2f(0.01,-0.4);
glVertex2f(0.03,-0.5);
glVertex2f(0.27,-0.5);
glVertex2f(0.28,-0.4);
glVertex2f(0.29,-0.3);
glEnd();
//end garis badan
//tangan
glBegin(GL_TRIANGLE_FAN);
glColor3f( 1.0f, 1.0f, 1.0f);
radius=7;
jumlah_titik=180;
x_tengah=50;
y_tengah=30;

for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=7;
jumlah_titik=180;
x_tengah=50;
y_tengah=30;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();//akhir tangan
//EKOR
glBegin(GL_TRIANGLE_FAN);
glColor3f( 0.7f, 0.0f, 0.0f);
radius=4;
jumlah_titik=180;
x_tengah=-37;
y_tengah=-33;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
glBegin(GL_LINES);
glColor3f(0.0,0.0,0.0);
glVertex2f(-0.33,-0.32);
glVertex2f(-0.28,-0.30);
glEnd();
//akhir ekor
//akhir badan
//KEPALA BIRU

glBegin(GL_TRIANGLE_FAN);
glColor3f( 0.0f, 0.0f, 1.0f);
radius=40;
jumlah_titik=360;
x_tengah=0;
y_tengah=50;
for (i=194;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//END KEPALA BIRU
//KEPALA putih
glBegin(GL_TRIANGLE_FAN);
glColor3f( 1.0f, 1.0f, 1.0f);
radius=30;
jumlah_titik=360;
x_tengah=0;
y_tengah=43;
for (i=194;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//linkaran hitam 1
glBegin(GL_LINE_LOOP);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=30;
jumlah_titik=360;
x_tengah=0;
y_tengah=43;
for (i=194;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//lingkaran hitam mata kiri

glBegin(GL_LINE_LOOP);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=10;
jumlah_titik=180;
x_tengah=-12;
y_tengah=73;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//lingkaran hitam mata KANAN
glBegin(GL_LINE_LOOP);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=10;
jumlah_titik=180;
x_tengah=12;
y_tengah=73;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//MATA KIRI
glBegin(GL_TRIANGLE_FAN);
glColor3f( 1.0f, 1.0f, 1.0f);
radius=10;
jumlah_titik=180;
x_tengah=-12;
y_tengah=73;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//MATA KANAN
glBegin(GL_TRIANGLE_FAN);
glColor3f( 1.0f, 1.0f, 1.0f);

radius=10;
jumlah_titik=180;
x_tengah=12;
y_tengah=73;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//BOLA MATA KANAN
glBegin(GL_TRIANGLE_FAN);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=3;
jumlah_titik=180;
x_tengah=17;
y_tengah=76;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//BOLA MATA KIRI
glBegin(GL_TRIANGLE_FAN);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=3;
jumlah_titik=180;
x_tengah=-8;
y_tengah=76;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(3.25*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//BIBIR
glBegin(GL_TRIANGLE_FAN);
glColor3f( 1.0f, 0.0f, 0.0f);
radius=20;

jumlah_titik=180;
x_tengah=0;
y_tengah=50;
for (i=90;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//lidah
glBegin(GL_LINES);
glColor3f( 0.0,0.0,0.0);
glVertex2f(-0.05,0.42);
glVertex2f(0.05,0.42);
//kanan
glVertex2f(0.05,0.42);
glVertex2f(0.08,0.41);
glVertex2f(0.08,0.41);
glVertex2f(0.1,0.4);
glVertex2f(0.1,0.4);
glVertex2f(0.12,0.39);
glVertex2f(0.12,0.39);
glVertex2f(0.13,0.38);
glVertex2f(0.13,0.38);
glVertex2f(0.14,0.37);
glVertex2f(0.14,0.37);
glVertex2f(0.15,0.36);
//kiri
glVertex2f(-0.05,0.42);
glVertex2f(-0.08,0.41);
glVertex2f(-0.08,0.41);
glVertex2f(-0.1,0.4);
glVertex2f(-0.1,0.4);
glVertex2f(-0.12,0.39);
glVertex2f(-0.12,0.39);
glVertex2f(-0.13,0.38);

glVertex2f(-0.13,0.38);
glVertex2f(-0.14,0.37);
glVertex2f(-0.14,0.37);
glVertex2f(-0.15,0.36);
glEnd();//akhir lidah
//kumis kiri 1
glBegin(GL_LINE_LOOP);
glColor3f(0.0f,0.0f,0.0f);
glVertex2f(-0.14f,0.60f); // titik kanan
glVertex2f(-0.25f,0.66f); // titik kiri
glEnd();
//kumis kiri 2
glBegin(GL_LINE_LOOP);
glColor3f(0.0f,0.0f,0.0f);
glVertex2f(-0.17f,0.56f); // titik kanan
glVertex2f(-0.27f,0.56f); // titik kiri
glEnd();
//kumis kiri 3
glBegin(GL_LINE_LOOP);
glColor3f(0.0f,0.0f,0.0f);
glVertex2f(-0.14f,0.52f); // titik kanan
glVertex2f(-0.27f,0.49f); // titik kiri
glEnd();
//kumis kanan 1
glBegin(GL_LINE_LOOP);
glColor3f(0.0f,0.0f,0.0f);
glVertex2f(0.14f,0.60f); // titik kanan
glVertex2f(0.25f,0.66f); // titik kiri
glEnd();
//kumis kanan 2
glBegin(GL_LINE_LOOP);
glColor3f(0.0f,0.0f,0.0f);
glVertex2f(0.17f,0.56f); // titik kanan
glVertex2f(0.27f,0.56f); // titik kiri
glEnd();
//kumis kanan 3
glBegin(GL_LINE_LOOP);
glColor3f(0.0f,0.0f,0.0f);
glVertex2f(0.14f,0.52f); // titik kanan
glVertex2f(0.27f,0.49f); // titik kiri
glEnd();
//hidung merah

glBegin(GL_TRIANGLE_FAN);
glColor3f( 0.7f, 0.0f, 0.0f);
radius=4;
jumlah_titik=180;
x_tengah=0;
y_tengah=64;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//hidung putih
glBegin(GL_TRIANGLE_FAN);
glColor3f( 1.0f, 1.0f, 1.0f);
radius=1;
jumlah_titik=180;
x_tengah=-1;
y_tengah=65;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//garis hidung
glBegin(GL_LINES);
glColor3f(0.0,0.0,0.0);
glVertex2f(0.0,0.6);
glVertex2f(0.0,0.53);
glEnd();
//Kantong doraemon
// lingkar putih di badan
glBegin(GL_TRIANGLE_FAN);
glColor3f( 1.0f, 1.0f, 1.0f);
radius=22;
jumlah_titik=180;
x_tengah=0;
y_tengah=-2;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);

float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
glBegin(GL_LINE_LOOP);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=22;
jumlah_titik=180;
x_tengah=0;
y_tengah=-2;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
// end lingkar putih di badan
//kantong
glBegin(GL_LINE_LOOP);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=18;
jumlah_titik=180;
x_tengah=0;
y_tengah=-2;
for (i=90;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//end kantong
//end kantong doraemon
//kalung, linkar merah
glBegin(GL_TRIANGLE_FAN);
glColor3f(0.7,0.0,0.0);
glVertex2f(0.28,0.22);//garis atas
glVertex2f(-0.28,0.22);
glVertex2f(-0.28,0.22);//elips kiri
glVertex2f(-0.29,0.21);
glVertex2f(-0.29,0.21);

glVertex2f(-0.29,0.20);
glVertex2f(-0.28,0.18);//garis bawah
glVertex2f(0.28,0.18);
glVertex2f(0.28,0.18);//elips kanan
glVertex2f(0.29,0.20);
glVertex2f(0.29,0.21);
glVertex2f(0.28,0.22);
glEnd();
//mainan kalung
glBegin(GL_TRIANGLE_FAN);
glColor3f( 8.0f, 0.8f, 0.0f);
radius=5;
jumlah_titik=180;
x_tengah=0;
y_tengah=16;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glColor3f( 0.0f, 0.0f, 0.0f);
radius=1.5;
jumlah_titik=180;
x_tengah=0;
y_tengah=15;
for (i=0;i<=jumlah_titik;i++)
{
float sudut=i*(2*PI/jumlah_titik);
float x=x_tengah+radius*cos(sudut);
float y=y_tengah+radius*sin(sudut);
glVertex2f(x/100,y/100);
}
glEnd();
//garis
glBegin(GL_LINES);
glVertex2f(0.0,0.16);
glVertex2f(0.0,0.115);
glEnd();
glBegin(GL_LINES);

glVertex2f(-0.045,0.19);
glVertex2f(0.045,0.19);
glEnd();
glBegin(GL_LINES);
glVertex2f(-0.05,0.175);
glVertex2f(0.05,0.175);
glEnd();
//akhir kalung
/
***************************************************************************
****/

Anda mungkin juga menyukai