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:
nggak ada yang pake java ya, kak?
kak punyaku kok gak nampak danbo nya? makasih ya tutorialnya
kak punyaku kok gak nampak danbo nya? makasih ya tutorialnya
Posting Komentar