Jumat, 23 April 2010

membuat objek kubus dan limas menggunakan pelles C

"MEMBUAT OBJEK KUBUS DAN LIMAS MENGGUNAKAN PELLES C (OPEN GL)"





UNIVERSITAS GUNADARMA
2010



Open GL
OpenGL adalah suatu spefikasi grafik yang low-level yang menyediakan fungsi untuk pembuatan grafik primitif termasuk titik, garis, dan lingkaran. OpenGL digunakan untuk mendefinisikan suatu objek, baik objek 2 dimensi maupun objek 3 dimensi. OpenGL juga merupakan suatu antarmuka pemrograman aplikasi (application programming interface (API) yang tidak tergantung pada piranti dan platform yang digunakan, sehingga OpenGL dapat berjalan pada sistem operasi Windows, UNIX dan sistem operasi lainnya. 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. Oleh karena itu, package OpenGL tersebut dapat di-download pada situs http://www.opengl.org sesuai dengan bahasa pemrograman yang akan digunakan. Selain OpenGL ada juga tools/library grafik yang dapat dipergunakan yaitu DirectX. Namun tools ini hanya dapat dipergunakan pada Microsoft Windows.
Pada semester 6 (enam) saya mendapat praktikum grafik computer dan mendapat materi tentang Open GL dan mencoba membuat objek seperti kubus, segitiga, limas. Dengan pengalaman itu saya akan mencoba membuat objek kubus beserta limas terbalik yang berputar (melakukan rotasi), yang mana merupakan tugas dari pemrograman multimedia supaya dapat membuat suatu objek menggunakan Open Gl. Sebelumnya saya akan menginstal terlebih dahulu software pelles c nya. Berkiut ini adalah cara-cara menginstal pelles c :
Cara menginstal Pelles c :


Untuk mengetahui bagaimana cara menginstal nya, buka install.txt. Di dalam file ini terdapat cara menginstal pelles c yaitu :
1. Install PellesC3.exe, seperti install program windows biasa, option biarkan seperti aslinya (default), install folder ke "E:\Praktikan\Praktikum"( khusus di LAB ).
2. Copy "glfw.h" ke "\include\win\gl\"
3. Copy "glfw.lib" ke "\lib\"
4. Copy "LabTI OpenGL.dll" ke "\bin\wizards\"


Setelah melakukan langkah-langkah diatas, maka pelles c telah terinstal, muncul folder baru untuk pelles c yang telah terinstal dengan nama “pelles c”. Dan software ini pun siap untuk digunakan.


Kemudian saya akan mencoba membuat 2 buah onjek yaitu kubus dan liman terbalik, yang mana kedua objek ini nanti nya akan melakukan rotasi.
Pertama-tama kita buka pelles c nya, pilih file->new->project->LabTI OpenGL Wizard (kalau belum ada option ini, berarti ada yang salah waktu install). Maka akan mucul program Open Gl seperti berikut ini.
#include
#include
#include
#include

void mulaiOpenGL(void);

int main(void)
{
//
// mRunning = TRUE, aplikasi masih berjalan
// mRunning = FALSE, ??? :p
GLuint mRunning = GL_TRUE;

//
// inisialisasi GLFW
if( glfwInit() == GL_FALSE )
{
MessageBox( NULL, "ERROR :: gagal menginisialisasi GLFW", "Error!", MB_OK);
return(0);
}
//
// buat sebuah window yang akan digunakan untuk menggambar.
if( glfwOpenWindow( 640, 480, 0, 0, 0, 0, 24, 0, GLFW_WINDOW ) == GL_FALSE )
{
MessageBox( NULL, "ERROR :: gagal membuat window", "Error!", MB_OK );
glfwTerminate();
return(0);
}
//
// Set judul yang ada di window dan Swap interval.
glfwSetWindowTitle( "Praktikum Grafik Komputer LabTI" );
glfwSwapInterval( 1 );
//
// mulai OpenGL (melakukan setting awal OpenGL)
mulaiOpenGL();
int r;
//
// mulai looping utama program
while( mRunning )
{
//
// bersihkan layar dan depth buffer
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glLoadIdentity();
//
// lakukan penggambaran di sini
//------------------------------------------------------------------------------------

//kubus atasnya limas terbalik
gluLookAt (10,10,10,0, 0,0,0,1,0) ;

glRotatef(r,0,0,1);
glBegin (GL_QUADS);
glColor3f (0,1,0);
glVertex3f (0,5,0);
glVertex3f (4,5,0);
glVertex3f (4,5,4);
glVertex3f (0,5,4);
glEnd();

glBegin (GL_TRIANGLES) ;
glColor3f (1,0,0);
glVertex3f (0,5,0);
glVertex3f (4,5,0);
glVertex3f (2,0,2);

glColor3f (1,0,1);
glVertex3f (4,5,0);
glVertex3f (4,5,4);
glVertex3f (2,0,2);

glColor3f (1,1,0);
glVertex3f (4,5,4);
glVertex3f (0,5,4);
glVertex3f (2,0,2);

glColor3f (1,1,1);
glVertex3f (0,5,4);
glVertex3f (0,5,0);
glVertex3f (2,0,2);

glEnd ();

glBegin (GL_QUADS);
glColor3f (1,0,1);
glVertex3f (0,0,0);
glVertex3f (4,0,0);
glVertex3f (4,0,4);
glVertex3f (0,0,4);


glColor3f (0,0,1);
glVertex3f (0,0,0);
glVertex3f (4,0,0);
glVertex3f (4,-4,0);
glVertex3f (0,-4,0);

glColor3f (0,1,1);
glVertex3f (4,0,0);
glVertex3f (4,0,4);
glVertex3f (4,-4,4);
glVertex3f (4,-4,0);

glColor3f (1,0,0);
glVertex3f (4,0,4);
glVertex3f (0,0,4);
glVertex3f (0,-4,4);
glVertex3f (4,-4,4);

glColor3f (1,1,0);
glVertex3f (0,0,4);
glVertex3f (0,0,0);
glVertex3f (0,-4,0);
glVertex3f (0,-4,4);

glColor3f (1,1,1);
glVertex3f (0,-4,0);
glVertex3f (4,-4,0);
glVertex3f (4,-4,4);
glVertex3f (0,-4,4);


glEnd ();
r++;

//------------------------------------------------------------------------------------
//
// tampilkan ke layar (swap double buffer)
glfwSwapBuffers();

//
// check input , apakah tombol esc ditekan atau tombol "close" diclick
mRunning = !glfwGetKey( GLFW_KEY_ESC ) && glfwGetWindowParam( GLFW_OPENED );
}

glfwTerminate();
return(0);
}

void mulaiOpenGL(void)
{
//
// Set viewport ke resolusi 640x480 viewport bisa diibaratkan
// layar monitor anda
glViewport( 0, 0, 640, 480 );
//
// Set mode OpenGL ke mode pryeksi (Projection) dan set proyeksi
// menggunakan proyeksi perspective, dengan sudut pandang (Field Of
// View) 60 derajat
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 60.0f, 640.0f/480.0f, 0.1f, 1000.0f );

glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
//
// Set mode gradasi warna halus (Smooth)
glShadeModel( GL_SMOOTH );
//
// warna yang digunakan untuk membersihkan layar
glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
//
// nilai untuk membersihkan depth buffer.
glClearDepth( 1.0f );
//
// Depth test digunakan untuk menghindari polygon yang
// tumpang tindih.
glEnable( GL_DEPTH_TEST );
glDepthFunc( GL_LEQUAL );
//
// beritahu OpenGL untuk menggunakan perhitungan perspective
// yang terbaik (perhitungan ini tidak bisa selalu 100% akurat)
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
}


Untuk membuat objek ini saya hanya memasukkan bagian program yang dimulai dari “// lakukan penggambaran di sini” hingga “glEnd (); r++; “. Karena program yang lainnya telah tersedia, jadi saya hanya memasukkan titik-titik koordinat untuk membuat objek kubus dan limas nya. Jika program di run, maka tampilan outputnya adalah seperti berikut :

Dan output dari program diatas adalah :


Objek kubus dan limas ini berputar (melakukan rotasi) dengan sumbu z sebagai titik sumbu putarnya.
Pada open gl ini saya menggunakan Pelles C, untuk membuat objek kubus dan limas segitiga terbalik kita cukup memasukkan titik-titik koordinat untuk membangun objek tersebut.
glRotatef(r,0,0,1);
 berfungsi sebagai titik putar (rotasinya) yaitu dengan sumbu putar Z


glBegin (GL_QUADS);
glColor3f (0,1,0);
glVertex3f (0,5,0);
glVertex3f (4,5,0);
glVertex3f (4,5,4);
glVertex3f (0,5,4);
glEnd();
 bagian diatas untuk membuat sisi persegi dari limas segi empatnya.
glBegin (GL_TRIANGLES) ;

glColor3f (1,0,0);
glVertex3f (0,5,0);
glVertex3f (4,5,0);
glVertex3f (2,0,2);

glColor3f (1,0,1);
glVertex3f (4,5,0);
glVertex3f (4,5,4);
glVertex3f (2,0,2);

glColor3f (1,1,0);
glVertex3f (4,5,4);
glVertex3f (0,5,4);
glVertex3f (2,0,2);

glColor3f (1,1,1);
glVertex3f (0,5,4);
glVertex3f (0,5,0);
glVertex3f (2,0,2);
glEnd ();

 bagian diatas untuk membuat sisi segitiga dari limas segi empat (jumlah sisi segitiganya ada 4).
Maka selesai membuat objek limas segiempatnya. Setelah itu kita membuat objek kubus nya. Berikut ini adalah potongan program nya :
glBegin (GL_QUADS);

glColor3f (1,0,1);
glVertex3f (0,0,0);
glVertex3f (4,0,0);
glVertex3f (4,0,4);
glVertex3f (0,0,4);

glColor3f (0,0,1);
glVertex3f (0,0,0);
glVertex3f (4,0,0);
glVertex3f (4,-4,0);
glVertex3f (0,-4,0);

glColor3f (0,1,1);
glVertex3f (4,0,0);
glVertex3f (4,0,4);
glVertex3f (4,-4,4);
glVertex3f (4,-4,0);

glColor3f (1,0,0);
glVertex3f (4,0,4);
glVertex3f (0,0,4);
glVertex3f (0,-4,4);
glVertex3f (4,-4,4);

glColor3f (1,1,0);
glVertex3f (0,0,4);
glVertex3f (0,0,0);
glVertex3f (0,-4,0);
glVertex3f (0,-4,4);

glColor3f (1,1,1);
glVertex3f (0,-4,0);
glVertex3f (4,-4,0);
glVertex3f (4,-4,4);
glVertex3f (0,-4,4);

glEnd ();


 Potongan program diatas adalah untuk membuat objek kubus nya.
Maka objek limas terbalik dan kubusnya selesai dibuat. Dengan adanya glRotatef(r,0,0,1);

maka objek limas dan kubus tersebut akan berputar sesuai sumbu nya yaitu dengan titik putar (sumbu) Z.

4 komentar:

Unknown mengatakan...

wah sangat membantu nih blognya, thx ya. saya juga nak gunadarma, kelas 3IA09

AldilaFauzi mengatakan...

saya ijin copy listingnya ya ka...
buat bikin LA

Requaza mengatakan...

ijin copas y. buat tugas grafkom

Unknown mengatakan...

Thank you for nice information
Kunjungi website kami :
https://journal.uhamka.ac.id/index.php/rektek/index

Posting Komentar