Halo semuanya, rekan-rekan sekalian, jumpa lagi dengan artikel ogut di hari minggu ini (besok hari raya imlek, SELAMAT bagi rekan-rekan yang merayakan, ogut sih besok kerja di gudang ngak ada libur), setelah sibuk dengan kerjaan di gudang furniture bule prancis (Patrick Segin u are my best friend forever, no bule like u), kali in ogut akan memberikan ide untuk mendeteksi tabrakan objek game 3D dengan menggunakan vektor R3.
Ok kita mulai pembahasannya...mulai serius nih....
Pada gambar di bawah ini Anda dapat melihat sebuah balok 3D dan sebuah titik P.
Untuk mendeteksi titik P berada di dalam balok tersebut, pertama kita beri nama empat titik sudut balok seperti gambar di bawah ini.
Berikutnya buat tiga buah vektor dari empat titik sudut balok (vektor AB, AC, AD), dan vektor AP.
Proyeksikan vektor AP ke vektor AC, sehingga terbentuk vektor V1, seperti gambar berikut ini.
Kondisi I :
Nilai Skala Proyeksi V1 antara 0(nol) sampai 1
(0 ≤ skala proyeksi V1 ≤ 1).
Langkah berikutnya proyeksikan vektor AP ke vektor AB, sehingga terbentuk vektor V2, seperti gambar berikut ini.
Kondisi II :
Nilai Skala Proyeksi V2 antara 0(nol) sampai 1
(0 ≤ skala proyeksi V2 ≤ 1).
Terakhir proyeksikan vektor AP ke vektor AD, sehingga terbentuk vektor V3, seperti gambar berikut ini.
Kondisi III :
Nilai Skala Proyeksi V3 antara 0(nol) sampai 1
(0 ≤ skala proyeksi V3 ≤ 1).
Jika kondisi I, II dan III memenuhi, maka titik P berada di dalam balok 3D.
Demikian rekan-rekan teori deteksi tabrakan objek 3D, sangat sederhana bukan, dan semuanya menjadi mudah berkat bang Victor (maksudnya vektor). Ok sekian dahulu rekan-rekan, di artikel berikutnya ogut akan menyertakan program contoh deteksi tabrakan objek 3D ini, jadi harap sabar ya. Seperti biasa jika ada saran dan ide jangan ragu untuk disampaikan ke ogut dan ogut juga menerima ide dari rekan-rekan jika rekan-rekan ingin menulis di blog sederhana ini. Sampai jumpai lagi...
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.
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
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.
Selamat Pagi semuanya, kali ini ogut akan membahas tentang animasi di objek 3D dengan menggunakan vektor R3. Pada artikel sebelumnya ogut telah memberikan contoh program animasi 3D dengan menggunakan MD2, Anda dapat melihat pada link ini.
Contoh program yang telah ogut posting belum menerangkan cara membuat animasi pada objek 3D yang banyak bermanfaat untuk game 3D. Dan kali ini ogut akan menerangkan teori tentang animasi 3D....ok semua...siap......lanjut.....
Pada gambar di atas dapat Anda lihat sebuah titik A(Ax, Ay, Az) pada sistem koordinat cartesius 3D, Titik A akan bergerak menuju titik B(Bx, By, Bz). Dari titik A ke titik B dapat dibuat sebuah lintasan yaitu vektor c seperti gambar di bawah ini.
Dengan menggunakan vektor c maka titik A dapat ditranslasikan(dipindahkan) ke titik B, yang menjadi masalah jika perpindahan dari titik A langsung ke titik B maka tidak akan sedap dipandang mata, untuk membuat animasi perpindahan agar menjadi lebih hidup maka vektor c diskala menjadi 1/3 bagian.
Pada gambar di atas Anda dapat melihat titik A pindah ke A’ menggunakan vektor 1/3 c, lalu dari A’ menuju ke A” menggunakan vektor 1/3 c, dari titik A” menuju ke titik B juga menggunakan vektor 1/3 c. Dengan menggunakan cara ini maka perpindahan (animasi) dari titik A menuju ke titik B akan menjadi halus atau sedap dipandang mata.
Lalu bagaimana jika animasi tidak hanya bergerak ke satu arah seperti gambar di atas. Titik A bergerak ke titik B, lalu bergerak lagi ke titik C. Jawabnya sama saja tetap menggunakan vektor seperti sebelumnya, tetapi vektor yang digunakan berbeda. Pada contoh ini vektor yang digunakan ada 3 buah, yaitu vektor d, e dan f.
Setelah membahas tentang animasi titik, sekarang bagaimana jika yang beranimasi adalah objek 3D yang mempunyai titik koordinat(vertex) lebih dari satu? Jawabnya sama saja. Perhatikan gambar di atas, sebuah segitiga ABC dengan 3 titik koordinat, akan beranimasi menuju ke titik DEF. Vektor yang digunakan sebanyak 3 buah yaitu, vektor g, h dan i.
Demikian rekan-rekan, teori animasi untuk objek 3D, sangat sederhana bukan, teori ini tidak jauh berbeda dengan teori translasi dengan vektor r2 yang pernah ogut bahas(link artikel yang lain). Sampai disini dulu ya, artikel berikutnya ogut akan memposting contoh program yang sangat sederhana untuk animasi 3D ini agar rekan-rekan lebih mudah untuk mengerti.
Update 2 Jan 2015
Dengan teori ini ogut bisa buat program seperti ini lho.
Pagi hari di bulan ramadhan, bulan yang penuh dengan berkat untuk kita semua...
Selamat Pagi semua...senang sekali setelah beberapa waktu tidak bisa menulis...sekarang bisa kembali menulis. Pada kesempatan kali ini aku akan menulis tentang vektor R3 yang sangat bermanfaat untuk pemrograman grafik dan game, berbagai efek dan trik dapat dipecahkan dengan perhitungan vektor R3 (contoh program yang memakai vektor klik disini), untuk itu ogut sarankan agar rekan-rekan membaca artikel ini dengan seksama untuk memudahkan rekan sekalian melangkah ke tahap selanjutnya.
Membuat Vektor
Vektor jika diartikan secara sederhana adalah sebuah lintasan yang mempunyai arah dan panjang tertentu.
Vektor tidak sama dengan titik koordinat walaupun cara penulisannya kadang sama. Perbedaan dasar vektor dengan titik koordinat adalah vektor tidak mempunyai lokasi tetapi mempunyai panjang dan arah, sedangkan titik koordinat adalah sebuah lokasi.
Vektor dapat dibuat dengan dua buah titik koordinat, sebagai contoh titik A(1,1,1) dan B(2,3,1) maka vektor dari A ke B dapat dicari dengan rumus:
ci = Xb – Xa
cj = Yb – Ya
ck = Zb – Za
ci = 2 – 1
cj = 3 – 1
ck = 1 – 1
sehingga i=1, j=2, k=0, atau c(1,2,0).
Kesimpulan yang dapat ditarik adalah, jika dibuat sebuah lintasan dari titik A ke titik B maka lintasan tersebut adalah sebuah vektor c dengan nilai(1,2,0).
Panjang Vektor
Untuk menghitung panjang vektor dapat dipakai rumus Pythagoras.
Invers Vektor
Arah sebuah vektor dapat dibalik dengan menggunakan skala=-1.
Arah lintasan dari titik A ke titik B adalah c(1,2,0), jika dibuat terbalik arah atau lintasan dari titik B ke titik A, vektor c tinggal dikalikan dengan skala=-1.
c = (1i, 2j, 0k)
invers c = (1i*-1, 2j*-1, 0k*-1)
= (-1i, -2j, 0k)
Normalisasi
Normalisasi adalah membuat panjang sebuah vektor menjadi satu.
Proses normalisasi berhubungan erat dengan skala vektor, normalisasi dapat dihitung dengan membagi setiap elemen vektor dengan panjang vektor itu sendiri.
Contoh:
Normalisasikan vektor c(1,2,0).
Jawab:
c = (1i, 2j, 0k)
│c│ = √5
norm. c = (1i/√5, 2j/√5, 0k/√5)
= (0.44i, 0.89j, 0.0k)
Jika vektor hasil normalisasi dihitung panjangnya maka akan menghasilkan nilai 1(satu). Normalisasi juga digunakan untuk menentukan panjang sebuah vektor.
Contoh:
Hitunglah vektor d yang mempunyai arah yang berlawanan dengan vektor c tetapi mempunyai panjang=5.
c = (1i, 2j, 0k)
invers c = (-1i, -2j, 0k)
norm. invers c = (-1i/√5, -2j/√5, 0k/√5)
= (-0.44i, -0.89j, 0.0k)
d = 5 * norm. invers c
= (-0.44i*5, -0.89j*5, 0.0k*5)
= (-2.23i, -4.47j, 0.0k)
Dot Product
Dot product atau perkalian titik dua buah vektor.
Rumus dot product untuk vektor a dan vektor b adalah:
a.b = ai.bi + aj.bj + ak.bk
Contoh:
Jika vektor a(2,1,3) dan vektor b(2,3,1) hitunglah nilai dot product dari kedua vektor di atas.
Jawab:
a.b = 2.2 + 1.3 + 3.1
= 4 + 3 + 3
= 10
Sudut Dua Vektor
Sudut yang dibentuk oleh dua buah vektor dapat dihitung dengan bantuan dot product.
a.b = │a││b│ cos Ө˚
Rumus di atas bisa dipakai untuk menghitung sudut antara vektor a dan vektor b.
Sudut hasil perhitungan dengan rumus di atas adalah sudut terkecil yang dibentuk oleh dua buah vektor.
Dengan menggunakan rumus yang telah diterangkan sebelumnya maka sudut yang dibentuk vektor a dan vektor b pada gambar di atas adalah sudut Ө1˚ bukan Ө2˚.
Contoh:
Carilah sudut antara vektor a(2,1,3) dan vektor b(2,3,1).
Cross Product
Cross product atau perkalian silang dua buah vektor.
Perkalian silang dua buah vektor menghasilkan sebuah vektor yang tegak lurus terhadap dua buah vektor tersebut.
Pada gambar di atas Anda dapat melihat vektor c yang tegak lurus terhadap vektor a dan vektor b, vektor c adalah vektor normal yang dapat dicari dengan perhitungan cross product:
a x b = (aj.bk – ak.bj)i
(ak.bi – ai.bk)j
(ai.bj – aj.bi)k
Contoh:
Tentukan vektor normal c untuk vektor a(2,1,3) dan vektor b(2,3,1).
Jawab:
a x b = (1.1 – 3.3)i
(3.2 – 2.1)j
(2.3 – 1.2)k
a x b = (1 – 9)i
(6 – 2)j
(6 – 2)k
a x b = -8i
4j
4k
c = (-8i, 4j, 4k)
Tuntas sudah cerita tentang vektor R3, vektor yang ogut tampilkan pada artikel ini akan sangat berguna untuk program animasi yang akan ogut bahas di lain waktu, jadi alangkah baiknya jika rekan-rekan mengerti tentang vektor ini, emang sih kelihatannya ruwet bannggeetttt, tapi jika ingin masuk ke dalam pemrograman grafik atau game ya mau ngak mau harus belajar tentang vektor. Ok rekan-rekan sampai jumpa ya.
Update 16 Jan 2016
Dengan vektor R3 ogut bisa buat program seperti di bawah ini....