Contoh program sebelumnya dapat Anda temukan di link ini. Dan bagi rekan-rekan yang ingin belajar tentang algoritma program ini sebaiknya baca artikel yang ogut tulis sebelumnya tentang teori animasi 3D.
Contoh program kali ini jika Anda jalankan akan menghasilkan tampilan seperti gambar di atas. Sebuah segitiga yang beranimasi sangat sederhana dan berubah bentuk.
Pada gambar di atas tampak sebuah segitiga dengan titik koordinat A1, A2 dan A3. Segitiga akan membesar dan bergerak ke kanan menjadi B1, B2 dan B3. Setelah itu segitiga akan berubah lagi dan bergerak ke arah C1, C2 dan C3.
Proses animasi menggunakan tiga buah vektor dan semuanya telah ogut terangkan di artikel teori animasi 3D.
Untuk membuat program ini pertama deklarasikan dahulu 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 segitiga
///////////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 = 2.0f; B1.Y = -2.0f; B1.Z = 1.0f;
B2.X = 3.0f; B2.Y = -2.0f; B2.Z = 1.0f;
B3.X = 2.5f; B3.Y = -1.0f; B3.Z = 1.0f;
C1.X = 0.0f; C1.Y = 2.0f; C1.Z = 1.0f;
C2.X = 2.5f; C2.Y = 2.0f; C2.Z = 1.0f;
C3.X = 0.5f; C3.Y = 3.0f; C3.Z = 1.0f;
Dan terakhir 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 sudah programnya, mudah bukan, selamat belajar dan sebentar lagi ogut akan memberikan contoh program yang lebih yahut, tunggu saja tanggal mainnya.
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 OpenGL
| |
Animasi dengan Vektor Translasi
| |
Animasi dengan Vektor Translasi 2
| |
Animasi 3D dengan Objek MD2
| |
Matematika Vektor R3
| |
Matematika Vektor R2
|
Tidak ada komentar:
Posting Komentar