Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

58
Oleh: Irshad Mohammad Rasyidi Zico Ritonda Bahen 05111740000046 05111740000064 Pembimbing Departemen Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc., Ph.D Pembimbing Lapangan Prof. Drs.Ec. Ir. Riyanarto Sarno, M.Sc., Ph.D. DEPARTEMEN INFORMATIKA Fakultas Teknologi Informasi dan Komunikasi Institut Teknologi Sepuluh Nopember Surabaya 2020 Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality Riset Laboratorium Manajemen Informasi Informatika ITS Gedung Informatika Jl. Teknik Kimia, ITS, Surabaya Periode: 24 Februari 2020 – 24 April 2020 KERJA PRAKTIK – IF184801

Transcript of Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

Page 1: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

Oleh:

Irshad Mohammad Rasyidi

Zico Ritonda Bahen

05111740000046

05111740000064

Pembimbing Departemen Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc., Ph.D Pembimbing Lapangan Prof. Drs.Ec. Ir. Riyanarto Sarno, M.Sc., Ph.D. DEPARTEMEN INFORMATIKA

Fakultas Teknologi Informasi dan Komunikasi Institut Teknologi Sepuluh Nopember Surabaya 2020

Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality Riset Laboratorium Manajemen Informasi Informatika ITS Gedung Informatika Jl. Teknik Kimia, ITS, Surabaya Periode: 24 Februari 2020 – 24 April 2020

KERJA PRAKTIK – IF184801

Page 2: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

ii

[Halaman ini sengaja dikosongkan]

Page 3: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

iii

Oleh:

Irshad Mohammad Rasyidi 05111740000046

Zico Ritonda Bahen 05111740000064

Pembimbing Departemen

Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc., Ph.D

Pembimbing Lapangan

Prof. Drs.Ec. Ir. Riyanarto Sarno, M.Sc., Ph.D.

DEPARTEMEN INFORMATIKA

Fakultas Teknologi Informasi dan Komunikasi

Institut Teknologi Sepuluh Nopember

Surabaya 2019

Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality Riset Laboratorium Manajemen Infoarmasi Informatika ITS Gedung Informatika Jl. Teknik Kimia, ITS, Surabaya Periode: 10 Februari 2020 – 10 April 2020

KERJA PRAKTIK – IF184801

Page 4: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

iv

[Halaman ini sengaja dikosongkan]

Page 5: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

v

LEMBAR PENGESAHAN KERJA PRAKTIK

Aplikasi Simulasi Bedah Otak Berbasi Virtual Reality

Oleh:

Irshad Mohammad Rasyidi 05111740000046 Zico Ritonda Bahen 05111740000064

Disetujui oleh Pembimbing Kerja Praktik:

1. Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc., Ph.D

…………………….

(Pembimbing Departemen)

2. Prof. Drs.Ec. Ir.

Riyanarto Sarno,

M.Sc., Ph.D.

…………………….

(Pembimbing Lapangan)

Surabaya

Juli, 2020

Page 6: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

vi

[Halaman ini sengaja dikosongkan]

Page 7: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

vii

Aplikasi Pemasangan Stereotaktik untuk Menentukan Lokasi Bedah

Nama Mahasiswa : Irshad Mohammad Rasyidi NRP : 05111740000046 Nama Mahasiswa : Zico Ritonda Bahen NRP : 05111740000064 Departemen : Informatika ELECTICS-ITS Pembimbing Jurusan : Ary Mazharuddin Shiddiqi, S.Kom.,

M.Comp.Sc., Ph.D

ABSTRAK

Riset ini merupakan riset yang menggabungkan teknologi virtual reality dengan kebutuhan medis untuk membantu dokter dalam melakukan perencanaan operasi. Saat ini kami sedang mengerjakan aplikasi Simulasi Bedah Otak Berbasis Virtual Reality.

Aplikasi ini diperuntukan untuk dokter bedah sara untuk memudahkan dokter dalam memlakukan perencanaan sebelum dilakukan operasi bedah kepada pasien.

Aplikasi ini dibangun menggunakan pemrograman berbasis Unity3d.

Kata kunci: Alat Kesehatan, Unity3d, Virtual Reality

Page 8: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

viii

KATA PENGANTAR

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa karena atas berkat limpahan rahmat dan lindungan-Nya penulis dapat melaksanakan salah satu kewajiban sebagai mahasiswa Informatika ITS yaitu Kerja Praktik.

Penulis menyadari masih terdapat banyak kekurangan baik dalam pelaksanaan kerja praktik maupun penyusunan buku laporan ini, namun kami berharap buku laporan ini dapat menambah wawasan pembaca dan dapat menjadi sumber referensi. Penulis mengharapkan kritik dan saran yang membangun untuk kesempurnaan penulisan buku laporan ini.

Melalui laporan ini penulis juga ingin menyampaikan rasa terima kasih kepada kepada orang-orang yang telah membantu dalam pelaksanaan kerja praktik hingga penyusunan laporan Kerja praktik baik secara langsung maupun tidak langsung. Orang-orang tersebut antara lain adalah:

1. Orang tua penulis, 2. Bapak Ary Mazharuddin Shiddiqi, S.Kom., M.Comp.Sc.,

Ph.D selaku dosen pembimbing kerja praktik yang telah membimbing penulis selama kerja praktik berlangsung.

3. Prof. Drs.Ec. Ir. Riyanarto Sarno, M.Sc., Ph.D. selaku pembimbing lapangan selama kerja praktik yang telah memberikan bimbingan serta ilmunya kepada penulis.

Surabaya, April 2020

Penulis

Page 9: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

ix

[Halaman ini sengaja dikosongkan]

Page 10: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

x

DAFTAR ISI

LEMBAR PENGESAHAN ......................................................... V

ABSTRAK ............................................................................ VII

KATA PENGANTAR ............................................................. VIII

DAFTAR ISI ............................................................................ X

DAFTAR GAMBAR ............................................................... XII

DAFTAR TABEL ................................................................... XIII

BAB I PENDAHULUAN ........................................................... 1

1.1. LATAR BELAKANG ............................................................... 1

1.2. TUJUAN ............................................................................ 1

1.3. MANFAAT ......................................................................... 2

1.4. RUMUSAN PERMASALAHAN .................................................. 2

1.5. LOKASI DAN WAKTU KERJA PRAKTIK ....................................... 2

1.6. METODOLOGI KERJA PRAKTIK ............................................... 2

1.7. SISTEMATIKA LAPORAN ........................................................ 5

BAB II PROFIL TIM RISET ....................................................... 8

2.1. PROFIL TIM RISET ............................................................... 8

2.2. LOKASI ............................................................................. 8

BAB III TINJAUAN PUSTAKA ................................................ 10

3.1. UNITY3D ........................................................................ 10

3.2. VIRTUAL REALITY .............................................................. 10

3.3. OCULUS RIFT ................................................................... 11

3.4. CONSTRUCTIVE SOLID GEOMETRY ........................................ 11

BAB IV ANALISIS DAN DESAIN ............................................. 13

Page 11: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

xi

4.1. ANALISIS SISTEM .............................................................. 13

4.1.1. DEFINISI UMUM APLIKASI ............................................... 13

4.1.2. ANALISIS KEBUTUHAN .................................................... 14

4.1.2.1. KEBUTUHAN FUNGSIONAL ........................................ 14

4.1.2.2. KEBUTUHAN NON FUNGSIONAL ................................ 16

4.2. PERANCANGAN SISTEM ...................................................... 16

4.2.1. DESAIN SISTEM ............................................................. 16

BAB V IMPLEMENTASI SISTEM ............................................ 24

5.1. IMPLEMENTASI KONTROL DAN PANEL UI ............................... 24

5.1.1. KONTROL ORBITAL ......................................................... 25

5.1.2. PANEL UI INTERACTIVE TOOLBAR ...................................... 27

5.2. IMPLEMENTASI TOOL......................................................... 28

5.2.1. IMPLEMENTASI TITIK KOORDINAT...................................... 28

5.2.2. IMPLEMENTASI TRANSPARANSI ......................................... 30

5.2.3. IMPLEMENTASI PENGGARIS .............................................. 30

5.2.4. IMPLEMENTASI PEMOTONGAN OBJEK BEDAH ...................... 34

5.3. TAMPILAN ANTARMUKA .................................................... 37

BAB VI PENGUJIAN DAN EVALUASI ..................................... 39

6.1. TUJUAN PENGUJIAN .......................................................... 39

6.2. SKENARIO PENGUJIAN ....................................................... 39

BAB VII KESIMPULAN DAN SARAN ...................................... 41

DAFTAR PUSTAKA ............................................................... 42

BIODATA PENULIS I ............................................................. 43

BIODATA PENULIS II ............................................................ 44

Page 12: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

xii

DAFTAR GAMBAR

Gambar 4.1. Use-Case Diagram……………………………………….. 17 Gambar 4.2. Activity Diagram Mengobservasi Objek Bedah

secara Menyeluruh……………………………………….18 Gambar 4.3. Activity Diagram Mengatur Transparansi Objek

Bedah...............................................................19 Gambar 4.4. Activity Diagram Meletakan Titik Koordinat....20 Gambar 4.5. Activity Diagram Memproyeksikan Penggaris

sebagai Alat Bantu Ukur…….………………………….21 Gambar 4.6. Activity Diagram Melakukan Pemotongan

Kepada Objek ……………………………………........….22 Gambar 5.1 Tampilan aplikasi…………………………………………. 37

Page 13: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

xiii

DAFTAR TABEL

Tabel 4.1 Kebutuhan Fungsional…………………………………..14 Tabel 4.2 Kebutuhan Non-Fungsional………………………….. 16

Page 14: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

xiv

[Halaman ini sengaja dikosongkan]

Page 15: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

1

BAB I PENDAHULUAN

1.1. Latar Belakang Kebutuhan dalam persiapan pra-operasi dalam

dunia medis merupakan hal yang sangat krusial serta perlu untuk dilakukan agar kemungkinan keberhasilan operasi dapat tercapai. Pada saat ini banyak pengembangan yang sedang dilakukan untuk mengatasi permasalahan ini. Salah satu teknologi yang dikembangan dalam dunia medis saat ini adalah virtual reality. Teknologi ini memungkinkan tenaga medis untuk mengamati secara langsung dan merencanakan proses operasi melalui data yang tersedia. Dengan memvisualkan data medis secara 3 dimensi dan berinteraksi melalui visualisasi tersebut, tentunya akan memudahkan tenaga medis dalam proses perencanaannya.

Oleh karena itu, tim peneliti pada riset ini mengembangkan sebuah aplikasi yang memungkinkan tenaga medis untuk memvisualisasikan dan mensimulasikan perencanaan operasi.

1.2. Tujuan Tujuan kerja praktik kali ini adalah

menyelesaikan kewajiban nilai kerja praktik sebesar 2 SKS dan membantu tim peneliti untuk menyelesaikan riset.

Page 16: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

2

1.3. Manfaat Berikut manfaat yang diperoleh melalui kerja

praktik ini adalah membantu peneliti di dalam riset ini untuk menyelesaikan aplikasi yang dapat membantu dokter dalam melakukan simulasi dan perencanaan bedah secara virtual.

1.4. Rumusan Permasalahan Berikut rumusan masalah dalam pelaksanaan

kerja praktik pembuatan fitur-fitur sesuai kebutuhan: 1. Bagaimana membangun fitur-fitur pada aplikasi

ini?

1.5. Lokasi dan Waktu Kerja Praktik Lokasi kerja praktik kali ini dilaksanakan di Ruang

Tata Usaha Gedung Informatika di ruang 215 bersama dengan tim peneliti lainnya. Adapun kerja praktik dimulai pada tanggal 24 Februari 2020 s.d. 24 April 2020.

1.6. Metodologi Kerja Praktik

1. Perumusan Masalah Untuk mengetahui kebutuhan aplikasi ini,

informasi kami dapatkan melalui salah satu dokter, yang telah bekerja sama dalam melaksanakan riset yang sedang dilakukan, yaitu memungkinkan seorang dokter untuk melakukan visualisasi dan simulasi secara real-time melalui teknologi virtual reality.

Page 17: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

3

Prof. Drs.Ec. Ir. Riyanarto Sarno, M.Sc., Ph.D. selaku pembimbing lapangan dan ketua tim riset membagi tugas kepada kami tentang apa saja yang harus dikerjakan.

2. Studi Literatur

Setelah mengetahui kebutuhan dokter sebelum, selama, dan sesudah operasi berlangsung, kami mencoba untuk mempelajari kebutuhan fungsional aplikasi yang akan dibuat. Kami mulai untuk melihat framework serta perangkat keras yang akan kami gunakan dalam membangun aplikasi ini, seperti Unity3d dan perangkat keras Oculus Rift. Kami juga melakukan riset dalam metode yang akan digunakan untuk memenuhi kebutuhan tersebut.

3. Analisis dan Perancangan Aplikasi

Setelah mendesain kerangka aplikasi, kami butuh untuk menentukan detil fungsional serta metode yang perlu untuk dimasukan sebagai fitur aplikasi.

4. Implementasi Aplikasi

Implementasi merupakan realisasi dari tahap perancangan. Pada tahap ini, kami mengerjakan desain sesuai yang telah dibahas tim riset.

5. Pengujian dan Evaluasi

Page 18: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

4

Pengujian yang dilakukan dengan cara melakukan percobaan melalui data pasien asli.

Page 19: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

5

1.7. Sistematika Laporan Laporan kerja praktik ini terdiri dari 7 bab

dengan rincian sebagai berikut :

1. Bab I: Pendahuluan

Bab ini berisi tentang latar belakan masalah, tujuan, manfaat, rumusan masalah, lokasi dan waktu kerja praktik, metodologi, dan sistematika laporan.

2. Bab II: Profil Tim Riset

Bab ini berisi sekilas tentang profil Tim Riset yang dikepalai oleh Prof. Drs.Ec. Ir. Riyanarto Sarno, M.Sc., Ph.D.

3. Bab III: Tinjauan Pustaka

Dalam bab ini dibahas mengenai konsep-konsep pembuatan model, dasar teori, teknologi yang dipakai dalam pembuatan model.

4. Bab IV: Analisis dan Perancangan Sistem

Dalam bab ini dibahas tentang proses analisis kebutuhan berdasarkan kondisi yang sesungguhnya dan perancangannya yang meliputi desain aplikasi yang akan dikembangkan. Proses analisis dan desain aplikasi menghasilkan daftar fitur yang dibutuhkan.

Page 20: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

6

5. Bab V: Desain Model dan Implementasi Sistem

Dalam bab ini dibahas tentang desain model dan implementasi secara keseluruhan.

6. Bab VI: Pengujian dan Evaluasi

Dalam bab ini dibahas tentang skenario pengujian, dan evaluasi pengujian setelah model selesai dibangun.

7. Bab VII: Kesimpulan dan Saran

Bab ini berisi tentang kesimpulan dan saran yang didapatkan dari tugas selama kerja praktik.

Page 21: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

7

[Halaman ini sengaja dikosongkan]

Page 22: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

8

BAB II PROFIL TIM RISET

2.1. Profil Tim Riset Tim riset ini dibentuk oleh Prof. Drs.Ec. Ir.

Riyanarto Sarno, M.Sc., Ph.D. atas diskusi dengan salah satu dokter bedah saraf. Diskusi ini menghasilkan sebuah riset baru di bidang alat kesehatan. Mengingat mahalnya harga alat kesehatan berupa perangkat lunak yang dibeli dari luar Indonesia, Prof. Drs.Ec. Ir. Riyanarto Sarno, M.Sc., Ph.D. menginisiasi untuk membangun perangkat lunak ini sebagai salah satu riset yang beliau lakukan.

2.2. Lokasi Riset ini dilakukan di R-215, Tata Usaha Gedung

Informatika, ITS di Jalan Teknik Kimia, Surabaya 60111.

Page 23: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

9

[Halaman ini sengaja dikosongkan]

Page 24: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

10

BAB III TINJAUAN PUSTAKA

3.1. Unity3d Unity3d adalah sebuah aplikasi Game Engine

yang cukup populer di kalangan Game Developer, untuk mengembangkan permainan 2 dimensi dan 3 dimensi. Selain itu, Unity3d juga dapat digunakan untuk mengembangkan aplikasi berbasis Virtual Reality dan Augmented Reality. Hasil aplikasi akhir yang dapat dikembangkan menggunakan Unity3d tidak sebatas game saja, namun sudah mulai meluas ke ranah animasi, otomotif, engineering, dan konstruksi.

3.2. Virtual Reality Virtual Reality atau VR adalah sebuah teknologi

yang dapat membuat simulasi sebuah lingkungan digital. Penggunanya dapat merasakan pengalaman seperti masuk ke dunia yang benar-benar berbeda dari dunia nyata, dengan bantuan perangkat keras VR Headset yang digunakan di kepala. Aplikasi berbasis VR yang sudah ada cukup beragam, mulai dari aplikasi hiburan, edukasi, desain, hingga simulasi.

Page 25: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

11

3.3. Oculus Rift Oculus Rift adalah seperangkat VR Headset yang

dikembangkan oleh sebuah divisi dalam perusahaan teknologi Facebook, bernama Oculus, dengan fokus yang berada pada Hardware & Software Virtual Reality.

3.4. Constructive Solid Geometry Constructive Solid Geometry merupakan metode

yang dilakukan dalam melakukan pemodelan suatu geometri. Melalui metode CSG dibentuk melalui objek-objek primitif yang digabungkan menggunakan Boolean operators, seperti union, intersection, dan difference agar dapat membentuk objek yang tebih kompleks. Melalui operator tersebut kita dapat menghasilkan dan memanipulasi objek primitif, seperti kotak, bola, silinder, dengan melakukan operasi boolean.

Page 26: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

12

[Halaman ini sengaja dikosongkan]

Page 27: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

13

BAB IV ANALISIS DAN DESAIN

Analisis Sistem Pada bab ini akan dijelaskan mengenai tahapan

dalam membangun Aplikasi Simulasi Bedah Otak berbasi Virtual Reality yaitu analisis dari sistem yang akan dibangun. Hal tersebut dijelaskan ke dalam dua bagian, definisi umum aplikasi dan analisis kebutuhan.

4.1.1. Definisi Umum Aplikasi

Aplikasi Simulasi Bedah otak secara Virtual Reality merupakan aplikasi perencanaan serta simulasi bedah secara virtual. Perencanaan akan dilakukan oleh pengguna dengan mengobservasi objek yang akan dibedah dengan berbagai fitur yang telah dirancang dalam virtual reality sebelum melakukan proses operasi.

Page 28: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

14

4.1.2. Analisis Kebutuhan Dalam aplikasi ini, terdapat fungsi-fungsi yang

harus dipenuhi oleh sistem. Fungsi-fungsi tersebut adalah hasil diskusi antara tim riset dengan klien (dokter bedah). Kebutuhan ini terbagi ke dalam dua jenis, yakni kebutuhan fungsional dan kebutuhan non-fungsional.

4.1.2.1. Kebutuhan Fungsional

Kebutuhan fungsional pada aplikasi ini menjelaskan bagaimana sistem ini bekerja yang akan dijelaskan pada Tabel 4.1

Tabel 4.1 Kebutuhan Fungsional

Kode Deskripsi Kebutuhan

F-001 Mengobservasi objek bedah secara menyeluruh

F-002 Mengatur transparansi objek bedah

F-003 Meletakkan titik koordinat dalam objek bedah

F-004 Memproyeksikan penggaris sebagai alat bantu ukur

F-005 Melakukan pemotongan kepada objek bedah

Page 29: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

15

Untuk penjelasan dari masing-masing kebutuhan fungsional dapat dilihat pada penjelasan berikut :

F-001. Mengobservasi objek bedah secara menyeluruh

Objek bedah 3 dimensi dapat diamati dengan memutar dan menggeser objek.

F-002. Mengatur transparansi objek bedah

Objek bedah 3 dimensi dapat diatur transparansinya melalui tombol antar muka sehingga objek didalamnya dapat terlihat.

F-003. Meletakkan titik koordinat dalam objek bedah

Meletakan titik koordinat yang akan menjadi titik acuan dokter untuk titik koordinat alat yang digunakan dalam proses operasi.

F-004. Memproyeksikan penggaris sebagai alat bantu ukur

Meletakan 2 titik untuk mengukur jarak antara 2 titik tersebut.

F-005. Melakukan pemotongan kepada objek bedah

Melakukan simulasi pemotongan bedah kepada objek bedah 3 dimensi.

Page 30: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

16

4.1.2.2. Kebutuhan Non Fungsional Kebutuhan non-fungsional adalah kebutuhan

pengguna untuk mendefinisikan bagaimana Batasan dan karakteristik dari sebuah sistem yang dibangun. Kebutuhan non-fungsional dari Aplikasi Simulasi Bedah berbasis Virtual Reality ini terdapat pada tabel 4.2.

Tabel 4.2 Kebutuhan Non-fungsional

Perancangan Sistem 4.2.1. Desain Sistem

Desain sistem digunakan untuk mengetahui jalannya penggunaan aplikasi oleh user sehingga pengembangan aplikasi dapat dengan mudah dilakukan. Desain sistem yang digunakan adalah Use-Case Diagram, Context Diagram, dan Activity Diagram.

Kode Deskripsi Kebutuhan NF-001

Aplikasi mudah digunakan

Page 31: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

17

Gambar 4.1. merupakan Use-Case Diagram yang menunjukkan proses penggunaan aplikasi apa saja dan siapa saja yang terlibat dalam proses tersebut. Kemudian Activity Diagram menunjukkan bagaimana sistem berinteraksi dengan user.

Gambar 4.1. Use-Case Diagram

Page 32: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

18

F-001. Mengobservasi Objek Bedah Secara Menyeluruh User dapat menggerakan objek bedah pada virtual

reality dengan memberikan input pada controller VR. Gambar 4.2. di bawah ini merupakan diagram aktifitas yang menunjukkan alur untuk melakukan observasi pada objek.

Gambar 4.2. Activity Diagram Mengobservasi Objek Bedah secara Menyeluruh

Page 33: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

19

F-002. Mengatur Transparansi Objek Bedah User dapat mengatur transparansi dari objek bedah

yang diinginkan dengan cara mengatur parameter warna dari objek tersebut. Gambar 4.3. di bawah ini merupakan diagram aktivitas yang menunjukkan alur dalam mengatur transparansi objek.

Gambar 4.3. Activity Diagram Mengatur Transparansi Objek Bedah

Page 34: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

20

F-003. Meletakan Titik Koordinat Dalam Objek Bedah User dapat meletakan titik-titik koordinat pada

workspace. Titik ini akan digunakan dalam menyiapkan alat yang digunakan pada proses operasi. Gambar 4.4. dibawah merupakan diagram aktivitas yang menunjukkan alur user dalam meletakan titik koordinat.

Gambar 4.4. Activity Diagram Meletakan Titik Koordinat

Page 35: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

21

F-004. Memproyeksikan Penggaris sebagai Alat Bantu Ukur User dapat membuat suatu penggaris virtual dengan

cara menempatkan dua titik di tempat yang berbeda dan akan menghasilkan jarak antara kedua jarak tersebut. Gambar 4.5. di bawah merupakan diagram aktivitas yang menunjukkan alur user dalam memproyeksikan penggaris sebagai alat bantu ukur.

Gambar 4.5. Activity Diagram Memproyeksikan Penggaris sebagai Alat Bantu Ukur

Page 36: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

22

F-005. Melakukan Pemotongan Kepada Objek Bedah Terakhir, user dapat melakukan pemotongan objek

bedah pada worksapce dengan cara menentukan titik awal dan titik akhir dan menekan tombol pada controller. Gambar 4.6. di bawah merupakan diagram aktivitas yang menunjukkan alur user dalam melakukan pemotongan pada objek bedah.

Gambar 4.6. Activity Diagram Melakukan Pemotongan Kepada Objek

Page 37: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

23

[Halaman ini sengaja dikosongkan]

Page 38: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

24

BAB V IMPLEMENTASI SISTEM

Bab ini membahas tentang implementasi dari sistem yang kami buat. Implementasi ini akan dijelaskan bagian implementasi antarmuka pengguna yang kami gunakan. Namun, sesuai dengan permintaan tim peneliti pada saat buku ini ditulis, penulis tidak diperkenankan untuk menyampaikan beberapa bagian dari implementasi riset yang telah dilakukan.

Sistem ini dirancang berupa aplikasi desktop, yang dibangun dengan menggunakan Unity3d menggunakan Bahasa C# untuk membangun sistemnya.

Penulis menggunakan Unity3d sebagai framework dari aplikasi ini. Unity3d dapat digunakan untuk mengembangkan aplikasi Virtual Reality. Dalam program ini, Unity3d diintegrasikan dengan package dari Oculus, yaitu Oculus Integration, agar Unity3d dapat berinteraksi dengan Headset Oculus Rift serta Touch Controllers-nya.

5.1. Implementasi Kontrol dan Panel UI Kontrol pergerakan kamera pengguna

menggunakan kontrol orbital, yang mengitari objek bedah, dengan kemampuan gerak rotasi, panning, dan zoom in-out.

Panel UI berfungsi sebagai tempat pengguna berinteraksi dengan tool-tool yang ada.

Page 39: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

25

5.1.1. Kontrol Orbital Bagian dari implementasi untuk kontrol orbital

diimplementasikan pada Kode Sumber 5.1 berikut:

public GameObject player; public Transform rightHand; public Transform leftHand; public GameObject target; public GameObject light; public float speed = 0.1f; public GameObject Toolbar; bool toolbarIsOn = true; private RaycastHit CreateForwardRaycast(string hand) { RaycastHit hit; Ray ray; if(hand == "right") { ray = new Ray(rightHand.position, rightHand.forward); } else { ray = new Ray(leftHand.position, leftHand.forward); } Physics.Raycast(ray, out hit, 3.0f); return hit; } private Vector3 DefaultEnd(float length, string hand) { if (hand == "right") { return rightHand.position + (transform.forward * length); } else { return leftHand.position + (transform.forward * length); } } // Update is called once per frame void Update() {

Page 40: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

26

//Left controller //Pan control (L Control) if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickUp) && player.transform.position.y < 1.5f) { player.transform.Translate(Vector3.up * Time.deltaTime); //toobar.transform.Translate(Vector3.up * Time.deltaTime); } if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickDown) && player.transform.position.y > -1.5f) { player.transform.Translate(Vector3.down * Time.deltaTime); //toobar.transform.Translate(Vector3.down * Time.deltaTime); } if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickRight) && player.transform.position.x < 1.5f) { player.transform.Translate(Vector3.right * Time.deltaTime); } if (OVRInput.Get(OVRInput.Button.PrimaryThumbstickLeft) && player.transform.position.x > -1.5f) { player.transform.Translate(Vector3.left * Time.deltaTime); } // Reset View (L Control: Y) if (OVRInput.Get(OVRInput.Button.Four)) { player.transform.position = new Vector3(0f, 0f, -2.5f); player.transform.LookAt(target.transform); } // Toggle Toolbar View (L Control: X) if (OVRInput.GetUp(OVRInput.Button.Three)) { if(Toolbar != null) { bool isActive = Toolbar.activeSelf; Toolbar.SetActive(!isActive); } } //Zoom & Rotate (R controller) if (OVRInput.Get(OVRInput.Button.SecondaryThumbstickUp)) { player.transform.Translate(Vector3.forward * Time.deltaTime); } if (OVRInput.Get(OVRInput.Button.SecondaryThumbstickDown))

Page 41: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

27

{ player.transform.Translate(Vector3.back * Time.deltaTime); } if (OVRInput.Get(OVRInput.Button.SecondaryThumbstickRight)) { player.transform.RotateAround(target.transform.position, Vector3.up, 100.0f * Time.deltaTime); //player.transform.Translate(Vector3.back * Time.deltaTime); } if (OVRInput.Get(OVRInput.Button.SecondaryThumbstickLeft)) { player.transform.RotateAround(target.transform.position, Vector3.down, 100.0f * Time.deltaTime); //player.transform.Translate(Vector3.back * Time.deltaTime); } }

Kode Sumber 5.1 Kontrol Orbital

5.1.2. Panel UI Interactive Toolbar Bagian dari implementasi untuk

diimplementasikan pada Kode Sumber 5.2 berikut:

public List<GameObject> objectsToHide; public GameObject pageToShow; // Submenu Panel Interaction public void ShowSubMenu() { if(pageToShow != null) { for (int i = 0; i < objectsToHide.Count; i++) { objectsToHide[i].SetActive(false); } pageToShow.SetActive(true); } }

Kode sumber 5.2 Implementasi Panel UI

Page 42: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

28

5.2. Implementasi Tool Pada bagian ini, kami akan menjelaskan tool atau

fitur yang ada dalam program VR ini.

5.2.1. Implementasi Titik Koordinat Bagian dari implementasi Tool Titik Koordinat

diimplementasikan pada Kode Sumber 5.3 berikut:

public GameObject CoorDots; public Dropdown CoorDropdown; private class Coordinate { public GameObject coor; public int index; public Coordinate(GameObject x, int y) { this.coor = x; this.index = y; } } List<Coordinate> CoorList = new List<Coordinate>(); int totalCoors = 0; int SelectedCoorIndex; int SelectedCoorIndexToMove; public Slider sliderX; public Slider sliderY; public Slider sliderZ; Coordinate SelectedCoor; bool xyz; bool TouchFlag; void Start() { xyz = false; } // Update Slider Value void Update() { xyz = false;

Page 43: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

29

SelectedCoor = CoorList.ElementAt(CoorDropdown.value); sliderZ.value = SelectedCoor.coor.transform.position.z; sliderX.value = SelectedCoor.coor.transform.position.x; sliderY.value = SelectedCoor.coor.transform.position.y; xyz = true; } // Update Coordinate Location public void UpdateCoorLocs() { if(xyz == true) { SelectedCoor.coor.transform.position = new Vector3(sliderX.value, sliderY.value, sliderZ.value); xyz = false; } } // Spawn Coordinate public void SpawnCoor() { GameObject CreatedCoor; float numberX = Random.Range(-0.4f, 0.4f); float numberY = Random.Range(-0.4f, 0.4f); float numberZ = Random.Range(-0.4f, 0.4f); if (CoorDots != null) { CreatedCoor = Instantiate(CoorDots, new Vector3(numberX, numberY, numberZ), Quaternion.identity); CoorList.Add(new Coordinate(CreatedCoor, totalCoors)); totalCoors += 1; CoorDropdown.options.Clear(); foreach(Coordinate coor in CoorList) { CoorDropdown.options.Add(new Dropdown.OptionData("Coordinate " + (coor.index + 1))); } }

Kode Sumber 5.3 Implementasi Tool Titik Koordinat

Page 44: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

30

5.2.2. Implementasi Transparansi Bagian dari implementasi Tool Transparansi

diimplementasikan pada Kode Sumber 5.4 berikut:

public Slider slider; public GameObject obj; Renderer rend; void Awake() { rend = obj.GetComponent<Renderer>(); // Set Transparancy Shader rend.material.shader = Shader.Find("Custom/TransparentDiffuse ZWrite"); } // Set new Tranparancy value public void UpdateObject() { for (int i = 0; i < rend.materials.Length; i++) { rend.materials[i].SetVector("_Color", new Vector4(1, 1, 1, slider.value)); } }

Kode sumber 5.4 Implementasi Transparansi

5.2.3. Implementasi Penggaris Bagian dari implementasi Tool Penggaris

diimplementasikan pada Kode Sumber 5.5 berikut:

public List<GameObject> linearr = new List<GameObject>(); public GameObject LineRulerCtrl; public GameObject EmptyLine; public GameObject PointDots; public Dropdown LineDropdown; private class Point {

Page 45: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

31

public GameObject point; public int index; public Point(GameObject point, int y) { this.point = point; this.index = y; } } private class Line { public Point pointA; public Point pointB; public LineRenderer lineren; public int index; public Line(Point point1, Point point2, int y) { this.pointA = point1; this.pointB = point2; this.index = y; } } List<Line> LineList = new List<Line>(); List<Point> PointList = new List<Point>(); static int totalPoints = 0; static int totalLines = 0; int SelectedPointIndex; int SelectedPointIndexToMove; int SelectedLineIndex; int SelectedLineIndexToMove; public Slider sliderX1; public Slider sliderY1; public Slider sliderZ1; public Slider sliderX2; public Slider sliderY2; public Slider sliderZ2; Point SelectedPointA; Point SelectedPointB; Line SelectedLine; GameObject SelectedLineRender; bool xyz; bool TouchFlag; // Start is called before the first frame update void Start() { xyz = false; }

Page 46: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

32

// Update is called once per frame void Update() { xyz = false; SelectedLine = LineList.ElementAt(LineDropdown.value); SelectedLineRender = linearr.ElementAt(LineDropdown.value); LineRenderer SelGOren = SelectedLineRender.GetComponent<LineRenderer>(); sliderX1.value = SelectedLine.pointA.point.transform.position.x; sliderY1.value = SelectedLine.pointA.point.transform.position.y; sliderZ1.value = SelectedLine.pointA.point.transform.position.z; sliderX2.value = SelectedLine.pointB.point.transform.position.x; sliderY2.value = SelectedLine.pointB.point.transform.position.y; sliderZ2.value = SelectedLine.pointB.point.transform.position.z; xyz = true; } // Update Line's Points Location public void UpdateLineLocs() { if (xyz == true) { SelectedLine.pointA.point.transform.position = new Vector3(sliderX1.value, sliderY1.value, sliderZ1.value); SelectedLine.pointB.point.transform.position = new Vector3(sliderX2.value, sliderY2.value, sliderZ2.value); SelectedLine = LineList.ElementAt(LineDropdown.value); SelectedLineRender = linearr.ElementAt(LineDropdown.value); LineRenderer SelGOren = SelectedLineRender.GetComponent<LineRenderer>(); SelGOren.SetPosition(0, LineList[LineDropdown.value].pointA.point.transform.position); SelGOren.SetPosition(1, LineList[LineDropdown.value].pointB.point.transform.position); xyz = false; } } // Spawn Point for Line public void SpawnPoint() { GameObject CreatedPoint;

Page 47: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

33

GameObject CreatedLine; float numberX = Random.Range(-0.4f, 0.4f); float numberY = Random.Range(-0.4f, 0.4f); float numberZ = Random.Range(-0.4f, 0.4f); if (PointDots != null) { CreatedPoint = Instantiate(PointDots, new Vector3(numberX, numberY, numberZ), Quaternion.identity); PointList.Add(new Point(CreatedPoint, totalPoints)); totalPoints += 1; if (totalPoints % 2 == 0) { LineList.Add(new Line(PointList[totalPoints - 2], PointList[totalPoints - 1], totalLines)); totalLines += 1; GameObject newGO = Instantiate(EmptyLine, LineRulerCtrl.transform) as GameObject; newGO.name = "lineRuler" + totalLines; newGO.AddComponent<LineRenderer>(); LineRenderer newGOren = newGO.GetComponent<LineRenderer>(); newGOren.SetWidth(0.02f, 0.02f); newGOren.SetPosition(0, LineList[totalLines - 1].pointA.point.transform.position); newGOren.SetPosition(1, LineList[totalLines - 1].pointB.point.transform.position); linearr.Add(newGO); LineDropdown.options.Clear(); foreach (Line line in LineList) { LineDropdown.options.Add(new Dropdown.OptionData("Line " + (line.index + 1))); } } } }

Kode sumber 5.5 Implementasi Tool Penggaris

Page 48: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

34

5.2.4. Implementasi Pemotongan Objek Bedah Bagian dari implementasi Tool Pemotongan

Objek Bedah diimplementasikan pada Kode Sumber 5.6 berikut:

GameObject p_obj; int count = 0; List<Vector3> vertices = new List<Vector3>(); List<Vector3> down = new List<Vector3>(); List<int> triangles = new List<int>(); GameObject gob; GameObject obj2; GameObject ng; CSG_Model csg_model_a; CSG_Model csg_model_b; CSG_Model csg_model_c; int obj = 0; int n_obj = 0; string objname; string gobname; public float length = 2.0f; public GameObject image; bool status = false; public const float k_Epsilon = 0.0001f; Vector3 Substractor; public GameObject line; // Update is called once per frame void Update() { //Scroll Value (knife length) length += Input.mouseScrollDelta.y * 0.5f; if (OVRInput.Get(OVRInput.Button.One) && status == false) { RaycastHit hit; Vector3 posv3_end = line.GetComponent<LineRenderer>().GetPosition(1); Vector3 posv3_start = line.GetComponent<LineRenderer>().GetPosition(0); Debug.Log("ini " + posv3_start + posv3_end);

Page 49: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

35

//Ray ray = Camera.main.ScreenPointToRay(posv3); var heading = posv3_end - posv3_start; var distance = heading.magnitude; var direction = heading / distance; Ray ray = new Ray(posv3_start, direction); if (Physics.Raycast(ray, out hit, 100.0f)) { if (hit.transform != null) { Vector3 newSpot = hit.point + (ray.direction.normalized * length); RaycastHit hit2; Ray ray2 = new Ray(newSpot, -ray.direction); if (Physics.Raycast(ray2, out hit2, 100.0f)) { Debug.Log(hit.point + "->" + hit2.point); //Create Mesh if (count == 0) { p_obj = hit.transform.gameObject; objname = hit.transform.gameObject.name; Debug.Log(p_obj.name); gob = new GameObject(); gob.name = "New Object " + obj; gobname = gob.name; gob.transform.position = p_obj.transform.position; obj++; gob.AddComponent<MeshRenderer>().material = p_obj.GetComponent<MeshRenderer>().material; MeshFilter filter =gob.AddComponent<MeshFilter>(); Debug.Log("Create Object"); //Create Starting Sphere Gizmos GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); sphere.name = "start"; sphere.transform.localScale = new Vector3(0.03f, 0.03f, 0.03f); sphere.transform.position = hit.point; sphere.GetComponent<MeshRenderer>().material = Resources.Load("Materials/red", typeof(Material)) as Material; vertices.Add(hit.point -p_obj.transform.position); vertices.Add(hit2.point -p_obj.transform.position);

Page 50: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

36

down.Add(hit2.point); } else if (count > 0) { Debug.Log("gimana si " + count); vertices.Add(hit.point - p_obj.transform.position); vertices.Add(hit2.point -p_obj.transform.position); //down down.Add(hit2.point); //First triangle triangles.Add(vertices.Count - 4); triangles.Add(vertices.Count - 2); triangles.Add(vertices.Count - 3); //Second triangle triangles.Add(vertices.Count - 2); triangles.Add(vertices.Count - 1); triangles.Add(vertices.Count - 3); gob.GetComponent<MeshFilter>().mesh.vertices = vertices.ToArray(); gob.GetComponent<MeshFilter>().mesh.triangles = triangles.ToArray(); } count++; } hit2 = new RaycastHit(); } } hit = new RaycastHit(); }

Kode sumber 5.6 Implementasi Pemotongan Objek Bedah

Page 51: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

37

5.3. Tampilan Antarmuka

Gambar 5.1 Tampilan aplikasi

Page 52: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

38

[Halaman ini sengaja dikosongkan]

Page 53: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

39

BAB VI PENGUJIAN DAN EVALUASI

Bab ini menjelaskan tahap uji coba terhadap Aplikasi Simulasi Bedah Otak berbasi Virtual Reality. Pengujian dilakukan untuk memastikan kualitas perangkat lunak yang dibangun dan kesesuaian hasil eksekusi perangkat lunak dengan analisis dan perancangan perangkat lunak. Pengujian ini adalah tahap pengujian awal. 6.1. Tujuan Pengujian

Tujuan pengujian Aplikasi Simulasi Bedah Otak berbasis Virtual Reality adalah untuk memastikan fungsionalitas dari aplikasi ini berjalan dengan baik, dan memiliki fungsionalitas yang sesuai dengan yang diharapkan oleh user (dokter bedah saraf).

6.2. Skenario Pengujian

Skenario pengujian tahap awal ini dilakukan dengan menyiapkan data yang telah dimiliki sebagai bahan uji coba. Data yang disiapkan merupakan data 3 dimensi yang telah dihasilkan melalui aplikasi lainnya. Langkah-langkah yang dilakukan adalah melakukan fungionalitas yang tersedia pada data yang disiapkan sebelumnya. Kami akan melihat hasil dari masing-masing fitur menghasilkan luaran yang sesuai atau tidak. Setelah melakukan pengujian tahap awal ini akan dilakukan pengembangan lanjutan pada aplikasi ini.

Page 54: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

40

[Halaman ini sengaja dikosongkan]

Page 55: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

41

BAB VII KESIMPULAN DAN SARAN

Kesimpulan dan saran yang didapat setelah melakukan pengembangan Aplikasi Simulasi Bedah Otak berbasis Virtual Reality pada kegiatan kerja praktek adalah sebagai berikut:

a. Aplikasi yang dibangun masih dalam tahap riset yang berkepanjangan.

b. Dengan adanya aplikasi ini, dokter bedah saraf dapat lebih dipermudah dalam melakukan perencanaan operasi.

c. Kode basis yang kami kembangkan dalam proses pembangunan aplikasi ini mempermudah pengembang berikutnya dalam melakukan pengembangan lanjutan.

d. Platform Unity3d memungkinkan pengembangan teknologi Virtual Reality untuk aplikasi ini.

Page 56: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

42

DAFTAR PUSTAKA

[1] Wikipedia (2020). Unity. [online] Available at: https://en.wikipedia.org/wiki/Unity_(game_engine) [Accessed 16 Mei 2020]. [2] Wikipedia (2020). Virtual Reality. [online] Available at: https://en.wikipedia.org/wiki/Virtual_reality [Accessed 16 Mei 2020]. [3] Oculus (2020). Oculus Rift. [online] Available at: https://www.oculus.com/rift/ [Accessed 16 Mei 2020]. [4] Wikipedia (2020). Constructive Solid Geometry. [online] Available at: https://en.wikipedia.org/wiki/Constructive_solid_geometry [Accessed 20 Juni 2020].

Page 57: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

43

BIODATA PENULIS I

Nama : Irshad Mohammad Rasyidi Tempat, Tanggal Lahir : Surabaya, 4 Februari 1999 Jenis Kelamin : Laki-laki Agama : Islam Status : Belum Menikah Alamat Asal : Rungkut Mejoyo Utara V blok AF/2,

Surabaya Alamat Surabaya : Rungkut Mejoyo Utara V blok AF/2,

Surabaya Telepon : +6287857115380 Email : [email protected] PENDIDIKAN FORMAL 2017-sekarang : Mahasiswa S1 Informatika ITS 2014-2017 : SMAN 2 Surabaya 2011-2014 : SMP Al-Hikmah Surabaya KEMAMPUAN - Programming (C#, Python) - Software Perkantoran ( Ms. Office Word , Excel , Powerpoint) - Bahasa ( Indonesia, Inggris ) AKADEMIS Kuliah : Departemen Informatika - FTEIC, ITS Angkatan : 2017 Semester : 6 (Enam) IPK : 3.6 (Semester 6)

Page 58: Aplikasi Simulasi Bedah Otak Berbasis Virtual Reality

44

BIODATA PENULIS II

Nama : Zico Ritonda Bahen Tempat, Tanggal Lahir : Sampit, 1 Oktober 1999 Jenis Kelamin : Laki-laki Agama : Kristen Protestan Status : Belum Menikah Alamat Asal : Jln. Merbabu I No. 147, Kasongan,

Kalimantan Tengah Alamat Surabaya : Jln. Teknik Komputer I No. 4 Telepon : +6285252733886 Email : [email protected] PENDIDIKAN FORMAL 2017-sekarang : Mahasiswa S1 Informatika ITS 2014-2017 : SMAK Kolese Santo Yusup Malang 2011-2014 : SMP Bina Cita Utama KEMAMPUAN - Programming (C#, Python) - Software Perkantoran ( Ms. Office Word , Excel , Powerpoint) - Bahasa ( Indonesia, Inggris ) AKADEMIS Kuliah : Departemen Informatika - FTEIC, ITS Angkatan : 2017 Semester : 6 (Enam) IPK : 3.54 (Semester 6)