Met Pagi semuanya, aku berharap rekan-rekan dalam keadaan sehat selalu...kali ini aku akan memberi contoh program yang menampilkan objek 3D yang dibuat dengan jumlah poligon sedikit (low polygon). Bagi rekan-rekan yang baru bergabung atau baru membaca artikel ini sebaiknya membaca artikel yang aku tulis sebelumnya agar tidak bingung (tik tok tik tok).
Objek 3D low polygon diperlukan untuk membuat game agar proses render ke layar monitor menjadi lebih cepat. Objek 3D low polygon pada program ini semuanya dibuat dengan menggunakan 3ds max, rekan-rekan dapat melihat screen shoot yang ogut capture.
Dengan menggunakan metode 3 daftar objek 3D yang dibuat dengan 3ds max bisa ditampilkan oleh OpenGL, seperti gambar berikut ini.
Teknik pemrogramman tidak akan ogut jelaskan lagi, karena telah ogut bahas di artikel konsep face dan metode 3 daftar. Ada dua proses penting yang harus rekan-rekan perhatikan, pertama load objek 3 daftar seperti bangku, pohon dan lampu.
bool Load_All_Data()
{
int i;
if (!Load_3_Daftar("Bangku/Bangku.Meshtxt", 0.035f, Bangku1))
return false;
for (i = 0; i < Bangku1.TotalV_Mesh3D; i++)
TranslasiXYZ(Bangku1.V_Mesh3D[i].X, Bangku1.V_Mesh3D[i].Y, Bangku1.V_Mesh3D[i].Z, 0.0f, 0.0f, 1.5f);
if (!Load_3_Daftar("Bangku/Bangku.Meshtxt", 0.035f, Bangku2))
return false;
for (i = 0; i < Bangku2.TotalV_Mesh3D; i++)
{
RotasiY(180, Bangku2.V_Mesh3D[i].X, Bangku2.V_Mesh3D[i].Y, Bangku2.V_Mesh3D[i].Z);
TranslasiXYZ(Bangku2.V_Mesh3D[i].X, Bangku2.V_Mesh3D[i].Y, Bangku2.V_Mesh3D[i].Z, 0.0f, 0.0f, -1.5f);
}
if (!Load_3_Daftar("Meja/Meja.Meshtxt", 0.035f, Meja))
return false;
//for (i = 0; i < Meja.TotalV_Mesh3D; i++)
// TranslasiXYZ(Meja.V_Mesh3D[i].X, Meja.V_Mesh3D[i].Y, Meja.V_Mesh3D[i].Z, 0.0f, 0.0f, 1.0f);
if (!Load_3_Daftar("Lampu/Lampu.Meshtxt", 0.025f, Lampu))
return false;
for (i = 0; i < Lampu.TotalV_Mesh3D; i++)
{
RotasiY(90, Lampu.V_Mesh3D[i].X, Lampu.V_Mesh3D[i].Y, Lampu.V_Mesh3D[i].Z);
TranslasiXYZ(Lampu.V_Mesh3D[i].X, Lampu.V_Mesh3D[i].Y, Lampu.V_Mesh3D[i].Z, 3.0f, 0.0f, 0.0f);
}
if (!Load_3_Daftar("Pohon_kelapa/Dahankelapa.Meshtxt", 0.045f, DahanKelapa))
return false;
for (i = 0; i < DahanKelapa.TotalV_Mesh3D; i++)
TranslasiXYZ(DahanKelapa.V_Mesh3D[i].X, DahanKelapa.V_Mesh3D[i].Y, DahanKelapa.V_Mesh3D[i].Z, -4.0f, 3.0f, 2.0f);
if (!Load_3_Daftar("Pohon_kelapa/Daunkelapa.Meshtxt", 0.045f, DaunKelapa))
return false;
for (i = 0; i < DaunKelapa.TotalV_Mesh3D; i++)
TranslasiXYZ(DaunKelapa.V_Mesh3D[i].X, DaunKelapa.V_Mesh3D[i].Y, DaunKelapa.V_Mesh3D[i].Z, -4.0f, 3.0f, 2.0f);
if (!Load_3_Daftar("Talas/Talas.Meshtxt", 0.02f, Talas1))
return false;
for (i = 0; i < Talas1.TotalV_Mesh3D; i++)
TranslasiXYZ(Talas1.V_Mesh3D[i].X, Talas1.V_Mesh3D[i].Y, Talas1.V_Mesh3D[i].Z, 4.5f, 0.0f, 0.0f);
if (!Load_3_Daftar("Talas/Talas.Meshtxt", 0.02f, Talas2))
return false;
for (i = 0; i < Talas2.TotalV_Mesh3D; i++)
{
RotasiY(45, Talas2.V_Mesh3D[i].X, Talas2.V_Mesh3D[i].Y, Talas2.V_Mesh3D[i].Z);
TranslasiXYZ(Talas2.V_Mesh3D[i].X, Talas2.V_Mesh3D[i].Y, Talas2.V_Mesh3D[i].Z, 4.5f, 0.0f, 1.4f);
}
if (!Load_3_Daftar("Talas/Talas.Meshtxt", 0.02f, Talas3))
return false;
for (i = 0; i < Talas3.TotalV_Mesh3D; i++)
{
RotasiY(90, Talas3.V_Mesh3D[i].X, Talas3.V_Mesh3D[i].Y, Talas3.V_Mesh3D[i].Z);
TranslasiXYZ(Talas3.V_Mesh3D[i].X, Talas3.V_Mesh3D[i].Y, Talas3.V_Mesh3D[i].Z, 4.5f, 0.0f, 2.8f);
}
if (!Load_3_Daftar("Talas/Talas.Meshtxt", 0.02f, Talas4))
return false;
for (i = 0; i < Talas4.TotalV_Mesh3D; i++)
{
RotasiY(135, Talas4.V_Mesh3D[i].X, Talas4.V_Mesh3D[i].Y, Talas4.V_Mesh3D[i].Z);
TranslasiXYZ(Talas4.V_Mesh3D[i].X, Talas4.V_Mesh3D[i].Y, Talas4.V_Mesh3D[i].Z, 4.5f, 0.0f, -1.4f);
}
if (!Load_3_Daftar("Talas/Talas.Meshtxt", 0.02f, Talas5))
return false;
for (i = 0; i < Talas5.TotalV_Mesh3D; i++)
{
RotasiY(180, Talas5.V_Mesh3D[i].X, Talas5.V_Mesh3D[i].Y, Talas5.V_Mesh3D[i].Z);
TranslasiXYZ(Talas5.V_Mesh3D[i].X, Talas5.V_Mesh3D[i].Y, Talas5.V_Mesh3D[i].Z, 4.5f, 0.0f, -2.8f);
}
return true;
}
Kedua menampilkan objek 3D low polygon ke layar monitor.
void Display_Grafik()
{
int Display_polygon = 1;
//clear buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
//...........................
//display object di sini
//...........................
//mundurkan objek sebanyak 7 satuan
//ke arah sumbu -Z
glTranslatef(0.0f, -2.0f, -10.0f);
//glRotatef(15.0, 1.0f, 0.0f, 1.0f);
glRotatef(Sudut_Putar, 0.0f, 1.0f, 0.0f);
Sudut_Putar += 0.09f;
if (Sudut_Putar > 360.0f)
Sudut_Putar = 0.0f;
///////////Object di sini
////sumbu x
//glBegin(GL_LINES);
//glVertex3f(3.0f, 0.0f, 0.0f);
//glVertex3f(-3.0f, 0.0f, 0.0f);
//glEnd();
////sumbu y
//glBegin(GL_LINES);
//glVertex3f(0.0f, 3.0f, 0.0f);
//glVertex3f(0.0f, -3.0f, 0.0f);
//glEnd();
////sumbu z
//glBegin(GL_LINES);
//glVertex3f(0.0f, 0.0f, 3.0f);
//glVertex3f(0.0f, 0.0f, -3.0f);
//glEnd();
glBindTexture(GL_TEXTURE_2D, texture_merah);
if (Display_polygon == 1)
glBegin(GL_POLYGON);
else
glBegin(GL_LINES);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-5.0f, 0.0f, 5.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(5.0f, 0.0f, 5.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(5.0f, 0.0f, -5.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-5.0f, 0.0f, -5.0f);
glEnd();
glBindTexture(GL_TEXTURE_2D, Text_Bangku);
Display_3_Daftar(Bangku1, Display_polygon);
Display_3_Daftar(Bangku2, Display_polygon);
Display_3_Daftar(Meja, Display_polygon);
glBindTexture(GL_TEXTURE_2D, Text_Lampu);
Display_3_Daftar(Lampu, Display_polygon);
glBindTexture(GL_TEXTURE_2D, Text_Talas);
Display_3_Daftar(Talas1, Display_polygon);
Display_3_Daftar(Talas2, Display_polygon);
Display_3_Daftar(Talas3, Display_polygon);
Display_3_Daftar(Talas4, Display_polygon);
Display_3_Daftar(Talas5, Display_polygon);
glBindTexture(GL_TEXTURE_2D, Text_Dahan);
Display_3_Daftar(DahanKelapa, Display_polygon);
glBindTexture(GL_TEXTURE_2D, Text_Daun);
Display_3_Daftar(DaunKelapa, Display_polygon);
//fungsi swapbuffer harus dipasang pada akhir Display_Grafik()
SwapBuffers(My_HDC_Global);
}
Update 29 Des 2015
Setelah rekan-rekan bisa membuat objek 3D langkah selanjutnya rekan-rekan bisa belajar membuat program animasi 3D, seperti gambar dibawah ini.
Selamat Berkreasi rekan-rekan
Heriady
heriady.yoh@gmail.com
Artikel terkait
Program Animasi Game MoTer 3D dengan OpenGL
| |
Membuat Terrain untuk Hely 3D
| |
Membuat Animasi Hely 3D dengan OpenGL
| |
Konsep face dan metode 3 daftar
|
|
Garden 3D yang dibuat dengan 3ds max
|
|
Membuat objek 3D dengan 3ds max
|
Tidak ada komentar:
Posting Komentar