bab iii perancangan sistem analisa identifikasi ...repository.dinamika.ac.id/592/6/bab iii.pdf33 bab...

76
33 BAB III PERANCANGAN SISTEM 3.1. Analisa Identifikasi Permasalahan Dalam mengembangkan aplikasi berbasis tiga dimensi pihak pengembang biasanya memerlukan suatu alat (tool) yang dapat berupa API yang berfungsi untuk menghubungkan antara perangkat lunak yang dikembangkan dengan perangkat keras untuk mengolah data tiga dimensi yang diinginkan. API tersebut merupakan kumpulan interface atau perintah untuk menjalankan hal-hal yang dibutuhkan dalam melakukan pengolahan data tiga dimensi yaitu antara lain: enumerasi device rendering, pengaturan tampilan, mengolah data primitif tiga dimensi, menghitung posisi model, menampilkan gambar ke layar, memproses file tekstur, dan sebagainya. API tersebut dari awal ditujukan sebagai antarmuka (interface) untuk perangkat grafis tiga dimensi. Dengan demikian tahapan-tahapan dalam pengolahannya menyesuaikan urutan proses yang panjang dalam hardware grafis tiga dimensi tersebut. Contohnya pada gambar tahapan proses pada API Direct3D (Direct3D Graphics Pipeline) dibawah ini: Gambar 3.1. Direct3D Graphics Rendering Pipeline [Sumber: http://www.viznet.ac.uk/files/d39pipeline.gif Time Download: 15/01/2013 14:38:10] STIKOM SURABAYA

Upload: others

Post on 28-Mar-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

33

BAB III

PERANCANGAN SISTEM

3.1. Analisa Identifikasi Permasalahan

Dalam mengembangkan aplikasi berbasis tiga dimensi pihak

pengembang biasanya memerlukan suatu alat (tool) yang dapat berupa API yang

berfungsi untuk menghubungkan antara perangkat lunak yang dikembangkan

dengan perangkat keras untuk mengolah data tiga dimensi yang diinginkan. API

tersebut merupakan kumpulan interface atau perintah untuk menjalankan hal-hal

yang dibutuhkan dalam melakukan pengolahan data tiga dimensi yaitu antara lain:

enumerasi device rendering, pengaturan tampilan, mengolah data primitif tiga

dimensi, menghitung posisi model, menampilkan gambar ke layar, memproses file

tekstur, dan sebagainya.

API tersebut dari awal ditujukan sebagai antarmuka (interface) untuk

perangkat grafis tiga dimensi. Dengan demikian tahapan-tahapan dalam

pengolahannya menyesuaikan urutan proses yang panjang dalam hardware grafis

tiga dimensi tersebut. Contohnya pada gambar tahapan proses pada API Direct3D

(Direct3D Graphics Pipeline) dibawah ini:

Gambar 3.1. Direct3D Graphics Rendering Pipeline

[Sumber: http://www.viznet.ac.uk/files/d39pipeline.gif

Time Download: 15/01/2013 14:38:10]

STIKOM S

URABAYA

Page 2: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

34

Berdasarkan gambar diatas prosedur pipeline dimulai dari membuat data

primitif (primitive data) berupa titik, garis, segitiga dan poligon serta

mendefinisikan data verteks (vertex data) beserta parameternya sesuai kebutuhan.

Setelah itu tesselator unit akan mengkonversi urutan dari atas ke bawah data

primitif, displacement maps, dan mesh patches ke lokasi verteks lalu menyimpan

lokasi tersebut ke dalam verteks buffer dan proses ini dinamakan Tesselation.

Kemudian pada tahapan Vertex Processing transformasi data Direct3D

diaplikasikan ke verteks yang kemudian disimpan di verteks buffer. Selanjutnya

tahap Geometry Processing akan melakukan beberapa proses yang meliputi

clipping, backface culling, evaluasi atribut, dan rasterization yang kemudian

digunakan pada verteks yang sudah ditransformasikan. Tahapan Pixel Processing

akan melakukan operasi pixel shader menggunakan data geometri untuk

memodifikasi input nilai verteks dan data tekstur sehingga menghasilkan output

berupa nilai warna pixel (pixel color values). Dan terakhir pada tahapan Pixel

Rendering merupakan proses rendering akhir yang memodifikasi warna pixel

dengan nilai alpha, depth (kedalaman), stencil testing, blending dan fog lalu

semua hasil nilai pixel akan ditampilkan ke output display (layar). Tahapan-

tahapan pipeline grafis tersebut harus dilalui untuk menghasilkan gambar tiga

dimensi sekecil apapun agar dapat di proses ke dalam layar.

Berdasarkan penjelasan diatas maka pengembang akan sulit untuk

mengembangkan aplikasi berbasis tiga dimensi dikarenakan oleh proses yang

panjang dan kompleks dari prosedur tahapan-tahapan pipeline grafis dari API.

Permasalahan lainnya adalah banyaknya fungsi-fungsi teknis yang rumit pada API

seperti fungsi persiapan device beserta parameternya, pengaturan tipe data

STIKOM S

URABAYA

Page 3: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

35

verteks, pengaturan buffer-buffer untuk perangkat grafis tiga dimensi dan

sebagainya. API grafis tiga dimensi juga memiliki keterbatasan yaitu kurangnya

dukungan algoritma-algoritma untuk efisiensi dan efektifitas dalam proses

rendering, dan perhitungan matematika dalam mengolah data tiga dimensi. Serta

tidak adanya manajemen untuk mengelola sumber daya yang saling terintegrasi

antara perangkat lunak yang dikembangkan oleh pihak pengembang dengan

perangkat keras grafis tiga dimensi yang disediakan.

Untuk mengatasi permasalahan diatas maka perlu dirancang suatu sistem

framework rendering engine yang membantu pihak pengembang dalam

mengembangkan aplikasi berbasis tiga dimensi yang diinginkan. Konsep

framework dinilai dapat sangat bermanfaat untuk pengembangan aplikasi karena

fungsi dan perintah dari API grafis seperti Direct3D berserta algoritma-algoritma

dan perhitungan matematika akan dikelompokkan ke dalam modul-modul

subsistem yang saling terintegrasi antara satu dengan yang lain. Kemudian akan

menyediakan class-class yang berisi perintah dan fungsi-fungsi yang hanya

dibutuhkan oleh pihak pengembang untuk membuat suatu aplikasi berbasis tiga

dimensi. Sedangkan rendering engine berfungsi sebagai manjemen pengelolaan

sumber daya dari aplikasi yang dibuat ketika ditampilkan di layar (secara

realtime). Rendering engine juga melakukan fungsi-fungsi tertentu (khusus)

seperti enumerasi adapter grafis, mengolah data dan model tiga dimensi,

berkomunikasi dengan kartu grafis, mengelola memory (buffer), melakukan

komputasi perhitungan matematika dan pekerjaan-pekerjaan tingkat rendah

lainnya. Selain itu pada framework rendering engine ini menggunakan teknologi

SIMD atau perhitungan matematika cepat dengan bantuan hardware seperti MMX

STIKOM S

URABAYA

Page 4: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

36

dan SSE untuk mengolah komputasi algoritma dan perhitungan matematika.

Dengan adanya framework rendering engine tersebut pihak pengembang akan

lebih mudah mengelola dan menjalankan aplikasi berbasis tiga dimensi yang

dikembangkannya sesuai dengan yang diharapkan.

3.2. Algoritma Manajemen Scene

Dalam proses rendering algoritma manajemen scene merupakan instrumen

yang sangat penting jika ingin menampilkan menampilkan lebih dari ratusan ribu

polygon segitiga yang membentuk obyek-obyek 3D ke dalam layar. Hal ini

dikarenakan keterbatasan dari pengolahan yang dapat dilakukan oleh kartu grafis

yang ada saat ini. Algoritma tersebut membantu memilih polygon yang diperlukan

terhadap lokasi dan orientasi tertentu dari penonton agar dapat dikeluarkan dari

seluruh anggota ratusan ribu lebih polygon dari scene. Karena kebanyakan dari

polygon tersebut tidak terlihat oleh user. Metode algoritma manajemen scene

yang akan digunakan oleh framework rendering engine ini adalah Octree dan BSP

Tree.

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 S

URABAYA

Page 5: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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

SelesaiTidak

STIKOM S

URABAYA

Page 6: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

38

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 S

URABAYA

Page 7: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 8: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

40

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

SelesaiTidak

Gambar 3.3 Flowchart Pembuatan Algoritma BSP Tree

STIKOM S

URABAYA

Page 9: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 10: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

42

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 S

URABAYA

Page 11: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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

LoadImplemen

Gunakan

Gunakan Gunakan

Gunakan

Gunakan

Gambar 3.4. Gambaran Umum Rancang Bangun Sistem

STIKOM S

URABAYA

Page 12: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

44

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 S

URABAYA

Page 13: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 14: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

46

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)

11 11 1 11 1

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

membatasiTumozObb

(from Tumoz3D)

TumozRay(from Tumoz3D)

TumozMovementController(from TumozGeneral)

TumozD3D(from TumozD3D)

1 11 1

digunakan

TumozVector(from Tumoz3D)

digunakan

mengatur

bersimpanganbersimpangan

bersimpangan

menghitung

TumozQuat(from Tumoz3D)

TumozMatrix(from Tumoz3D)

digunakan

mentrasformasi

dirubah ke

STIKOM S

URABAYA

Page 15: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 16: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

48

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 S

URABAYA

Page 17: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 18: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

50

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 S

URABAYA

Page 19: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 20: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

52

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 S

URABAYA

Page 21: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 22: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

54

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 S

URABAYA

Page 23: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 24: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

56

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 S

URABAYA

Page 25: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 26: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

58

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 S

URABAYA

Page 27: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 28: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

60

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 S

URABAYA

Page 29: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

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 S

URABAYA

Page 30: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

62

Gambar 3.19. Class TumozAabb

3.4.15. Class TumozObb

Kelas TumozObb juga merupakan kelas perwakilan dari salah satu

volume pembatas obyek tiga dimensi yaitu Oriented Bounding Box. Atributnya

terdiri dari 3 vektor sumbu, 3 jari-jari sumbu, dan vektor pusat. Sedangkan

operasinya hampir sama dengan kelas TumozAabb yaitu persimpangan,

memeriksa obyek yang akan dihilangkan (culling), transformasi ke dalam ruang

matriks, fungsi bantuan proyeksi Obb, dan fungsi bantuan proyeksi segitiga.

Untuk lebih jelasnya dapat dilihat pada gambar 3.20.

STIKOM S

URABAYA

Page 31: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

63

Gambar 3.20. Class TumozObb

3.4.16. Class TumozPolygon

Kelas TumozPolygon merupakan kelas yang mewakili suatu polygon dan

merupakan salah satu elemen dasar utama yang membentuk suatu obyek tiga

dimensi. Atribut-atribut dari kelas TumozPolygon antara lain pointer untuk

menyimpan data verteks dan indeks dari polygon, jumlah titik (verteks) dan

indeks yang berada di dalam polygon, volume pembatas Aabb, plane, dan status

dari polygon. Sedangkan operasi-operasinya yaitu pengaturan polygon,

mengkalkulasi volume pembatas, clipping, culling, intersect, dan sebagainya.

Untuk lebih jelasnya dapat dilihat pada gambar 3.21.

STIKOM S

URABAYA

Page 32: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

64

Gambar 3.21. Class TumozPolygon

3.4.17. Class TumozPolylist

Kelas TumozPolylist merupakan kelas yang membantu untuk

mengelompokkan polygon agar dapat mempermudah dalam pengelolaannya.

Atribut-atribut dari kelas TumozPolylist yaitu pointer untuk menyimpan data

polygon, jumlah polygon yang tersimpan, dan jumlah maksimum polygon yang

disediakan pada memory. Operasi-operasi dari kelas TumozPolylist adalah

menambah polygon ke dalam polylist, mereset ulang polylist, mengambil data

polygon, mengambil jumlah polygon, dan memeriksa kapasitas memory agar

STIKOM S

URABAYA

Page 33: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

65

dapat menambah jumlah polygon pada polylist. Untuk lebih jelasnya dapat dilihat

pada gambar 3.22.

Gambar 3.22. Class TumozPolylist

3.4.18. Class TumozBSPTree

Kelas TumozBSPTree merupakan salah satu kelas algoritma untuk

manajemen scene yaitu menggunakan algoritma diagram pohon Binary Space

Partitioning (BSP Tree). Kelas ini adalah kelas yang berfungsi untuk membantu

efisiensi dan efektifitas dalam proses rendering seperti pada teknik culling,

collision detection, dan sebagainya.

Atribut-atribut dari kelas TumozBSPTree terdiri dari pointer data kelas

TumozBSPTree yang berada pada kelompok depan, belakang, simpul akar, dan

simpul induk, pointer data dan jumlah polygon jika berada di node leaf, jumlah

polygon akhir, volume pembatas Aabb, dan plane pemisah. Sedangkan pada

operasinya terdiri dari fungsi untuk membangun tree, mencari plane pemisah,

menambah polygon, mengkalkulasi volume pembatas, menguji collision detection

terhadap ray, menguji garis sudut pandang (line of sight) terhadap dua titik yang

diberikan, dan sebagainya. Untuk lebih jelasnya dapat dilihat pada gambar 3.23.

STIKOM S

URABAYA

Page 34: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

66

Gambar 3.23. Class TumozBSPTree

3.4.19. Class TumozOctree

Kelas TumozOctree juga memiliki peranan yang hampir sama dengan

kelas TumozBSPTree yaitu berfungsi sebagai kelas algoritma diagram pohon

Octree untuk manajemen scene yang ditujukan untuk efisiensi rendering, collision

detection dan sebagainya. Atributnya terdiri dari pointer data kelas TumozOctree

sebagai simpul akar (root), simpul induk (parent), dan obyek anak (child object)

sebanyak 8 buah. Selain itu juga ada pointer data polygon dan jumlahnya jika

berada di node leaf, volume pembatas Aabb, dan posisi dari node.

Operasi pada kelas TumozBSPTree terdiri dari fungsi untuk membangun

tree, membuat obyek anak, mengkalkulasi volume pembatas, menguji collision

STIKOM S

URABAYA

Page 35: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

67

detection terhadap ray atau polygon, fungsi penelusuran (traversal) dalam tree,

dan sebagainya. Untuk lebih jelasnya dapat dilihat pada gambar 3.24.

Gambar 3.24. Class TumozOctree

3.4.20. Class TumozMovementController

Kelas TumozMovementController merupakan kelas dasar (base class)

dari semua kelas kontroler yang disediakan dalam Framework Tumoz Rendering

Engine. Kelas ini sudah mengimplementasikan sistem kamera yang sangat

sederhana yang tidak dipengaruhi oleh lingkungannya dan mampu bergerak bebas

secara penuh seakan-akan berada di dalam ruang nol gravitasi.

Kelas TumozMovementController memiliki beberapa atribut antara lain

vektor posisi kamera, vektor kanan dari kamera, vektor atas dari kamera, vektor

STIKOM S

URABAYA

Page 36: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

68

arah pandangan kamera, vektor kecepatan atau pergerakan pandangan, quaternion

untuk rotasi kamera, nilai kecepatan rotasi disekitar vektor lokal (roll, pitch dan

yaw), nilai terhadap sumbu rotasi disekitar vektor lokal (sumbu x, y, dan z) dan

nilai tambahan lainnya. Sedangkan operasi dari kelas TumozMovementController

hanya berisi fungsi akses (accessor method) dari vektor posisi, kanan, atas, arah ,

dan kecepatan kamera, serta fungsi virtual seperti inisialisasi, update, dan

kalkulasi ulang sumbu kamera. Untuk lebih jelasnya dapat dilihat pada gambar

3.25.

Gambar 3.25. Class TumozMovementController

STIKOM S

URABAYA

Page 37: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

69

3.4.21. Class TumozMCEgo

Kelas TumozMCEgo merupakan kelas kontroler dengan sistem kamera

yang berpusat pada sudut pandang orang pertama (Egocentric Viewpoint).

Atribut-atributnya merupakan atribut tambahan yaitu m_fSpeed, dan m_fSlide.

Sedangkan operasinya terdiri dari mengambil nilai vektor rotasi, mengatur

kecepatan rotasi, mengatur kecepatan kamera, mengatur kecepatan pergeseran

kamera, mengatur rotasi, mengatur posisi kamera, mengatur arah kamera, update,

kalkulasi sumbu kamera, dan sebagainya. Untuk lebih jelasnya dapat dilihat pada

gambar 3.26.

Gambar 3.26. Class TumozMCEgo

3.4.22. Class TumozMCFree

Kelas TumozMCFree merupakan kelas kontroler yang menggunakan

sistem kamera bebas dengan enam derajat kebebasan (six degree of freedom).

Kelas ini tidak memiliki atribut tambahan dan operasinya terdiri dari mengatur

STIKOM S

URABAYA

Page 38: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

70

nilai rotasi dan kalkulasi ulang vektor lokal, menambahkan kecepatan rotasi

disekitar sumbu, update dan sebagainya. Untuk lebih jelasnya dapat dilihat pada

gambar 3.27.

Gambar 3.27. Class TumozMCFree

3.4.23. Class TumozTimer

Kelas TumozTimer merupakan kelas tambahan yang berfungsi untuk

untuk menghitung informasi waktu seperti jam, menit, detik, waktu yang berlalu,

dan fps (frame rate per second) dari suatu proses rendering. Atribut dari kelas

TumozTimer antara lain jam, menit, detik, waktu saat ini, timestamp, dan

sebagainya. Sedangkan operasinya terdiri dari mengatur waktu, mengambil nilai

waktu, mengambil nilai waktu yang berlalu, mengambil nilai fps, update, dan

lain-lain. Untuk lebih jelasnya dapat dilihat pada gambar 3.28. STIKOM S

URABAYA

Page 39: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

71

Gambar 3.28. Class TumozTimer

3.5. Flowchart Diagram

Flowchart atau diagram alir merupakan sebuah diagram dengan simbol-

simbol grafis yang menyatakan aliran algoritma atau proses yang menampilkan

langkah-langkah yang disimbolkan dalam bentuk kotak, beserta urutannya dengan

menghubungkan masing-masing langkah tersebut menggunakan tanda panah.

Diagram ini memberi solusi selangkah demi selangkah untuk penyelesaian

masalah yang ada di dalam proses atau algoritma tersebut. Berikut ini merupakan

penjelasan detil diagram flowchart yang menjelaskan proses atau algoritma dari

masing-masing operasi terpenting yang ada pada Framework Tumoz Rendering

Engine.

STIKOM S

URABAYA

Page 40: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

72

3.5.1. Flowchart Operasi Create Device()

Operasi CreateDevice() merupakan operasi dari kelas TumozRenderer

yang berfungsi untuk membuat obyek render device (perangkat rendering)

berdasarkan pilihan kelas implementasi dari API yang disediakan.

Mulai

Api=API_DIRECT3D

Load Libyrary TumozD3.dll

Ya

Selesai

Load Library Gagal?

Tampil Pesan Error

Ya

Return E_FAIL

Tidak

Tidak

GetProcAddress Gagal?

Ya

Buat handle ke pointer Tumoz Render Device

Tidak

Pointer Tumoz Render Device

Gagal?

Ya

Return S_OK

GetProcAddress

Tidak

Gambar 3.29. Flowchart Operasi CreateDevice()

STIKOM S

URABAYA

Page 41: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

73

Seperti yang digambarkan pada gambar 3.29. dimulai dari memilih API

yang diinginkan yaitu API_Direct3D. Jika tidak memilih API tersebut maka akan

keluar pesan error lalu mengembalikan nilai fungsi E_FAIL sebagai tanda gagal

dan keluar. Sebaliknya jika ya maka akan memulai proses Load Library

Tumoz3D.dll. Hasil dari proses Load Library tersebut akan di periksa jika gagal

maka akan muncul pesan error dan seterusnya seperti sebelumnya. Dan jika

berhasil akan berlanjut ke proses GetProcAddress.

Pada proses GetProcAddres akan menghubungkan semua fungsi-fungsi

interface TumozRenderDevice dengan kelas implementasi TumozD3D. Dan

setelah berhasil akan dibuatkan handle ke pointer kelas TumozRenderDevice

tersebut lalu mengembalikan nilai fungsi S_OK sebagai tanda proses berhasil dan

keluar. Dengan demikian maka render device siap untuk digunakan.

3.5.2. Flowchart Operasi Init()

Operasi Init() merupakan operasi dari kelas TumozD3D yang merupakan

turunan dari interface TumozRenderDevice. Operasi ini berfungsi untuk

melakukan inisialisasi pada dialog box dalam memilih device dan format yang

diinginkan, menentukan jumlah tampilan windows, dan beberapa pengaturan

(setting) lainnya sebelum rendering dimulai.

Awal dari proses ini di mulai dari menentukan jumlah tampilan windows

yang diinginkan, lalu membuat enumerasi berdasarkan buffer stencil dan buffer

depth. Setelah itu membuat logo dan dialog box untuk setting device dan format

yang kemudian ditampilkan ke user. Jika hasilnya error maka akan di simpan ke

file log dan keluar. Dan jika sebaliknya maka operasi dilanjutkan ke operasi Go().

Untuk lebih jelasnya dapat dilihat pada gambar 3.30.

STIKOM S

URABAYA

Page 42: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

74

Mulai

Buat variabel dan atur savelog berdasarkan

Param

Cek jumlah windows > 0

Cek jumlah windows > batas

maksimum

Ya

Atur jumlah windows = batas

maks

Ya

Buat array windows

Tidak

Set windows tunggal

Tidak

Atur windows utama

Cek bit stencil minimum > 0

m_bStencil = true

Ya

Buat enumerasi berdasarkan depth buffer

dan stencil buffer

Tidak

Buat handle untuk meload gambar logo

Buat dan Tampilkan dialog setting device dan simpan dalam

nResult

Cek handle gambar logo ada?

Hapus handle gambar logo

Ya

Tidak

Cek nResult = -1

Return TUMOZ_FAIL

Ya

Cek nResult = 0

Tidak

Return TUMOZ_CANCELED

Ya

Cek nResult = -2

Tidak

Return TUMOZ_NOTCOMPATI

BLE

Ya

Tidak

Return Go()

Selesai

Tampil Log panggil dialog

Tampil log pemilihan

dialog selesai

Tampil log error:

pemiilihan dialog error

Tampil log warning: pilihan

dibatalkan user

Tampil log error:

adapter grafis tidak kompatible

Tampil log menjalanka

n MS Direct3D

Gambar 3.30. Flowchart Operasi Init()

STIKOM S

URABAYA

Page 43: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

75

3.5.3. Flowchart Operasi Go()

Operasi Go() merupakan salah satu fungsi bantuan (helper function) dari

kelas TumozD3D yang membantu proses inisialisasi pada operasi Init(). Operasi

ini berfungsi untuk memulai jalannya proses API Direct3D berdasarkan pilihan

setting device, format dan sebagainya dari combo box pada operasi Init().

Proses awal dari operasi ini dimulai dari membuat obyek Direct3D9

(D3D) dan jika berhasil maka dilanjutkan ke proses perulangan untuk memeriksa

pilihan setting device user yang sesuai dengan combo box untuk disimpan

datanya. Setelah itu dilanjutkan proses pembuatan struktur present parameter

berdasarkan data yang di simpan sebelumnya beserta pengaturan stencil buffer

dan tampilan windows apakah akan memakai layar penuh (fullscreen) atau tidak.

Pada tahapan ini proses dilanjutkan dengan pembuatan obyek

Direct3DDevice9 (D3DDevice) berdasarkan parameter dari data pilihan device

yang di simpan dan data present parameter yang telah di buat. Apabila tampilan

windows yang diinginkan lebih dari satu dan tampilannya tidak memakai layar

penuh (fullscreen) maka perlu dibuatkan swapchain tambahan yang berfungsi

untuk menampilkan beberapa jendela tampilan secara simultan.

Tahapan akhir dari operasi ini adalah memeriksa apakah obyek

D3DDevice (pointer device) telah berhasil di buat dan tidak mengalami error. Jika

berhasil maka akan menampilkan hasil pada file log bahwa device telah siap di

gunakan dan memanggil fungsi LogDeviceCaps() untuk informasi tambahan. Jika

semuanya telah selesai maka data-data status sistem akan di simpan ke variabel

global dan kemudian dilanjutkan lagi ke operasi OneTimeInit(). Untuk lebih

jelasnya flowchart dari operasi tersebut dapat dilihat pada gambar 3.31.

STIKOM S

URABAYA

Page 44: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

76

Mulai

Cek pointer D3D ada?

Release dan set NULL

Ya

Buat Direct3D9

Buat D3D gagal?

Tidak

True

i = 0

False

i < Jumlah combo device

Cek Apakah Combo Sesuai dgn adapter?

Ya

Simpan nilai combo dan break

Ya

Tidak

Set Present Parameter

Tampil log error: Direct3DCreate9

()

i++

Apakah jenis Stencil buffer dipilih?

m_bStencil = true

Ya

m_bStencil = falseTidak

Tampilan fullscreen?

Atur windows utama D3D beserta ukuran

Back Buffer dan hilangkan cursor

Ya

Set windows index 0 ke windows utama D3D

beserta ukuran Back buffer sesuai dengan windows

default

Tidak

Buat Device Direct3D

Cek jumlah windows > 0 & tidak fullscreen?

Buat SwapChain tambahan

Ya

Release pointer enumerasi dan

set NULL

Tidak

Cek Device Direct3D gagal?

Tampil log error:

IDirect3D::CreateDevice()

Ya

Tampil log inisialisasi siap dan online

Tidak

Buat LogDeviceCaps

Return TUMOZ_CREATEDEVI

CE

Set variabel global bahwa device sudah

berjalan

Return OneTimeInit();

Selesai

Gambar 3.31. Flowchart Operasi Go()

STIKOM S

URABAYA

Page 45: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

77

3.5.4. Flowchart Operasi OneTimeInit()

Operasi OneTimeInit() juga merupakan salah satu fungsi bantuan dari

kelas TumozD3D. Operasi ini melakukan inisialisasi seperti mengatur

renderstate, material standar, texture filtering, viewport, dan hal-hal yang

dibutuhkan lainnya sebelum rendering dimulai. Operasi OneTimeInit() juga

merupakan paket atau kumpulan pengaturan (setting) standar untuk proses

rendering yang paling umum di pakai.

Pertama-tama proses dimulai dengan memeriksa apakah prosesor sudah

mendukung teknologi SIMD agar dapat digunakan. Kemudian proses dilanjutkan

dengan mengatur engine agar siap dalam melakukan proses rendering untuk

poligon solid. Proses selanjutnya adalah membuat membuat obyek skin manager

dan vertex cache manager dan juga mengaktifkan renderstate untuk lighting,

culling dan z buffer.

Untuk membantu sistem pencahayaan maka perlu dibuatkan pengaturan

material standar dan jika gagal maka akan keluar dari proses. Sebaliknya jika

berhasil maka proses selanjutnya adalah mengatur texture filtering, kemudian

pengaturan stage awal untuk proyeksi perspektif 3 dimensi, pengaturan matriks

identitas untuk tampilan tiga dimensi, dan pengaturan clipping planes untuk

tampilan.

Shader merupakan perangkat bantu yang sangat penting sehingga perlu

dilakukan pemeriksaan dan inisialisasi dari shader tersebut. Selanjutnya tahapan

akhir dari operasi ini adalah pengaturan pencahayaan ambient, pengaturan texture

stage dan beberapa proses lainnya. Untuk lebih jelasnya flowchart dari operasi

tersebut dapat dilihat pada gambar 3.32.

STIKOM S

URABAYA

Page 46: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

78

Mulai

Cek apakah tidak ada SIMD

CPU?

Ya

Tidak

Set Mode Shading Solid

Buat Skin Manager dan

Vertex Manager

Aktifkan RenderState

untuk Lighting, Culling dan Z

buffer

Buat dan atur Material standar

Cek aktivasi Material

D3DDevice gagal?

Ya

Return TUMOZ_FAIL

Selesai

Set Texture Filtering

Pengaturan stage awal

untuk mode 3D atau

perspective

Set identity matrix untuk

View 3D

Set nilai Clipping Planes

Cek apakah Shader dapat digunakan?

Atur nilai default Shader

Ya

Cek apakah pembuatan

Vertex Shader dasar gagal

Inisialisasi dan pemeriksaan

Shader

Ya

Return TUMOZ_FAIL

Pengaturan level Ambient Light

Tidak

Tidak

Cek apakah inisialisasi Stage dgn Perspective

gagal?

Return TUMOZ_FAIL

Ya

Cek pengaturan

Mode Engine dgn

Perspective gagal?

Tidak

Return TUMOZ_FAIL

Ya

Set Transformasi

World

Tidak

Tampil log inisialisasi one time

scene selesai

Return TUMOZ_OK

Tampil log error: atur material

Tampil log Buat

Vshader gagal

Tampil log SIMD CPU

tidak terdeteksi

Tampil log SIMD

CPU terdeteksi

Gambar 3.32. Flowchart Operasi OneTimeInit()

STIKOM S

URABAYA

Page 47: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

79

3.5.5. Flowchart Operasi UseWindow()

Operasi ini juga merupakan operasi turunan dari interface

TumozRenderDevice yang terdapat pada kelas implementasi TumozD3D. Operasi

ini berfungsi untuk menentukan jendela tampilan utama yang akan dijadikan

target proses rendering baik pada jendela tampilan tunggal atau pada beberapa

jendela tampilan. Untuk lebih jelasnya flowchart dari operasi tersebut dapat

dilihat pada gambar 3.33.

Mulai

Buat Obyek Backbuffer dari

LPDIRECT3DSURFACE9 dan set NULL

Cek dari Present Parameter apakah

bukan mode windows?

Return TUMOZ_OK

Ya

nHwnd >= m_nNumhW

ndTidak

Return TUMOZ_INVALIDID

Ya

Selesai

Cek panggil m_pChain[nHwnd]->GetBackBuffer()

gagal?

Tidak

Tampil log error: GetBackBuffer()

gagal di UseWindow

Ya

Return TUMOZ_FAIL

Set Target Render

D3DDevice ke Backbuffer

Tidak

Pointer BackBuffer di

Release

m_nActivehWnd = nHwnd

Return TUMOZ_OK

Gambar 3.33. Flowchart Operasi UseWindow()

STIKOM S

URABAYA

Page 48: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

80

3.5.6. Flowchart Operasi InitStage()

Tujuan dari operasi ini adalah untuk melakukan kalkulasi atau

perhitungan matriks proyeksi perspektif dan proyeksi orthogonal berdasarkan field

of view (FOV) yang diberikan pada viewport stage yang dituju. Operasi ini

merupakan bagian dari kelas TumozD3D yang juga merupakan operasi turunan

dari interface TumozRenderDevice. Detil dari proses flowchart operasi ini

digambarkan pada gambar 3.34.

Mulai

Cek pointer Viewport ada?

Copy pView ke dalam

m_VP[nStage]

Ya

Buat Viewport baru dari m_dwWidth dan

m_dwHeight lalu copy ke dalam

m_VP[nStage]

Tidak

nStage>3 || nStage<0

nStage=0

Ya

Hitung Aspect Ratio Stage

Tidak

Cek apakah

perhitungan Matriks Proyeksi

Perspektif gagal?

Return TUMOZ_FAIL

YaHitung Matriks

Proyeksi Orthogonal

Selesai

Tidak

Gambar 3.34. Flowchart Operasi InitStage()

STIKOM S

URABAYA

Page 49: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

81

3.5.7. Flowchart Operasi CreateVShader()

Operasi CreateVShader() merupakan operasi penting bagi kelas

TumozD3D yang berfungsi untuk membuat obyek verteks shader untuk device

Direct3D. Shader tersebut dapat mengkalkulasi efek rendering pada perangkat

keras grafis dengan tingkat fleksibilitas yang sangat tinggi. Operasi ini juga

merupakan operasi turunan dari interface TumozRenderDevice.

Pengecekan batas maksimum dari obyek verteks shader dilakukan pada

awal proses, lalu dilanjutkan dengan memeriksa dari parameter fungsi apakah

shader sudah di kompilasi dan setelah itu di cek juga apakah menggunakan file

atau data langsung. Jika sudah di kompilasi maka datanya langsung disimpan ke

dalam pointer agar dapat di proses. Sebaliknya jika belum maka perlu memanggil

fungsi dari Direct3D yaitu D3DXAssembleShaderFromFile() untuk data yang

berasal dari file atau D3DXAssembleShader() untuk data langsung. Hasil dari

kompilasi tersebut kemudian disimpan ke dalam pointer dengan menggunakan

fungsi GetBufferPointer().

Langkah selanjutnya dari proses flowchart ini adalah membuat obyek

verteks shader menggunakan fungsi dari pointer device yaitu

CreateVertexShader() berdasarkan pointer yang berisi data hasil kompilasi yang

telah di buat sebelumnya. Setelah obyek verteks shader berhasil di buat lalu

idnya di simpan agar dapat digunakan dan proses terakhir dari flowchart adalah

dengan menambah jumlah total obyek verteks shader yang telah di buat. Untuk

lebih jelasnya flowchart dari operasi ini dapat dilihat pada gambar 3.35. STIKOM S

URABAYA

Page 50: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

82

Mulai

Buat variabel pointer D3DBuffer, DWORD, HRESULT

dan HANDLE

Cek apakah jumlah Vertex Shader melebihi batas

maksimum?

Tampil log error: sudah

mencapai jumlah maks

Ya

Return TUMOZ_OUTOFMEM

ORY

Selesai

Cek dari parameter apakah sudah

dicompile?

Tidak

Diambil dari File?

Ya

Panggil CreateFile() dengan data dari

parameter sebagai argumen dan simpan hasilnya pada hFile

Ya

hFile == INVALID_HANDLE

_VALUE

Tampil log error:

CreateFile() gagal

Ya

Return TUMOZ_FILENOT

FOUND

Buat FileMapping dan ambil datanya

dan simpan ke dalam pointer DWORD pVS

Tidak

Simpan langsung data dari

parameter kedalam pointer

DWORD pVS

Tidak

Diambil dari File?

Tidak

Panggil D3DXAssembleShaderFrom

File dengan data dari parameter dan simpan hasil

HRESULT hrA

Ya

Panggil D3DXAssembleShader

dengan data dari parameter dan simpan

hasil HRESULT hrA

Tidak

Cek apakah hrA berhasil?

Simpan data pointer ke pVS menggunakan

GetBufferPointer()

Ya

Tampil log error

Tidak

Return TUMOZ_FAIL

Simpan ID kedalam variabel global Vertex Shader

Bebaskan resource handle

Increment jumlah Vertex Shader

yang ada

Return TUMOZ_OK

Cek apakah pembuatan

CreateVertexShader dgn pVS

gagal?

Ya Tidak

Gambar 3.35. Flowchart Operasi CreateVShader()

STIKOM S

URABAYA

Page 51: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

83

3.5.8. Flowchart Operasi AddSkin()

Operasi AddSkin() merupakan salah satu operasi terpenting pada kelas

TumozD3DSkinManager yang juga merupakan operasi turunan dari interface

TumozSkinManager. Tugas dari operasi ini adalah untuk membuat obyek skin

baru berdasarkan material yang diberikan pada parameter dari fungsi tersebut.

Sedangkan untuk tekturnya akan dikosongkan terlebih dahulu.

Operasi ini diawali dengan mengalokasikan slot memory pada pointer

obyek skin untuk menyimpan obyek skin yang baru. Untuk efisiensi slot memory

yang disediakan berjumlah 50 buah dan apabila slot tersebut penuh maka slot

tersebut akan di tambah 50 buah lagi.

Proses berikutnya dilanjutkan dengan pembuatan material berdasarkan

parameter fungsi. Kemudian material tersebut di periksa apakah sama dengan

material yang sudah ada menggunakan fungsi MaterialEqual(). Apabila sudah ada

maka idnya disimpan ke dalam obyek skin dan jika tidak maka akan dialokasikan

ke pointer material baru lalu idnya di simpan ke dalam obyek skin.

Tahapan selanjutnya dari operasi ini adalah pengaturan nilai alpha dari

skin menjadi false. Tekstur pada operasi ini dikosongkan terlebih dahulu dengan

cara mengatur masing-masing id dari tekstur pada skin dengan nilai MAX_ID.

Lalu dilanjutkan dengan menyimpan id skin dan menambah jumlah obyek skin

yang telah di buat.

Proses terakhir dari operasi ini adalah mengembalikan nilai balik

TUMOZ_OK sebagai tanda bahwa proses operasi telah berjalan dengan lancar

tanpa adanya error. Untuk lebih jelasnya flowchart dari operasi ini dapat dilihat

pada gambar 3.36.

STIKOM S

URABAYA

Page 52: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

84

Mulai

Jumlah Skin mod 50

== 0?

Alokasikan 50 slot memory Skin baru ke pointer Skin

global

Ya

Cek apakah nilai pointer Skin global tidak

valid?

Return TUMOZ_OUTOFME

MORY

Ya

Selesai

Buat Material berdasarkan

nilai dari parameter

Tidak

Tidak

nMat=0

nMat<Jumlah Material?

Cek material baru

dng yg sudah ada pd indeks [nMat]

menggunakan MaterialEqual()

Ya

bMat = true;Break;

Ya

nMat++

Tidak

bMat == true?

Tidak

Ubah ID Material Skin baru dengan

nMat

Ya

Ubah ID Skin baru dengan

jumlah Material

TidakJumlah

Material mod 50 == 0?

Alokasikan 50 slot memory Material baru ke pointer Material global

Ya

Cek apakah nilai

pointer Material global tidak

valid?

Ya

Copy Material baru ke dalam pointer material global indeks terakhir

Tidak

Increment jumlah Material

yang ada

Set penggunaan nilai alpha pada

Skin baru menjadi false

Int i = 0

i < 8?

Set ID Texture pada indeks [i]

Skin baru menjadi MAX_ID

Ya

i++

Set nilai reference

parameter ID Skin ke jumlah

Skin

Tidak

Increment jumlah Skin

yang ada

Return TUMOZ_OK

Buat variabel UINT nMat dan bool bMat=false

Tidak

Gambar 3.36. Flowchart Operasi AddSkin()

STIKOM S

URABAYA

Page 53: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

85

3.5.9. Flowchart Operasi AddTexture()

Seperti yang dijelaskan pada operasi AddSkin() bahwa tekstur tidak

ditambahkan saat pembuatan obyek skin baru dan ini berarti penambahan tekstur

akan dilakukan secara terpisah yaitu menggunakan operasi AddTexture(). Operasi

AddTexture() juga merupakan operasi pada kelas TumozD3DSkinManager dan

merupakan operasi turunan dari interface TumozSkinManager yang berfungsi

untuk menambahkan obyek tekstur baru ke dalam obyek skin.

Pertama-tama operasi dimulai dari memeriksa validitas id skin dari

parameter. Karena obyek tekstur dalam obyek skin hanya dibatasi sebanyak 8

stage saja maka proses selanjutnya adalah memeriksa apakah stage tersebut sudah

penuh. Setelah itu dilanjutkan lagi dengan pemeriksaan apakah file tekstur ini

sudah ada sebelumnya.

Jika file tekstur tersebut belum ada maka perlu dilakukan alokasi

memory untuk pointer obyek tekstur baru. Lalu simpan atribut-atribut yang

penting pada obyek tekstur baru seperti status alpha, dan nama tekstur. Operasi

dilanjutkan lagi dengan memuat data dari file tekstur ke dalam buffer grafis pada

obyek device menggunakan fungsi bantuan CreateTexture() berdasarkan data file

tekstur dan nilai alpha dari parameter.

Apabila obyek tekstur menggunakan transparansi atau nilai status alpha

dari parameter adalah true maka nilai atribut-atribut tambahan dimasukkan ke

dalam pointer tekstur serta memanggil fungsi bantuan SetAlphaKey() dan

SetTransparency(). Dan terakhir dilanjutkan dengan menambah jumlah obyek

tekstur yang telah di buat dan menyimpan id tekstur ke dalam obyek skin. Untuk

lebih jelasnya flowchart dari operasi ini dapat dilihat pada gambar 3.37. dan 3.38.

STIKOM S

URABAYA

Page 54: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

86

Mulai

Cek ID Skin dari

parameter >= Jumlah Skin?

Return TUMOZ_INVALID

ID

Ya

Cek ID Texture terakhir

dari Skin global pada indeks ID dari param

sudah ada?

Tidakerror: semua texture stage

telah diset

Ya

Return TUMOZ_BUFFER

SIZE

Selesai

Buat variabel UINT nTex, bool bTex=false dan pointer

TUMOZTEXTURE pTumozTex

nTex = 0Tidak

nTex < Jumlah Texture

Cek nama pada Texture

global indeks nTex sama dgn nama dr

param?

Ya

bTex = true;break;

Ya

nTex++

Tidak

bTex == false?

Tidak

Jumlah Texture mod

50 == 0?

Ya

Alokasikan 50 slot memory

Texture baru ke pointer Texture

global

Ya

Cek apakah nilai pointer

Texture global tidak valid?

Ya

error: AddTexture()

gagal, realloc()

Return TUMOZ_OUTOF

MEMORY

Cek bAlpha dari parameter sama dgn

true?

Tidak

Set nilai Alpha dari Skin global pada index ID Skin dari parameter

menjadi true

Ya

Set nilai fAlpha pada Texture global indeks

baru menjadi 1.0f

Set nilai pointer ClrKeys pada Texture global indeks baru menjadi

NULL

Simpan nama Texture dari parameter ke dalam

nama Texture global indeks baru

Panggil CreateTexture() dgn

Texture global indeks baru dan bAlpha

sebagai parameter dan simpan HResultnya

Cek apakah HResult CreateTexture

gagal?

error: CreateTexture()

gagal

Ya

Return HResult

Cek bAlpha?

Tidak

Simpan pointer Texture global

indeks baru kedalam pTumozTex

Ya

Simpan atribut Color Keys dari parameter ke

dalam TumozTex

Simpan pointer isi data pTumozTex ke dalam

LPDIRECT3DTEXTURE9 pTex

Tidak

Tidak

Tidak

C

A

B

Tidak

Gambar 3.37. Flowchart Operasi AddTexture()

STIKOM S

URABAYA

Page 55: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

87

DWORD dw=0

dw < Jumlah Color Keys dari

parameter

Panggil SetAlphaKeys() dgn pTex dan ColorKeys

sebagai param dan simpan HResultnya

Ya

Cek apakah Hresult SetAlphaKeys

gagal?

error: SetAlphaKeys

gagal

Ya

dw++

Tidak

Return HResult

Cek nilai

Alpha dari param <

1.0f?

Tidak

Simpan nilai alpha dari parameter ke dalam pTumozTex

Ya

Panggil SetTransparency() dgn pTex dan nilai alpha

sebagai param dan simpan HResultnya

Cek apakah Hresult

SetTransparency gagal?

error: SetTransparency

gagal

Ya

Return HResult

nTex = Jumlah Texture yang

ada

Tidak

Increment jumlah Texture

yang ada

Int i = 0

i < 8

Cek apakah ID texture pada Skin global indeks ke [i] ==

MAX_ID

Ya

Set ID Texture pada Skin global indeks ke [i] = nTex

dan break

Ya

Return TUMOZ_OK

i++

Tidak

C

B

Selesai

Tidak

A

Gambar 3.38. Lanjutan Flowchart Operasi AddTexture().

STIKOM S

URABAYA

Page 56: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

88

3.5.10. Flowchart Operasi CreateStaticBuffer()

Operasi CreateStaticBuffer() merupakan operasi dari kelas

TumozD3DVCManager yang juga merupakan operasi turunan dari interface

TumozVertexCacheManager. Tugas dari operasi ini adalah untuk membuat buffer

verteks dan indeks statis berdasarkan data dari parameter agar dapat digunakan

nanti pada saat proses rendering.

Awal proses dari operasi ini dimulai dari mengalokasikan memory untuk

pointer obyek buffer statis baru dan menyimpan atribut-atribut dari paramter

seperti jumlah verteks dan indeks serta id skin yang berhubungan dengan buffer

tersebut.

Sebelum memasukkan data verteks maka perlu di periksa terlebih dahulu

jenis format (FVF) dari verteks tersebut agar bisa diketahui langkah data (stride)

dan ukuran dari verteks tersebut. Langkah selanjutnya adalah apabila

menggunakan indeks maka buffer indeks (LPDIRECT3DINDEXBUFFER9) di

buat menggunakan fungsi CreateIndexBuffer() dari device. Untuk mengisi data

dari parameter ke dalam buffer indeks maka dilakukan dengan cara metode

penguncian menggunakan fungsi Lock() dan Unlock() dari fungsi obyek indeks

buffer tersebut.

Untuk membuat buffer verteks (LPDIRECT3DVERTEXBUFFER9) juga

hampir sama dengan pembuatan buffer indeks yaitu menggunakan fungsi

CreateVertexBuffer() dari device. Lalu data verteks dari parameter di simpan di

antara dua metode penguncian (Lock() dan Unlock()) dari fungsi obyek verteks

buffer tersebut. Detil dari proses flowchart operasi ini digambarkan pada gambar

3.39.

STIKOM S

URABAYA

Page 57: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

89

Mulai

Cek apakah Jumlah Static

Buffer >= (MAX_ID-1)

Return TUMOZ_OUTOFMEMORY

Ya

Selesai

Jumlah Static Buffer

mod 50 == 0?

Tidak Alokasikan 50 slot memory Static Buffer baru ke pointer Static Buffer global

Ya

Cek apakah nilai pointer Static

Buffer global tidak valid?

Ya

Simpan Jml Vertex & Index jg ID Skin dari param ke dlm Static Buffer global indeks

baru

Tidak

Tidak

Cek masing-masing Vertex ID dan Set Stride dan FVF yg

sesuai ke dlm Static Buffer global indeks

baru

Cek apakah Vertex

ID tidak ketemu?

Return TUMOZ_INVALIDID

Ya

Tidak

Jumlah Indices > 0

Set atribut bIndis = true dan jml triangle = indis/3 pada Static buffer global

indeks baru

Ya

Panggil CreateIndexBuffer() dgn atribut data IB pada

Static Bufffer global indeks baru sbg parameter dan

simpan HResultnya

Cek apakah HResult

CreateIndexBuffer() gagal?

Return TUMOZ_CREATEBUFFER

Ya

Cek apakah pemanggilan Lock() pada data IB Static Buffer indeks baru

dgn pData sbg param berhasil?

Tidak

Copy data indis dari param ke dlm pointer pData yg telah dikunci

Ya

Return TUMOZ_BUFFER

LOCK

Tidak

Set atribut bIndis = false, jml triangle = verts/3 dan

data IB = NULL pada Static buffer global indeks baru

Tidak

Cek apakah D3D

menggunakan Shader?

Buat variabel pendukung seperti

DWORD dwActualFVF dan pointer VOID

pData

dwActualFVF = 0

Ya

Simpan FVF Static Buffer global indeks

baru ke dwActualFVF

Tidak

Panggil CreateVertexBuffer() dgn dwActualFVF dan atribut data VB pada Static Bufffer global indeks baru sbg parameter dan simpan

HResultnya

Cek apakah HResult

CreateVertexBuffer() gagal?

Ya

Cek apakah pemanggilan

Lock() pada data VB Static Buffer indeks baru dgn pData sbg param

berhasil?

Tidak

Copy data verts dari param ke dlm pointer pData yg telah dikunci

Ya

Panggil method Unlock() pada data IB Static Buffer indeks baru

Panggil method Unlock() pada data

VB Static Buffer indeks baru

Tidak

Masukkan jumlah Static buffer ke dalam pointer

pnID dari parameter sebagai ID baru

Increment jumlah Static

Buffer yang ada

Return TUMOZ_OK

Gambar 3.39. Flowchart Operasi CreateStaticBuffer()

STIKOM S

URABAYA

Page 58: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

90

3.5.11. Flowchart Operasi CreateFont()

Operasi ini digunakan untuk membuat obyek font GDI yaitu obyek

standar pada windows untuk menggambar huruf atau teks dalam proses rendering.

Operasi CreateFont() merupakan operasi bagian dari kelas TumozD3D dan

turunan dari operasi interface TumozRenderDevice.

Untuk membuat obyek font harus ditentukan terlebih dahulu deskripsi

dari font tersebut seperti tinggi, lebar, style dan sebagainya menggunakan struct

D3DXFONT_DESC. Obyek tersebut kemudian di buat menggunakan fungsi

D3DXCreateFontIndirect() dari API Direct3D. Untuk lebih jelasnya flowchart

dari operasi ini dapat dilihat pada gambar 3.40.

Mulai

Cek apakah

pointer ID font dari param

valid?

Set masing-masing atribut D3DX Font Description berdasarkan parameter

seperti tinggi, lebar, style font dll

Tidak

Return TUMOZ_INVALIDPARAM

Ya

Selesai

Alokasikan tempat baru utk pointer global

LPD3DXFont menggunakan Realloc()

Panggil D3DXCreateFontIndirect() dgn pointer D3D Device,

Font Desc dan pointer Font global indeks baru sbg

param dan simpan Hresult

Cek apakah HResult

D3DXCreateFontIndirect() berhasil?

Simpan Jumlah Font ke dalam pointer ID Font dari param sbg ID baru

Ya

Increment jumlah Font yang ada

Return TUMOZ_OK

Return TUMOZ_FAIL

Tidak

Gambar 3.40. Flowchart Operasi CreateFont()

STIKOM S

URABAYA

Page 59: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

91

3.5.12. Flowchart Operasi BeginRendering()

Operasi ini adalah salah satu operasi utama pada kelas TumozD3D untuk

memulai proses rendering. Tugasnya antara lain adalah membersihkan scene dan

mempersiapkan device untuk menerima proses rendering geometri.

Awalnya buffer pixel, stencil dan depth dibersihkan menggunakan

fungsi Clear() dari device dan setelah itu memanggil fungsi device BeginScene()

yang menandakan device siap untuk melakukan proses rendering. Untuk lebih

jelasnya flowchart dari operasi ini dapat dilihat pada gambar 3.41.

Mulai

Cek parameter

bClearPixel II bClearDepth II bClearStencil

DWORD dw=0

Apakah bClearPixel

== true?

Ya

dw |= D3DCLEAR_TARGET

Ya

Tidak

Apakah bClearDepth

== true?

dw |= D3DCLEAR_ZBUFFER

Ya

Apakah bClearStencil & Stencil global ==

true?

Tidak

dw |= D3DCLEAR_STENCIL

Ya

Cek apakah

pemanggilan Clear() pada pointer D3D

dengan dw dan ClearColor global

sbg param gagal?

Tidak

Tampil log error:Clear()

Ya

Return TUMOZ_FAIL

Selesai

Cek apakah

pemanggilan BeginScene() pada

pointer D3D gagal?

Tidak

Ya

Set status Scene sedang berjalan

menjadi true pada variabel global

Tidak

Return TUMOZ_OK

Tidak

Gambar 3.41. Flowchart Operasi BeginRendering()

STIKOM S

URABAYA

Page 60: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

92

3.5.13. Flowchart Operasi EndRendering()

Operasi EndRendering() merupakan pasangan dari operasi

BeginRendering() pada kelas TumozD3D yang bertugas untuk mengakhiri proses

rendering dan menampilkan scene ke front buffer.

Prosesnya sangat sederhana dimulai dari mengirim semua data buffer

verteks untuk ditampilkan menggunakan fungsi ForcedFlushAll() dari obyek

pointer TumozVertexCacheManager. Lalu proses rendering diakhiri dengan

memanggil fungsi device yaitu EndScene().

Dan terakhir hasil rendering ditampilkan ke layar (front buffer)

menggunakan fungsi Present() baik dari device untuk jendela tampilan tunggal

atau dari obyek swapchain untuk jendela tampilan yang aktif dari beberapa

windows. Detil dari proses flowchart operasi ini digambarkan pada gambar 3.42.

Mulai

Cek pemanggilan

ForcedFlushAll() pointer Vertex manager global

gagal?

error: ForceFlushAll() gagal

Ya

Panggil EndScene() dari pointer D3D

Device

Tidak

Cek attrib windowed dari D3D Present parameter true &

Jml windows > 0?

Cek pemanggilan Present() dari

pointer SwapChain global pada indeks

windows aktif gagal?

Ya

error: Present() gagal

Ya

Cek pemanggilan Present() dari pointer D3D Device global

gagal?

Tidak

Ya

Set status Scene sedang berjalan menjadi false pada variabel global

Tidak

Selesai

Tidak

Gambar 3.42. Flowchart Operasi EndRendering()

STIKOM S

URABAYA

Page 61: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

93

3.5.14. Flowchart Operasi UseShaders()

Tugas dari operasi ini adalah untuk menghidupkan atau mematikan fitur

shader pada device saat proses rendering. Operasi ini adalah operasi dari kelas

TumozD3D yang juga merupakan operasi turunan dari kelas

TumozRenderDevice.

Prosesnya dimulai dengan mengosongkan semua isi verteks buffer dan

memvalidasi ulang status kondisi dari obyek TumozVertexCacheManager

menggunakan fungsi ForcedFlushAll() dan InvalidateStates(). Dan apabila fitur

shader dimatikan maka semua pengaturan shader di set ke NULL atau sebaliknya

jika fitur shader dihidupkan maka pengaturan FVF akan di set ke 0. Detil dari

proses flowchart operasi ini digambarkan pada gambar 3.43.

Mulai

Cek status dr variabel global

apakah Shader tidak dapat digunakan?

Selesai

Ya

Cek status variabel global apakah Shader

dapat digunakan sama dengan parameter?

Tidak

Ya

Panggil ForcedFlushAll() dari pointer Vertex

Manager

Tidak

Panggil InvalidateStates() dari

pointer Vertex Manager

Set variabel global status penggunaan Shader berdasarkan variabel

Cek apakah variabel global

status penggunaan shader adalah

false?

Panggil SetVertexShader() dari pointer D3D Device dg

parameter NULL

Ya

Panggil SetPixelShader() dari pointer D3D Device

dg parameter NULL

Panggil SetVertexDeclaration() dari

pointer D3D Device dg parameter NULL

Panggil SetFVF() dari pointer D3D Device

dg parameter 0

Tidak

Gambar 3.43. Flowchart Operasi UseShaders()

STIKOM S

URABAYA

Page 62: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

94

3.5.15. Flowchart Operasi DrawText()

Sesuai dengan namanya operasi ini merupakan operasi yang digunakan

untuk menggambar teks atau huruf yang berasal dari parameter menggunakan

obyek font GDI yang telah dijelaskan sebelumnya dalam proses rendering.

Operasi dari kelas TumozD3D ini biasanya dipanggil di antara fungsi

BeginRendering() dan EndRendering(). Untuk lebih jelasnya flowchart dari

operasi ini dapat dilihat pada gambar 3.44.

Mulai

Deklarasi variabel lokal seperti RECT dengan ukuran sesuai dgn param dan pointer char untuk

menyimpan teks

Simpan atau tempatkan teks dari

param ke dalam pointer char lokal

Cek apakah ID

Font lebih besar/sama dgn jumlah

font yang ada?

Return TUMOZ_INVALIDPARAM

Ya

Selesai

Panggil DrawText dari pointer D3DXFont global

dgn teks, RECT dan warna Font sbg param

Tidak

Return TUMOZ_OK

Gambar 3.44. Flowchart Operasi DrawText()

3.5.16. Flowchart Operasi SetAmbientLight()

Pencahayaan ambient merupakan salah satu teknik sistem pencahayaan

dalam rendering tiga dimensi. Pencahayaan ambient merupakan pencahayan

dengan warna konstan secara merata pada seluruh wilayah scene tanpa diketahui

asal sumber cahayanya.

Operasinya sangat sederhana yaitu dengan mengambil nilai warna dari

parameter lalu di konversi dalam jarak bilangan integer 255. Apabila

menggunakan shader nilai tersebut dijadikan argumen pada fungsi

STIKOM S

URABAYA

Page 63: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

95

SetVertexShaderConstantF() dan diteruskan lagi dengan memanggil fungsi

SetRenderState() dengan argumen dari nilai tersebut. Detil proses flowchart

Operasi dari kelas TumozD3D ini digambarkan pada gambar 3.45.

Mulai

Panggil ForcedFlushAll() dari

pointer Vertex Manager global

Hitung nilai warna dari parameter

dengan range 255

Cek variabel global apakah

dapat melakukan Shader?

Panggil SetVertexShaderConstantF()

dari pointer D3D Device untuk mengatur warna default

diffuse pd Shader

Ya

Panggil SetRenderState() dari pointer D3D Device untuk

Ambient Light dengan warna hasil perhitungan sebagai parameter

Tidak

Selesai

Gambar 3.45. Flowchart Operasi SetAmbientLight()

3.5.17. Flowchart Operasi SetWorldTransform()

Operasi SetWorldTransform() merupakan operasi dari kelas TumozD3D

yang mengatur transformasi world yaitu transformasi pada semua obyek dalam

scene yang akan di render sampai ada perubahan berikutnya.

Prosesnya sangat sederhana yaitu dengan memanggil fungsi dari obyek

device SetTransform() berdasarkan data matriks world yang diberikan oleh

parameter. Untuk lebih jelasnya flowchart dari operasi ini dapat dilihat pada

gambar 3.46.

STIKOM S

URABAYA

Page 64: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

96

Mulai

Panggil ForcedFlushAll() dari

pointer Vertex Manager global

Cek apakah matriks World

dari param kosong?

Buat matriks identitas lalu copy ke dalam matriks

World global

Ya

Copy matriks dari parameter simpan ke dalam matriks

World global

Tidak

Panggil CalcWorldViewProjMatrix()

Cek variabel global apakah

dapat melakukan Shader?

Panggil SetVertexShaderConstantF() dari pointer D3D Device dan

Transpose matriks WorldViewProj global sbg

param

Ya

Panggil SetTransform() dari pointer D3D Device

dan matriks World global sebagai param

Tidak

Selesai

Gambar 3.46. Flowchart Operasi SetWorldTransform()

3.5.18. Flowchart Operasi ActivateVShader()

Operasi ini bertugas untuk mengaktifkan obyek verteks shader yang di

buat sebelumnya pada obyek device. Operasi ActivateVShader() merupakan

bagian dari kelas TumozD3D. Pada dasarnya obyek verteks shader dapat di buat

lebih dari satu karena hal ini ditujukan untuk membuat bermacam-macam efek

khusus ketika proses rendering dan operasi ini yang menentukan shader aktif

berdasarkan idnya.

Operasi ini dibagi menjadi tiga proses yaitu memanggil fungsi

ForcedFlushAll() untuk membersihkan buffer verteks, lalu memanggil fungsi

STIKOM S

URABAYA

Page 65: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

97

obyek device SetVertexDeclaration() untuk menentukan ukuran dan format

verteks yang akan diproses oleh shader, dan terakhir memanggil fungsi obyek

device SetVertexShader() yaitu untuk mengaktifkan verteks shader berdasarkan

obyek verteks shader yang diinginkan. Untuk lebih jelasnya flowchart dari operasi

ini dapat dilihat pada gambar 3.47.

Mulai

Cek variabel global apakah

Shader dapat tidak dapat

digunakan?

Return TUMOZ_NOSHADER

SUPPORT

Ya

Selesai

Cek apakah ID

Vertex Shader >= jumlah Vertex Shader yang

ada?

Tidak

Return TUMOZ_INVALIDID

Ya

Panggil ForcedFlushAll() dari

pointer Vertex Manager global

Tidak

Cek apakah Vertex ID dari param valid?

Tidak

Cek apakah pemanggilan

SetVertexDeclaration() dari pointer D3D

Device gagal?

Ya

Return TUMOZ_FAIL

Ya

Cek pemanggilan

SetVertexShader() dari pointer D3D

Device dgn pointer Vertex Shader indeks

ID dr param gagal?

Tidak

Ya

Set variabel Vertex Shader aktif global == ID

dari param

Tidak

Set satus variabel sedang digunakan

global == true

Return TUMOZ_OK

Gambar 3.47. Flowchart Operasi ActivateVShader()

STIKOM S

URABAYA

Page 66: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

98

3.5.19. Flowchart Operasi Render()

Operasi ini merupakan operasi yang panjang dan rumit yang bertugas

untuk merender buffer statis (verteks dan indeks) yang telah dibuat sebelumnya

berserta skin yang berhubungan dengan buffer tersebut. Operasi Render() adalah

operasi dari kelas TumozD3DVCManager yang juga merupakan operasi turunan

dari interface TumozVertexCacheManager.

Pertama-tama operasi ini dimulai dengan memanggil fungsi

GetShadeMode() dari obyek TumozD3D untuk memeriksa jenis render state yang

akan digunakan dalam merender buffer statis apakah dalam bentuk solid,

berjaring (wired), garis, titik, dan sebagainya. Setelah itu mengaktifkan buffer

indeks dengan menggunakan fungsi SetIndices() dari obyek device.

Proses selanjutnya dari operasi ini adalah pengaturan skin yang akan

digunakan baik dengan atau tanpa shader. Proses tersebut terdiri dari proses

mengatur material dengan memanggil fungsi SetMaterial(), mengatur tekstur

menggunakan fungsi SetTexture(), dan mengatur kondisi alpha untuk efek

transparansi menggunakan fungsi SetRenderState() dari obyek device.

Tahapan berikutnya dilanjutkan dengan mengatur FVF menggunakan

fungsi SetFVF() dari obyek device apabila shader tidak digunakan. Setelah itu

melakukan pengaturan additive blending dan buffer warna (color buffer) untuk

rendering dengan memanggil fungsi SetRenderState() dari obyek device.

Dan terakhir adalah menggambar (render) buffer statis baik yang

menggunakan buffer indeks maupun tidak dengan menggunakan fungsi

DrawIndexedPrimitive() dan DrawPrimitive() dari obyek device berdasarkan jenis

STIKOM S

URABAYA

Page 67: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

99

masing-masing render statenya. Detil dari proses flowchart operasi ini

digambarkan pada gambar 3.48., 3.49. dan 3.50.

Mulai

Buat variabel sementara seperti Hresult hr & int iT

Panggil GetShadeMode() dari pointer global

TumozD3D dan simpan dalam

TUMOZRENDERSTATE sm

Cek ID dari param >=

jumlah Static buffer yang

ada?

error: ID Buffer Statis Tidak Valid

Ya

Return TUMOZ_INVALID

PARAM

Set variabel ActiveCache global ke

MAX_ID

Cek variabel global ActiveSB != ID dari param?

Tidak

Cekpointer Static

Buffer pada indeks ID dari param

menggunakan Index buffer?

Ya

Panggil SetIndices() dari pointer D3D Device dengan data IB sbg parameter dari pointer Static Buffer global

berdasarkan ID param

Ya

Panggil SetStreamSource() dari pointer D3D Device

dengan data Vertex Buffer sbg parameter dari pointer Static Buffer berdasarkan

ID param

Set variabel ActiveSB global mengarah pada

ID dari parameter

Tidak

Cek variabel global

ActiveIB != MAX_ID?

Tidak

Cek pointer Static

Buffer pada indeks ID dari param menggunakan Index buffer?

Panggil SetIndices() dari pointer D3D

Device dengan data IB sbg parameter dari

pointer Static Buffer global berdasarkan ID

param

Ya

Ya

Set variabel global ActiveIB =

MAX_ID

Tidak

Cek pemanggilan

GetActiveSkinID() dari pointer

TumozD3D != atribut SkinID dari

pointer Static Buffer bdsrkan

ID param?

Tidak

Buat pointer lokal TUMOZSKIN pSkin

berisi data Skin dari Skin Manager dengan

indeks dari ID Skin Static Buffer

Ya

sm == RS_SHADE_

SOLID

Buat pointer lokal TUMOZMATERIAL pMat

berisi data Material dari Skin Manager dengan indeks dari

pSkin->nMaterial

YaCek

TumozD3D tidak

menggunakan Shader?

Buat D3DMATERIAL9 mat yang berisi warna RGBA masing-masing

material Diffuse, Ambient, Specular, Emissive dan Specular

Power dari pMat

Ya

Panggil SetMaterial() dari pointer D3D Device

dengan mat sbg parameter

Panggil SetShaderConstant() dari TumozD3D untuk

warna material Ambient, Diffuse, Specular dan

Emissive berasal dari pMat

Tidak

Cek TumozD3D

menggunakan Texture?

Panggil SetTexture() dari D3D Device

dengan indeks 0 dan NULL sbg parameter

Tidak

Panggil GetWireColor() dari pointer TumozD3D dan simpan

hasillnya ke TUMOZCOLOR clrWire sbg warna Wireframe

Tidak

Buat D3DMATERIAL9 matW yang berisi warna RGBA masing-masing

material Diffuse, dan Ambient dari clrWire

Panggil SetMaterial() dari pointer D3D Device

dengan matW sbg parameter

A

Tidak

B

Ya

C

Selesai

Gambar 3.48. Flowchart Operasi Render()

STIKOM S

URABAYA

Page 68: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

100

iT = 0Ya

iT < 8

pSkin->nTexture[iT] != MAX_ID

Ya

Panggil SetTexture() dari D3D Device dgn indeks iT dan data texture dari Skin Manager sbg

parameter

Ya

Panggil SetTextureStageState() dari D3D Device dgn indeks iT

dan Beberapa Perintah Operasi Texture sbg parameter

breakTidak

iT++

Panggil SetTextureStageState() dari

D3D Device dgn indeks iT dan Perintah Disable Operasi Texture sbg parameter

Tidak

Panggil SetTextureStageState() dari D3D Device dgn indeks 1 dan Perintah Disable Operasi

Texture sbg parameter

pSkin->bAlpha

Panggil SetRenderState() dari D3D Device dan beberapa

perintah untuk mengaktifkan Alpha Blending

Ya

Panggil SetRenderState() dari D3D Device dan

beberapa perintah untuk menonaktifkan Alpha

Blending

Tidak

Panggil SetActiveSkinID() dari TumozD3D dengan attribut

SkinID dari pointer Static Buffer indeks ID dari parameter

Cek pemanggilan

UsesShaders() dari pointer TumozD3D

apakah tidak menggunakan

Shader?

Panggil SetFVF() dari D3D Device dengan data FVF dari

Static Buffer indeks ID sbg parameter

Ya

Tidak

Cek attribut bIndis

dari pointer Static Buffer

true?

Tidak

sm == RS_SHADE_

POINTS

Ya

Panggil DrawPrimitive() dari D3D Device dgn

D3DPT_POINTLIST dan Jumlah Verts dari

pointer Static buffer sbg param dan simpan

hasilnya ke hr

Ya

sm == RS_SHADE_

LINESTidak

Panggil DrawIndexedPrimitive() dari

D3D Device dgn D3DPT_LINELIST, Jml Verts dan Jml Indis/2 dari pointer Static buffer sbg param dan

simpan hasilnya ke hr

Ya

sm == RS_SHADE_HULLWIRE

Tidak

Panggil DrawIndexedPrimitive()

dari D3D Device dgn D3DPT_LINESTRIP dan Jml Verts dari pointer Static

buffer sbg param dan simpan hasilnya ke hr

Ya

Panggil DrawIndexedPrimitive()

dari D3D Device dgn D3DPT_TRIANGLELIST,

Jml Verts dan Jml Tris dari pointer Static buffer sbg

param dan simpan hasilnya ke hr

Tidak

Tidak

A

B C

Return hr

Selesai

D

Gambar 3.49. Lanjutan Flowchart Operasi Render()

STIKOM S

URABAYA

Page 69: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

101

Return hr

Selesai

sm == RS_SHADE_

POINTS

Panggil DrawPrimitive() dari D3D Device dgn

D3DPT_POINTLIST dan Jumlah Verts dari

pointer Static buffer sbg param dan simpan

hasilnya ke hr

Ya

sm == RS_SHADE_

LINES

sm == RS_SHADE_HULLWIRE

TidakTidak

Panggil DrawPrimitive() dari D3D Device dgn D3DPT_LINELIST dan Jumlah Verts/2 dari

pointer Static buffer sbg param dan simpan

hasilnya ke hr

Ya

Panggil DrawPrimitive() dari D3D Device dgn

D3DPT_LINESTRIP dan Jumlah Verts dari

pointer Static buffer sbg param dan simpan

hasilnya ke hr

Ya

Panggil DrawPrimitive() dari D3D Device dgn

D3DPT_TRIANGLELIST dan Jumlah Tris dari pointer

Static buffer sbg param dan simpan hasilnya ke hr

Tidak

Tidak D

Gambar 3.50. Lanjutan Flowchart Operasi Render()

3.6. Component Diagram

Komponen perangkat lunak merupakan modul fisik dari sebuah sistem

atau kode. Diagram komponen menggambarkan bagaimana komponen

dihubungkan bersama untuk membentuk komponen yang lebih besar dan atau

sistem perangkat lunak agar dapat menjelaskan hubungan antar mereka.

Diagram komponen Framework Tumoz Rendering Engine pada gambar

3.51. menjelaskan bahwa sistem terbagi dalam kelompok paket-paket atau

subsistem yang terdiri dari TumozRenderer, TumozD3D, Tumoz3D dan

TumozGeneral. Masing-masing paket atau subsistem tersebut memiliki fungsi dan

tugas masing-masing dan saling berhubungan antara satu dengan yang lain.

STIKOM S

URABAYA

Page 70: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

102

Gambar 3.51. Component Diagram Tumoz Rendering Engine

Selain itu sistem ini juga membutuhkan komponen atau sistem dari luar

untuk membantu proses kerja pada sistem internal. Komponen DirectX 9.0

merupakan komponen SDK (Software Development Kit) untuk menyediakan

komponen yang menghubungkan API Direct3D dengan paket atau subsistem

TumozD3D.

Sedangkan komponen MFC 6.0 merupakan komponen untuk

menyediakan sistem pengembangan yang berhubungan dengan API windows dan

hal-hal penting lainnya. Komponen tersebut memiliki relasi dan dibutuhkan oleh

paket atau subsistem TumozD3D, Tumoz3D dan TumozGeneral.

Diagram komponen pada gambar 3.51. merupakan gambaran umum dari

keseluruhan sistem dan berikut ini merupakan penjelasan detil dari hubungan

antar komponen pada masing-masing paket atau subsistem di dalam Framework

Tumoz Rendering Engine.

TumozRenderer TumozD3D Tumoz3D

TumozGeneral

MFC 6.0

DirectX 9.0

STIKOM S

URABAYA

Page 71: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

103

3.6.1. Component Diagram TumozRenderer

Komponen bisa mencantumkan pustaka kode program dan berkas-berkas

runtime sekaligus. Misalnya, pada bahasa pemrograman C++, setiap berkas .cpp

dan .h adalah komponen yang berbeda seperti yang digambarkan pada gambar

3.52.

Gambar 3.52. merupakan ilustrasi diagram komponen dari paket atau

subsistem TumozRenderer. Komponen dari paket atau subsistem TumozRenderer

terdiri dari TumozRenderDevice.h, TumozRenderer.h, TumozRenderer.cpp, dan

TumozRenderer.lib.

Gambar 3.52. Component Diagram TumozRenderer

Paket atau subsistem TumozRenderer berisi komponen-komponen yang

berfungsi sebagai interface bagi framework engine dan mengatur hubungan

dengan komponen implementasi API Direct3D pada paket atau subsistem

TumozD3D.

TumozRenderDevice.h TumozRenderer.h

TumozRenderer.libTumozRenderer.cpp

STIKOM S

URABAYA

Page 72: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

104

TumozRenderDevice.h dan TumozRenderer.h merupakan file header

atau package specification yang digunakan sebagai referensi (include) bagi

pengguna framework agar dapat menggunakan interface render device. Sedangkan

file TumozRenderer.cpp merupakan package body atau kode sumbernya (source

code). Dan hasil kompilasi dari file-file tersebut akan menjadi static libary

TumozRenderer.lib yang akan digunakan sebagai file linker bagi pengguna

framework.

3.6.2. Component Diagram TumozD3D

Diagram komponen pada paket atau subsistem TumozD3D merupakan

diagram yang menggambarkan relasi komponen-komponen implementasi dari

interface paket atau subsistem TumozRenderer berdasarkan API Direct3D pada

framework engine.

Seperti yang terlihat pada gambar 3.53. bahwa komponen package

spesification atau file header dari paket atau subsistem TumozD3D terdiri dari

Tumoz.h, TumozD3D.h, TumozD3DVCache.h, TumozD3DSkinManager.h, dan

resource.h. Sedangkan komponen untuk package body atau file kode sumbernya

terdiri dari TumozD3DInit.cpp, TumozD3DMain.cpp, TumozD3DEnum.cpp,

TumozD3DMisc.cpp, TumozD3DVCache.cpp, dan TumozD3DSkinManager.cpp.

Berbeda dengan paket atau subsistem yang lain bahwa hasil kompilasi

dari paket atau subsistem TumozD3D akan menjadi file dynamic link library

TumozD3D.dll. File dynamic link library tersebut merupakan putaka kode

dinamis yang akan dipilih oleh user untuk menjadi subsistem implementasi dari

interface pada subsistem TumozRenderer.

STIKOM S

URABAYA

Page 73: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

105

Gambar 3.53. Component Diagram TumozD3D

3.6.3. Component Diagram Tumoz3D

Diagram komponen pada paket atau subsistem Tumoz3D merupakan

kumpulan dari relasi komponen-komponen yang berisi kode pustaka untuk

algoritma-algoritma dan perhitungan matematika yang berhubungan dengan tiga

dimensi. Relasi antar komponen tersebut dapat dilihat pada gambar 3.54.

Seperti yang digambarkan pada gambar 3.54, hanya ada satu komponen

package spesification atau file header dari paket atau subsistem Tumoz3D yaitu

Tumoz3D.h. Komponen tersebut mendefinisikan semua kelas dan operasi yang

TumozD3D.h

TumozD3DSkinManager.hTumozD3DVCache.h

TumozD3D.dll

Tumoz.h

TumozD3DEnum.cpp

TumozD3DInit.cppTumozD3DMain.cpp

TumozD3DMisc.cpp

TumozD3DSkinManager.cpp

TumozD3DVCache.cpp

resource.h

STIKOM S

URABAYA

Page 74: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

106

ada di dalam paket atau subsistem Tumoz3D dan juga menjadi acuan bagi semua

komponen kode sumber dari subsistem tersebut.

Gambar 3.54. Component Diagram Tumoz3D

Sedangkan untuk komponen package body atau file kode sumber dari

paket atau subsistem Tumoz3D terdiri dari TumozCPU.cpp, TumozVector.cpp,

TumozMatrix.cpp, TumozRay.cpp, TumozPlane.cpp, TumozPolygon.cpp,

TumozPolylist.cpp, TumozAABB.cpp, TumozOBB.cpp, TumozQuat.cpp,

TumozOctree.cpp, dan TumozBSPTree.cpp.

Tumoz3D.lib

Tumoz3D.h

TumozAABB.cpp

TumozBSPTree.cppTumozCPU.cpp

TumozMatrix.cpp

TumozOBB.cppTumozOctree.cpp TumozPlane.cpp

TumozPolygon.cpp

TumozPolylist.cpp

TumozQuat.cppTumozRay.cpp TumozVector.cpp

STIKOM S

URABAYA

Page 75: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

107

Masing-masing komponen package body tersebut mewakili kode sumber

untuk kelas dan algoritma perhitungan matematika tiga dimensi dan di tambah

dengan file kode sumber TumozCPU.cpp yang berisi fungsi-fungsi untuk

mengaktifkan CPU matematika cepat SIMD. Hasil kompilasi dari seluruh

komponen dari paket atau subsitem Tumoz3D tersebut menjadi static library

Tumoz3D.lib.

3.6.4. Component Diagram TumozGeneral

Gambar 3.55. mengilustrasikan bentuk relasi dari diagram komponen

TumozGeneral yang merupakan paket atau subsistem yang berisi komponen-

komponen untuk kendali pergerakan, kamera dan informasi-informasi yang

dibutuhkan lainnya dalam proses rendering.

Komponen-komponen package spesification atau file header dari paket

atau subsistem TumozGeneral tersebut terdiri dari TumozGeneral.h,

TumozMovementController.h, TumozMCEgo.h, TumozMCFree.h, dan

TumozTimer.h.

Perlu diketahui bahwa file header TumozGeneral.h hanya berisi referensi

(include) file-file header yang lainnya dan juga tidak berisi definisi kelas, fungsi,

variabel dan lain-lain. Hal ini ditujukan agar file header TumozGeneral.h menjadi

acuan utama bagi pengguna framework dalam menggunakan subsistem

TumozGeneral.

Pada gambar 3.55. menunjukkan bahwa komponen package body atau

file kode sumber dari paket atau subsistem TumozGeneral terdiri dari

TumozMovementController.cpp, TumozMCEgo.cpp, TumozMCFree.cpp, dan

STIKOM S

URABAYA

Page 76: BAB III PERANCANGAN SISTEM Analisa Identifikasi ...repository.dinamika.ac.id/592/6/BAB III.pdf33 BAB III PERANCANGAN SISTEM . 3.1. Analisa Identifikasi Permasalahan . Dalam mengembangkan

108

TumozTimer.cpp. Dan sedangkan hasil kompilasinya berupa static library

TumozGeneral.lib.

Gambar 3.55. Component Diagram TumozGeneral

TumozGeneral.lib

TumozGeneral.hTumozMCEgo.h TumozMCFree.h

TumozMovementController.h TumozTimer.h

TumozMCEgo.cpp

TumozMCFree.cpp TumozMovementController.cpp

TumozTimer.cpp

STIKOM S

URABAYA