Adsterra

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 :
  1. setting codeblocknya ikuti langkah-langkah di sini
  2. buat projek baru di codeblock caranya seperti disini
  3. 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

  1. 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

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel