Jumat, 15 Januari 2016

Membuat Bayangan Objek 3D OpenGL

Selamat Pagi everyone, postingan kali ini akan membahas cara sederhana untuk membuat bayangan 3D. Objek 3D yang akan ogut buat bayangannya adalah Objek helikopter atau Hely 3D yang telah ogut posting di artikel sebelumnya.


Pada tanggal 8 Jan 2015, saat ogut nongkrong dan makan sore di sebuah warung (RAZA) di sekitar jalan Cargo, munculah ide ini. Makan nasi sayur dengan tempe dan tahu lalu tiba-tiba ini datang, langsung ogut corat-coret dan jadilah seperti di bawah ini.


Corat-coret tersebut menghasilkan program seperti berilut ini.


Ada juga videonya, biar lebih keren



Untuk membuat programnya ogut ceritakan dahulu skenario atau teorinya...jangan baca coretan ogut di atas...pusing karena tulisan tangan ogut susah untuk dimengerti....lihat aja gambar di bawah ini


Pada gambar terlihat sebuah objek 3D dan bayangannya, Titik Cahaya yang menjadi sumber cahaya untuk membuat bayangan.

Vektor TL dan Vektor Bayangan ogut gunakan untuk mencari Titik Bayangan.


Dari aturan dasat trigonometri diketahui  nilai Cos α° dapat dicari dengan membagi panjang X dengan Panjang R.

Untuk mencari panjang Vektor Bayangan dapat digunakan aturan dasar trigonometri ini, sudut α° dapat dicari dengan memanfaatkan sudut vektor, jika panjang Vektor Bayangan diketahui maka Titik Bayangan akan dapat ditentukan dan bayangan 3D dapat dibuat.

Ada beberapa hal yang harus rekan-rekan perhatikan waktu membuat program bayangan Hely 3D. Pertama dekalrasikan variable dan class yang diperlukan

//bayangan
unsigned int TeksturHitam;
unsigned int TeksturKuning;
Vertex DispV_Bayangan3DAnim[3];
Vertex Titik_Cahaya;
Vector Vektor_TL; //vektor Tegak Lurus
Vector Vektor_Bayangan; //vektor Tegak Lurus
VectorClass VektorClass;

Kedua setting nilai awalnya.

////set nilai awal bayangan
Titik_Cahaya.X = -2.5f; Titik_Cahaya.Y = 6.5f; Titik_Cahaya.Z = 0.0f;
Vektor_TL.i = 0.0f; Vektor_TL.j = -(Titik_Cahaya.Y - 0.07f); Vektor_TL.k = 0.0f;

Dan waktu Displaynya.

//=========================================
//hitung vertex bayangan 0
//=========================================
Vektor_Bayangan = VektorClass.CreateVector(DispV_Hely3DAnim[0].X, DispV_Hely3DAnim[0].Y, DispV_Hely3DAnim[0].Z,
Titik_Cahaya.X, Titik_Cahaya.Y, Titik_Cahaya.Z);

CosDuaVektor = VektorClass.CosSudutVector(Vektor_TL, Vektor_Bayangan);
PanjangVektorBayangan = VektorClass.LVector(Vektor_TL) / CosDuaVektor;
Vektor_Bayangan = VektorClass.Normalisasi(Vektor_Bayangan);
Vektor_Bayangan = VektorClass.SkalaVector(Vektor_Bayangan, PanjangVektorBayangan);

//Vertex bayangan [0]
DispV_Bayangan3DAnim[0].X = Titik_Cahaya.X + Vektor_Bayangan.i;
DispV_Bayangan3DAnim[0].Y = Titik_Cahaya.Y + Vektor_Bayangan.j;
DispV_Bayangan3DAnim[0].Z = Titik_Cahaya.Z + Vektor_Bayangan.k;
//=========================================

Bravo vektor R3, sebab dengan bantuannya program bayangan 3D bisa dibuat, bagaimana rekan-rekan, sangat sederhana perhitungannya tetapi bermanfaat besar sekali dalam dunia grafik komputer.

Ogut lagi menyiapkan program bayangan 3D yang lebih expert, tunggu tanggal mainnya, berangkat dari ide yang sederhana juga maka akan muncul bayangan 3D, seperti program di artikel ini.

Salam Grafik 3D

Heriady
heriady.yoh@gmail.com




Artikel terkait
Jaring / Jala 3D Dengan OpenGL

Matematika Vektor R3

Program Animasi Game MoTer 3D dengan OpenGL