Minggu, 22 November 2015

Contoh Program Animasi 3D dengan OpenGL



Hai semaunya, kali ini ogut akan memberikan contoh sederhana program animasi 3D yang banyak bermanfaat untuk membuat game 3D. Program dibuat dengan menggunakan OpenGL dan compiler C++ dari Visual Studio 2014 Express.


Program akan menghasilkan seperti gambar di bawah ini.


Bagi rekan-rekan yang belum mengetahu tentang teori animasi sebaiknya baca terlebih dahulu artikel yang membahas tentang teori animasi 3D.

Animasi yang ogut buat kali ini sangat sederhana agar Anda mudah untuk mengerti.


Pada gambar di atas tampak sebuah segitiga A yang mempunyai titik kooordinat A1, A2 dan A3. Segitiga akan bergerak menuju B lalu bergerak lagi menuju C. Vektor yang digunakan untk menggerakan ini ada 3 buah.

Untuk membuat program ini pertama deklarasikan variable yang diperlukan

typedef struct
{
float X;
float Y;
float Z;
}VERTEX;

VERTEX A1, A2, A3, B1, B2, B3 ,C1, C2, C3 ;
VERTEX Disp_Anim1, Disp_Anim2, Disp_Anim3;

int i = 1;
int Loop_i = 0;
float Skala_Vektor = 0.001f;

Isi nilai titik koordinat

///////////LOAD DATA Vertex disini
A1.X = -1.5f; A1.Y = -1.0f; A1.Z = 1.0f;
A2.X = -1.0f; A2.Y = -1.0f; A2.Z = 1.0f;
A3.X = -1.25f; A3.Y = -0.5f; A3.Z = 1.0f;

B1.X = 1.0f; B1.Y = -1.0f; B1.Z = 1.0f;
B2.X = 1.5f; B2.Y = -1.0f; B2.Z = 1.0f;
B3.X = 1.25f; B3.Y = -0.5f; B3.Z = 1.0f;

C1.X = 0.0f; C1.Y = 1.0f; C1.Z = 1.0f;
C2.X = 0.5f; C2.Y = 1.0f; C2.Z = 1.0f;
C3.X = 0.25f; C3.Y = 1.5f; C3.Z = 1.0f;

Display animasi ke layar monitor

Loop_i++;
if ((Loop_i * Skala_Vektor) > 1.0f)
{
i++;
Loop_i = 1;
}

if (i > 3) 
i = 1;

//posisi dari A ke B
if (i == 1)
{
Disp_Anim1.X = A1.X + ((B1.X - A1.X) * Loop_i * Skala_Vektor);
Disp_Anim1.Y = A1.Y + ((B1.Y - A1.Y) * Loop_i * Skala_Vektor);
Disp_Anim1.Z = A1.Z + ((B1.Z - A1.Z) * Loop_i * Skala_Vektor);

Disp_Anim2.X = A2.X + ((B2.X - A2.X) * Loop_i * Skala_Vektor);
Disp_Anim2.Y = A2.Y + ((B2.Y - A2.Y) * Loop_i * Skala_Vektor);
Disp_Anim2.Z = A2.Z + ((B2.Z - A2.Z) * Loop_i * Skala_Vektor);

Disp_Anim3.X = A3.X + ((B3.X - A3.X) * Loop_i * Skala_Vektor);
Disp_Anim3.Y = A3.Y + ((B3.Y - A3.Y) * Loop_i * Skala_Vektor);
Disp_Anim3.Z = A3.Z + ((B3.Z - A3.Z) * Loop_i * Skala_Vektor);
}

//posisi dari B ke C
if (i == 2)
{
Disp_Anim1.X = B1.X + ((C1.X - B1.X) * Loop_i * Skala_Vektor);
Disp_Anim1.Y = B1.Y + ((C1.Y - B1.Y) * Loop_i * Skala_Vektor);
Disp_Anim1.Z = B1.Z + ((C1.Z - B1.Z) * Loop_i * Skala_Vektor);

Disp_Anim2.X = B2.X + ((C2.X - B2.X) * Loop_i * Skala_Vektor);
Disp_Anim2.Y = B2.Y + ((C2.Y - B2.Y) * Loop_i * Skala_Vektor);
Disp_Anim2.Z = B2.Z + ((C2.Z - B2.Z) * Loop_i * Skala_Vektor);

Disp_Anim3.X = B3.X + ((C3.X - B3.X) * Loop_i * Skala_Vektor);
Disp_Anim3.Y = B3.Y + ((C3.Y - B3.Y) * Loop_i * Skala_Vektor);
Disp_Anim3.Z = B3.Z + ((C3.Z - B3.Z) * Loop_i * Skala_Vektor);
}

//posisi dari C ke A
if (i == 3)
{
Disp_Anim1.X = C1.X + ((A1.X - C1.X) * Loop_i * Skala_Vektor);
Disp_Anim1.Y = C1.Y + ((A1.Y - C1.Y) * Loop_i * Skala_Vektor);
Disp_Anim1.Z = C1.Z + ((A1.Z - C1.Z) * Loop_i * Skala_Vektor);

Disp_Anim2.X = C2.X + ((A2.X - C2.X) * Loop_i * Skala_Vektor);
Disp_Anim2.Y = C2.Y + ((A2.Y - C2.Y) * Loop_i * Skala_Vektor);
Disp_Anim2.Z = C2.Z + ((A2.Z - C2.Z) * Loop_i * Skala_Vektor);

Disp_Anim3.X = C3.X + ((A3.X - C3.X) * Loop_i * Skala_Vektor);
Disp_Anim3.Y = C3.Y + ((A3.Y - C3.Y) * Loop_i * Skala_Vektor);
Disp_Anim3.Z = C3.Z + ((A3.Z - C3.Z) * Loop_i * Skala_Vektor);
}

//buat segitiga Disp_Anim
glBegin(GL_POLYGON);
glColor3f(1.0f, 1.0f, 0.0f);
glVertex3f(Disp_Anim1.X, Disp_Anim1.Y, Disp_Anim1.Z);
glColor3f(1.0f, 0.0f, 1.0f);
glVertex3f(Disp_Anim2.X, Disp_Anim2.Y, Disp_Anim2.Z);
glColor3f(0.0f, 1.0f, 1.0f);
glVertex3f(Disp_Anim3.X, Disp_Anim3.Y, Disp_Anim3.Z);
glEnd();

Selesai deh programnya, mudah bukan, selamat belajar rekan-rekan, sebentar lagi akan ada contoh animasi 3D yang bisa Anda gunakan untuk membuat game 3D, tunggu saja tanggal mainnya

Update 2 Jan 2015

Ini dia contoh program animasi 3D, gimana keren ngak....



Salam Game 3D


Heriady
heriady.yoh@gmail.com




Artikel terkait
Program Animasi Game MoTer 3D dengan OpenGL

Membuat Animasi Hely 3D dengan OpenGL

Teori Animasi 3D dengan Vektor R3

Contoh Program Animasi 3D dengan C++

Animasi dengan Vektor Translasi

Animasi dengan Vektor Translasi 2

Animasi 3D dengan Objek MD2

Matematika Vektor R3

Matematika Vektor R2