PENGUMUMAN
" Projek ini Dibuat dengan Benar sudah berjalan secara semestinya. apabila ada ERROR di code silahkan pelajari dimana letak errornya. jangan hanya mau disuapi saja. mengcopi ini = harus mempelajari sourcodenaya sendiri.
Jangan Lupa Ucapkan Terimakasih di kolom komentar.
dan untuk Glut download sementara saya tutup, jika ingin mendownload silahkan komentar dibawah "tujuan kalian belajar OPENGL beserta email kalian". nanti saya bagikan lewat email kalian yang ada dikolom komentar. (komentar tidak akan muncul jika belum disetujui dan belum dikirim openGLnya ke email kalian)" Projek OpenGL kali ini kita akan membuat seekor anjing sedang berjalan. kita akan belajar membuat anjing berjalan dengan openGl pada codeblock C++. setiap fungsi didalam program akan saya pisahkan supaya lebih mudah dipahami ketika saat ingin merubah hasil tampilan dari animasinya.
Untuk bisa membuat projek seperti diatas anda harus menyiapkan beberapa hal dalam penyetingan di komoputer anda yang berkaitan dengan openGL. diantaranya yaitu :
- Open GL download disini :
View openGL
- CodeBlock setting dengan openGL caranya lihat disini: view
- buka codeblock dan buat projek baru caranya dapat dilihat disini : view
- copy semua sourcode yang tersedia di blog ini.
silahkan copy contoh program dibawah ini ke projek yang anda buat. adapun sourcode yang akan anda coba adalah sebagai berikut.
#define NULL 0
#define TORSO_HEIGHT 4.0
#define TORSO_RADIUS 1.50
#define UPPER_FRONT_HEIGHT 2.0
#define LOWER_FRONT_HEIGHT 0.10
#define LOWER_BACK_HEIGHT 0.10
#define UPPER_FRONT_RADIUS 0.5
#define LOWER_FRONT_RADIUS 0.5
#define HEAD_HEIGHT 1.5
#define HEAD_RADIUS 1.0
#include <GL/glut.h>
// Rotation amounts
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;
//set head, torso, and all the feet
void head();
void torso();
void left_upper_front();
void right_upper_front();
void left_upper_back();
void right_upper_back();
typedef float point[3];
typedef struct treenode{
GLfloat m[16];
void (*f)();
struct treenode *sibling;
struct treenode *child;
} treenode;
typedef treenode* t_ptr;
static GLfloat theta[11] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,0.0, 0.0, 0.0, 0.0};
static GLint acc = 1, acc1 = 1, acc2 = 1;
GLUquadricObj *t, *h, *luf, *llf, *ruf, *rlf, *llb, *rlb, *rub, *lub;
treenode torso_node, head_node, luf_node, ruf_node, llb_node, rlb_node, llf_node,rlf_node, rub_node, lub_node;
void TimerFunc(int value){
glutPostRedisplay();
glutTimerFunc(100, TimerFunc, 1);
}
void traverse(treenode * root){
if(root==NULL) return ;
glPushMatrix();
glMultMatrixf(root->m);
root->f();
if(root->child!=NULL) traverse(root->child);
glPopMatrix();
if(root->sibling!=NULL)traverse(root->sibling);
}
void torso(){
glPushMatrix();
glColor3ub(139,90,43); //tan4
glRotatef(-90.0, 0.0, 1.0, 0.0);
gluSphere(t, TORSO_RADIUS, 10, 10);
gluCylinder(t, TORSO_RADIUS, TORSO_RADIUS, TORSO_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, TORSO_HEIGHT );
gluSphere(t, TORSO_RADIUS, 10, 10);
glPopMatrix();
//tail
glPushMatrix();
glColor3ub(139,90,43); //tan4
glTranslatef(-5.70, 0.90, 0.0);
glScalef(2.50, 0.5, 0.50);
gluSphere(h, 0.5, 10, 10);
glPopMatrix();
}
void head(){
glPushMatrix();
glTranslatef(-0.20, 4.0, 0.0);
glPushMatrix();
glTranslatef(1.80, -2.50, 0.0);
glScalef(1.70, 1.0, 1.40);
gluSphere(h, 1.0, 10, 10);
glPopMatrix();
//ear
glPushMatrix();
glTranslatef(2.0, -1.80, 0.70);
glPushMatrix();
glScalef(0.50, 1.30, 1.30);
gluSphere(h, 0.5, 10, 10);
glPopMatrix();
glTranslatef(0.0, 0.0, -1.40);
glPushMatrix();
glScalef(0.50, 1.30, 1.30);
gluSphere(h, 0.5, 10, 10);
glPopMatrix();
glPopMatrix();
//eye
glPushMatrix();
glColor3ub(0,0,0); //black
glTranslatef(3.10, -2.0, 0.50);
gluSphere(h, 0.2, 10, 10);
glTranslatef(0.0, 0.0, -1.0);
gluSphere(h, 0.2, 10, 10);
glColor3ub(139,90,43); //tan4
glPopMatrix();
glPopMatrix();
}
void left_upper_front(){
glPushMatrix();
glTranslatef(0.60, -2.40, 0.7);
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluSphere(luf,UPPER_FRONT_RADIUS, 10, 10 );
gluCylinder(luf, UPPER_FRONT_RADIUS, UPPER_FRONT_RADIUS, UPPER_FRONT_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, UPPER_FRONT_HEIGHT);
gluSphere(luf,UPPER_FRONT_RADIUS, 10, 10 );
glPopMatrix();
}
void left_lower_front(){
glPushMatrix();
glTranslatef(0.60, -2.60, 0.7);
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluSphere(llf,LOWER_FRONT_RADIUS, 10, 10 );
gluCylinder(llf, LOWER_FRONT_RADIUS, LOWER_FRONT_RADIUS, LOWER_FRONT_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, LOWER_FRONT_HEIGHT);
gluSphere(llf,LOWER_FRONT_RADIUS, 10, 10 );
glPopMatrix();
}
void right_upper_front(){
glPushMatrix();
glTranslatef(0.6, -2.50, -0.7);
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluSphere(ruf,UPPER_FRONT_RADIUS, 10, 10 );
gluCylinder(ruf, UPPER_FRONT_RADIUS, UPPER_FRONT_RADIUS, UPPER_FRONT_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, UPPER_FRONT_HEIGHT);
gluSphere(ruf,UPPER_FRONT_RADIUS, 10, 10 );
glPopMatrix();
}
void right_lower_front(){
glPushMatrix();
glTranslatef(0.60, -2.50, -0.70);
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluSphere(rlf,LOWER_FRONT_RADIUS, 10, 10 );
gluCylinder(rlf, LOWER_FRONT_RADIUS, LOWER_FRONT_RADIUS, LOWER_FRONT_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, LOWER_FRONT_HEIGHT);
gluSphere(rlf,LOWER_FRONT_RADIUS, 10, 10 );
glPopMatrix();
}
void left_upper_back(){
glPushMatrix();
glTranslatef(0.6, -2.60, 0.7);
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluSphere(lub,UPPER_FRONT_RADIUS, 10, 10 );
gluCylinder(lub, UPPER_FRONT_RADIUS, UPPER_FRONT_RADIUS, UPPER_FRONT_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, UPPER_FRONT_HEIGHT);
gluSphere(lub,UPPER_FRONT_RADIUS, 10, 10 );
glPopMatrix();
}
void left_lower_back(){
glPushMatrix();
glTranslatef(4.50, -2.60, 0.70);
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluSphere(llb,LOWER_FRONT_RADIUS, 10, 10 );
gluCylinder(llb, LOWER_FRONT_RADIUS, LOWER_FRONT_RADIUS, LOWER_FRONT_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, LOWER_FRONT_HEIGHT);
gluSphere(llb,LOWER_FRONT_RADIUS, 10, 10 );
glPopMatrix();
}
void right_upper_back(){
glPushMatrix();
glTranslatef(0.6, -2.60, -0.7);
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluSphere(rub,UPPER_FRONT_RADIUS, 10, 10 );
gluCylinder(rub, UPPER_FRONT_RADIUS, UPPER_FRONT_RADIUS, UPPER_FRONT_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, UPPER_FRONT_HEIGHT);
gluSphere(rub,UPPER_FRONT_RADIUS, 10, 10 );
glPopMatrix();
}
void right_lower_back(){
glPushMatrix();
glTranslatef(4.50, -2.60, -0.70);
glRotatef(-90.0, 1.0, 0.0, 0.0);
gluSphere(rlb,LOWER_FRONT_RADIUS, 10, 10 );
gluCylinder(rlb, LOWER_FRONT_RADIUS, LOWER_FRONT_RADIUS, LOWER_FRONT_HEIGHT, 10, 10);
glTranslatef(0.0, 0.0, LOWER_FRONT_HEIGHT);
gluSphere(rlb,LOWER_FRONT_RADIUS, 10, 10 );
glPopMatrix();
}
void display(void){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glPushMatrix();
glRotatef(xRot, 1.0, 0.0, 0.0);
glRotatef(yRot, 0.0, 1.0, 0.0);
traverse(&torso_node);
glPopMatrix();
//the move
//torso
glPushMatrix();
glRotatef(theta[0], 0.0, 1.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX,torso_node.m);
theta[0] += acc1;
glPopMatrix();
//head
glPushMatrix();
glRotatef(theta[1], 0.0, 1.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX,head_node.m);
if(theta[1] > 20 || theta[1] < -60)
acc = -acc;
theta[1] += acc;
glPopMatrix();
//luf
glPushMatrix();
glRotatef(theta[3], 0.0, 0.0, 1.0);
glGetFloatv(GL_MODELVIEW_MATRIX,luf_node.m);
if(theta[3] > 10 || theta[3] < -10)
acc1 = -acc1;
theta[3] += 2*acc1;
glPopMatrix();
//llf
glPushMatrix();
glRotatef(theta[4], 0.0, 1.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX,llf_node.m);
if(theta[4] > 0 || theta[4] < -10)
acc2 = -acc2;
theta[4] += acc2;
glPopMatrix();
//lub
glPushMatrix();
glTranslatef(-4.0, 0.0, 0.0);
glPushMatrix();
glRotatef(theta[7], 0.0, 0.0, 1.0);
glGetFloatv(GL_MODELVIEW_MATRIX,lub_node.m);
theta[7] += 2*acc1;
glPopMatrix();
glPopMatrix();
//llb
glPushMatrix();
glTranslatef(-4.0, 0.0, 0.0);
glPushMatrix();
glRotatef(theta[8], 0.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX,llb_node.m);
theta[8] += acc2;
glPopMatrix();
glPopMatrix();
//ruf
glPushMatrix();
glRotatef(theta[5], 0.0, 0.0, 1.0);
glGetFloatv(GL_MODELVIEW_MATRIX,ruf_node.m);
theta[5] += 2*-acc1;
glPopMatrix();
//rlf
glPushMatrix();
glRotatef(theta[6], 0.0, 1.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX,rlf_node.m);
theta[6] += -acc2;
glPopMatrix();
//rub
glPushMatrix();
glTranslatef(-4.0, 0.0, 0.0);
glPushMatrix();
glRotatef(theta[9], 0.0, 0.0, 1.0);
glGetFloatv(GL_MODELVIEW_MATRIX,rub_node.m);
theta[9] += 2*-acc1;
glPopMatrix();
glPopMatrix();
//rlb
glPushMatrix();
glTranslatef(-4.0, 0.0, 0.0);
glPushMatrix();
glRotatef(theta[10], 0.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX,rlb_node.m);
theta[10] += -acc2;
glPopMatrix();
glPopMatrix();
glutSwapBuffers();
}
void myReshape(int w, int h){
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-10.0, 10.0, -10.0 * (GLfloat) h/ (GLfloat) w,10.0 * (GLfloat) w/ (GLfloat) h, -10.0, 10.0);
else
glOrtho(-10.0 *(GLfloat) w/ (GLfloat) h, 10.0 * (GLfloat) w/ (GLfloat) h,10.0*(GLfloat) w/ (GLfloat) h, 0.0, -10.0, 10.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void SetupRC(){
GLfloat mat_specular[]={1.0, 1.0, 1.0, 1.0};
GLfloat mat_diffuse[]={1.0, 1.0, 1.0, 1.0};
// Light values and coordinates
GLfloat ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f };
GLfloat diffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f };
GLfloat specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat specref[] = { 1.0f, 1.0f, 1.0f, 1.0f };
glEnable(GL_DEPTH_TEST); // Hidden surface removal
glFrontFace(GL_CCW); // Counter clock-wise polygons face out
glDisable(GL_CULL_FACE); // Do not calculate inside of jet
// Enable lighting
glEnable(GL_LIGHTING);
// Setup and enable light 0
glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight);
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight);
glLightfv(GL_LIGHT0,GL_SPECULAR, specular);
glEnable(GL_LIGHT0);
// Enable color tracking
glEnable(GL_COLOR_MATERIAL);
// Set Material properties to follow glColor values
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
// All materials hereafter have full specular reflectivity
// with a high shine
glMaterialfv(GL_FRONT, GL_SPECULAR, specref);
glMateriali(GL_FRONT, GL_SHININESS, 128);
// white background
glClearColor(1.0f, 1.0f, 1.0f, 1.0f );
glEnable(GL_NORMALIZE);
h=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
t=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
luf=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
llf=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
ruf=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
rlf=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
lub=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
llb=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
rub=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
rlb=gluNewQuadric();
gluQuadricDrawStyle(h, GLU_FILL);
/*set up tree*/
glLoadIdentity();
glRotatef(theta[0], 0.0, 1.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, torso_node.m);
torso_node.f=torso;
torso_node.sibling = &head_node;
torso_node.child = NULL;
glLoadIdentity();
glRotatef(theta[1], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, head_node.m);
head_node.f = head;
head_node.sibling = &luf_node;
head_node.child = NULL;
glLoadIdentity();
glRotatef(theta[3], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, luf_node.m);
luf_node.f = left_upper_front;
luf_node.sibling = &ruf_node;
luf_node.child = &llf_node;
glLoadIdentity();
glRotatef(theta[5], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, ruf_node.m);
ruf_node.f = right_upper_front;
ruf_node.sibling = &lub_node;
ruf_node.child = &rlf_node;
glLoadIdentity();
glRotatef(theta[7], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, lub_node.m);
lub_node.f = left_upper_back;
lub_node.sibling = &rub_node;
lub_node.child = &llb_node;
glLoadIdentity();
glRotatef(theta[9], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, rub_node.m);
rub_node.f = right_upper_back;
rub_node.sibling = NULL;
rub_node.child = &rlb_node;
glLoadIdentity();
glRotatef(theta[4], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, llf_node.m);
llf_node.f = left_lower_front;
llf_node.sibling = NULL;
llf_node.child = NULL;
glLoadIdentity();
glRotatef(theta[6], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, rlf_node.m);
rlf_node.f = right_lower_front;
rlf_node.sibling = NULL;
rlf_node.child = NULL;
glLoadIdentity();
glRotatef(theta[8], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, llb_node.m);
llb_node.f = left_lower_back;
llb_node.sibling = NULL;
llb_node.child = NULL;
glLoadIdentity();
glRotatef(theta[10], 1.0, 0.0, 0.0);
glGetFloatv(GL_MODELVIEW_MATRIX, rlb_node.m);
rlb_node.f = right_lower_back;
rlb_node.sibling = NULL;
rlb_node.child = NULL;
}
// Handle arrow keys
void SpecialKeys(int key, int x, int y){
if(key == GLUT_KEY_UP)
xRot-= 5.0f;
if(key == GLUT_KEY_DOWN)
xRot += 5.0f;
if(key == GLUT_KEY_LEFT)
yRot -= 5.0f;
if(key == GLUT_KEY_RIGHT)
yRot += 5.0f;
if(key > 356.0f)
xRot = 0.0f;
if(key < -1.0f)
xRot = 355.0f;
if(key > 356.0f)
yRot = 0.0f;
if(key < -1.0f)
yRot = 355.0f;
// Refresh the Window
glutPostRedisplay();
}
int main(int argc, char* argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutInitWindowPosition(230, 170);
glutCreateWindow(".:OpenGL- Brown Eyed Dog:.");
glutTimerFunc(500, TimerFunc, 1);
SetupRC();
glutSpecialFunc(SpecialKeys);
glutReshapeFunc(myReshape);
glutDisplayFunc(display);
glutMainLoop();
}
setelah itu jalankan programnya dengan menekan f9. dan ini adalah hasilnya seperti gambar di bawah ini. jika tampilan dari hasil program tidak muncul maka sudah dipastika program yang anda buat salah. jadi carilah kesalahan errornya.
demikian tutorialnya semoga bermanfaat buat yang sedang mengerjakan tugas ataupun projek kampus. jangan lupa like dan komen yang membangunnya ya sobat. terimakasih..
Reverensi
- https://primastutidewi.wordpress.com/2008/12/30/contoh-sederhana-opengl/
Berikut ini adalah kumpulan Projek OpenGL menggunakan codeblock C++. jika anda ingin mencoba programnya silahkan klik menu2 yang ada dibawah
Setting CodeBlock
Didalam materi ini anda akan belajar mensetting codeblock dengan openGL C++. dilengkapi dengan tempat untuk mendonload untuk komponen yang dibutuhkan didalam code block untuk membuat projeknya
Dalam materi anda akan belajar cara menjalankan codeblock , dari membuat projeknya sampai projek opengl bisa dijalankan
Projek 3D OpenGL
Projek yang akan anda buat kali ini adalah membuat sebuah parkiran mobil dengan OpenGL CodeBlock C++. dalam projek ini anda akan berinteraksi dengan tampilan yaitu :
- menambahkan rumah untuk parkiran ,
- kemudian melihat view dari kiri ke kanan,
- maju mundur view serta
- anda juga dapat melihat posisi parkiran baik dari posisi atas maupun samping kanan dan kiri..
untuk lebih jelasnya silahkan klik menu dibawah ini
Projek Mini openGL kali ini anda akan membuat sebuah projek Rumah dengan segala aktifitasnya. misalnya :
- Membuka gerbang depan,
- Membuka Gerbang samping,
- Membuka pintu depan,
- Membuka pintu atas, tengah dan
- Menyalakan kipas angin. semua pengaturan semua berada di mouse untuk menjalankannya.
Untuk lebih jelasnya silahkan klik menu dibawah ini
Projek yang dibahas kali ini adalah animasi kotak berputar dengan berbagai warna dengan event mouse untuk merubah arah putaran pada animasi. projek ini dibuat dengan mendefinisikan ukuran dan warna dalam sebuah array supaya mudah dipanggil
Dalam projek ini kita akan membuat pensil berwarna biru dengan layar berwarna hijau
Projek ini membuat sebuah animasi hujan turun dan ditampung didalam tempat penyimpanan. projek ini akan ada beberapa fungsi untuk menjalankannya diantaranya yaitu
S = untuk menampilkan rumah dan lain-lainnya
R = untuk menurunkan air hujannya
Q = untuk exit dari animasi tersebut.
Pada projek kali ini kita akan membuat sebuah teko 3D dengan warna merah dan pencahayaan pada benda
Didalam projek 3D yang akan kita buat ini nantinya akan banyak fitur yang digunakan diantaranya yaitu
- Y = putar arah y
- X = putar arah x
- Z = putar arah z
- A = tingkatkan ukuran mobil dalam arah x
- S = tingkatkan ukuran mobil dalam arah y
- tingkatkan ukuran mobil dalam arah z
- U = tampilan atas kamera
- F = tampilan samping kamera
- tombol arah kiri = gerakan mobil kearah depan
- tombol arah kanan = gerakan mobil kearah belakang
- Esc = tombol keluar dari animasi
- spasi = masukan layar utama dari layar awal
Dalam Projek ini kita akan membuat projek membuat lampion dengan efek memutar, menjauhkan layar dengan tombol, mendekatkan dengan layar , merubah putaran ke arah sumbu x, y atau z.
Dalam projek ini anda akam belajar membuat animasi robot dengan openGL adapun nantinya diprojek ini akan melibatkan keyboard sebagai penggeraknya diantanya yaitu :
p = untuk menggerakan kepala naik turun
k = memutar tangan kanan searah jarum jam
l = memutar tangan kanan berlawanan arah jarum jam
h= memutar tangan kiti searah jarum jam
Dan masih banyak yang lainya
Dalam projek 3D ini anda akan belajar membuat 3D animasi perahu layar. untuk lebih jelasnya silahkan pelajari projek dibawah ini
Dalam projek 3D ini anda akan belajar membuat 3D animasi bola memantul-mantul keatas kebawah. jika penasaran bagaimana cara membuat projek ini silahkan lihat dibawah ini
Dalam projek 3D ini anda akan belajar membuat sepeda 3D lengkap dengan roda dan rangkanya. jika penasaran bagaimana cara membuat projek ini silahkan klik tombol dibawah ini.
Dalam projek 3D ini anda akan belajar membuat projek bumi berotasi, projek ini nantinya akan dikandalikan dengan keyboard. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat projek bumi berotasi, projek ini nantinya akan dikandalikan dengan keyboard. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat projek pohon dan nantinya pohon ini bisa berotasi, projek ini nantinya akan dikandalikan dengan keyboard. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat sebuah boneka sawah dari benar-benar nol. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat membuat boneka DanBo 3D dari awal. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat sebuah animasi berbentuk anjing dari benar-benar nol. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat sebuah animasi berbentuk boneka dari benar-benar nol. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat sebuah animasi berbentuk mobil dari benar-benar nol. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat sebuah animasi berbentuk Kipas angin dari benar-benar nol. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat sebuah animasi berbentuk Kipas angin dari benar-benar nol. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Dalam projek 3D ini anda akan belajar membuat sebuah animasi berbentuk Sendok dari benar-benar nol. jika anda penasaran mengenai projeknya silahkan klik tombol dibawah ini
Terimaksih sudah berkunjung jangan lupa share ke teman-teman yang membutuhkan contoh projek OpenGL ini.
No comments:
Post a Comment