• Tidak ada hasil yang ditemukan

PENGEMBANGAN TOOL PENCAHAYAAN 3D BERBASIS ARRAY DENGAN MAXSCRIPT ANDI SASMITA

N/A
N/A
Protected

Academic year: 2021

Membagikan "PENGEMBANGAN TOOL PENCAHAYAAN 3D BERBASIS ARRAY DENGAN MAXSCRIPT ANDI SASMITA"

Copied!
49
0
0

Teks penuh

(1)

PENGEMBANGAN TOOL PENCAHAYAAN 3D

BERBASIS ARRAY DENGAN MAXSCRIPT

ANDI SASMITA

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

BOGOR

2009

(2)

PENGEMBANGAN TOOL PENCAHAYAAN 3D

BERBASIS ARRAY DENGAN MAXSCRIPT

ANDI SASMITA

Skripsi

Sebagai salah satu syarat untuk memperoleh gelar

Sarjana Komputer pada

Departemen Ilmu Komputer

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

BOGOR

2009

(3)

ABSTRACT

ANDI SASMITA. Development of Array-Based 3D Lighting Tool using MAXScript. Under the supervision of AHMAD RIDHA.

Array lighting uses a group of lights behaving and functioning as a single light. This method can be used to simulate the effect of global illumination in less time. In this research, Cylight, an array-based 3D lighting tool with tubular geometry, is developed using MAXScript. The image quality comparison to global illumination using Scanline and mental ray is conducted through an online survey using six 3D scenes. 98 respondents participated to determine the realistic level for each rendered scene with a value between 1 to 5. The rendering time is also measured. The results show that Scanline produces the best image quality, but not significantly different compared to Cylight. On the other hand, Cylight is significantly faster, taking less than 10% of Scanline's rendering time.

(4)

Judul : Pengembangan Tool Pencahayaan 3D Berbasis Array dengan MAXScript Nama : Andi Sasmita

NRP : G64051082

Menyetujui:

Pembimbing

Ahmad Ridha, S.Kom, M.S. NIP 19800507 200501 1 001

Mengetahui:

Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor

Dr. Drh. Hasim, DEA NIP 19610328 198601 1 002

(5)

PRAKATA

Puji syukur Penulis panjatkan kepada Allah Subhanahu wa Ta’ala atas segala rahmat dan karunia-Nya sehingga tulisan ini berhasil diselesaikan. Tulisan ini merupakan hasil penelitian Penulis sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer di Departemen Ilmu Komputer Institut Pertanian Bogor (IPB).

Terima kasih Penulis ucapkan kepada orang tua Penulis yaitu pasangan Bapak Sarwani Gunawan Sasmita dan Ibu Halimah yang selalu memberikan motivasi, semangat, moril, dan materiil. Ucapan terima kasih dan penghargaan yang setinggi-tingginya Penulis sampaikan kepada Bapak Ahmad Ridha, S.Kom, M.S. selaku pembimbing dan teman-teman satu bimbingan atas dukungannya kepada Penulis selama penelitian berlangsung. Terima kasih kepada Bapak Endang Purnama Giri selaku penguji pertama serta Bapak Firman Ardiansyah selaku penguji kedua tugas akhir ini. Penulis juga mengucapkan terima kasih kepada Ibu Dr. Ir. Sri Nurdiati, M.Sc. selaku Ketua Departemen Ilmu Komputer sekaligus pembimbing akademik Penulis ketika tingkat dua dan tiga yang selalu memberikan arahan dan wejangan. Terima kasih banyak kepada para dosen pengajar yang telah mendidik, membina, serta mengajar selama Penulis berada di Departemen Ilmu Komputer.

Ucapan terima kasih juga Penulis sampaikan kepada saudara Fajar Jumat, S.Si., Bapak Prima Hadi Putra, Abdullah, Wahyu, Nandar, Haris, teman-teman Ilkomerz 42, pengurus HIMALKOM FMIPA IPB, teman-teman BANKERZ, adik-adik mahasiswa angkatan 43 yang selalu memberi inspirasi dan semangat, serta kakak-kakak mahasiswa angkatan 41 yang selalu memberi pengarahan. Terima kasih kepada teman-teman di Edensor, teman-teman Tahu Logay SMAN 1 Bogor, teman-teman FORKOM SMAN 1 Bogor, adik-adik di SMAN 1 Bogor, dan adik-adik di SMA Smart Ekselensia Indonesia.

Banyak sekali yang membantu penyelesaian penelitian ini baik secara langsung maupun tidak langsung. Penulis meminta maaf karena tidak dapat disebutkan satu per satu. Penulis menyadari bahwa pelaksanaan penelitian ini masih jauh dari kesempurnaan, namun besar harapan Penulis bahwa yang telah dikerjakan dapat memberikan manfaat bagi semua pihak.

Bogor, Agustus 2009

(6)

RIWAYAT HIDUP

Penulis dilahirkan di Bogor pada tanggal 31 Januari 1987 yang merupakan anak pertama dari tiga bersaudara dengan ayah bernama Sarwani Gunawan Sasmita dan ibu bernama Halimah. Pada tahun 2005 Penulis lulus dari Sekolah Menengah Atas Negeri 1 Bogor dan diterima di Departemen Ilmu Komputer Institut Pertanian Bogor melalui jalur Undangan Seleksi Masuk IPB (USMI) pada tahun yang sama.

Selama menjadi mahasiswa Penulis juga aktif di Himpunan Mahasiswa Ilmu Komputer (HIMALKOM) sebagai Ketua Divisi Multimedia dan Ketua Badan Kerohanian Ilkomerz (BANKERZ). Di luar itu Penulis juga aktif mengikuti kepanitiaan acara Pesta Sains 2007 yang diadakan oleh BEM FMIPA IPB. Penulis juga menjadi staf pengajar pengayaan Desain Grafis di SMA Smart Ekselensia Indonesia sejak tahun 2008.

(7)

iv DAFTAR ISI Halaman DAFTAR TABEL ... v DAFTAR GAMBAR ... v DAFTAR LAMPIRAN ... v PENDAHULUAN Latar Belakang ... 1 Tujuan ... 1 Ruang Lingkup ... 1 Manfaat Penelitian ... 1 TINJAUAN PUSTAKA Autodesk® 3ds Max® ... 1 MAXScript ... 1

Global Illumination (GI) ... 1

Rendering ... 2

Standard Lights ... 2

Array Lighting ... 2

Analisis Ragam ... 2

Uji Lanjutan Duncan ... 3

METODOLOGI PENELITIAN Studi Pustaka ... 3

Desain Tool ... 3

Pengembangan Tool ... 3

Rilis dan Pengujian ... 3

HASIL DAN PEMBAHASAN Studi Pustaka ... 4

Desain Tool ... 4

Pengembangan Tool ... 5

Rilis dan Pengujian ... 6

KESIMPULAN DAN SARAN Kesimpulan ... 8

Saran ... 8

DAFTAR PUSTAKA ... 8

(8)

v

DAFTAR TABEL

Halaman

1 Tabel ANOVA satu arah ... 2

2 Hasil pengujian waktu render ... 6

3 ANOVA berdasarkan waktu render ... 6

4 Uji lanjutan Duncan waktu render ... 7

5 Sebaran usia responden ... 7

6 Responden yang bermain game 3D ... 7

7 ANOVA berdasarkan rank ... 7

8 Uji lanjutan Duncan berdasarkan rank... 8

DAFTAR GAMBAR Halaman 1 Dome array. ... 2

2 Metodologi penelitian. ... 3

3 Alur pengujian. ... 4

4 Antarmuka pengguna Cylight. ... 5

5 Cylight di viewport 3ds Max... 6

6 Grafik nilai tengah waktu render. ... 7

7 Perbandingan hasil render tiga metode pencahayaan. ... 7

8 Grafik nilai tengah rank. ... 8

DAFTAR LAMPIRAN Halaman 1 Ilustrasi penggunaan parameter pencahayaan pada target spot ... 10

2 Script Cylight ... 11

3 Pengujian waktu render ... 24

4 Parameter-parameter metode pencahayaan ... 25

5 Kuesioner ... 26

6 Demografi dan mental model responden ... 36

(9)

1

PENDAHULUAN

Latar Belakang

Bidang Computer Graphics (CG) saat ini sudah berkembang sangat pesat sehingga menghasilkan visualisasi yang mendekati objek aslinya. Hal ini tidak lepas dari peran pencahayaan karena melalui cahaya kita dapat mempersepsikan warna, bentuk, dan tekstur dari sebuah objek.

Dua pendekatan yang umum digunakan untuk menghasilkan visualisasi 3D adalah local

illumination dan global illumination. Global illumination (GI) menghasilkan visualisasi yang

lebih realistis dibandingkan dengan pendekatan

local illumination. Hal tersebut dikarenakan GI

tidak hanya menghitung cahaya langsung (direct illumination) tetapi juga cahaya tidak langsung (indirect illumination) (Brooker 2008).

Selain menghasilkan citra yang realistis, efek pencahayaan perlu dikerjakan secepat mungkin, idealnya dengan kecepatan 30 citra setiap detiknya. Sayangnya belum ada algoritme GI yang dapat memenuhi kedua tujuan tersebut (Brooker 2008).

Untuk itu dibutuhkan aplikasi atau tool yang dapat menghasilkan efek mirip GI dengan waktu render yang lebih cepat dari tool GI yang tersedia. Teknik yang umum dipakai untuk membuat GI tiruan adalah dengan menempatkan sejumlah sumber cahaya di sekeliling objek 3D. Teknik ini dikenal dengan sebutan array lighting. Geometri yang seringkali dipakai untuk array lighting adalah kubah (dome). Dalam penelitian ini dikembangkan tool dengan geometri silinder (tubular).

Tujuan

Tujuan utama dari penelitian ini adalah: 1. Mengembangkan tool dengan menggunakan

metode array lighting sehingga objek seperti mendapat efek GI.

2. Membandingkan kinerja tool yang dibuat dengan beberapa metode GI lain.

Ruang Lingkup

Ruang lingkup penelitian ini difokuskan pada pembuatan tool pencahayaan dengan menggunakan MAXScript yang terintegrasi dengan Autodesk 3ds Max. Cahaya tersebut memiliki beberapa parameter yang dapat ditentukan oleh pengguna yaitu step, color,

multiplier, hotspot, dan overshoot. Sedangkan

untuk bayangan parameternya adalah color,

density, bias, map size, dan sample range.

Penelitian mengenai GI untuk interior telah dilakukan oleh (Boyles et al. 2009). Berbeda dengan penelitian tersebut, penelitian ini membahas penerapan teknik pencahayaan GI tiruan untuk lingkungan eksterior atau objek yang tidak dibatasi ruangan. GI tiruan dibuat dengan menggunakan array lighting dengan geometri silinder. Penelitian ini tidak membahas kompleksitas algoritme GI yang dibandingkan. Pengujian dilakukan pada aspek seberapa realistis citra yang dihasilkan serta seberapa cepat waktu rendering-nya.

Manfaat Penelitian

Tool ini bermanfaat untuk membuat efek GI

tiruan di 3ds Max dengan waktu relatif cepat sehingga dapat digunakan di industri ataupun bidang yang membutuhkan visualisasi 3D yang realistis.

TINJAUAN PUSTAKA

Autodesk® 3ds Max®

Salah satu perangkat lunak yang seringkali digunakan dalam pemodelan atau visualisasi 3D adalah Autodesk® 3ds Max®. Model 3D yang dibuat di 3ds Max terdiri dari data geometri yang direpresentasikan pada sistem koordinat Cartesian atau disebut world space. Model yang dibuat juga memiliki data mengenai material dari setiap objek serta cahaya yang digunakan (Derakhshani et al 2007).

MAXScript

MAXScript adalah built-in scripting language yang digunakan di Autodesk® 3ds Max®, Autodesk® 3ds Max® Design dan Autodesk® VIZ. Karena itu MAXScript hanya dapat digunakan jika 3ds Max atau VIZ dijalankan. MAXScript memiliki kemampuan untuk mengontrol dan melakukan proses

modeling, animasi, material, rendering, dan

beberapa fitur lainnya dari aplikasi Autodesk (Derakhshani et al. 2007).

Global Illumination (GI)

Global illumination adalah model pencahayaan yang dihasilkan dari cahaya langsung yang datang ke permukaan objek atau biasa disebut direct illumination dan cahaya tidak langsung atau biasa disebut indirect

(10)

2 dari cahaya yang datang dari pantulan

permukaan objek lain.

Algoritme GI yang umum dikenal adalah

ray-tracing dan radiosity. Keduanya terintegrasi

dengan sistem rendering (renderer).

Ray-tracing adalah salah satu algoritme GI pertama

yang dikembangkan. Kelemahan dari algoritme ini adalah prosesnya yang lambat untuk lingkungan yang relatif kompleks serta tidak memperhitungkan indirect illumination. Untuk mengatasi hal tersebut dikembangkan algoritme

radiosity (Brooker 2008).

Rendering

Rendering adalah proses yang menggabungkan model geometris dengan deskripsi permukaan, pencahayaan, dan data lainnya untuk membuat citra visual. Perangkat lunak atau komponen untuk melakukan

rendering disebut renderer (Brooker 2008).

Scanline adalah salah satu renderer di 3ds Max. yang di dalamnya terdapat Light Tracer untuk membuat efek GI sama halnya dengan

ray-tracing (Murdock 2008). Berbeda dengan

ray-tracing, Light Tracer tidak dibuat untuk

menghitung hasil render yang akurat tetapi dapat menghasilkan citra yang realistis tanpa mengorbankan banyak waktu. Light Tracer tepat untuk digunakan pada lingkungan eksterior. Salah satu renderer lainnya di 3ds Max adalah mental ray (mr) yang dapat membuat pencahayaan yang akurat seperti

raytraced reflections/refractions, caustics, dan global illumination (Brooker 2008).

Standard Lights

Standard Lights adalah cahaya dalam 3ds

Max yang menyimulasikan cahaya sebenarnya dalam dunia nyata. Ada delapan tipe Standard

Lights yang dapat digunakan di 3ds Max yaitu Target Spotlight, Free Spotlight, Target Directional Light, Free Directional Light, Omni Light, Skylight, mr Area Omni Light, dan mr Area Spotlight. Setiap tipe cahaya memiliki

parameter tersendiri yang dapat disesuaikan menyerupai kondisi aslinya (Derakhshani et al. 2007).

Array Lighting

Array lighting merupakan sumber cahaya

dari segala arah dengan menggunakan geometri tertentu yang menghasilkan efek GI tiruan. Setiap bentuk array menghasilkan efek pencahayaan yang berbeda. Bentuk geometri yang umum dipakai adalah bentuk diamond,

pyramid, dome, ring, box, tubular, maupun

kombinasi dari tipe-tipe tersebut (Gallardo

2001). Gambar 1 menunjukkan salah satu geometri berbentuk dome.

Gambar 1 Dome array.

Analisis Ragam

Analisis ragam atau Analysis of Variance (ANOVA) dikembangkan oleh peneliti statistik dari Inggris, R.A. Fisher (1890-1962). ANOVA adalah teknik untuk menguji kesamaan nilai tengah antara beberapa metode secara sekaligus (simultan). ANOVA biasa digunakan untuk menguji kesamaan kinerja antara beberapa metode (Aunuddin 2005). Tabel perhitungan ANOVA satu arah dapat dilihat pada Tabel 1. Tabel 1 Tabel ANOVA satu arah

Sumber Keragaman (SK) Jumlah Kuadrat (JK) Derajat Bebas (db) Kuadrat Tengah (KT) Fhit Perlakuan Galat JKK JKG k-1 k(N-1) KTK KTG KTK/ KTG Total JKT N-1

Berikut ini adalah keterangan mengenai perhitungan ANOVA pada Tabel 1

dengan:

k = banyaknya kolom

N = banyaknya pengamatan/keseluruhan data ni = banyaknya ulangan di kolom ke-i xij = data pada kolom ke-i ulangan ke-j T*i = total (jumlah) ulangan pada kolom ke-i T**= total (jumlah) seluruh pengamatan.

,

, ,

, ,

(11)

3 Pengambilan keputusan yaitu tolak H0

dengan taraf uji (α) tertentu bila nilai Fhitung

terletak di wilayah kritis yaitu F > Fα (db1 =k-1,db2=N-k) dengan hipotesis:

H0 : tidak ada metode yang berbeda nyata H1 : minimal ada sepasang metode yang

berbeda nyata.

Uji Lanjutan Duncan

Uji lanjutan Duncan merupakan uji yang dilakukan jika analisis ragam menghasilkan minimal ada sepasang metode yang berbeda nyata. Jika antar-metode berada pada subset yang berbeda, maka setiap metode berbeda nyata (Mattjik 2002). Uji ini juga dikenal dengan uji perbandingan berganda Duncan atau

Duncan Multiple Range Test (DMRT).

METODOLOGI PENELITIAN

Metode yang digunakan dalam penelitian ini dibagi ke dalam beberapa tahap yaitu (1) studi pustaka, (2) desain tool, (3) pengembangan tool, serta (4) rilis dan pengujian. Metodologi penelitian dapat dilihat pada Gambar 2. Berikut ini adalah penjelasan dari tahap penelitian yang akan dilakukan.

Gambar 2 Metodologi penelitian.

Studi Pustaka

Beberapa algoritme untuk membuat GI serta tahapan metodenya didapat dari studi pustaka dan literatur. Pada tahapan ini juga dilakukan pencarian referensi mengenai metode sejenis untuk membuat GI tiruan.

Desain Tool

Pada tahapan ini dilakukan perencanaan tool yang akan dibuat berdasarkan studi pustaka. Tahap ini dibagi menjadi dua yaitu spesifikasi fitur dan parameter serta desain antarmuka. 1. Spesifikasi Fitur dan Parameter

Spesifikasi fitur dan parameter dibuat berdasarkan kebutuhan untuk menghasilkan citra serealistis mungkin. Sumber cahaya yang digunakan pada penelitian ini adalah Standard

Lights dengan tipe target spot.

2. Desain Antarmuka

Desain antarmuka meliputi antarmuka perangkat keras, antarmuka perangkat lunak, dan antarmuka pengguna. Perangkat keras yang disyaratkan berdasarkan kebutuhan perangkat keras minimum dari Autodesk 3ds Max 8 yaitu:

Prosesor Intel Pentium III atau AMD 500Hz RAM sebesar 512 MB

Swap space sebesar 500MB

Kartu grafis yang mendukung 1024 x 768 x 16 bit warna dengan 64MB RAM.

Antarmuka perangkat lunak yang disyaratkan yaitu sistem operasi Windows XP Home Edition atau Windows 2000 SP4 ke atas dan Autodesk 3ds Max 8 atau versi yang lebih tinggi. Antarmuka pengguna dibuat berdasarkan spesifikasi fitur dan parameter serta kaidah interaksi manusia dan komputer.

Pengembangan Tool

Pada tahap ini dilakukan pengembangan tool dalam bentuk kumpulan script yang dibuat dengan menggunakan MAXScript. Setiap unit

script yang ada berdasarkan fitur dan parameter

yang ditentukan sebelumnya. Pada tahapan ini juga dilakukan debugging agar tool yang dibuat berjalan dengan stabil.

Rilis dan Pengujian

Pada tahap rilis, metode diuji berdasarkan tujuan dibuatnya tool tersebut yaitu menghasilkan efek GI tiruan. Pengujian dilakukan dengan mengukur apakah citra yang dihasilkan baik (realistis) dan apakah waktu

rendering relatif singkat dibandingkan dengan

metode pencahayaan yang lain. Tool yang dikembangkan dibandingkan kinerjanya dengan dua metode GI lainnya. Pengukuran realistis citra dilakukan dengan survei yang dipublikasikan melalui website sedangkan waktu rendering diukur dalam detik. Alur proses untuk pengujian dapat dilihat pada Gambar 3.

(12)

4 Gambar 3 Alur pengujian.

Untuk membuat survei ditetapkan tujuan antara lain mendapatkan rank realistis citra berdasarkan persepsi responden serta membandingkan rank antar-metode dengan menggunakan ANOVA. Uji lanjutan Duncan digunakan apabila diketahui minimal ada sepasang metode yang berbeda nyata. Proses pengembangan dan pengujian dilakukan pada komputer dengan spesifikasi:

Prosesor Intel Core2Quad Q6600 @2.4 GHz RAM sebesar 4 GB

Kartu grafis ATI Radeon HD 3650.

HASIL DAN PEMBAHASAN

Studi Pustaka

Tujuan dari pengembangan metode GI adalah untuk mendapatkan citra serealistis mungkin dalam waktu yang singkat. Dari studi pustaka dan literatur didapatkan informasi bahwa belum ada algoritme GI yang dapat memenuhi kedua tujuan tersebut.

Metode GI yang seringkali digunakan di 3ds Max adalah dengan menggunakan Light Tracer pada Scanline renderer atau dengan GI pada mental ray renderer. Dari studi pustaka dan literatur juga didapatkan informasi mengenai

metode untuk membuat GI tiruan. Metode yang umum digunakan yaitu dengan menggunakan

array lighting dengan menggunakan geometri

berbentuk dome. Geometri tersebut juga dapat diganti dengan geometri lain seperti berbentuk silinder.

Desain Tool

Berdasarkan studi pustaka maka dikembangkan tool dengan nama Cylight yang mengadopsi metode array lighting untuk membuat GI tiruan. Tool yang dibuat menggunakan geometri berbentuk silinder untuk melihat efek pencahayaan yang berbeda. Sumber cahaya yang digunakan adalah

Standard Lights dengan tipe target spot.

1. Spesifikasi Fitur dan Parameter

Fitur utama yang dibutuhkan untuk membuat efek GI adalah Cylinder Settings,

Light Settings serta Create Cylight. Fitur

tersebut diimplementasikan dalam bentuk

rollout. Berikut ini penjelasan dari dari fitur

utama Cylight.

Cylinder Settings merupakan fitur untuk

menentukan ukuran atau bentuk dari silinder yang digunakan sebagai geometri dasar. Parameter-parameter yang ada pada fitur ini adalah radius, sides, height, height segments, serta pivot.

Light Settings merupakan fitur untuk

mengatur parameter dari cahaya dan bayangan yang digunakan (lihat Lampiran 1). Pada pengaturan cahaya, parameter-parameter yang digunakan adalah step, hotspot, fallof, color, dan multiplier. Pada pengaturan bayangan, parameter-parameter yang digunakan adalah

density, bias, color, map size, serta sample range.

Create/Remove Cylight merupakan fitur

penting untuk membuat atau menghapus Cylight dari viewport. Fitur ini terdiri dari tombol Create Cylight! untuk membuat Cylight dan tombol Remove Cylight! untuk menghapus Cylight.

Fitur tambahan selain fitur utama adalah

Rendering dan Hide/Unhide Cylight. Berikut ini

penjelasan dari fitur tambahan tersebut.

Rendering merupakan fitur untuk mengatur

proses serta output dari proses rendering. Fitur ini terdiri dari dua tombol yaitu Render Setup dan Render. Render Setup berguna untuk mengatur spesifikasi rendering seperti renderer yang digunakan, ukuran output, dan parameter-parameter lainnya. Render berguna untuk melakukan proses rendering sekaligus

(13)

5 menghitung waktunya sebagai bagian dari

pengujian.

Hide/Unhide Cylight merupakan fitur tambahan untuk menyembunyikan atau memunculkan Cylight. Fitur ini terdiri dari tombol Hide Cylight serta tombol Unhide

Cylight.

2. Desain Antarmuka

Kebutuhan antarmuka perangkat keras dan perangkat lunak minimum disesuaikan dengan kebutuhan minimum untuk menjalankan Autodesk 3ds Max 8. Cylight dapat dijalankan juga pada 3ds Max dengan versi lebih tinggi. Pada Gambar 4 dapat dilihat antarmuka pengguna Cylight versi 1.03.

Gambar 4 Antarmuka pengguna Cylight.

Pengembangan Tool

Tool dikembangkan dengan MAXScript

pada Autodesk 3ds Max 2009. Script pada tahapan ini dibuat berdasarkan desain yang sudah dibuat. Pada tahap awal didefinisikan beberapa variabel global yang akan dipakai kemudian implementasi dilakukan dengan

membuat beberapa rollout sesuai dengan desain yang sudah dibuat. Tool yang dibuat terdiri dari tujuh rollout yaitu Author, ansCreate, LightsCreation, CylinderCreation, HideUnhide, Rendering, dan Aboutans.

Script lengkap Cylight dapat dilihat pada

Lampiran 2. Berikut ini akan dijelaskan beberapa algoritme penting yang ada pada Cylight. Fitur utama dari tool yang dikembangkan adalah target spot yang terikat dengan vertex pada geometri yang dipakai yaitu silinder. Algoritme untuk menghasilkan array

lighting tersebut adalah sebagai berikut:

for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

(

<--script for get parameter’s value here-->

LightsNumber[LightsIndex] = parameters )

LightsIndex adalah indeks yang didapat dari

vertex geometri yang dipakai. Vertex di bagian

bawah dan atas geometri tidak dipakai karena efek pencahayaan yang dihasilkan tidak terlalu baik. Oleh karena itu vertex yang dipakai hanya

vertex di bagian sisi silinder.

Selain itu juga diperlukan fungsi untuk menghitung total target spot yang digunakan. Berikut ini adalah potongan script-nya.

fn FnTotalNumberOfLights = ( LightsCount = (CylinderSidesValue * (CylinderHeightSegValue+1)/ LightsStepValue) LightsCount += 0.99 )

Fungsi penting lainnya adalah fungsi untuk menghitung waktu render. Waktu render didapat dengan menggunakan selisih timeStamp(). Berikut ini adalah potongan

script-nya. On Render pressed do ( start = timeStamp() actionMan.executeAction 0 "50031" -- Render: Render end = timeStamp()

format "Processing took % seconds\n" ((end - start) / 1000.0)

Rendering.LabelTime.text = "Processing took " + (((end - start) / 1000.0) as string) + " seconds"

(14)

6 Pencahayaan dengan Cylight dapat dilihat

pada Gambar 5. Pada gambar tersebut sumber cahaya berasal dari beberapa arah dengan target berada di tengah silinder. Pencahayaan tersebut dapat diatur parameternya dengan tool di sebelah kiri viewport.

Gambar 5 Cylight di viewport 3ds Max.

Rilis dan Pengujian

Berdasarkan studi pustaka, pengujian dilakukan dengan membandingkan kinerja ketiga metode yaitu:

1. Cylight

Cylight adalah tool yang dikembangkan pada penelitian ini. Tool tersebut menggunakan metode array lighting berbentuk silinder. Pencahayaan dilakukan dengan tool tersebut kemudian di-render dengan menggunakan Scanline renderer.

2. Scanline GI

Scanline GI adalah metode untuk menghasilkan GI dengan fitur yang terintegrasi pada Scanline renderer. Metode ini menggunakan fitur bernama Light Tracer pada

renderer tersebut.

3. mental ray GI

Metode ketiga yang dipakai pada penelitian ini adalah mental ray GI. Metode tersebut menghasilkan GI dengan fitur GI yang terintegrasi dengan mental ray renderer.

Pada tahap rilis dan pengujian dihitung waktu render ketiga metode dan mempublikasikan citra dengan menggunakan kuesioner untuk mendapatkan rank-nya. Pada beberapa kali pengujian waktu render,

didapatkan hasil bahwa Cylight ver.1.03 mendapatkan waktu tercepat dengan perbedaan yang cukup signifikan. Proses rendering dilakukan sebanyak tiga kali ulangan untuk tiap metode. Tabel 2 menunjukkan hasil

perbandingan waktu render pada beberapa

scene. Tabel pengujian waktu render lengkap

dapat dilihat pada Lampiran 3. Tabel 2 Hasil pengujian waktu render

No. Metode

Waktu render (dalam detik)

Ulangan 1 Ulangan 2 Ulangan 3 P8 Cylight 4.203 4.172 4.140 Scanline GI 66.891 67.344 66.734 mental ray GI 52.000 51.578 50.891 P9 Cylight 4.531 4.469 4.516 Scanline GI 81.188 81.188 80.391 mental ray GI 55.219 56.094 55.937 P10 Cylight 3.890 3.859 3.844 Scanline GI 26.594 26.610 27.109 mental ray GI 11.461 13.348 11.610 P11 Cylight 3.703 3.719 3.703 Scanline GI 38.875 38.825 38.782 mental ray GI 13.094 13.203 13.438 P12 Cylight 10.000 9.890 9.938 Scanline GI 107.860 108.000 107.896 mental ray GI 20.340 20.258 19.930 P13 Cylight 4.485 4.469 4.328 Scanline GI 29.688 30.406 30.406 mental ray GI 12.984 12.000 11.750

Data pada Tabel 2 kemudian disederhanakan menjadi 18 data untuk diolah dengan menggunakan ANOVA. Data tersebut adalah hasil rataan dari data waktu render yang diulang sebanyak tiga kali. Data rataan waktu render dapat dilihat pada Lampiran 3. Tabel 3 menunjukkan hasil ANOVA berdasarkan waktu

render. Pada tabel tersebut didapatkan Fhitung =

8.848 dengan taraf uji α = 0.01. Dengan melihat tabel sebaran F didapatkan titik kritis Ftabel = Fα(db1=2,db2=15) = 6.359.

Tabel 3 ANOVA berdasarkan waktu render

Waktu Render SK JK db KT Fhit Perlakuan 8 660.940 2 4 330.470 8.848 Galat 7 341.162 15 489.411 Total 16 002.100 17 Hipotesis :

H0 : tidak ada metode yang berbeda nyata H1 : minimal ada sepasang metode yang

berbeda nyata.

Keputusan tolak H0 diambil karena Fhitung > Ftabel. Kesimpulan yang didapat adalah minimal

ada sepasang metode yang berbeda nyata. Untuk menentukan metode yang berbeda nyata, maka digunakan uji lanjutan Duncan. Tabel 4 menunjukkan hasil dari uji lanjutan Duncan untuk waktu render. Dari hasil tersebut ketiga metode masuk ke dalam subset yang berbeda. Artinya waktu render ketiga metode tersebut berbeda nyata.

(15)

7 Tabel 4 Uji lanjutan Duncan waktu render

Waktu Render Metode N Subset untuk α = 0.01 1 2 3 Cylight 18 5.103 mental ray GI 18 27.508 Scanline GI 18 58.599

Gambar 6 menunjukkan perbedaan nyata berturut-turut antara waktu render Cylight, Scanline GI, dan mental ray GI. Metode Cylight menghasilkan waktu tercepat dengan perbedaan cukup signifikan dibandingkan metode lainnya.

Gambar 6 Grafik nilai tengah waktu render. Hasil render berupa citra pada pengujian sebelumnya digunakan untuk pengujian realistis citra. Setiap scene di-render dengan tiga metode berbeda menggunakan parameter-parameter pada Lampiran 4 sehingga menghasilkan 18 citra yang akan dinilai oleh responden dengan menggunakan kuesioner pada Lampiran 5.

Pengujian dengan kuesioner mendapatkan responden sebanyak 98 orang dari berbagai demografi dan mental model yang berbeda seperti terlihat pada Lampiran 6. Responden laki-laki sebanyak 72.45%, perempuan 25.51%, dan 2.04 % yang tidak menjawab jenis kelamin. Pengujian ini menggunakan rank sebagai alat bantu. Responden disajikan tiga buah citra yang merupakan hasil render dari ketiga metode yang berbeda. Citra pertama merupakan hasil render menggunakan metode Cylight, citra kedua menggunakan Scanline GI, dan citra ketiga menggunakan mental ray GI. Contoh perbandingan citra pada lingkungan (scene) tertentu dengan tiga metode berbeda dapat dilihat pada Gambar 7.

Gambar 7 Perbandingan hasil render tiga metode pencahayaan.

Responden memiliki sebaran usia yang beragam, tetapi mayoritas responden adalah usia 16 sampai dengan 22 tahun. Sebaran usia responden yang mengisi kuesioner dapat dilihat pada Tabel 5.

Tabel 5 Sebaran usia responden

Usia Jumlah Persentase (%)

11-15 tahun 2 2.04 16-22 tahun 58 59.18 23-30 tahun 30 30.61 > 30 tahun 7 7.14 Tidak menjawab 1 1.02 Total 98 100

Mental model responden juga diketahui dari

beberapa pertanyaan sehingga dapat diketahui apakah responden sudah terbiasa melihat objek 3D serta mengetahui istilah di dalamnya. Dari data tersebut diketahui bahwa responden relatif beragam. Sebaran responden yang bermain

game 3D dapat dilihat pada Tabel 6. Dari tabel

tersebut diketahui bahwa mayoritas responden setidaknya pernah memainkan game 3D. Tabel 6 Responden yang bermain game 3D

Bermain game 3D Jumlah Persentase (%)

Tidak pernah 10 10.20 Pernah 32 32.65 Kadang-kadang 26 26.53 Sering 25 25.51 Selalu 5 5.10 Total 98 100

Pertanyaan-pertanyaan mengenai mental

model responden yaitu apakah responden

bermain game 3D, apakah responden menonton animasi 3D, apakah responden menggunakan aplikasi 3D, dan apakah responden mengetahui istilah GI. Data rank lengkap dari 98 responden dapat dilihat pada Lampiran 7.

Data rank yang ada disederhanakan dengan mengambil rataannya sehingga didapatkan 18 data untuk diolah dengan ANOVA. Tabel 7 menunjukkan ANOVA berdasarkan rank.

Dengan menggunakan perhitungan ANOVA didapatkan Fhit sebesar 39.805. Dengan melihat

tabel sebaran F didapatkan titik kritis Ftabel = Fα(db1=2,db2=15) = 6.359.

Tabel 7 ANOVA berdasarkan rank

Rank

SK JK db KT Fhit

Perlakuan 5.921 2 2.960 39.805

Galat 1.116 15 0.074

(16)

8 Hipotesis:

H0 : tidak ada metode yang berbeda nyata H1 : minimal ada sepasang metode yang

berbeda nyata.

Kesimpulan yang didapat adalah minimal ada sepasang metode yang berbeda nyata karena

Fhit > Ftabel. Untuk menentukan metode yang

berbeda nyata, digunakan uji lanjutan Duncan. Tabel 8 menunjukkan hasil dari uji lanjutan Duncan berdasarkan rank. Dari tabel tersebut dapat disimpulkan bahwa metode mental ray GI berbeda nyata dengan metode lainnya, sedangkan metode Cylight dan Scanline GI tidak berbeda nyata karena masuk subset yang sama.

Tabel 8 Uji lanjutan Duncan berdasarkan rank

Rank Metode N Subset untuk α = 0.01 1 2 mental ray GI 6 2.520 Cylight 6 3.466 Scanline GI 6 3.893

Gambar 8 menunjukkan plot nilai tengah berturut-turut waktu render Cylight, Scanline GI, dan mental ray. Dari grafik berdasarkan

rank tersebut dapat dilihat bahwa kualitas citra

hasil Cylight tidak jauh berbeda dengan kualitas citra hasil Scanline GI.

Gambar 8 Grafik nilai tengah rank.

KESIMPULAN DAN SARAN

Kesimpulan

Berdasarkan penelitian yang dilakukan untuk menguji kinerja dari tiga metode pencahayaan didapatkan kesimpulan bahwa Cylight memiliki nilai realistis yang sebanding dengan Scanline GI dan lebih baik dari mental ray GI dengan waktu render yang lebih singkat dibandingkan metode lainnya. Artinya Cylight dapat digunakan sebagai alternatif untuk

menghasilkan efek GI yang cukup baik dengan waktu yang lebih singkat.

Saran

Saran-saran yang dapat dipertimbangkan untuk pengembangan lebih lanjut adalah: 1. Menggunakan geometri lain untuk membuat

array lighting dan membandingkannya.

2. Mengembangkan array lighting untuk lingkungan interior.

3. Menambahkan fitur untuk memilih geometri ataupun menambahkan geometri sendiri. Jika dimungkinkan ada fitur untuk mengombinasikan antar-geometri tersebut. 4. Menambahkan fitur untuk memilih beberapa

warna cahaya atau mengambil warna cahaya dari citra.

5. Mengembangkan tool sejenis untuk aplikasi 3D lainnya.

6. Membandingkan kinerja metode tertentu dengan parameter-parameter yang berbeda.

DAFTAR PUSTAKA

Aunuddin. 2005. Statistika: Rancangan dan

Analisis Data. Bogor: IPB PRESS.

Boyles et al. 2009. Virtual Simulation for Lighting & Design Education. IEEE Virtual

Reality 2009.

Brooker D. 2008. Essential CG Lighting

Techniques with 3ds Max 3rd edition.

Oxford: Elsevier Ltd.

Derakhshani D, Lorene R, McFarland J. 2007.

Introduction 3DS Max 9. Canada: Wiley

Publishing, Inc.

Gallardo A. 2001. 3D Lighting: History,

Concepts, and Techniques. Massachusetts:

Charles River Media, Inc.

Mattjik AA, Sumertajaya IM. 2002.

Perancangan Percobaan dengan Aplikasi SAS dan Minitab Jilid I. Bogor: IPB PRESS.

Murdock KL. 2008. 3ds Max 2008 Bible. John Wiley and Sons.

(17)
(18)

10 Lampiran 1 Ilustrasi penggunaan parameter pencahayaan pada target spot

Pencahayaan dengan overshoot1

1 Efek yang dihasilkan dari overshoot sama dengan omni karena memancarkan cahaya ke segala arah tetapi tetap memproyeksikan bayangan seperti target spot

Menaikkan nilai bias akan memisahkan objek dengan

bayangannya

Menaikkan sample range (dari kiri ke kanan) akan membuat efek

antialising

Map size kiri = 32 Map size kanan = 256

Area hotspot sempit dengan area

fallof luas

Area hotspot yang diperluas

Pencahayaan tanpa overshoot

Menaikkan density (dari kiri ke kanan) akan mempertebal bayangan

(19)

11 Lampiran 2 Script Cylight

1 --Cylight ver.1.03

2 --Written by Andi Sasmita

3 --"Cylinder Lighting" for 3ds Max 8/9/2008/2009/2010 or later 4

5 --Changelog 28 June 2009 ver.1.03 6 --Add pivot point controller

7 --Import parameters / readjust parameters after closed 8 --Add Render Setup and Render feature

9 --Add timing operations (processing time) 10 --Bugs fixed 11 12 Global CylinderRadiusValue = 100.0 13 Global CylinderHeightValue = 400.0 14 Global PivotPointValue = 0 15 Global CylinderHeightSegValue = 4 16 Global CylinderCapSegValue = 1 17 Global CylinderSidesValue = 12

18 Global CylinderPivotController = bezier_float() 19 Global CylinderRadiusController = bezier_float() 20 Global CylinderHeightController = bezier_float() 21 Global CylinderPosition = [0,0,0]

22 Global VertexCount = undefined 23 Global LightsNumber = undefined 24 Global LightsStepValue = 1 25 Global LightsMapSizeValue = 128 26 Global LightsMapBiasValue = 0.1 27 Global LightsMultiplierValue = 1.0

28 Global LightsMultiplierController = bezier_float() 29 Global LightsStatusChecked = on

31 Global LightsShadowColorColor = black

32 Global LightsShadowMultiplierController = bezier_float() 33 Global LightsOvershootChecked = off

34 Global LightsShadowChecked = on 35 Global LightsSampleRangeValue = 4.0 36 Global LightsFalloffValue = 52.0 37 Global LightsCount = 91

38 Global LightsHotspotValue = 50.0 39 Global LightsColorRGB = white

40 Global LightsShadowMultiplierValue = 1.0 41 Global LightsIndex = undefined

42

(20)

12 Lampiran 2 Lanjutan

44 fn FnArrayLights =

45 (

46 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

47 (

48 CylinderPosition = $ans_cyl.pos

49 VertexPosition = getvert $ans_cyl LightsIndex

50 LightsNumber[LightsIndex] = TargetSpot hotspot:LightsHotspotValue

falloff:LightsFalloffValue overShoot:LightsOvershootChecked decayRadius:LightsStepValue attenDecay:1 raytracedShadows:off pos:VertexPosition enabled:LightsStatusChecked rgb:LightsColorRGB multiplier:(LightsMultiplierValue/(LightsCount as Integer)) castShadows:LightsShadowChecked

shadowColor:(LightsShadowColorColor/(LightsCount as Integer))

shadowMultiplier:LightsShadowMultiplierValue mapbias:LightsMapBiasValue mapsize:LightsMapSizeValue samplerange:LightsSampleRangeValue

parent:$ans_cyl name:(uniquename "ans_light") target:(Targetobject

name:(uniquename "ans_target") parent:$ans_cyl transform:(matrix3 [1,0,0] [0,1,0] [0,0,1] CylinderPosition)) 51 ) 52 ) 53 54 fn FnTotalNumberOfLights = 55 ( 56 LightsCount = (CylinderSidesValue * (CylinderHeightSegValue+1)/LightsStepValue) 57 LightsCount += 0.99 58 ) 59

60 rollout Author "Author"

61 (

62 bitmap sprunt_bmp fileName:"light_banner.jpg"

63 )

64

65 rollout ansCreate "Create/Remove Cylight"

66 (

67 Button Create "Create Cylight!" width:194 align:#center

68 Button Remove "Remove Cylight!" width:194 align:#center enabled: false

69 On Create pressed do

70 (

71 if $ans_cyl == undefined then

72 (

73 Remove.enabled = true

74 Create.enabled = false

75 Cylinder name:"ans_cyl" pos:[0,0,0] radius:CylinderRadiusValue height:CylinderHeightValue heightsegs:CylinderHeightSegValue capsegs:CylinderCapSegValue sides:CylinderSidesValue mapCoords:on wirecolor:black renderable:off xray:on pivot:[0,0,PivotPointValue]

76 Addmodifier $ans_cyl (Mesh_Select())

77 VertexCount = getnumverts $ans_cyl

(21)

13 Lampiran 2 Lanjutan 79 LightsNumber = #() 80 FnTotalNumberOfLights() 81 disableSceneRedraw() 82 FnArrayLights() 83 enableSceneRedraw() 84 ) 85 ) 86 87 88 On Remove pressed do 89 (

90 if $ans_cyl != undefined then

91 ( 92 Remove.enabled = false 93 Create.enabled = true 94 delete $ans_cyl 95 delete $ans_light* 96 ) 97 ) 98 99 ) 100

101 rollout LightsCreation "Light Settings"

102 (

103 Group "Light Parameters"

104 (

105 Checkbox LightsStatus "Enable" checked:on across:2 align:#left offset:[1,0] across:2

106 Colorpicker LightsColor "Color:" color:[255,255,255] align:#right offset:[-1,0]

107 Spinner LightsStep "Step:" range:[1,100,1] type:#integer align:#left offset:[14,0] width:60 across:2

108 Spinner LightsMultiplier "Multiplier:" range:[0,100,1]

controller:LightsMultiplierController align:#right width:70 offset:[-1,0] 109 Spinner LightsHotspot "Hotspot:" range:[0,1000000000,50.0] scale:1 align:#left

width:115 offset:[9,0]

110 Spinner LightsFalloff "Falloff:" range:[0,1000000000,52.0] scale:1 align:#right width:115 offset:[15,0] across:2

111 Checkbox LightsOvershoot "Overshoot" checked:off align:#right offset:[5,0]

112 )

113 Group "Shadow Parameters"

114 (

115 Checkbox LightsShadow "Cast Shadows" checked:on align:#left offset:[1,0] across:2

116 Colorpicker LightsShadowColor "Color:" color:[0,0,0] align:#right offset:[-1,0]

117 Spinner LightsShadowMultiplier "Density:" range:[0,100,1]

controller:LightsShadowMultiplierController align:#left width:71 offset:[20,0] across:2

(22)

14 Lampiran 2 Lanjutan

118 Spinner LightsMapSize "Map Size:" range:[1,4096,128] type:#integer align:#right width:85 offset:[-1,0]

119 Spinner LightsMapBias "Bias:" range:[0,1000,0.1] align:#left width:52 offset:[15,0] across:2

120 Spinner LightsSampleRange "Sample Range:" range:[0.01,50,4.0] align:#right offset:[-1,0] width:88

121 )

122 Label LabelTotal "Total: 60 Lights" align:#center

123 on LightsStep changed val do

124 (

125 LightsStepValue = val

126 FnTotalNumberOfLights()

127 LightsCreation.LabelTotal.text = "Total: " + ((LightsCount as integer) as string) + " Lights"

128 if $ans_cyl != undefined then

129 (

130 VertexCount = getnumverts $ans_cyl

131 delete $ans_light* 132 LightsNumber = #() 133 FnTotalNumberOfLights() 134 disableSceneRedraw() 135 FnArrayLights() 136 enableSceneRedraw() 137 ) 138 )

139 on LightsStatus changed val do

140 (

141 LightsStatusChecked = val

142 if $ans_light01 != undefined then

143 (

144 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

145 ( 146 LightsNumber[LightsIndex].baseobject.Enabled = LightsStatusChecked 147 ) 148 ) 149 )

150 on LightsColor changed val do

151 (

152 LightsColorRGB = val

153 if $ans_light01 != undefined then

154 (

155 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

156 (

157 LightsNumber[LightsIndex].baseobject.rgb = LightsColorRGB

(23)

15 Lampiran 2 Lanjutan

159 )

160 )

161 on LightsMultiplier changed val do

162 (

163 LightsMultiplierValue = val

164 if $ans_light01 != undefined then

165 (

166 FnTotalNumberOfLights()

167 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

168 ( 169 LightsNumber[LightsIndex].baseobject.multiplier = LightsMultiplierValue/(LightsCount as integer) 170 ) 171 LightsMultiplierController.value = ($ans_Light01.baseobject.multiplier*(LightsCount as Integer)) 172 ) 173 )

174 on LightsShadow changed val do

175 (

176 LightsShadowChecked = val

177 if $ans_light01 != undefined then

178 (

179 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

180 ( 181 LightsNumber[LightsIndex].baseobject.castShadows = LightsShadowChecked 182 ) 183 ) 184 )

185 on LightsShadowColor changed val do

186 (

187 LightsShadowColorColor = val

188 if $ans_light01 != undefined then

189 (

190 FnTotalNumberOfLights()

191 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

192 ( 193 LightsNumber[LightsIndex].baseobject.shadowColor = (LightsShadowColorColor/(LightsCount as integer)) 194 ) 195 ) 196 ) 197

159 on LightsShadowMultiplier changed val do

160 (

(24)

16 Lampiran 2 Lanjutan

162 if $ans_light01 != undefined then

163 (

164 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

165 ( 166 LightsNumber[LightsIndex].baseobject.shadowMultiplier = LightsShadowMultiplierValue 167 ) 168 LightsShadowMultiplierController.value = $ans_light01.baseobject.shadowMultiplier 169 ) 170 )

171 on LightsMapBias changed val do

172 (

173 LightsMapBiasValue = val

174 if $ans_light01 != undefined then

175 (

176 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

177 ( 178 LightsNumber[LightsIndex].baseobject.mapbias = LightsMapBiasValue 179 ) 180 ) 181 )

182 on LightsMapSize changed val do

183 (

184 LightsMapSizeValue = val

185 FnTotalNumberOfLights()

186 LightsCreation.LabelTotal.text = "Total: " + ((LightsCount as integer) as string) + " Lights"

187 if $ans_light01 != undefined then

188 (

189 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

190 ( 191 LightsNumber[LightsIndex].baseobject.mapsize = LightsMapSizeValue 192 ) 193 ) 194 )

195 on LightsSampleRange changed val do

196 (

197 LightsSampleRangeValue = val

198 if $ans_light01 != undefined then

199 (

200 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

201 (

202 LightsNumber[LightsIndex].baseobject.samplerange =

(25)

17 Lampiran 2 Lanjutan

203 )

204 )

205 )

206 on LightsHotspot changed val do

207 (

208 LightsHotspotValue = val

209 if (LightsHotspotValue + 2) >= LightsFalloffValue then

210 (

211 LightsFalloffValue = (LightsHotspotValue + 2)

212 LightsFalloff.value = LightsFalloffValue

213 )

214 if $ans_light01 != undefined then

215 (

216 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

217 ( 218 LightsNumber[LightsIndex].baseobject.hotspot = LightsHotspotValue 219 if (LightsNumber[LightsIndex].baseobject.hotspot + 2) >= LightsFalloffValue then 220 ( 221 LightsNumber[LightsIndex].baseobject.falloff = LightsFalloffValue 222 ) 223 ) 224 ) 225 )

226 on LightsFalloff changed val do

227 (

228 LightsFalloffValue = val

229 if (LightsFalloffValue - 2) <= LightsHotspotValue then

230 (

231 LightsHotspotValue = (LightsFalloffValue - 2)

232 LightsHotspot.value = LightsHotspotValue

233 )

234 if $ans_light01 != undefined then

235 (

236 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

237 ( 238 LightsNumber[LightsIndex].baseobject.falloff = LightsFalloffValue 239 if (LightsNumber[LightsIndex].baseobject.falloff - 2) <= LightsHotspotValue then 240 ( 241 LightsNumber[LightsIndex].baseobject.hotspot = LightsHotspotValue 242 ) 243 ) 244 )

(26)

18 Lampiran 2 Lanjutan

245 )

246 On LightsOvershoot changed val do

247 (

248 LightsOvershootChecked = val

249 LightsHotspot.enabled = not LightsOvershootChecked

250 if $ans_light01 != undefined then

251 (

252 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

253 ( 254 LightsNumber[LightsIndex].baseobject.overShoot = LightsOvershootChecked 255 ) 256 ) 257 ) 258 ) 259

260 rollout CylinderCreation "Cylinder Settings"

261 (

262 Group "Cylinder Parameters"

263 (

264 Spinner CylinderRadius "Radius:" range:[0,999999999,100] scale:10

controller:CylinderRadiusController align:#left offset:[0,0] width:107 across:2 265 Spinner CylinderHeight "Height:" range:[0,999999999,400] scale: 10 controller:

CylinderHeightController align:#right width:107

266 Spinner CylinderSides "Sides:" range:[3,16,12] type:#integer align: #left width:51

267 Spinner CylinderHeightSegments "Height Segments:" range:[1,10,4] type:#integer align:#right offset:[0,-20] width:51

268 Spinner PivotPoint "Pivot:" range:[-999999999,999999999,0] type:#integer width:84 align:#right

269 )

270

271 On CylinderRadius changed val do

272 (

273 CylinderRadiusValue = val

274 if $ans_cyl!=undefined then

275 (

276 $ans_cyl.radius = CylinderRadiusValue

277 VertexCount = getnumverts $ans_cyl

278 disableSceneRedraw()

279 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

280 (

281 VertexPosition = getvert $ans_cyl LightsIndex

282 LightsNumber[LightsIndex].pos = VertexPosition

283 )

284 enableSceneRedraw()

(27)

19 Lampiran 2 Lanjutan

286 )

287 )

288

289 On CylinderSides changed val do

290 (

291 CylinderSidesValue = val

292 FnTotalNumberOfLights()

293 --bugs fixed here (cannot read LabelTotal)

294 LightsCreation.LabelTotal.text = "Total: " + ((LightsCount as integer) as string) + " Lights"

295 if $ans_cyl != undefined then

296 (

297 $ans_cyl.sides = CylinderSidesValue

298 VertexCount = getnumverts $ans_cyl

299 delete $ans_light* 300 LightsNumber = #() 301 FnTotalNumberOfLights() 302 disableSceneRedraw() 303 FnArrayLights() 304 enableSceneRedraw() 305 ) 306 ) 307

308 On CylinderHeight changed val do

309 (

310 CylinderHeightValue = val

311 if $ans_cyl!=undefined then

312 (

313 $ans_cyl.height = CylinderHeightValue

314 VertexCount = getnumverts $ans_cyl

315 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

316 (

317 VertexPosition = getvert $ans_cyl LightsIndex

318 LightsNumber[LightsIndex].pos = VertexPosition 319 ) 320 CylinderHeightController.value = $ans_cyl.height 321 ) 322 ) 323

324 On CylinderHeightSegments changed val do

325 (

326 CylinderHeightSegValue = val

327 FnTotalNumberOfLights()

(28)

20 Lampiran 2 Lanjutan

329 LightsCreation.LabelTotal.text = "Total: " + ((LightsCount as integer) as string) + " Lights"

330 if $ans_cyl != undefined then

331 (

332 $ans_cyl.heightsegs = CylinderHeightSegValue

333 VertexCount = getnumverts $ans_cyl

334 delete $ans_light* 335 LightsNumber = #() 336 FnTotalNumberOfLights() 337 disableSceneRedraw() 338 FnArrayLights() 339 enableSceneRedraw() 340 ) 341 ) 342

343 On PivotPoint changed val do

344 ( 345 PivotPointValue = val 346 if $ans_cyl!=undefined then 347 ( 348 $ans_cyl.pivot = [$ans_cyl.pos.x,$ans_cyl.pos.y,PivotPointValue] 349 $ans_target*.pivot = $ans_cyl.pivot 350 CylinderPivotController.value = PivotPointValue 351 ) 352 ) 353 ) 354 355

356 rollout HideUnhide "Hide/Unhide Cylight"

357 (

358 Button HideAll "Hide Cylight" align:#left width:100 offset:[1,0] across:2 359 Button UnhideAll "Unhide Cylight" align:#right width:100 offset:[-1,0] 360 361 On HideAll pressed do 362 ( 363 hide $ans_cyl* 364 hide $ans_light* 365 ) 366 On UnhideAll pressed do 367 ( 368 unhide $ans_cyl* 369 unhide $ans_light* 370 ) 371 )

(29)

21 Lampiran 2 Lanjutan

372 rollout Rendering "Rendering"

373 (

374 Button RenderSetup "Render Setup" width:100 across:2 align:#left 375 Button Render "Render" width:100 align:#right

376 Label LabelTime "No render time" align:#center 377

378 On RenderSetup pressed do

379 (

380 actionMan.executeAction 0 "60010" -- Render: Render SetUp

381 )

382

383 On Render pressed do

384 (

385 start = timeStamp()

386 actionMan.executeAction 0 "50031" -- Render: Render

387 end = timeStamp()

388 format "Processing took % seconds\n" ((end - start) / 1000.0) 389 Rendering.LabelTime.text = "Processing took " + (((end - start) /

1000.0) as string) + " seconds"

390 )

391 )

392

393 rollout Aboutans "About Cylight"

394 (

395 Label LabelVersion "Version: 1.03" align:#center 396 Label LabelRelease "Release: 28 June 2009"

397 Label LabelAuthor "Author: Andi Sasmita" align:#center 398 Button Contact "[email protected]" align:#center

399 Button Website "http://ans_3d.carbonmade.com" align:#center 400 372 On Contact pressed do 373 ( 374 assetBrowser.open() 375 assetBrowser.gotoURL "mailto:[email protected]" 376 ) 377 On Website pressed do 378 ( 379 assetBrowser.open() 380 assetBrowser.gotoURL "http://ans_3d.carbonmade.com" 381 ) 382 ) 383 384 --Initialise Controllers

(30)

22 Lampiran 2 Lanjutan 385 LightsMultiplierController.value = 1.0 386 LightsShadowMultiplierController.value = 1.0 387 CylinderRadiusController.value = 100.0 388 CylinderHeightController.value = 400.0 389 CylinderPivotController.value = 0 390

391 ans_Floater = NewRolloutFloater "Cylight ver. 1.03" 260 560 392 AddRollout Author ans_Floater

393 AddRollout CylinderCreation ans_Floater 394 AddRollout LightsCreation ans_Floater

395 AddRollout ansCreate ans_Floater rolledUp:off 396 AddRollout Rendering ans_Floater

397 AddRollout HideUnhide ans_Floater rolledUp:on 398 AddRollout Aboutans ans_Floater rolledUp:on 399

400 if ($ans_cyl != undefined) and ($ans_light01 != undefined) then

401 ( 402 CylinderPosition = $ans_cyl.pos 403 CylinderRadiusValue = $ans_cyl.radius 404 CylinderCreation.CylinderRadius.value = CylinderRadiusValue 405 CylinderHeightValue = $ans_cyl.height 406 CylinderCreation.CylinderHeight.value = CylinderHeightValue 407 CylinderHeightSegValue = $ans_cyl.heightsegs 408 CylinderCreation.CylinderHeightSegments.value = CylinderHeightSegValue 409 CylinderSidesValue = $ans_cyl.sides 410 CylinderCreation.CylinderSides.value = CylinderSidesValue 411 PivotPointValue = $ans_cyl.pivot.z 412 CylinderCreation.PivotPoint.value = PivotPointValue 413 LightsCount = $ans_light*.count 414 LightsFalloffValue = $ans_light01.baseobject.falloff 415 LightsCreation.LightsFalloff.value = LightsFalloffValue 416 LightsMapBiasValue = $ans_light01.baseobject.mapbias 417 LightsCreation.LightsMapBias.value = LightsMapBiasValue 418 LightsHotspotValue = $ans_light01.baseobject.hotspot 419 LightsCreation.LightsHotspot.value = LightsHotspotValue 420 LightsSampleRangeValue = $ans_light01.baseobject.samplerange 421 LightsCreation.LightsSampleRange.value = LightsSampleRangeValue 422 LightsMapSizeValue = $ans_light01.baseobject.mapsize 423 LightsCreation.LightsMapSize.value = LightsMapSizeValue

424 LightsMultiplierValue = ($ans_light01.baseobject.multiplier * LightsCount) 425 LightsCreation.LightsMultiplier.value = LightsMultiplierValue

426 LightsOvershootChecked = $ans_light01.baseobject.overShoot 427 LightsCreation.LightsHotspot.enabled = not LightsOvershootChecked

(31)

23 Lampiran 2 Lanjutan 428 LightsCreation.LightsOvershoot.checked = LightsOvershootChecked 429 LightsShadowColorColor = $ans_light01.baseobject.shadowColor 430 LightsCreation.LightsShadowColor.color = (LightsShadowColorColor * LightsCount) 431 LightsShadowMultiplierValue = $ans_light01.baseobject.shadowMultiplier 432 LightsCreation.LightsShadowMultiplier.value = LightsShadowMultiplierValue 433 LightsShadowChecked = $ans_light01.baseobject.castShadows 434 LightsCreation.LightsShadow.checked = LightsShadowChecked 435 LightsStatusChecked = $ans_light01.baseobject.enabled 436 LightsCreation.LightsStatus.checked = LightsStatusChecked 437 LightsColorRGB = $ans_light01.baseobject.rgb 438 LightsCreation.LightsColor.color = LightsColorRGB

439 LightsStepValue = ($ans_light01.baseobject.decayRadius as integer) 440 LightsCreation.LightsStep.value = LightsStepValue

441 VertexCount = getnumverts $ans_cyl

442 FnTotalNumberOfLights() 443 TempNumber = #() 444 TempNumber = $ans_light* 445 TempIndex = 1 446 LightsNumber = #() 447 ansCreate.Remove.enabled = true 448 ansCreate.Create.enabled = false 449

450 for LightsIndex in 2 to (VertexCount-1) by LightsStepValue do

451 (

428 LightsNumber[LightsIndex] = TempNumber[TempIndex]

429 LightsNumber[LightsIndex].pos =TempNumber[TempIndex].pos

430 TempIndex += 1

431 )

432 LightsCreation.LabelTotal.text = "Total: " + ((LightsCount as integer) as string) + " Lights"

(32)

24

Lampiran 3 Pengujian waktu render

Nama file

Triangles

(Tris) Ukuran render Kamera

Tekstur/

warna Metode

Waktu render (dalam detik)

No. Ulangan 1 Ulangan 2 Ulangan 3 Rataan2

chairs.max 123 098 325 x 400 pixel Perspective Tidak Cylight 3.890 3.859 3.844 3.864 P8A

P83

Scanline GI 26.594 26.610 27.109 26.771 P8B

mental ray GI 11.461 13.348 11.610 12.140 P8C

model_yaris.max 206 938 400 x 300 pixel Camera02 Tidak Cylight 4.485 4.469 4.328 4.427 P9A

P94

Scanline GI 29.688 30.406 30.406 30.167 P9B

mental ray GI 12.984 12.000 11.750 12.245 P9C

building.max 189 748 325 x 400 pixel Camera01 Tidak Cylight 10.000 9.890 9.938 9.943 P10A

P105

Scanline GI 107.860 108.000 107.896 107.919 P10B

mental ray GI 20.340 20.258 19.930 20.176 P10C

steamworks.max 111 445 325 x 400 pixel Camera01 Ya Cylight 4.203 4.172 4.140 4.172 P11A

P116

Scanline GI 66.891 67.344 66.734 66.990 P11B

mental ray GI 52.000 51.578 50.891 51.490 P11C

steamworks.max 111 445 325 x 400 pixel Camera02 Ya Cylight 4.531 4.469 4.516 4.505 P12A

P127

Scanline GI 81.188 81.188 80.391 80.922 P12B

mental ray GI 55.219 56.094 55.937 55.750 P12C

bedroom.max 75 918 325 x 400 pixel Camera01 Ya Cylight 3.703 3.719 3.703 3.708 P13A

P138

Scanline GI 38.875 38.825 38.782 38.827 P13B

mental ray GI 13.094 13.203 13.438 13.245 P13C

2 Data rataan yang digunakan untuk perhitungan ANOVA 3 Pertanyaan nomor 8 pada kuesioner

4

Pertanyaan nomor 9 pada kuesioner 5 Pertanyaan nomor 10 pada kuesioner 6 Pertanyaan nomor 11 pada kuesioner 7 Pertanyaan nomor 12 pada kuesioner 8

(33)

25

Lampiran 4 Parameter-parameter metode pencahayaan

No.9 Rad. Sides Height

Height

Seg. Pivot Mult.

Lights Color

(RGB) Overshoot Step Hotspot Falloff

Shadow Color (RGB) Density Bias Map Size Sample Range

P8A 780 12 720 2 0 2.2 255,255,255 Yes 1 tdk aktif 52 0,0,0 1 0,1 512 16

P9A 70 12 100 2 0 2.2 255,255,255 Yes 1 tdk aktif 52 0,0,0 1.2 0,1 1024 8

P10A 60 12 60 2 -1 3.5 255,255,255 Yes 1 tdk aktif 52 0,0,0 1 0,1 1024 4

P11A 40 12 40 2 3 2 255,255,255 Yes 1 tdk aktif 52 0,0,0 1 0,1 128 2

P12A 40 12 40 2 3 2 255,255,255 Yes 1 tdk aktif 52 0,0,0 1 0,1 128 2

P13A 1460 12 2500 2 0 2 255,255,255 Yes 1 tdk aktif 52 0,0,0 1 0,1 256 8

No.10 Cone Angle Sky Rays per Sample Filter Size Ray Bias Global Mult. Color Filter (RGB) Color Bleed Object Mult . Extra Ambient (RGB) Bounces Initial Sample Spacing Volumes Subd. Contrast Subd. Down To P8B 88 1 250 0.5 0.03 1 255,255,255 1 1 0,0,0 1 16x16 1 5 1x1 P9B 88 1 250 0.5 0.03 1 255,255,255 1 1 0,0,0 1 16x16 1 5 1x1 P10B 88 1 250 0.5 0.03 1 255,255,255 1 1 0,0,0 1 16x16 1 5 1x1 P11B 88 1 250 0.5 0.03 1 255,255,255 1 1 0,0,0 1 16x16 1 5 1x1 P12B 88 1 250 0.5 0.03 1 255,255,255 1 1 0,0,0 1 16x16 1 5 1x1 P13B 88 1 250 0.5 0.03 1 255,255,255 1 1 0,0,0 1 16x16 1 5 1x1 No.11 FGM 12 W 13 IFGD 14 Rays per FG Point IFGP 15 DB16 Final Gather Color (RGB) Noise Filtering Max. Depth Max. Refl. Max. Refr. GI Color (RGB) GI Mult. Max. Num. Photon per Sample Avg. GI per Light Decay m17 M18 Ray Tracing Method Shadow Mode P8C 1 1 0.1 30 50 1 255,255,255 Standard 6 4 6 255,255,255 1 500 20001 2.1 4 64 BSP 10x40 Segm. P9C 1 1 0.1 30 50 1 255,255,255 Standard 6 4 6 255,255,255 1 500 20001 2.1 4 64 BSP 10x40 Segm. P10C 1 1 0.1 30 50 1 255,255,255 Standard 6 4 6 255,255,255 1 500 20001 2.1 4 64 BSP 10x40 Segm. P11C 1 1 0.1 30 50 1 255,255,255 Standard 6 4 6 255,255,255 1 500 20001 2.1 4 64 BSP 10x40 Segm. P12C 1 1 0.1 30 50 1 255,255,255 Standard 6 4 6 255,255,255 1 500 20001 2.1 4 64 BSP 10x40 Segm. P13C 1 1 0.1 30 50 1 255,255,255 Standard 6 4 6 255,255,255 1 500 20001 2.1 4 64 BSP 10x40 Segm.

9 P8A s.d. P13 A adalah citra yang di-render menggunakan metode Cylight 10

P8B s.d. P13B adalah citra yang di-render menggunakan Scanline GI 11

P8C s.d. P13C adalah citra yang di-render menggunakan mental ray GI 12 Final Gather Multiplier

13 Weight 14

Initial FG Point Density 15 Interpolate Over FG Points 16 Diffuse Bounces

17 Minimum Sample 18

(34)

26 Lampiran 5 Kuesioner

(35)

27 Lampiran 5 Lanjutan

(36)

28 Lampiran 5 Lanjutan

(37)

29 Lampiran 5 Lanjutan

(38)

30 Lampiran 5 Lanjutan

(39)

31 Lampiran 5 Lanjutan

(40)

32 Lampiran 5 Lanjutan

(41)

33 Lampiran 5 Lanjutan

(42)

34 Lampiran 5 Lanjutan

(43)

35 Lampiran 5 Lanjutan

(44)

36 Lampiran 6 Demografi dan mental model responden

Demografi

Jenis Kelamin (JK) Jumlah Persentase (%)

Laki-laki 71 72.45

Perempuan 25 25.51

Tidak menjawab 2 2.04

Total 98 100

Umur Jumlah Persentase (%)

11-15 tahun 2 2.04 16-22 tahun 58 59.18 23-30 tahun 30 30.61 > 30 tahun 7 7.14 Tidak menjawab 1 1.02 Total 98 100 Mental Model

Bermain game 3D (P4) Jumlah Persentase (%)

Tidak pernah 10 10.20 Pernah 32 32.65 Kadang-kadang 26 26.53 Sering 25 25.51 Selalu 5 5.10 Total 98 100

Menonton animasi 3D (P5) Jumlah Persentase (%)

Tidak pernah 4 4.08 Pernah 18 18.37 Kadang-kadang 20 20.41 Sering 46 46.94 Selalu 10 10.20 Total 98 100

Menggunakan aplikasi 3D (P6) Jumlah Persentase (%)

Tidak bisa 48 48.98 Bisa sedikit 16 16.33 Sedang-sedang saja 24 24.49 Mahir 9 9.18 Tidak menjawab 1 1.02 Total 98 100

Mengetahui istilah GI (P7) Jumlah Persentase (%)

Tidak tahu sama sekali 30 30.61

Rasanya pernah dengar 22 22.45

Sudah tidak asing, tapi kurang/tidak tahu artinya 26 26.53

Paham sekali & tahu artinya 20 20.41

(45)

37

Lampiran 7 Data SPSS rank

No. JK Umur P4 P5 P6 P7 P8A P8B P8C P9A P9B P9C P10A P10B P10C P11A P11B P11C P12A P12B P12C P13A P13B P13C

1 1 3 2 2 1 1 1 5 3 4 5 1 3 5 3 4 5 3 4 5 3 3 5 3 2 1 4 2 5 3 3 3 5 1 3 5 1 5 1 3 3 5 1 3 5 1 3 4 3 3 1 4 4 2 2 2 1 4 2 3 5 1 3 1 5 5 3 1 5 3 1 5 3 1 4 1 3 2 4 2 2 5 3 3 4 2 2 4 3 3 5 4 3 5 4 2 5 3 3 5 1 4 4 4 4 3 2 4 1 2 4 1 1 1 3 2 2 2 2 2 2 2 4 1 6 2 3 2 4 1 1 4 2 3 3 4 2 4 3 2 3 4 2 4 3 2 2 3 4 7 2 2 1 1 2 3 5 5 3 2 5 3 2 3 5 2 5 3 2 3 5 2 8 1 4 5 4 4 3 3 5 2 3 5 2 2 3 5 4 3 2 3 4 2 3 5 2 9 1 3 4 4 1 1 5 3 2 2 5 3 3 5 2 3 4 2 3 4 2 5 3 2 10 2 3 2 2 1 1 3 4 1 3 4 1 3 4 1 3 3 1 2 2 2 4 3 1 11 2 3 1 3 1 2 2 5 1 3 5 1 2 3 5 2 3 5 3 3 5 2 3 5 12 1 3 2 4 1 1 3 4 2 3 4 2 3 2 4 2 2 4 13 2 3 3 4 1 2 3 4 2 3 4 2 2 4 3 3 4 2 4 3 2 3 4 2 14 2 3 1 4 1 1 2 3 4 4 3 2 5 3 2 4 4 3 4 3 2 15 2 3 1 1 1 2 3 5 1 1 3 5 3 4 2 3 2 4 5 2 4 1 3 2 16 2 3 1 3 1 1 4 5 2 3 5 2 3 5 3 4 5 3 3 4 2 2 4 2 17 1 3 4 4 1 2 3 5 2 3 4 2 5 2 3 3 3 5 5 3 2 5 4 4 18 1 3 1 4 1 1 3 5 1 4 5 2 3 5 2 4 5 3 4 3 2 4 5 3 19 1 3 2 4 4 3 1 5 3 1 5 3 1 5 3 3 5 1 3 5 1 3 5 1 20 1 4 2 4 2 2 5 4 3 5 4 3 5 4 3 3 5 4 5 4 3 5 4 3 21 1 3 2 2 1 1 3 4 3 3 5 2 3 5 3 4 5 3 4 5 2 5 4 2 22 1 3 2 3 1 3 1 5 3 2 5 2 2 5 2 3 5 1 1 5 3 5 3 2 23 2 4 4 4 1 3 2 3 5 5 3 2 5 4 2 5 3 2 5 4 4 5 4 4 24 1 3 2 2 1 2 2 5 3 4 5 2 4 2 5 4 5 2 3 5 2 3 4 2 25 1 3 4 4 3 2 2 3 2 2 4 1 3 1 3 3 2 4 3 2 4 2 3 4 26 1 3 1 1 1 1 5 3 2 3 5 2 2 3 5 3 5 2 3 5 2 5 3 2

(46)

38

Lampiran 7 Lanjutan

No. JK Umur P4 P5 P6 P7 P8A P8B P8C P9A P9B P9C P10A P10B P10C P11A P11B P11C P12A P12B P12C P13A P13B P13C

27 1 4 3 3 1 3 3 4 2 4 3 2 3 4 2 3 4 2 4 3 2 3 4 2 28 1 3 2 5 2 2 3 5 3 3 5 2 4 4 4 4 5 2 4 5 2 4 4 2 29 1 4 3 4 2 4 4 3 2 3 3 2 5 3 2 4 4 2 5 4 3 4 4 3 30 1 3 3 4 1 3 1 5 2 5 2 1 2 1 5 1 5 2 4 1 2 1 1 5 31 1 3 4 3 3 4 3 5 2 3 5 1 5 4 2 5 5 3 4 3 5 4 5 4 32 1 3 3 4 1 3 3 5 4 4 5 3 4 5 3 5 4 3 5 4 3 5 4 3 33 1 5 5 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 34 2 4 2 4 1 2 5 3 3 3 3 3 5 3 1 5 3 1 5 1 3 5 3 3 35 1 2 4 4 3 2 3 5 3 5 5 4 5 5 4 5 5 5 5 4 4 4 4 4 36 1 3 4 3 3 3 3 5 4 5 4 2 4 4 3 4 5 3 5 5 2 4 5 2 37 1 3 2 3 2 2 1 4 3 5 3 3 5 2 4 4 4 1 3 5 2 4 5 1 38 1 4 5 5 4 2 5 2 3 4 4 5 5 3 2 4 5 3 5 3 1 4 5 3 39 2 3 2 4 1 3 2 5 3 3 5 2 2 5 3 5 3 2 3 5 2 3 5 2 40 1 4 4 4 4 4 3 4 1 3 3 1 4 2 3 4 4 1 3 2 3 3 2 3 41 2 5 3 4 3 3 3 5 2 4 5 2 4 1 3 1 2 3 1 2 3 2 3 2 42 1 3 4 5 4 4 2 4 2 3 4 2 3 4 2 4 4 3 3 4 2 2 4 1 43 1 3 3 2 1 2 3 5 2 3 5 2 2 5 3 5 4 3 5 4 3 4 5 3 44 2 4 3 4 3 3 2 4 2 3 4 5 5 5 2 5 5 2 3 4 1 4 5 3 45 1 4 2 2 3 4 3 5 2 3 4 2 5 3 2 3 2 5 5 2 3 4 3 4 46 1 3 2 2 1 4 4 4 3 4 4 3 4 4 3 4 4 3 4 4 4 4 5 3 47 1 3 4 4 1 1 5 3 2 4 3 2 4 2 3 3 4 2 3 5 2 4 3 2 48 1 4 4 5 4 4 1 5 3 5 3 2 5 3 2 5 3 2 5 3 2 3 5 2 49 1 4 4 4 1 3 4 5 3 4 5 3 4 5 3 4 5 3 5 4 3 5 4 3 50 1 3 3 3 1 1 3 5 4 4 5 3 5 4 3 3 4 5 4 4 5 4 5 4 51 2 3 3 3 2 2 5 3 1 5 4 2 3 4 5 4 5 3 5 4 2 4 3 5 52 1 3 4 4 3 3 2 4 1 2 4 2 2 4 2 2 2 4 4 3 2 3 4 2

Gambar

Tabel 1  Tabel ANOVA satu arah  Sumber  Keragaman  (SK)  Jumlah  Kuadrat (JK)  Derajat Bebas (db)  Kuadrat Tengah (KT)  F hit  Perlakuan  Galat  JKK  JKG  k-1  k(N-1)  KTK KTG  KTK/ KTG  Total  JKT  N-1
Gambar 2  Metodologi penelitian.
Gambar 4  Antarmuka pengguna Cylight.
Gambar 5  Cylight di viewport 3ds Max.
+2

Referensi

Dokumen terkait

Dengan menerapkan metode pembelajaran yang terintegrasi dengan teknologi komputer (seperti SPC) akan memberikan suatu model yang berbasis unjuk kerja, hal ini

Prosedur premarital skrining pada calon pengantin di Puskesmas Kartasura sudah dilakukan dengan baik, namun masih ada calon pengantin yang belum dilakukan prosedur premarital

Dengan demikian, jumlah perusahaan yang ada di dalam industri makanan dan minuman memiliki pengaruh positif terhadap tingkat profitabilitas industri gula

Ampul dibuat dari bahan gelas tidak berwarna akan tetapi untuk bahan obat yang peka terhadap cahaya, dapat digunakan ampul yang terbuat dari bahan gelas

diibaratkan seperti teknologi penginderaan jarak jauh menggunakan citra satelit yang digunakan untuk mendeteksi potensi sumber daya alam di suatu titik lokasi,

Berdasarkan nilai BCF masing-masing kerang yang diperoleh dari eksperimen maka prediksi konsentrasi merkuri dalam tubuh Anadara granosa dan Perna viridis di perairan Teluk

Sistem yang digunakan pada proyek akhir ini dengan judul &#34;Perancangan keamanan EFB berbasis web terhadap serangan XSS menggunakan metode White box Testing&#34; adalah

Penyelenggaraan pelayanan umum menurut Lembaga Administrasi Negara (2014) dapat dilakukan dengan berbagai macam pola, yaitu (1) Pola Pelayanan fungsional, yaitu pola pelayanan