• Tidak ada hasil yang ditemukan

3.2. Algoritma Manajemen Scene

3.2.1. Algoritma Octree

Octree merupakan salah satu algoritma manajemen scene yang umumnya digunakan untuk area outdoor. Algoritma tersebut akan membagi menjadi 8 kelompok simpul kecil dari kelompok polygon secara rekursif, yang kemudian dapat diuji persimpangannya dan melakukan traversal agar dapat ditampilkan pada layar. Berikut adalah pembuatan algoritma Octree berdasarkan inputan polygon.

STIKOM

37

Gambar 3.2 Flowchart Pembuatan Algoritma Octree

Mulai

Load seluruh polygon

Buat obyek Octree

Set Octree menjadi Root

Daftarkan polygon & jumlahnya ke dalam

Octree

Kalkulasi Bounding Box Root

Cek apakah jumlah polygon > 10 Inisialisasi Child berdasarkan ID dan Parentnya sebanyak 8 bagian Proses memisahkan polygon berdasarkan

Bounding Box Child Ya

Rekursif Pembuatan Child

Selesai Tidak

STIKOM

Berikut adalah penjelasan langkah-langkah pembuatan algoritma Octree:

1. Pertama-tama diawali dengan seluruh memuat (load) seluruh polygon baik

yang berasal dari file atau sumber lainnya (data polygon disimpan menjadi pointer array TumozPolygon).

2. Proses selanjutnya adalah membuat obyek Octree yang ditujukan untuk membangun tree baru berdasarkan polygon yang ada.

3. Polygon-polygon yang telah di muat kemudian didaftarkan pada Octree yang baru dibuat dan juga memasukkan jumlahnya sebagai parameter. 4. Octree yang baru dibuat tersebut kemudian dijadikan root (simpul akar)

atau parent (simpul induk) dari tree (diagram pohon). Hal ini dilakukan agar menjadi acuan bagi semua child (simpul anak).

5. Setelah di atur menjadi root, maka dilanjutkan dengan proses

mengkalkulasi bounding box root tersebut. Setiap obyek simpul di dalam Octree harus mengkalkulasikan bounding boxnya (menggunakan AABB) agar nanti dapat dikelompokkan berdasarkan posisisnya dan untuk mengetahui ruang lingkup dari tiap simpul.

6. Setelah itu melakukan pemeriksaan jumlah anggota simpul yaitu polygon-

polygon yang telah didaftarkan, apabila melebihi batas jumlah yang ditentukan maka akan dilanjutkan ke proses selanjutnya (sistem ini memberikan batas 10 polygon per simpul). Dan jika sebaliknya maka akan menjadi simpul daun (leaf) sehingga proses pembuatan child akan diakhiri. 7. Root atau parent akan di bagi menjadi 8 child dan melakukan proses inisialisasi. Inisialisasi tersebut merupakan proses pemberian ID untuk masing-masing child, lalu mengkalkulasi ulang bounding box berdasarkan

STIKOM

39

posisinya, serta menyimpan data parentnya. Kedelapan ID atau Posisi dari child tersebut adalah Timur Laut Atas (UP_NE), Barat Laut Atas (UP_NW), Tenggara Atas (UP_SE), Barat Daya Atas (UP_SW), Timur Laut Bawah (LW_NE), Barat Laut Bawah (LW _NW), Tenggara Bawah (LW _SE), dan Barat Daya Bawah (LW _SW).

8. Apabila child telah diinisialisasi maka dilanjutkan dengan proses

memotong atau mengelompokkan polygon-polygon berdasarkan ruang lingkup bounding box dari child tersebut. Setelah selesai maka akan dilakukan proses rekursif kembali ke langkah ke 6, dan menjadikan child tersebut menjadi root atau parent bagi child dibawahnya secara terus menerus sampai memenuhi kondisi dimana jumlah polygon tidak melebihi batas yang telah ditentukan yaitu 10 polygon pada langkah ke 6.

3.2.2. Algoritma BSP Tree

Berbeda dengan Octree, BSP Tree (Binary Space Partitioning Tree) merupakan algoritma manajemen scene yang sangat efektif digunakan untuk area

indoor. Prinsip dari BSP Tree adalah membagi menjadi 2 kelompok simpul kecil dari kelompok-kelompok polygon secara rekursif. Dan hampir sama dengan Octree hasil dari BSP Tree tersebut dapat diuji persimpangannya dan juga dapat melakukan traversal ke dalam simpul-simpul agar dapat ditampilkan ke layar. Berikut adalah pembuatan algoritma BSP Tree berdasarkan inputan polygon.

STIKOM

Mulai

Load seluruh polygon

Buat obyek BSP Tree

Daftarkan polygon & jumlahnya ke dalam

BSP Tree

Set BSP Tree menjadi Root & Parent = NULL

Kalkulasi Bounding Box simpul ini

Mengklasifikasikan kelompok polygon dan mendaftarkan ke

Front dan Back Child Membuat obyek child

baru BSP Tree Front dan Back Rekursif Front & Back Child

Splitter terbaik ditemukan?

Ya

Selesai Tidak

Gambar 3.3 Flowchart Pembuatan Algoritma BSP Tree

STIKOM

41

Berikut adalah penjelasan langkah-langkah pembuatan algoritma BSP Tree: 1. Seluruh polygon baik yang berasal dari file atau sumber lainnya di muat

terlebih dahulu sebagai inputan (biasanya disimpan menjadi pointer array TumozPolygon).

2. Membuat obyek BSP Tree yang ditujukan untuk membangun tree baru

berdasarkan polygon yang ada atau polygon yang di muat sebelumnya. 3. Polygon-polygon yang telah di muat tersebut kemudian didaftarkan pada

BSP Tree yang baru dibuat dan sekaligus memasukkan jumlahnya sebagai parameter.

4. BSP Tree yang di buat tersebut kemudian dijadikan simpul root dan simpul parent di set menjadi NULL yang menandakan bahwa simpul tersebut tidak memiliki induk.

5. Pada tahapan ini merupakan awal dari proses pembuatan simpul child dan

proses yang dilakukan adalah melakukan kalkulasi bounding box (AABB) pada simpul ini. Tujuan dari proses tersebut adalah untuk mengetahui ruang lingkup dari tiap simpul.

6. Proses selanjutnya adalah mencari splitter terbaik dari simpul ini. Splitter tersebut merupakan plane pemisah yang nanti digunakan untuk memisahkan daftar polygon-polygon dari simpul ini. Berdasarkan daftar polygon yang ada splitter dapat di cari dengan cara sebagai berikut. Pertama-tama membuat perulangan pada seluruh daftar polygon ke dalam

outer loop (perulangan luar). Untuk setiap iterasi dari perulangan, pilih polygon terpilih saat ini dari daftar dan asumsikan sebagai splitter. Kemudian jalankan inner loop (perulangan dalam) yang juga melakukan

STIKOM

perulangan terhadap polygon dari daftar, dan klasifikasikan masing- masing polygon terhadap polygon yang sebelumnya dianggap sebagai splitter. Hitung berapa banyak polygon yang berada di sisi depan, di sisi belakang, dan berapa banyak polygon yang terpisah. Ketika inner loop selesai, hitung skor dari polygon yang seharusnya menjadi splitter dan bandingkan skor tersebut terhadap skor terbaik (terendah) yang dapat ditemukan. Dan arahkan pointer ke skor terendah karena semakin tinggi skor, maka semakin buruk polygon tersebut untuk menjadi splitter. Apabila splitter tidak ditemukan maka proses akan menjadikan simpul ini menjadi leaf (simpul daun) dan mengakhiri proses pembuatan tree.

7. Setelah itu dilanjutkan dengan membuat obyek child BSP Tree baru yaitu

front (simpul depan) dan back (simpul belakang) dan mengatur simpul ini sebagai parentnya.

8. Berdasarkan splitter terbaik yang telah ditemukan, maka proses

selanjutnya adalah mengklasifikasikan splitter tersebut terhadap daftar polygon yang ada pada simpul ini. Apabila polygon ada di depan dari spliter, maka masukkan ke dalam daftar polygon dari child front. Untuk yang di belakang, polygon dimasukkan ke dalam daftar polygon dari child back. Apabila polygon berpotongan dengan splitter, maka polygon di clipping (dipotong atau dibelah) dan masing-masing hasil polygon depan dan belakangnya dimasukkan ke daftar child front dan back. Dan Terakhir apabila polygon berada pada posisi splitter, maka periksa sudut antara normalnya dengan normal splitter. Jika hasil sudutnya sama dengan 0 atau positif maka normal dari polygon tersebut searah dengan normal splitter

STIKOM

43

dan dimasukkan ke dalam daftar polygon dari child front. Dan sebaliknya jika hasilnya negatif maka polygon tersebut dimasukkan ke dalam daftar polygon dari child back. Setelah proses klasifikasi dan pendaftaran polygon selesai maka masing-masing child front dan back akan melakukan proses rekursif kembali ke langkah ke 5, dan menjadikan child tersebut menjadi parent bagi child dibawahnya secara terus menerus sampai memenuhi kondisi tidak menemukan splitter terbaik pada langkah ke 5.

3.3. Perancangan Sistem

Berdasarkan analisa identifikasi permasalahan yang telah dilakukan sebelumnya bahwa Framework rendering engine ini dibangun menggunakan API Direct3D dari Microsoft DirectX SDK dan diprogram dengan bahasa pemrograman C++. Sedangkan desain sistemnya menggunakan UML dan flowchart pada masing-masing fungsi framework. Garis besar desain sistem rancang bangun yang akan dibuat digambarkan seperti gambar di bawah ini:

Aplikasi Berbasis 3D Static Library Tumoz3D.lib untuk Matematika & Algoritma 3D Static Library TumozGeneral.lib untuk Kontrol Pergerakan, Kamera dsb Static Library TumozRenderer.lib untuk interface Sistem Rendering Dynamic Library TumozD3D.dll untuk implementasi Sistem Rendering Render Interface

Buat Obyek Beri Device

Load Implemen Gunakan Gunakan Gunakan Gunakan Gunakan

Gambar 3.4. Gambaran Umum Rancang Bangun Sistem

STIKOM

Pada gambar diatas sistem dijelaskan menjadi beberapa tahapan sebagai berikut:

1. Pihak developer yang mengembangkan aplikasi berbasis 3D dapat

menggunakan tiga library yang disediakan dari framework ini antara lain TumozRenderer.lib, Tumoz3D.lib, dan TumozGeneral.lib.

2. Aplikasi pengembangan membuat obyek dari TumozRenderer.lib sebagai

library utama untuk menjalankan engine. Kemudian aplikasi tersebut memberikan permintaan device yang dibutuhkan berdasarkan API.

3. TumozRenderer.lib berfungsi sebagai interface dan class abstrak

sedangkan fungsi-fungsi utama rendering engine dalam melakukan komunikasi dengan API berada didalam TumozD3D.dll. Dengan demikian ketika obyek dibuat pada aplikasi pengembangan secara otomatis TumozRenderer.lib memuat (load) TumozD3D.dll.

4. TumozD3D.dll melakukan implementasi pada obyek Render Device

sehingga fungsi-fungsinya dapat digunakan oleh aplikasi pengembangan. Tugas dari render device tersebut antara lain insialisasi rendering, menentukan resolusi, penggunaan shader, melakukan proses-proses yang dibutuhkan pada tahapan rendering pipeline, dan sebagainya.

5. TumozRenderer.lib dan TumozD3D.dll juga berisi 2 obyek engine

tambahan yaitu TumozSkinManager dan TumozVertexCacheManager. TumozSkinManager berfungsi untuk mengelola penggunaan warna, material dan tekstur berdasarkan implementasi pada API. Sedangkan TumozVertexCacheManager berfungsi sebagai manajemen verteks dan indeks buffer dalam melakukan proses rendering.

STIKOM

45

6. Aplikasi pengembangan dapat menggunakan class-class didalam

Tumoz3D.lib yang terpisah dari TumozRenderer.lib. Class-class tersebut merupakan perhitungan matematika dan algoritma yang diperlukan untuk mengembangkan aplikasi berbasis 3D.

7. Selain Tumoz3D.lib aplikasi pengembangan juga dapat menggunakan

library TumozGeneral.lib yang berisi class dan fungsi untuk manajemen scene, kontrol pergerakan dan informasi yang dibutuhkan dalam proses rendering.

8. TumozD3D.dll juga menggunakan library Tumoz3D.lib dan

TumozGeneral.lib dalam melakukan perhitungan matematika dan algoritma serta fungsi-fungsi yang diperlukan lainnya untuk memproses dan menjalankan sistem rendering engine.

3.4. Class Diagram

Class diagram atau diagram kelas digunakan untuk menampilkan kelas- kelas atau paket-paket di dalam sistem dan relasi antar mereka. Relasi antar kelas pada Framework Tumoz Rendering Engine diilustrasikan sebagai berikut:

STIKOM

Gambar 3.5. Class Diagram Tumoz Rendering Engine TumozMCEgo (from TumozGeneral) TumozTimer (from TumozGeneral) TumozMCFree (from TumozGeneral) TumozSkinManager (from TumozRenderer) TumozVertexCacheManager (from TumozRenderer) TumozRenderer (from TumozRenderer) TumozRenderDevice (from TumozRenderer) 1 1 1 1 11 11 dibuat oleh TumozD3DSkinManager (from TumozD3D) TumozD3DVCManager (from TumozD3D) TumozD3DVCache (from TumozD3D) 1 * 1 * TumozPolylist (from Tumoz3D) TumozOctree (from Tumoz3D) TumozPolygon (from Tumoz3D) 1 * 1 * membangun TumozBSPTree (from Tumoz3D) membangun TumozD3DEnum (from TumozD3D) TumozPlane (from Tumoz3D) memotong membagi TumozAabb (from Tumoz3D) membatasi membatasi membatasi TumozObb (from Tumoz3D) TumozRay (from Tumoz3D) TumozMovementController (from TumozGeneral) TumozD3D (from TumozD3D) 1 1 1 1 digunakan TumozVector (from Tumoz3D) digunakan mengatur bersimpangan bersimpangan bersimpangan menghitung TumozQuat (from Tumoz3D) TumozMatrix (from Tumoz3D) digunakan mentrasformasi dirubah ke

STIKOM

SURABAYA

47

Gambar 3.5. menunjukkan bahwa Framework Tumoz Rendering Engine menyediakan 3 kelas abstrak utama yang berfungsi sebagai interface yaitu TumozRenderDevice, TumozSkinManager, dan TumozVertexCacheManager. Implementasi dari masing-masing interface tersebut mengarah pada kelas implementasi yang mengacu pada referensi API Direct3D yaitu TumozD3D, TumozD3DSkinManager, dan TumozD3DVCManager. Karena interface tersebut bersifat dinamis (dynamic link library) maka kelas TumozRenderer bertugas untuk membuat dan menentukan hubungan antara kelas interface dengan kelas implementasi yang sesuai. Dan Kelas TumozD3DVCache menjadi bagian yang membentuk (agregasi) dari kelas TumozVertexCacheManager, begitu juga pada kelas TumozD3DEnum yang merupakan bagian dari TumozD3D.

Kelas TumozD3D menggunakan beberapa kelas untuk algoritma dan perhitungan tiga dimensinya antara lain: TumozVector, TumozMatrix, dan TumozPlane. Sedangkan kelas lainnya yang tersedia untuk perhitungan geometri dan algoritma tiga dimensi adalah: TumozQuat, TumozRay, TumozPolygon, TumozAabb, TumozObb, TumozBSPTree, dan TumozOctree. Juga berserta kelas TumozPolylist yang memiliki anggota dari kelas TumozPolygon.

Kelas TumozVector memiliki beberapa peranan penting dalam penggunaan algoritma dan perhitungan tiga dimensi. Salah satunya adalah kelas TumozVector merupakan dasar untuk menghitung transformasi (seperti rotasi dan pergerakan obyek tiga dimensi) pada kelas TumozMatrix. TumozVector juga

digunakan untuk menghitung persimpangan (intersection) pada kelas TumozRay,

TumozAabb, dan TumozObb. Pada kelas TumozPlane untuk mengatur bidang yang akan dibentuk membutuhkan kelas TumozVector. Dan peran kelas

STIKOM

TumozVector lainnya adalah untuk membantu perhitungan geometri pada kelas TumozMovementController contohnya seperti letak kamera, sudut pandang dan sebagainya. Selain kelas TumozVector peranan penting lainnya juga terdapat pada kelas TumozQuat yang dapat mengubah (konversi) nilai-nilai dari kelas TumozMatrix untuk menghitung rotasi obyek tiga dimensi.

Seperti yang terlihat pada gambar 3.5, kelas TumozMovementController mempunyai dua kelas turunan yaitu kelas TumozMCEgo dan TumozMCFree. Sedangkan kelas TumozTimer tidak memiliki relasi dengan kelas manapun, akan tetapi TumozTimer memiliki referensi dengan library standar C++ (stdlib). Berdasarkan gambar relasi antar kelas diatas, maka selanjutnya adalah penjelasan secara detil fungsionalitas dari masing-masing kelas di dalam Framework Tumoz Rendering Engine.

3.4.1. Class TumozRenderer

Kelas TumozRenderer mempunyai beberapa atribut dan operasi untuk menentukan jenis API yang ingin dijadikan implementasi agar dapat dibuatkan obyeknya dan dihubungkan ke dalam interface. Untuk lebih jelasnya dapat dilihat pada gambar 3.6.

Gambar 3.6. Class TumozRenderer

STIKOM

49

3.4.2. Class TumozRenderDevice

Kelas TumozRenderDevice merupakan interface yang ditujukan untuk menjadi acuan (prototype) bagi kelas implementasi yang paling utama yang bertugas dalam mengelola perangkat rendering. Acuan itu berupa atribut dan operasi-operasi virtual yang berhubungan dengan pengolahan perangkat rendering seperti inisialisasi perangkat grafis rendering, menjalankan dan menghentikan proses rendering, mengatur pencahayaan, membuat obyek manajer verteks dan manajer skin dan sebagainya. Untuk lebih jelasnya dapat dilihat pada gambar 3.7.

Gambar 3.7. Class TumozRenderDevice

STIKOM

3.4.3. Class TumozVertexCacheManager

Kelas TumozVertexCacheManager memiliki peranan yang hampir sama dengan kelas TumozRenderDevice yaitu sebagai interface yang berfungsi sebagai prototype bagi kelas implementasi yang memanajemen pengelolaan hal-hal yang berhubungan dengan verteks. Operasi-operasi yang ada terdiri dari pembuatan buffer (memory penyimpanan) verteks statis dan buffer indeks, merender masing- masing verteks baik dalam bentuk titik, garis, ataupun polygon, mengirim konten verteks dan indeks dari buffer ke perangkat rendering agar dapat di gambar, validasi kondisi atau status verteks, dan lain-lain. Untuk lebih jelasnya dapat dilihat pada gambar 3.8.

Gambar 3.8. Class TumozVertexCacheManager

3.4.4. Class TumozSkinManager

Kelas TumozSkinManager juga merupakan interface yang berfungsi sebagai prototype atau acuan bagi kelas implementasi yang memanajemen hal-hal yang berkaitan dengan pemberian warna atau tekstur pada lapisan terluar atau

STIKOM

51

disebut skin (kulit) dari obyek tiga dimensi. Bentuk struktur dari kelas TumozSkinManager adalah sebagai berikut:

Gambar 3.9. Class TumozSkinManager

Seperti pada gambar 3.9. operasi-operasi yang tersedia pada kelas TumozSkinManager antara lain menambah dan mengganti skin atau tekstur dari obyek tiga dimensi, mengubah warna material, membandingkan warna material, dan sebagainya.

3.4.5. Class TumozD3D

Kelas TumozD3D merupakan kelas implementasi paling penting dan paling utama yang merupakan turunan dari interface TumozRenderDevice. Fungsi dari kelas ini adalah mengelola perangkat rendering dengan menggunakan

STIKOM

referensi dari API Direct3D. Kelas TumozD3D mengelola hampir seluruh proses penting yang ada di dalam Framework Tumoz Rendering Engine. Dan struktur dari kelas TumozD3D digambarkan oleh gambar di bawah ini:

Gambar 3.10. Class TumozD3D

Atribut dari kelas TumozD3D terdiri dari pointer dari obyek-obyek API

Direct3D yang berhubungan dengan perangkat rendering seperti Direct3D9,

Direct3DDevice9, D3DXFont, dan lain-lain. Selain itu atribut-atribut pada kelas TumozD3D juga berisi status atau kondisi dari jalannya sistem rendering.

STIKOM

53

Sedangkan operasi-operasi yang ada di dalam kelas TumozD3D sama dengan operasi-operasi virtual yang ada di dalam interface TumozRenderDevice dengan tambahan fungsi-fungsi bantuan (helper function) untuk proses internal contohnya fungsi OneTimeInit(), Go(), Log(), dan sebagainya.

3.4.6. Class TumozD3DSkinManager

Kelas TumozD3DSkinManager adalah kelas implementasi dari interface TumozSkinManager yang menggunakan API Direct3D. Fungsi dari kelas TumozD3DSkinManager sama dengan interface TumozSkinManager yang telah dijelaskan sebelumnya disertai dengan atribut dan operasi tambahan untuk penerapan internal sistem. Untuk lebih jelasnya dapat dilihat pada gambar 3.11.

Gambar 3.11. Class TumozD3DSkinManager

STIKOM

3.4.7. Class TumozD3DVCManager

Seperti kelas TumozD3D dan TumozD3DSkinManager bahwa TumozD3DVCManager juga merupakan kelas implementasi API Direct3D dari interface TumozVertexCacheManager. Struktur kelasya adalah sebagai berikut:

Gambar 3.12. Class TumozD3DVCManager

STIKOM

55

Konsep manajemen verteks pada API Direct3D menggunakan sistem

Flexible Vertex Format (FVF) sehingga bebas untuk menentukan sendiri secara fleksibel format dari verteks yang sesuai dengan kebutuhan. Akan tetapi pada kelas TumozD3DVCManager hanya menyediakan 6 pilihan pada atribut format verteks yaitu:

1. Position Untransformed Vertex (PS) adalah format verteks yang hanya berisi data posisi saja tanpa adanya transformasi.

2. Unstransformed and Unlit Vertex (UU) yaitu merupakan format verteks yang berisi data posisi, vektor normal, dan koordinat tekstur. Biasanya digunakan untuk menggambarkan benda tanpa disertai efek pancahayaan.

3. Unstransformed and Lit Vertex (UL) yaitu merupakan format verteks yang

paling umum dipakai yang berisi data posisi, warna material diffuse, dan koordinat tekstur. Benda yang digambar menggunakan format verteks ini dapat dipengaruhi oleh efek pencahayaan.

4. Character Animation (CA) adalah format verteks yang berisi data posisi, vektor normal, dan koordinat tekstur. Biasanya digunakan untuk menggambarkan animasi karakter.

5. Three Texture Coordinat (3T) adalah format verteks yang berisi data posisi, vektor normal, dan 3 koordinat tekstur. Biasanya digunakan untuk efek-efek spesial atau khusus seperti detail map, heightmap dan lain-lain. 6. Tangent Vector (TV) adalah format verteks yang berisi data posisi, vektor

normal, koordinat tekstur, dan vektor tangen. Biasanya juga digunakan untuk spesial efek seperti bump mapping, dan sebagainya.

STIKOM

Fungsi dari kelas TumozD3DVCManager ini sama dengan interface TumozVertexCacheManager yaitu untuk mengelola verteks. Akan tetapi untuk mengelola verteks secara individual kelas ini dibantu oleh kelas khusus (helper class) yaitu kelas TumozD3DVCache yang akan dijelaskan di bawah ini.

3.4.8. Class TumozD3DVCache

Kelas TumozD3DVCache merupakan kelas untuk mengelola

sekelompok data verteks secara individual. Atribut-atribut dan operasi-operasi dari kelas ini antara lain menghubungkan verteks ke data skin seperti material dan tekstur, menambah atau menghapus data indeks dan verteks ke dalam buffer, dan sebagainya. Untuk lebih jelasnya dapat dilihat pada gambar 3.13.

Gambar 3.13. Class TumozD3DVCache

STIKOM

57

3.4.9. Class TumozVector

Kelas TumozVector merupakan kelas terpenting dalam perhitungan geometri matematika dan algoritma tiga dimensi. Karena biasanya vektor mewakili posisi dari suatu obyek tiga dimensi maka atributnya terdiri dari x, y, z, dan w. Sedangkan operasi-operasinya meliputi perhitungan panjang vektor, negasi, normalisasi, differensiasi, penambahan, pengurangan, perkalian dot product, perkalian cross product, dan lain-lain. Untuk lebih jelasnya dapat dilihat pada gambar 3.14.

Gambar 3.14. Class TumozVector

3.4.10.Class TumozMatrix

Kelas TumozMatrix juga merupakan salah satu kelas yang penting dan dibutuhkan dalam perhitungan geometri matematika. Kelas TumozMatrix

STIKOM

biasanya digunakan untuk perhitungan transformasi seperti proyeksi, rotasi, scaling, dan translasi. Atribut kelas TumozMatrix mewakili elemen-elemen dari matriks homogen 4x4. Sedangkan operasi-operasinya terdiri dari identitas, invers, transpos, rotasi terhadap sumbu, dan sebagainya. Untuk lebih jelasnya dapat dilihat pada gambar 3.15.

.

Gambar 3.15. Class TumozMatrix

3.4.11.Class TumozQuat

Kelas TumozQuat merupakan kelas yang mewakili teknik quaternion yang biasanya digunakan untuk menghitung rotasi dan orientasi pada obyek tiga dimensi (untuk mengatasi Gimbal Lock) serta untuk perhitungan-perhitungan lainnya. Atribut quaternion terdiri dari elemen dari suatu vektor yaitu x, y, z dan

STIKOM

59

skalar w. Operasi-operasi dari kelas TumozQuat terdiri dari konversi dari atau ke euler angle, normalisasi, konjugasi, konversi dari matriks, mengambil magnitude, perkalian, pembagian, penambahan, negasi, rotasi dan lain-lain. Untuk lebih jelasnya dapat dilihat pada gambar 3.16.

Gambar 3.16. Class TumozQuat

3.4.12.Class TumozRay

Kelas TumozRay merupakan kelas yang mewakili suatu ray (ruas garis yang memiliki arah) biasanya digunakan untuk teknik raycasting, menghitung persimpangan (intersection) dengan obyek tiga dimensi, deteksi benturan (collision detection), perhitungan arah pencahayaan, dan sebagainya. Atribut dari kelas TumozRay hanya ada dua yaitu vektor titik asal (vector origin) dan vektor arah (vector direction). Sedangkan operasinya terdiri dari pengaturan ray,

STIKOM

transformasi ray ke dalam ruang matriks, dan persimpangan dengan tiap-tiap obyek tiga dimensi. Untuk lebih jelasnya dapat dilihat pada gambar 3.17.

Gambar 3.17. Class TumozRay

3.4.13.Class TumozPlane

Kelas TumozPlane merupakan kelas perwakilan dari suatu plane. Pada

umumnya plane digunakan untuk menghitung frustum culling, clipping,

intersection dan lain-lain. Atribut-atribut dari kelas TumozPlane adalah vektor normal, vektor titik, dan atribut jarak d ke titik asal. Operasi-operasi pada kelas TumozPlane meliputi pengaturan plane, klasifikasi plane, kalkulasi jarak suatu titik ke plane, dan sebagainya. Untuk lebih jelasnya dapat dilihat pada gambar 3.18.

STIKOM

61

Gambar 3.18. Class TumozPlane

3.4.14.Class TumozAabb

Kelas TumozAabb digunakan sebagai kelas perwakilan dari Axially

Aligned Bounding Box yang digunakan sebagai salah satu volume pembatas

obyek tiga dimensi. Atribut-atributnya berupa vektor minimum, vektor maksimum, dan vektor pusat. Operasi-operasinya terdiri dari konstruksi Aabb dari kelas TumozObb, memeriksa obyek yang akan dihilangkan (culing), mendeteksi obyek ray yang sepenuhnya berada di dalam Aabb (contain), persimpangan (intersection), dan sebagainya. Untuk lebih jelasnya dapat dilihat pada gambar 3.19.

STIKOM

Gambar 3.19. Class TumozAabb

3.4.15.Class TumozObb

Kelas TumozObb juga merupakan kelas perwakilan dari salah satu

Dokumen terkait