Subscribe Twitter FaceBook

Jumat, 30 Desember 2011

Model 3 Dimensi dengan OpenGl dan 3Ds Max

Model 3 Dimensi dengan OpenGl dan 3Ds Max
OpenGL
  Spesifikasi standar mendefinisikan API lintas bahasa, lintas-platform untuk menulis aplikasi yang menghasilkan grafik komputer 2D dan 3D
Membuat Model 3 Dimensi
  Pertama tentukan model 3 dimensi yang aka kita buat, misalnya kubus
  Buat sketsa dari kubus dalam koordinat X, Y, Z

Membuat Model 3 Dimensi #2
  Tentukan titik sudut yang akan digunakan untuk membentuk kubus. Kubus memiliki 8 titik sudut dan 6 sisi.
  Titik sudut tersebut kita tandai dengan V0 sampai V7
  Tandai sisi kubus dengan S1 sampai S6
  Setelah itu, baru kita bisa terjemahkan dalam bentuk program
Membuat Model 3 Dimensi #3
  Buat larik yang mendefinisikan titik sudut dalam bentuk koordinat X, Y, Z
  Kita akan mengunakan fungsi glPolygonMode agar model kubus yang dibuat terlihat 3 dimensi.
  Gunakan fungsi GL_QUADS untuk menciptakan kubus dengan 6 permukaan
Membuat Model 3 Dimensi #4
  Permukaan kubus pertama dibuat dari titik V0, V1, V2, V3. Titik sudut tersebut harus berlawan arah dengan jarum jam.

Membuat Model 3 Dimensi #5
  Fungsi GL_QUADS akan secara otomatis membuat permukaan kubus yang lain, melalui titik sudut yang telah kita tentukan
Membuat Model 3 Dimensi #6

#include"stdafx.h"
#include<gl/glut.h>
GLdouble V0[] = { 0.0, 0.0, 0.0};
GLdouble V1[] = { 1.0f, 0.0, 0.0};
GLdouble V2[] = { 1.0f, 1.0f, 0.0};
GLdouble V3[] = { 0.0, 1.0f, 0.0};
GLdouble V4[] = { 0.0, 0.0, -1.0f};
GLdouble V5[] = { 1.0f, 0.0, -1.0f};
GLdouble V6[] = { 1.0f, 1.0f, -1.0f};
GLdouble V7[] = { 0.0, 1.0f, -1.0f};

void Display(void){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
    gluLookAt(3.0, 2.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
    glColor3f(1.0, 1.0, 1.0);

    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

    glBegin(GL_QUADS);
        glVertex3dv(V0); glVertex3dv(V1); glVertex3dv(V2); glVertex3dv(V3);        // Surface 1
        glVertex3dv(V1); glVertex3dv(V5); glVertex3dv(V6); glVertex3dv(V2);        // Surface 2
        glVertex3dv(V5); glVertex3dv(V4); glVertex3dv(V7); glVertex3dv(V6);        // Surface 3
        glVertex3dv(V4); glVertex3dv(V0); glVertex3dv(V3); glVertex3dv(V7);        // Surface 4
        glVertex3dv(V3); glVertex3dv(V2); glVertex3dv(V6); glVertex3dv(V7);        // Surface 5
        glVertex3dv(V0); glVertex3dv(V4); glVertex3dv(V5); glVertex3dv(V1);        // Surface 6
    glEnd();

    glutSwapBuffers();
}
void Init(void){
    glClearColor(0.0, 0.0, 0.0, 0.0);
}

void Resize(int width, int height){
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60.0, height/width, 0.1, 1000.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

int main(int argc, char **argv){
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(400, 400);
    glutInitWindowPosition(200, 200);
    glutCreateWindow("3D Object in OpenGL");
    Init();
    glutDisplayFunc(Display);
    glutReshapeFunc(Resize);
    glutMainLoop();
return 0;
}



3DSMax
  Pengenalan 3DSMax
  Tampilan















0 komentar:

Posting Komentar