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