Anda di halaman 1dari 27

BAB IV

HASIL DAN PEMBAHASAN

A. Implementasi Sistem

Tahap implementasi merupakan tahap dimana seluruh objek

multimedia dibuat dan perangkat lunak siap dioperasikan pada keadaan yang

sebenarnya sehingga akan diketahui apakah aplikasi system gerak manusia

yang dibuat telah menghasilkan tujuan yang diinginkan. Perangkat lunak

pembelajaran berbasis teknologi augmented reality ini dibangun

menggunakan Unity 3D, software GIMP untuk pembuatan marker, software

modeling Blender untuk pembuatan objek animasi 3D.

1. Batasan Implementasi

Pada tahap implementasi dari media pembelajaran system gerak

pada manusia berbasis augmented realityini, batasan implementasi dari

sistem ini adalah :

a. Menggunakan unity 3d

b. Menggunakan perangkat android

c. Media pembelajaran system gerak pada manusia berbasis augmented

reality ini digunakan sebagai media dalam melihat secara

virtualtulang dan rangka pada manusia. Pengguna yang

menggunakan media ini adalah guru dan siswa.

2. Tujuan Implementasi

60
61

Tujuan penyusunan implementasi ini adalah membangun suatu

media pembelajaran sistem gerak manusiaberbasis augmented

realityyang mampu berjalan pada perangkat android untuk memberikan

solusi alternatif dalam meningkatkan pengetahuan siswa pada mata diklat

System Gerak Pada Manusia.

3. Lingkungan Implementasi

Terdapat dua lingkungan implementasi dari aplikasi system gerak

pada manusia ini yaitu lingkungan perangkat keras dan lingkungan

perangkat lunak.

a. Lingkungan Perangkat Keras

Perangkat keras yang digunakan pada tahap implementasi

mempunyai spesifikasi sebagai berikut :

1. Prosesor Intel Core i3

2. RAM 2GB

3. HDD 500GB

4. VGA Intel 1GB

5. Marker Objek

6. Kamera internal Smartphone 5MP

b. Lingkungan Perangkat Lunak

Perangkat lunak yang digunakan pada tahap implementasi

mempunyai spesifikasi sebagai berikut :

1. Blender

2. Unity 2017
62

3. OS Windows

10 Ultimate 64bit

4. GIMP

B. Hasil Implementasi

Pada media pembelajaran

perangkar keras jaringan komputer

berbasis augmented realityini

menghasilkan interfacemultimedia

sebagai berikut :

Gambar 39.Halaman Scene Pembuka


63

Pada halaman scene pembuka di atas terlihat terdapat dua tombol

yakni ar start dan help.Berikut adalah Script masing-masing tombol pada

halaman scene utama :

1. Tombol HELP

publicvoid help()
{

PanelScrollViewHelp.SetActive(true);
}

Scriptdi atas berfungsi untuk menghubungkan halaman scene

pembuka ke halaman bantuan yang ada pada scene utama pada unity.

Gambar 40. Halaman HELP

Pada halaman bantuan ini terdapat gambar yang menjelaskancara

mengarahkan kamera ke marker.

2. Tombol AR START

publicvoid arStart()
{
//SceneManager.LoadScene("sceneUtama", LoadSceneMode.Single);
Application.LoadLevel("sceneUtama");

Script di atas berfungsi untuk mengaktifkan fitur augmented

reality pada media pembelajaran ini. Ketika user mengklik tombol AR


64

STARTmaka kamera akan aktif untuk mendeteksi marker. Setelah

proses pembacaan objek selesai dan berhasil maka akan tampil kamera

augmented reality.kamera berfungsi untuk mendeteksi setiap marker

yang diarahkan user ke kamera.

Gambar 41. Kamera AR telah terbuka

Ketika kamera mendeteksi marker yang diarahkan user, maka

sistemakan mencocokan ID marker dengan objek 3D yang akan

ditampilkan. Setelah itu system akan menampilkan objek 3D system

gerak pada manusia sesuai dengan ID marker yang terdeteksi.


65

Gambar 42. Kamera AR mendeteksi marker dan menampilkan


objek3D rangka

Gambar 43. Kamera AR mendeteksi marker dan menampilkan


objek3D Tulang Pipa
66

Gambar 44. Kamera AR mendeteksi marker dan menampilkan


objek3D tulang pipih
67

Gambar 45. Kamera AR mendeteksi marker dan menampilkan


objek3D tulang pendek
68

Gambar 46. Kamera AR mendeteksi marker dan menampilkan


objek3D sendi engsel

C. Pengujian

Setelah perangkat lunak multimedia ini selesai, tahap selanjutnya

adalah pengujian terhadap perangkat lunak tersebut. Pengujian yang

dilakukan adalah :

1. Pengujian Dengan Menggunakan Black box

Pengujian dengan black boxberfokus pada pengujian dengan

melihat fungsi-fungsi yang ada pada program tanpa harus mengetahui

bagaimana fungsi tersebut dibuat programnya.


69

Pada media pembelajaran interaktif berbasis teknologi augmented

realityini, pengujian merujuk pada fungsi-fungsi yang ada pada sistem,

kemudian membandingkan hasil keluaran program dengan hasil yang

diharapkan. Bila hasil yang diharapkan sesuai dengan hasil pengujian, hal

ini berarti perangkat lunak sudah sesuai dengan desain yang telah

ditetapkan sebelumnya. Bila belum maka harus dilakukan pengecekan

dan perbaikan. Berikut adalah tabel pengujian black box aplikasi

perangkat keras jaringan komputer :

Hasil yang Hasil


No Pengujian Deskripsi Kesimpulan
diharapkan pengujian
Klik Halaman Halaman
1 tombol bantuan bantuan Berhasil
Scene help tampil tampil
pembuka Klik
Fitur AR Fitur AR
2 tombol Berhasil
berjalan berjalan
AR Start
Tabel 1. Hasil Pengujian Black box

Pada tahap pengujian ini semua menu yang ada pada aplikasi ini

dapat berjalan dengan baik.

2. Pengujian Deteksi Marker

Pada tahap ini dilakukan pengujian apakan seluruh marker yang

berjumlah 5marker dapat terdeteksi oleh kamera. Berikut adalah tabel

pengujian deteksi marker :

NO Data Masukan Tujuan Pengamatan Kesimpulan

Marker Mendeteksi Marker


1 Diterima
Rangka markerrangka terdeteksi
Marker Mendeteksi Marker
2 Diterima
Tulang Pipa markerTulang terdeteksi
70

Pipa

Mendeteksi
MarkerTulang Marker
3 markerTulang Diterima
Pipih terdeteksi
Pipih
Marker Mendeteksi
Marker
4 Tulang markerTulang Diterima
terdeteksi
Pendek Pendek
Mendeteksi
MarkerSendi Marker
5 markerSendi Diterima
Engsel terdeteksi
Engsel
Tabel 2. Tabel Pengujian Deteksi Marker

Dalam pengujian deteksi marker, seluruh marker aplikasi system

gerak manusia dapat terdeteksi oleh kamera augmented reality.

3. Pengujian Objek 3D

Dalam pengujian objek 3D aplikasi perangkat keras jaringan

komputer ini akan dinilai kemampuan kamera untuk mendeteksi marker

dan menampilkan objek 3D pada layar Smartphone. Dari 13 marker yang

ada semua objek muncul seperti yang telah didesain dengan software

Blender .berikut adalah tabel hasil pengujian objek 3D :

No Data Masukan Tujuan Pengamatan Kesimpulan


Menampilkan Objek dan
1 MarkerRangka objek Rangka Materi Berhasil
dan Materi Muncul
Menampilkan
Objek dan
MarkerTulang objek Tulang
2 Materi Berhasil
Pipa Pipa dan
Muncul
Materi
Menampilkan
Objek dan
MarkerTulang objek Tulang
3 Materi Berhasil
Pipih Pipih dan
Muncul
Materi
Menampilkan Objek dan
MarkerTulang
4 Objek Tulang Materi Berhasil
Pendek
Pendek dan Muncul
71

Materi
Menampilkan
Objek dan
MarkerSendi objek Sendi
5 Materi Berhasil
Engsel Engsel dan
Muncul
Materi
Tabel 3. Tabel Pengujian Objek 3D

Pada tahap pengujian objek 3D, semua objek pada semua marker

dapat ditampilkan dengan baik.

D. Penanganan Error

Pada aplikasi ini terdapat beberapa kemungkinan error, diantaranya :

1. Objek 3D system gerak manusia terkadang tidak tampil dengan

sempurna. Terdapat cacat fisik pada objek.

2. Sesekali objek 3D hilang dan muncul kembali.

Dari beberapa error yang disebutkan di atas, penyebab umum

terjadinya error adalah karena keterbatasan kemampuan kamera smartphone

untuk pendeteksian marker dan kurang baiknya intensitas cahaya di ruang

kerja sehingga kamera sulit mendeteksi marker. Berikut adalah solusi

penanganan error :

1. Bila user menggunakan kamera Smartphonesaat menggunakan

aplikasi ini (biasanya hanya 5MP), usahakan marker yang

diarahkan jangan terlalu jauh dari kamera. Biasanya markerakan

terdeteksi dengan baik pada jarak maksimal + 30cm dari kamera.

2. Usahakan ruang kerja user saat menggunakan aplikasi ini

memiliki cahaya yang sedang. Bila cahaya ruangan terlalu redup

atau terlalu terang maka kamera akan kesulitan mendeteksi marker


72

yang user arahkan, sehingga marker tidak terdeteksi dengan baik

dan objek 3D tidak ditampilkan dengan baik.


73

Lampiran script:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using Vuforia;

using System;

using UnityEngine.UI;

using UnityEngine.SceneManagement;

public class AppEvent : MonoBehaviour

private string previousObject = null, nextObject;

private float rotateSpeed = 10.0f;

private string targetObjectName;

private GameObject targetObject;

private float pitch = 0.0f, yaw = 0.0f;

public bool arrowDownButtonCheck = true;

public GameObject arrowButtonObject, scrollView, textAreaScrollView, scrollBar;

public Sprite imageArrowDown, imageArrowUp;

public GameObject PanelScrollViewHelp;

// Digunakan untuk menangkap target

// dan serta agar berfungsinya rotasi dan scala objek

void Update()

{
74

if (SceneManager.GetActiveScene().name == "sceneUtama")

getTarget();

if (scrollView.active == false)

swipeRotate();

pinchScale();

showMateri();

previousObject = nextObject;

else

backButton();

//Method untuk menangkap target

private void getTarget()

{
75

try

// Get the Vuforia StateManager

StateManager sm = TrackerManager.Instance.GetStateManager();

// Query the StateManager to retrieve the list of

// currently 'active' trackables

//(i.e. the ones currently being tracked by Vuforia)

IEnumerable<TrackableBehaviour> activeTrackables =
sm.GetActiveTrackableBehaviours();

// Iterate through the list of active trackables

//Debug.Log("List of trackables currently active (tracked): ");

bool adaTrackAble = false;

foreach (TrackableBehaviour tb in activeTrackables)

targetObjectName = tb.TrackableName;

adaTrackAble = true;

if (adaTrackAble == false)

targetObjectName = "null";
76

nextObject = targetObjectName;

catch { }

//Method untuk swipe rotasi objek

private void swipeRotate()

//Debug.Log("touucchh" + Input.touchCount);

if (Input.touchCount == 1)

try

targetObject = GameObject.Find(targetObjectName).gameObject;

pitch += Input.GetTouch(0).deltaPosition.y * rotateSpeed * Time.deltaTime;

yaw -= Input.GetTouch(0).deltaPosition.x * rotateSpeed * Time.deltaTime;


77

//yaw = Mathf.Clamp(yaw, -180, 180);

//pitch = Mathf.Clamp(pitch, -180, 180);

targetObject.transform.eulerAngles = new Vector3(pitch, yaw, 0.0f);

catch { }

//Method untuk pich skala objek

private void pinchScale()

if (Input.touchCount == 2)

try

targetObject = GameObject.Find(targetObjectName).gameObject;

// Store both touches.

Touch touchZero = Input.GetTouch(0);

Touch touchOne = Input.GetTouch(1);


78

// Find the position in the previous frame of each touch.

Vector2 touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;

Vector2 touchOnePrevPos = touchOne.position - touchOne.deltaPosition;

// Find the magnitude of the vector (the distance) between the touches in each
frame.

float prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude;

float touchDeltaMag = (touchZero.position - touchOne.position).magnitude;

// Find the difference in the distances between each frame.

float deltaMagnitudeDiff = (prevTouchDeltaMag - touchDeltaMag) / 5;

float realValue = targetObject.transform.localScale.x;

realValue -= deltaMagnitudeDiff / 100;

realValue = Mathf.Clamp(realValue, 0.2f, 3);

targetObject.transform.localScale = new Vector3(realValue, realValue,


realValue);

catch

//Method untuk menampilkan beberapa materi


79

//pada masing-masing objek

public void showMateri()

// Debug.Log("targetObject " + targetObjectName);

try

if (targetObjectName == "null")

if (previousObject != nextObject)

scrollBar.GetComponent<UnityEngine.UI.Scrollbar>().value = 1;

textAreaScrollView.GetComponent<UnityEngine.UI.Text>().text = " ";

else if (targetObjectName == "Rangka")

if (previousObject != nextObject)

scrollBar.GetComponent<UnityEngine.UI.Scrollbar>().value = 1;

textAreaScrollView.GetComponent<UnityEngine.UI.Text>().text =

"Rangka adalah Tulang-tulang yang tersusun sedemikian rupa dengan


sistem tertentu."+
80

"Tulang merupakan alat gerak pasif karena tulang baru akan bergerak bila
digerakkan oleh otot."+

"Sedangkan unsur pembentuk tulang pada manusia adalah unsur kalsium


dalam bentuk garam yang direkatkan oleh kalogen."+

"Rangka mempunyai fungsi sebagai berikut: "+

"1.Penopang dan penunjang tegaknya tubuh. "+

"2.Memberi bentuk tubuh." +

"3.Melindungi alat-alat atau bagian tubuh yang lunak." +

"4.Alat gerak pasif." +

"5.Tempat melekatnya otot - otot rangka." +

"6.Tempat pembentukan sel darah dan penimbunan mineral." ;

else if (targetObjectName == "TulangPipa")

if (previousObject != nextObject)

scrollBar.GetComponent<UnityEngine.UI.Scrollbar>().value = 1;

textAreaScrollView.GetComponent<UnityEngine.UI.Text>().text =

"Tulang pipa berbentuk seperti tabung, kedua ujungnya bulat, dan bagian
tengahnya silindris (diafisis)." +

"Hampir seluruh bagian tulang pipa terdiri dari tulang kompak (tulang
padat) dengan sedikit komponen tulang spongiosa (tulang berongga-rongga)." +

"Pada bagian dalam tulang tersebut terdapat rongga berisi sumsum


tulang." +
81

"Contoh: tulang paha, tungkai bawah, dan tungkai atas. " +

"Tulang pipa terbagi atas tiga bagian, yaitu bagian ujung disebut epifisis,
bagian tengah disebut diafisis tersusun atas tulang keras." +

"Bagian antara epifisis dan diafisis disebut cakraepifisis atau metafisis yang
terdiri atas tulang rawan dan mengandung banyak osteoblas." +

"Bagian cakraepifisis merupakan bagian yang dapat bertambah panjang


terutama dalam usia pertumbuhan." +

"Cakraepifisis orang dewasa tidak tumbuh meninggi lagi karena sudah


menulang semua." +

"Sebaliknya, bagian tengah tulang pipa terdapat sel-sel osteoklas yang


merusak tulang sehingga tulang menjadi berongga, kemudian rongga tersebut terisi
sumsum tulang." +

"Tulang - tulang dalam tubuh manusia kurang lebih berjumlah 200 buah." +

"Komponen - komponen penyusun tulang adalah air(25 %), zat organik


berupa serabut(30 %), dan zat mineral terutama kalsium fosfat dan sedikit garam
magnesium(45 %).";

else if (targetObjectName == "TulangPipih")

if (previousObject != nextObject)

scrollBar.GetComponent<UnityEngine.UI.Scrollbar>().value = 1;

textAreaScrollView.GetComponent<UnityEngine.UI.Text>().text =

"Tulang pipih berbentuk gepeng dan berupa lempengan-lempengan lebar."


+
82

"Tulang pipih ini tersusun atas dua lapisan tulang kompak yaitu lamina
eksterna dan internaossis karnii." +

"Di antara dua lapisan ini terdapat lapisan spongiosa yang dinamakan
diploe." +

"Peran tulang pipih adalah melindungi struktur tubuh yang berada di


bawahnya." +

"Tulang pipih terdiri atas dua lapisan jaringan tulang keras dan di
tengahnya berupa lapisan tulang seperti bunga karang (spons) yang di dalamnya berisi
sumsum merah sebagai tempat pemben-tukan selsel darah." +

"Tulang-tulang pipih berperan dalam melindungi organ tubuh." +

"Contoh tulang pipih adalah tulang tengkorak, tulang rusuk, dan tulang
belikat.";

else if (targetObjectName == "TulangPendek")

if (previousObject != nextObject)

scrollBar.GetComponent<UnityEngine.UI.Scrollbar>().value = 1;

textAreaScrollView.GetComponent<UnityEngine.UI.Text>().text =

"Tulang pendek berbentuk seperti kubus atau pendek tidak beraturan."+

"Tulang ini mempunyai inti tulang spongiosa yang dikelilingi tulang


kompak."+

"Sama seperti tulang pipih, tulang pendek juga tidak berongga dan bersifat
pejal, akan tetapi mengandung sumsum merah tulang."+

"Karena bentuknya yang pendek, tulang ini biasanya bergerombol dan


membentuk ruas-ruas tulang."+
83

"Contoh: tulang telapak tangan dan kaki, ruas-ruas tulang belakang, ruas -
ruas tulang pergelangan tangan, ruas-ruas jari tangan, dan ruas jari kaki.";

else if (targetObjectName == "SendiEngsel")

if (previousObject != nextObject)

scrollBar.GetComponent<UnityEngine.UI.Scrollbar>().value = 1;

textAreaScrollView.GetComponent<UnityEngine.UI.Text>().text =

"Sendi Engsel adalah hubungan antartulang yang memungkinkan gerakan


satu arah maju atau mundur."+

"Contoh sendi engsel adalah persendian pada siku, lutut, dan persendian
antararuas jari tangan. ";

catch { }

}
84

public void arrowButton()

if (arrowDownButtonCheck == true)

arrowButtonObject.GetComponent<UnityEngine.UI.Image>().sprite =
imageArrowUp;

arrowDownButtonCheck = false;

scrollView.SetActive(true);

else

arrowButtonObject.GetComponent<UnityEngine.UI.Image>().sprite =
imageArrowDown;

arrowDownButtonCheck = true;

scrollView.SetActive(false);

public void arStart()

//SceneManager.LoadScene("sceneUtama", LoadSceneMode.Single);

Application.LoadLevel("sceneUtama");

}
85

public void help()

PanelScrollViewHelp.SetActive(true);

public void backButton()

//if (Application.platform == RuntimePlatform.Android)

//{

if (Input.GetKey(KeyCode.Escape))

if (SceneManager.GetActiveScene().name == "sceneUtama")

Application.LoadLevel("scenePembuka");

else

if (PanelScrollViewHelp == true)

{
86

PanelScrollViewHelp.SetActive(false);

else

Application.Quit();

//}