Example Projek Mobil 3D dengan OpenGl C++ dan C di CodeBlock
Example projek yang sangat mudah diFahami dan digunakan lengkap dengan sourcodenya sehingga dapat langsung digunakan . artikel ini disusun agar semua projek berjalan dengan lancar dana dapat digunakan untuk menyelesaikan tugas kuliah maupun tugas yang lainnya yang berhubungan dangan pemrograman OpenGl.
projek yang akan kita buat hasilnya aka seperti diatas. nanti akan ada beberapa efek yang akan disertakan dalam sourcodenya sehingga kendaraan tersebut dapat memutar dan lain-lain.
Adapun langkah-langkah untuk membuatnya adalah sebagai berikut :
- setting codeblocknya ikuti langkah-langkah di sini
- buat projek baru di codeblock caranya seperti disini
- masukan sourcode berikut ini yang ada dibawah
Code Program
#include <Gl/glut.h>
#include <math.h>
void cylinder(float alas,float atas,float tinggi);
void kerucut(float ngisor, float nduwur, float dowo);
void blok(float tebal,int ratiol,int ratiop);
GLfloat source_light[]={0.30,0.30,0.30,0.50};
double Loop,LoopAll=0;
void kendaraan(void)
{
glClearColor(0.0,1.0,0.0,0.0); //blackground
glShadeModel(GL_SMOOTH);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(50.0,1.5,10.0,1000.0);
glEnable (GL_DEPTH_TEST);
glPolygonMode (GL_FRONT_AND_BACK,GL_FILL);
glEnable (GL_LIGHTING);
glLightfv (GL_LIGHT7,GL_DIFFUSE,source_light);
glEnable (GL_LIGHT7);
glEnable (GL_COLOR_MATERIAL);
glColorMaterial (GL_FRONT_AND_BACK,GL_AMBIENT);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
/*
Keterangan:
glTranslatef :untuk menempatkan pada posisi yang tepat dengan sumbu (x, y, z)
glRotated : untuk memutar objek agar sesuai dengan keinginan.
cylinder: untuk membentuk model tabung
*/
glTranslatef(0,0,-100);// besar kecilnya mobil
Loop++;
glRotatef(Loop,0.9,4.0,0.6);//mobil yang berotasi
glPushMatrix();//body
//glpushmatrix();
glColor3f(0.0,1.0,0.0);
blok(10, 3, 2);
glTranslatef(0, 9, 0);
blok(10, 3, 2);
glTranslatef(10, -10,0);
blok(10, 5.5, 2);
glRotatef(-35, 0, 0, 15);
glTranslatef(0, 7,0);
blok(10, 2, 2);
glTranslatef(2, 4.9,-2.5);
glColor3f(0.0,0.0,0.0);// warna kaca depan
blok(0.5, 20, 31);
glRotatef(180, 45, -45, 0);
glPopMatrix();
glPushMatrix();//roda kanan depan
glColor3f(1.0,0.0,0.0);
glTranslatef(20, -8,-7);
cylinder(5, 5,3);
glColor3f(1.0,0.0,0.0); // roda belakang kanan
glTranslatef(-20, 8,7);
glTranslatef(-5, -8,-7);
cylinder(5, 5,3);
glColor3f(1.0,0.0,0.0);// roda belakang kiri
glTranslatef(5, 8,7);
glRotatef(180,0,180,0);
glTranslatef(3,-8,-17);
cylinder(5, 5,3);
glColor3f(1.0,0.0,0.0); // roda depan kiri
glTranslatef(-3,8,17);
glTranslatef(-22,-8,-17);
cylinder(5, 5,3);
glColor3f(0.0,0.0,0.0); // all kaca samping kanan dan kiri
glRotatef(90,1,0,0);
glTranslatef(8, 2.5,-15);
blok(2, 4, 5);
glRotatef(90,0,1,0);
glTranslatef(0,-0.2,7);
blok(2, 4, 8);
glColor3f(0.0,0.0,0.0);
glRotatef(0,0,0,0);
glTranslatef(0,19.2,0);
blok(2, 4, 8);
glColor3f(0.0,0.0,0.0);
glRotatef(90,0,1,0);
glTranslatef(7, 0,-8);
blok(2, 4, 5);
glColor3f(9.9,9.9,0.0);//lampu
glRotatef(90,0,1,0);
glTranslatef(0,-3,20);
cylinder(2, 2,3);
glColor3f(9.9,9.9,0.0);//lampu
glRotatef(0,0,0,0);
glTranslatef(0,-12,0);
cylinder(2, 2,3);
glColor3f(1.0,1.0,1.0);//knalpot kanan
glRotatef(0,0,0,0);
glTranslatef(0,-0.5,-52);
cylinder(2, 1,3);
glColor3f(1.0,1.0,1.0);//knalpot kiri
glRotatef(0,0,0,0);
glTranslatef(0,11.5,0);
cylinder(2, 1,3);
glColor3f(0.0,0.0,0.0); // kaca belakang
glRotatef(90,1,0,0);
glTranslatef(-7,3.5,-0.5); // geser bawah,kedalam, geser kiri
blok(2, 6.0, 7.0);
glPopMatrix();
glFlush();
glutSwapBuffers();
}
void kerucut(float bottom, float up, float width)
{
float i;
glPushMatrix();
glTranslatef(1.0,0.0,bottom/24);
glutSolidCone(bottom,0,32,4);
for(i=0;i<=width;i+=bottom/24)
{
glTranslatef(0.0,0.0,bottom/24);
glutSolidTorus(bottom/4,bottom-((i*(bottom-up))/width),16,16);
}
glTranslatef(0.0,0.0,bottom/4);
glutSolidCone(up,0,20,1);
glColor3f(0.,1.,1.);
glPopMatrix();
}
void cylinder(float alas,float up,float height)
{
float i;
glPushMatrix();
glTranslatef(1.0,0.0,-alas/8); // perpindahan dari X,Y,Z
glutSolidCone(alas,0,32,4);
for(i=0;i<=height;i+=alas/24)
{
glTranslatef(0.0,0.0,alas/24);
glutSolidTorus(alas/4,alas-((i*(alas-up))/height),16,16);
}
glTranslatef(0.0,0.0,alas/4);
glutSolidCone(height,0,20,1);
glColor3f(0.,0.,0.);
glPopMatrix();
}
void blok(float tebal,int ratiol,int ratiop)
{
float i,j;
glPushMatrix();
for(i=0;i<ratiop;i++)
{
glTranslatef(-(ratiol+1)*tebal/2,0.0,0.0);
for(j=0;j<ratiol;j++)
{
glTranslatef(tebal,0.0,0.0);
glutSolidCube(tebal);
}
glTranslatef(-(ratiol-1)*tebal/2,0.0,tebal);
}
glPopMatrix();
}
void munculsih()
{
display();
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);//|GLUT_DEPTH);
glutInitWindowPosition(10,10);
glutInitWindowSize(500,600);
glutCreateWindow("Mobil");
glClearColor(0.5,0.5,0.0,0.0);
glutDisplayFunc(display);
gluOrtho2D(-320., 320., -240.0, 240.0);
glutIdleFunc(munculsih);
kendaraan();
glutMainLoop();
return(0);
}
kemudian build and run program tersebut.. atau bisa memencet tombol f9 maka hasilnya seperti ini.
taraaaaa......
selamat mencoba dan semoga berhasil.... dan semangat belajarnya ok.
jangan lupa berkomentar kesan-kesannya setelah mencobanya. dan juga bila ada pertanyaan silahkan tanyakan dibawah.
Daftar pustaka
- http://kuli-kuliah.blogspot.co.id/2012/04/mobil-3d-c-tugas-grafika-komputer.html
0 Response to "Example Projek Mobil 3D dengan OpenGl C++ dan C di CodeBlock"
Post a Comment