Sabtu, 16 Januari 2016

Jaring / Jala 3D Dengan OpenGL

Selamat Pagi rekan-rekan sekalian, jumpa lagi di blog ini dan kali ini ogut akan meneruskan artikel tentang membuat bayangan 3D. Sebelumnya ogut sudah membahas cara untuk membuat bayangan 3D seperti video berikut ini.



Program yang ogut bahas kali ini masih menyinggung soal bayangan 3D, tetapi kali ini ogut akan membahas bayangan 3D secara bertahap, karena agak sedikit ribet urusannya. Sehingga program kali ini hanya akan difokuskan untuk membuat jaring-jaring / jala 3D yang akan berguna nantinya untuk membuat bayangan 3D.


Jaring 3D yang ogut buat kali ini hanya menggunakan 3 buah vertex / titik koordinat, lalu menggunakan vektor R3 untuk membantu menyelesaikan perhitungan matematikanya.

Perhatikanlah gambar di bawah ini, tampak tiga titik A, B dan C, lalu ada dua buah vektor, yaitu Vektor Horisontal dan Vektor Vertikal. Vektor horisontal dan vektor vertikal dapat kita atur panjangnya dengan cara normalisasi vektor lalu kalikan dengan skala (baca tentang vektor R3 disini untuk lebih jelasnya).


Dengan Vektor Horisontal dan Vektor Vertikal yang diskala, maka kita bisa menentukan 4 vertex O, P, Q dan R untuk membuat polygon jaring-jaring 3D.


Di koding program yang harus Anda lakukan untuk membuat program seperti ini, pertama deklarasikan variable dan class yang diperlukan.

//JARING-JARING
unsigned int texture_hitam;
Vector VecHorisontal, VecVertikal;
Vector VecDisplayHor1, VecDisplayVer1;
Vector VecDisplayHor2, VecDisplayVer2;

VectorClass VecClass;
Vertex A, B, C; 
Vertex VtxDisplayO, VtxDisplayP, VtxDisplayQ, VtxDisplayR;
float NHorisontal, NVertikal;
float SkalaVecHorisontal, SkalaVecVertikal;

Lalu setting nilai awalnya

bool Load_All_Data()
{

A.X = -4.0f; A.Y = 0.0f; A.Z = -4.0f;
B.X = -4.0f; B.Y = 0.0f; B.Z = 4.0f;
C.X = 4.0f; C.Y = 0.0f; C.Z = 4.0f;

VecHorisontal = VecClass.CreateVector(C.X, C.Y, C.Z, B.X, B.Y, B.Z);
VecVertikal = VecClass.CreateVector(A.X, A.Y, A.Z, B.X, B.Y, B.Z);

NHorisontal = 10.0f; //jumlah n horisontal
NVertikal = 10.0f;   //jumlah n vertikal

SkalaVecHorisontal = VecClass.LVector(VecHorisontal) / NHorisontal;
SkalaVecVertikal = VecClass.LVector(VecVertikal) / NVertikal;

//normalisasi
VecHorisontal = VecClass.Normalisasi(VecHorisontal);
VecVertikal = VecClass.Normalisasi(VecVertikal);

return true;
}

Dan terakhir gunakan looping untuk membuat polygon jaring-jaring 3D.

for (i = 1; i <= NVertikal; i++)
{
VecDisplayVer1 = VecClass.SkalaVector(VecVertikal, ((i - 1) * SkalaVecVertikal));
VecDisplayVer2 = VecClass.SkalaVector(VecVertikal, (i * SkalaVecVertikal));

for (j = 1; j <= NHorisontal; j++)
{
VecDisplayHor1 = VecClass.SkalaVector(VecHorisontal, ((j - 1) * SkalaVecHorisontal));
VecDisplayHor2 = VecClass.SkalaVector(VecHorisontal, (j * SkalaVecHorisontal));

VtxDisplayO.X = B.X + VecDisplayHor1.i + VecDisplayVer1.i;
VtxDisplayO.Y = B.Y + VecDisplayHor1.j + VecDisplayVer1.j;
VtxDisplayO.Z = B.Z + VecDisplayHor1.k + VecDisplayVer1.k;

VtxDisplayP.X = B.X + VecDisplayHor2.i + VecDisplayVer1.i;
VtxDisplayP.Y = B.Y + VecDisplayHor2.j + VecDisplayVer1.j;
VtxDisplayP.Z = B.Z + VecDisplayHor2.k + VecDisplayVer1.k;

VtxDisplayQ.X = B.X + VecDisplayHor2.i + VecDisplayVer2.i;
VtxDisplayQ.Y = B.Y + VecDisplayHor2.j + VecDisplayVer2.j;
VtxDisplayQ.Z = B.Z + VecDisplayHor2.k + VecDisplayVer2.k;

VtxDisplayR.X = B.X + VecDisplayHor1.i + VecDisplayVer2.i;
VtxDisplayR.Y = B.Y + VecDisplayHor1.j + VecDisplayVer2.j;
VtxDisplayR.Z = B.Z + VecDisplayHor1.k + VecDisplayVer2.k;


if (Display_polygon == 1)
glBegin(GL_POLYGON);
else
glBegin(GL_LINE_LOOP);

glVertex3f(VtxDisplayO.X, VtxDisplayO.Y, VtxDisplayO.Z);
glVertex3f(VtxDisplayP.X, VtxDisplayP.Y, VtxDisplayP.Z);
glVertex3f(VtxDisplayQ.X, VtxDisplayQ.Y, VtxDisplayQ.Z);
glVertex3f(VtxDisplayR.X, VtxDisplayR.Y, VtxDisplayR.Z);
glEnd();

}//for (j = 1; j <= NHorisontal; j++)
}//for (i = 1; i <= NVertikal; i++)

Demikian rekan-rekan artikel kali ini, dan artikel ini akan ada lanjutannya, jadi tunggu tanggal mainnya.

Salam Bayangan 3D


Heriady
heriady.yoh@gmail.com




Artikel terkait
Membuat Bayangan Objek 3D OpenGL

Matematika Vektor R3

Program Animasi Game MoTer 3D dengan OpenGL