Grafika Komputer “Lighting dan Material”

  1. Bentuk Solid

Fungsi Solid merupakan implementasi dari object 3D yang berpusat pada asal pemodelan sistem koordinat. Utara dan kutub selatan bola berada di Z positif dan negatif sumbu-masing-masing dan meridian utama persimpangan sumbu X positif.

Berikut adalah list untuk bangun 3D:

  1. Kubus Solid

void glutSolidCube(GLdouble size);

  1. Fungsi glutSolidSphere membuat bola berpusat pada asal pemodelan sistem koordinat. Utara dan kutub selatan bola berada di Z positif dan negatif sumbu-masing-masing dan meridian utama persimpangan sumbu X positif.
  2. Kerucut Solid.
  3. Torus Solid.
  4. Dodecahedron Solid
  5. Tetra Hedron solid.
void glutSolidSphere(GLdouble radius,GLint slices, GLint stacks);
void glutSolidCone(GLdouble base, GLdouble height,GLint slices, GLint stacks);
void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings);
void glutSolidDodecahedron(void);

glutSolidTetrahedron void (void);

  1. Oktahedron solid.
  2. Icosahedron solid.
  3. Poci teh solid
void glutSolidOctahedron(void);
void glutSolidIcosahedron(void);
void glutSolidTeapot(GLdouble size);
2.    Lengkapi pada fungsi init seperti di bawah ini.
Gambar

1.      Fungsi di atas adalah fungsi inisialisasi untuk pencahayaan dimana efek pencahayaan bersifat menyeluruh dan menyebabkan semua obyek memiliki warna serupa. Agar warna tiap obyek 3d berbeda dengan efek pencahayaan yang aktif maka fungsi dasarnya pada inisialisasi adalah glColorMaterial(GLenum face,Glenum mode); Fungsi di atas dapat diaktifkan setelah glEnable(GL_COLOR_MATERIAL) Parameter face adalah variabel untuk menentukan bagaimana material warna obyek 3D ditampilkan, pilihannya antara lain GL_FRONT atau GL_BACK, Sedangkan parameter mode adalah variabel untuk memilih material warna jenis apa yang diaktifkan pilihannya antara lain:

Gambar

KODE PROGRAM UNTUK MEMBUAT GAMBAR RUMAH YANG MENGGUNAKAN LIGHTING dan MATERIAL

#include <stdlib.h>

#include <gl/glut.h>

int w=600, h=600, z=0;

int x1=0, y1=0, sudut=0, z1=0;

float skalaX=1, skalaY=1, skalaZ=1;

int cx, cy;

void myKeyboard(unsigned char key, int x, int y){

 if (key ==’a’) z+=5;

 else if (key == ‘s’) z-=5;

 else if (key == ‘d’) skalaX+=0.5;

 else if (key == ‘w’) skalaX-=1;

 else if (key == ‘e’) skalaY+=0.5;

 else if (key == ‘r’) skalaY-=1;

 else if (key == ‘t’) skalaZ+=0.5;

 else if (key == ‘u’) skalaZ-=1;

 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 init(){

 GLfloat LightPosition[] = {10.0f, 10.0f, 20.0f, 0.0f};

 GLfloat LightAmbient[] = {0.0f, 1.0f, 0.0f, 1.0f};

 GLfloat LightDiffuse[] = {0.7f, 0.7f, 0.7f, 1.0f};

 GLfloat LightSpecular[] = {0.5f, 0.5f, 0.5f, 1.0f};

 GLfloat Shine[] = { 80 };

 glShadeModel(GL_SMOOTH);

 glClearColor(0.0f,0.0f,0.0f,0.5f);

 glClearDepth(1.0f);

 glEnable(GL_DEPTH_TEST);

 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

 glMaterialfv(GL_FRONT, GL_SPECULAR, LightSpecular);

 glMaterialfv(GL_FRONT, GL_SHININESS, Shine);

 glEnable(GL_LIGHTING);

 glEnable(GL_LIGHT0);

 return;

}

void pagar(){

//pagar

glPushMatrix();

glEnable(GL_COLOR_MATERIAL);

glTranslatef(3,-1,1);

glColor3f(1,1,0);

glPushMatrix();

glTranslatef(-1,0.2,0);

glScalef(5.4,0.2,0.1);

glutSolidCube(1);

glPopMatrix();

glPushMatrix();

glTranslatef(-1,-0.2,0);

glScalef(5.4,0.2,0.1);

glutSolidCube(1);

glPopMatrix();

glScalef(0.2,1,0.1);

//glutSolidCube(1);

glTranslatef(2,0,0);

glutSolidCube(1);

glTranslatef(2,0,0);

glutSolidCube(1);

glTranslatef(2,0,0);

glutSolidCube(1);

glTranslatef(2,0,0);

//glutSolidCube(1);

glTranslatef(2,0,0);

//glutSolidCube(1);

glTranslatef(2,0,0);

//glutSolidCube(1);

glTranslatef(2,0,0);

//glutSolidCube(1);

glTranslatef(-12,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glTranslatef(-2,0,0);

glutSolidCube(1);

glDisable(GL_COLOR_MATERIAL);

glPopMatrix();

}

void renderScene(void){

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

 glClearColor(1,1,1,1);

 glLoadIdentity();

 glTranslatef(0,0,z);

 glRotatef(sudut,x1,y1,z1);

 glScalef(skalaX, skalaY, skalaZ);

 //tembok

 glPushMatrix();

 glEnable(GL_COLOR_MATERIAL);

 glColor3f(0.5,0.5,0.5);

 glRotatef(50,0,1,0);

 glutSolidCube(3);

 glDisable(GL_COLOR_MATERIAL);

//pagar

glPushMatrix();

glTranslatef(-2,0,-3.5);

pagar();

glPopMatrix();

glPushMatrix();

glRotatef(-90,0,1,0);

glTranslatef(-2,0,1.5);

pagar();

glPopMatrix();

glPushMatrix();

glRotatef(-90,0,1,0);

glTranslatef(-2,0,-3.5);

pagar();

glPopMatrix();

 //pintu

glPushMatrix();

glEnable(GL_COLOR_MATERIAL);

glColor3f(0.2,0,1);

glTranslatef(-0.6,-1,1.46);

glScalef(7,10,1);

glutSolidCube(0.1);

glDisable(GL_COLOR_MATERIAL);

glPopMatrix();

//jendela

glPushMatrix();

glEnable(GL_COLOR_MATERIAL);

glColor3f(1,0.5,0);

glTranslatef(0.5,0.1,1.46);

glScalef(3,3,1);

glutSolidCube(0.1);

glDisable(GL_COLOR_MATERIAL);

glPopMatrix();

glPushMatrix();

glEnable(GL_COLOR_MATERIAL);

glColor3f(1,0.5,0);

glTranslatef(0.9,0.1,1.46);

glScalef(3,3,1);

glutSolidCube(0.1);

glDisable(GL_COLOR_MATERIAL);

glPopMatrix();

glPushMatrix();

glEnable(GL_COLOR_MATERIAL);

glColor3f(1,0.5,0);

glTranslatef(0.9,-0.3,1.46);

glScalef(3,3,1);

glutSolidCube(0.1);

glDisable(GL_COLOR_MATERIAL);

glPopMatrix();

glPushMatrix();

glEnable(GL_COLOR_MATERIAL);

glColor3f(1,0.5,0);

glTranslatef(0.5,-0.3,1.46);

glScalef(3,3,1);

glutSolidCube(0.1);

glDisable(GL_COLOR_MATERIAL);

glPopMatrix();

glPopMatrix();

//atap

 glPushMatrix();

 glEnable(GL_COLOR_MATERIAL);

 glColor3f(0.5,0,1);

 glRotatef(5,0,1,0);

 glTranslatef(0,1.5,0);

 glScalef(3,1.3,3);

 glutSolidOctahedron();

 glDisable(GL_COLOR_MATERIAL);

 glPopMatrix();

 glutSwapBuffers();

}

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 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(“MODUL 9”);

 glutDisplayFunc(renderScene);

 glutReshapeFunc(resize);

 glutKeyboardFunc(myKeyboard);

 glutTimerFunc(1,timer,0);

 init();

 glutMainLoop();

}

HASIL PROGRAMNYA

Gambar

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s