Kebersamaan itu indah...

Kebersamaan itu indah...
Bajul mati, 23 April 2013

Program Danborad 3 Dimensi dengan openGl


berikut adalah program untuk membuat sebuah objek 3 dimensi dengan bentuk danboard menggunakan openGl :

#include <stdlib.h>
#include <glut.h>

int w=400, h=400, z=0;
int x1=0, y1=0, sudut=0, z1=0;

void renderScene(void){
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 glLoadIdentity();
 glTranslatef(0,0,z);
 glRotatef(sudut,x1,y1,z1);
 //badan
 glPushMatrix();
 glColor3f(0.82, 0.70, 0.39);
 glScalef(2,3,1);
 glutSolidCube(1);
 glPopMatrix();
 //kepala
 glPushMatrix();
 glColor3f(0.82, 0.70, 0.39);
 glTranslatef(0,2.6,0);
 glScalef(3.8,2.4,2);
 glutSolidCube(1);
 glPopMatrix();
 //kaki kiri
 glPushMatrix();
 glColor3f(0.82, 0.70, 0.39);
 glTranslatef(-0.5, -2.25, 0);
 glScalef(0.7,1.5,0.5);
 glutSolidCube(1);
 glPopMatrix();
 // kaki kanan
 glPushMatrix();
 glColor3f(0.82, 0.70, 0.39);
 glTranslatef(0.5, -2.25, 0);
 glScalef(0.7,1.5,0.5);
 glutSolidCube(1);
 glPopMatrix();
 // tangan kiri
 glPushMatrix();
 glColor3f(0.82, 0.70, 0.39);
 glTranslatef(-2.25, 1.2, 0);
 glRotatef(65,0,0,1);
 glScalef(0.5,2.2,0.5);
 glutSolidCube(1);
 glPopMatrix();
 //tangan kanan
 glPushMatrix();
 glColor3f(0.82, 0.70, 0.39);
 glTranslatef(1.47, -0.3, 0);
 glRotatef(-170,0,0,1);
 glScalef(0.5,2.2,0.5);
 glutSolidCube(1);
 glPopMatrix();
 //bola kiri
 glPushMatrix();
 glColor3f(0.5,0.35,0.05);
 glTranslatef(-1.25,0.7, 0);
 glScalef(0.3,0.3,0.3);
 glutSolidSphere(1,50,50);
 glPopMatrix();
 //bola kanan
 glPushMatrix();
 glColor3f(0.5,0.35,0.05);
 glTranslatef(1.25,0.8, 0);
 glScalef(0.3,0.3,0.3);
 glutSolidSphere(1,50,50);
 glPopMatrix();
 //mata kanan
 glPushMatrix();
 glColor3f(0,0,0);
 glTranslatef(0.7,2.7,0.9);
 glScalef(0.2,0.2,0.2);
 glutSolidSphere(1,50,50);
 glPopMatrix();
 //mata kiri
 glPushMatrix();
 glColor3f(0,0,0);
 glTranslatef(-0.7,2.7,0.9);
 glScalef(0.2,0.2,0.2);
 glutSolidSphere(1,50,50);
 glPopMatrix();
 //hidung
 glPushMatrix();
 glColor3f(0,0,0);
 glTranslatef(0,2.2,1);
 glScalef(0.3,0.3,0.3);
 glRotatef(90,0,1,1);
 glutSolidTetrahedron();
 glPopMatrix();

 glutSwapBuffers();
}

void myKeyboard(unsigned char key, int x, int y){
 if (key =='a') z+=2;
 else if (key == 'd') z-=2;
 else if (key == 'x') {
  x1=1;
  y1=0;
  z1=0;
  sudut+=10;
 }
 else if (key == 'y') {
  y1=1;
  x1=0;
  z1=0;
  sudut+=-10;
 }
 else if (key == 'z') {
  y1=0;
  x1=0;
  z1=1;
  sudut+=-10;
 }
}

void resize(int w1, int h1){
 glViewport(0,0,w1,h1);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(45.0,(float) w1/(float) h1, 1.0,300.0);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
}

void init(){
 glClearColor(0,0,0,1);
 glEnable(GL_DEPTH_TEST);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(45.0,(GLdouble) w/(GLdouble) h, 1.0,300.0);
 glMatrixMode(GL_MODELVIEW);
}

void timer(int value){
 glutPostRedisplay();
 glutTimerFunc(50,timer,0);
}

void main (int argc, char **argv){
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA);
 glutInitWindowPosition(100,100);
 glutInitWindowSize(w,h);
 glutCreateWindow("3D");
 gluOrtho2D(-w/2,w/2,-h/2,h/2);
 glutReshapeFunc(resize);
 glutDisplayFunc(renderScene);
 glutKeyboardFunc(myKeyboard);
 glutTimerFunc(1,timer,0);
 init();
 glutMainLoop();
}



Jika program diatas dieksekusi maka objek yang dihasilkan adalah :


Keterangan :
Program diatas merupakan program membuat danboard 3 dimensi. Danboard tersebut dibentuk dengan menggabungkan fungsi-fungsi 3 dimensi opengl. Pada program diatas menggunakan fungsi glutSolidCube() untuk membentuk kepala, kaki, tangan, dan badan. Fungsi glutSolidSphere() untuk membentuk ke dua lengan dan mata, dan fungsi glutSolidTetrahedron() untuk membentuk hidung. Fungsi-fungsi tersebut menggunakan solid agar warna yang diberikan dapat memblok seluruh bagian objek 3 dimensi yang digunakan. Objek danboard tersebut dapat diputar dan dan dilihat setiap sisinya terhadap 3 sumbu yaitu sumbu x, y, dan z. 

3 komentar:

Bagusyz mengatakan...

nggak ada yang pake java ya, kak?

Unknown mengatakan...

kak punyaku kok gak nampak danbo nya? makasih ya tutorialnya

Unknown mengatakan...

kak punyaku kok gak nampak danbo nya? makasih ya tutorialnya

Posting Komentar