Anda di halaman 1dari 6

Efek Pemetaan Tekstur Prosedural pada Marble Project

dengan Fungsi Perlin Noise

∗ † ‡
Denny Satria Jessica Permatasari Eri Prasetyo-Wibowo
Gunadarma University Gunadarma University Gunadarma University
Jl. Margonda Raya 100 Jl. Margonda Raya 100 Jl. Margonda Raya 100
Depok, Indonesia Depok, Indonesia Depok, Indonesia
denny@student. jessica@student. eri@staff.
gunadarma.ac.id gunadarma.ac.id gunadarma.ac.id

ABSTRACT menerapkan fungsi Perlin Noise didalamnya.


With the development of computer graphic animation, it
made procedural mapping texture becoming known to changed Penggunaan tekstur prosedural dikarenakan kemampuan-
the traditional mapping texture, this method gives better re- nya yang dapat menyediakan efek realisme yang tinggi un-
sults and easy to implemented. Furthermore the procedural tuk obyek 3-D dibandingkan dengan perangkat tradisional
mapping texture also been based on 3-D concept. So in this tekstur pemetaan yang masih menggunakan memori untuk
marble project, the procedural mapping texture was used, also menyimpan tekstur gambar 2-D, selain itu prosedural tek-
to get the texture of marble more real, in procedural mapping stur digunakan untuk meningkatkan visual realisme dari gam-
texture Perlin Noise functions is used, besides that, fractal bar render komputer.
and turbulence were used too to create effects contained in
the texture of marble more real and natural. Dan yang akan kami bahas mengenai marble project ini
adalah pembahasan mengenai teknik yang digunakan dan
Keywords latar belakang dari teknik tekstur pemetaan prosedural terse-
but, keuntungan yang kita dapat jika menggunakan teknik
Marble Project, Perlin Noise, Procedural Mapping Texture
tekstur prosedural adalah memori yang digunakan minimal,
prosedural atau representasi analitis sangat kompak, reso-
1. PENDAHULUAN lusi tidak tetap, zoom-in dan zoom-out menempati ruang
Saat ini agar gambar yang tampil secara visual melalui me- atau wilayah yang tak terbatas.
dia elektronik tampil realisme maka efek khusus dan ilusi
terhadap suatu objek menjadi sangat penting, hal tersebut Namun selain itu juga terdapat beberapa masalah dalam
memberikan kompleksitas yang lebih terhadap objek. penggunaan teknik tersebut yaitu diantaranya Sulit untuk
membangun dan debug proyek, pengambilan tekstur yang
Selain berdasarkan pada pertimbangan realisme, pemberian lambat, aliasing dapat lebih sulit daripada tekstur yang bi-
detail pada objek akan membuat seorang seniman merasakan asa, prosedur cenderung menjadi masalah khusus misalnya
keseluruhan ekspresi yang terlukiskan di objek tersebut. pada daerah fraktal (tidak umum).

Dalam marble project yang kebanyakan digunakan untuk Sedangkan perlin noise digunakan untuk mendapatkan hasil
memvisualisasikan benda-benda seni banyak sekali teknik efek yang secara khusus dibahas dalam paper ini yaitu mar-
yang diberikan kepada objek untuk menggambarkan benda ble dengan menggunakan fungsi matematika.
tersebut sebagai suatu karya seni yang real seperti keinda-
han karya seni dalam dunia nyata, dan dalam hal ini ke- Setelah membahas teknik-teknik yang digunakan maka se-
banyakan menggunakan pemetaan tekstur prosedural yang lanjutnya presentasi solusi akan diberikan.
∗Student of Sarmag Program, Gunadarma University.
†Student of Sarmag Program, Gunadarma University. 2. TINJAUAN PUSTAKA
‡Center of Information System Studies, Gunadarma Univer- Dalam komputer grafik teknik Perlin noise dan tekstur peme-
sity. taan prosedural yang digunakan dalam proyek marble sebe-
narnya sudah sangat sering digunakan, dan dalam bagian ini
diambil beberapa referensi paper lain yang berkaitan menge-
nai teknik-teknik tersebut dan menjelaskan mengenai peng-
gunaan teknik tersebut pada aplikasi yang dibangun dalam
referensi paper tersebut.

”A Journey in a Procedural Volume Optimization and Fil-


tering of Perlin Noise”[1] yang ditulis oleh Reynald Arnerin
berisi tentang tujuan penelitiannya untuk menganalisis prop-
erti Perlin noise dalam mengontrol kemunculan artifak dan
untuk mengoptimalkan biaya komputasi, dan teknik Perlin
noise digunakan karena teknik tersebut sederhana dan meru-
pakan metode cepat untuk meningkatkan kuantitas detail
tanpa menggunakan memori, selain itu teknik ini juga telah
banyak digunakan dalam sintesis tekstur prosedural. Di-
tampilkan pula sebuah metoda komputasi maksimum dan
minimum dari frekuensi ambang per komponen suara dan
dalam paper ini juga terdapat gagasan untuk menangani Figure 1: Teapot Marble Project [2]
kasus non linier perubahan terhadap suara dan metode op-
timasi untuk generasi volume.
3.1 Tekstur Pemetaan Prosedural
Andy G. Ye dalam papernya yang berjudul ”Procedural Tex- Dalam aplikasi komputer grafik, untuk merepresentasikan
ture Mapping on FPGAs”[7] mendeskripsikan tentang peneli- permukaan digunakan jerat poligon sebagai interval yang
tiannya terhadap metode baru dari perangkat keras tekstur telah ditentukan dan dibuat dengan menghubungkan sam-
pemetaan yang disintesis menggunakan FPGA. Menurut- pling poin yang berdekatan. Untuk level yang paling dasar
nya metode tersebut sangat efisien untuk tekstur pemetaan dari visual realisme, setiap poligon dalam jerat poligon di-
prosedural dengan lebih dari dua input variabel, besar jum- tandai dengan sebuah warna permukaan, poligon-poligon
lah memori yang dibutuhkan untuk multidimensional tek- tersebut di render kedalam layar menggunakan transformasi
stur gambar dapat dieliminasi dan dapat membuat tekstur geometrikal yang disebut rendering pipeline.
pemetaan 3-D tekstur serta parameter tekstur yang dapat
dikerjakan dengan mudah dalam perangkat keras dengan Teknik ini dipelopori oleh Catmull dan dikembangkan kem-
mensintesis tekstur tersebut dengan cepat. Jadi paper ini bali oleh Blinn dan Newel, dengan banyaknya algoritma
menunjukkan bahwa dengan menggunakan FPGA, tekstur yang dapat digunakan untuk meningkatkan level dari per-
prosedural dapat disintesis dengan kecepatan yang tinggi mukaan dengan mengasosiasikannya secara digital atau mensin-
dengan biaya perangkat keras yang kecil dan implementasi tesis gambar dua deimensional dengan poligon. Dengan hal
FPGA terhadap enam Perlin noise berdasarkan 3-D tekstur tersebut tekstur pemetaan bekerja lebih baik dalam pen-
prosedural. Penggunaan tekstur prosedural dikarenakan tek- ingkatan level visual realisme dengan hanya menggunakan
nik tersebut dapat menyediakan realisme yang tinggi un- jumlah minimum dalam komputasi.
tuk 3-D obyek dibandingkan dengan tekstur pemetaan tra-
disional. Tekstur pemetaan berperan setelah poligon-poligon ditrans-
formasikan kedalam sistem layar koordinat, untuk menen-
Dalam papernya yang berjudul ”Improving Noise”[5] Ken tukan warna dari piksel layar, oleh karena itu hal tersebut
Perlin mendeskripsikan tentang perbaikan dari dua keku- diidentifikasi pertama kali. Koordinat layar dari piksel la-
rangan yang digunakan dalam Noise algoritma yaitu : yar kemudian ditransformasikan kedalam tekstur koordinat
dari poligon. Warna yang berkorespondensi dalam tekstur
• diskontinuitas rangka interpolasi kedua memori merepresentasikan warna permukaan dari poligon
dalam piksel tersebut dan warna tersebut digunakan untuk
• perhitungan gradien yang tidak optimal menghitung hasil akhir piksel warna.

Tekstur pemetaan tradisional menggunakan gambar dua di-


Dengan perbaikan tersebut dua kekurangan dari Noise algo-
mensional sebagai tekstur, sementara tekstur pemetaan solid
ritma menjadi lebih baik dan dapat berjalan dengan lebih
menggunakan gambar tiga dimensional sebagai tekstur. Tek-
cepat, perubahan terakhir juga membuat standar acuan ma-
stur pemetaan solid jauh lebih mudah digunakan dan mem-
tematika yang seragam dapat ditentukan dengan mudah.
berikan hasil yang lebih realistik dan gambar yang lebih aku-
rat untuk merender obyek dimana tekstur permukaannya
Berdasarkan referensi beberapa paper diatas, dapat diband-
ditentukan oleh struktur internal material yang memben-
ingkan satu sama lain untuk melihat teknik yang dipakai
tuknya. Contoh tipikal material ini adalah kayu dan marble.
dan aplikasi penerapannya, tetapi yang terpenting adalah
konsep dari tekstur pemetaan prosedural dan Perlin noise
Peachey[4] dan Perlin[6] mengembangkan tekstur pemetaan
yang dipakai sebagai teknik yang akan dibahas secara men-
2-D tradisional menjadi tekstur pemetaan 3-D solid, karena
dalam dalam bagian berikutnya untuk menjelaskan teknik
tekstur 3-D sulit untuk disimpan dan menghabiskan waktu
dalam marble project.
untuk memperolehnya dari obyek nyata yang hidup, maka
banyak tekstur solid digambarkan sebagai tekstur prosedu-
3. METODOLOGI ral.
Pada bagian ini akan dijelaskan mengenai teknik tekstur
pemetaan prosedural pada marble project yang didalamnya
akan mencakup [2]: 3.1.1 Noise
Noise primitif yang ditemukan oleh Ken Perlin [5] telah
• Noise membawa fondasi yang sangat luas dalam penggunaannya
untuk class tekstur prosedural. Dengan menggunakan fungsi
• Fraktal Perlin Noise, programer dapat dengan mudah mensimulasikan
• Turbulensi ketidakteraturan yang mengkarakterisasi banyak obyek for-
mal secara alami.
Noise adalah [8]: 3.1.2 Fraktal
Fraktal diperkenalkan oleh Perlin[1], sebenarnya Perlin noise
yang dikenal orang kebanyakan merujuk pada penjumlahan
• sebuah tekstur primitif fraktal Perlin noise. Perbedaan itu dibuat, karena setiap
fungsi Noise dapat secara fraktal dijumlahkan. Hal tersebut
• digunakan untuk membuat kesan tekstur alami merupakan alasan paling penting mengapa fungsi noise di-
rancang untuk band-limited harus diringkas pada berbagai
• persyaratan bandwidth transmisi nol skala(gambar 2). Fraktal didefinisikan sebagai jumlah fungsi
basis skala yang disebut oktaf:
• tidak ada masalah pemetaan.

N −1
• efek sangat luas. F noiseN (x) = bi (x)
i=0

i
Perlin Noise merupakan penjumlahan dari R1..4 fungsi wavelet Dengan bi (x) = noise(b
ai
x)
(biasanya dengan a=b=2) dan i
pada lattice poin, setiap wavelet adalah perkalian dari fungsi adalah oktaf fraktal noise.
bobot dengan fungsi linier sebuah gradien pseudo-random.
Proses pada R3 diberikan dibawah ini:

• Fungsi bobot dengan compact support radius 1 :

W (u, v, w) = spline(u) ∗ spline(v) ∗ spline(w)

• Sebuah fungsi linier dari gradien G dapat diperoleh


dengan dot product :

G · [u, v, w]

Nilai dari G sangat penting untuk keacakan noise, pseudo-


random gradien Gijk dihitung untuk setiap lattice poin den-
gan menggunakan fungsi hash pada koordinat i,j,k. Se-
hingga fungsi noise adalah periodik secara matematika dari
256 waktu.

• Sekarang, nilai dari wavelet tengah pada [i,j,k] diberikan Figure 2: Penjumlahan fungsi dasar pada oktaf yang
dengan : berbeda untuk memberikan hasil yang detail [1]

waveletijk (x, y, z) =
W (x − i, y − j, z − k)(Gijk · [x − i, y − j, z − k])
3.1.3 Turbulensi
Turbulensi adalah natural looking feature yang diciptakan
Pada [i,j,k] wavelet = 0 dan gradiennya adalah Gijk . keluar dari smoothed noise.Caranya adalah dengan menam-
bahkan beberapa noise tekstur dengan skala zoom yang berbeda
bersama.
• Akhirnya, fuungsi noise didefisikan sebagai jumlah dari
semua wavelet: ∑
3
turbulence = 2−i P (2i u, 2i v, 2i w)
i=0

Contoh Analitikal:

noise(x, y, z) = waveletijk (x, y, z) ∑
N
i,j,kϵZ 3 f (u, v, w) = r + 2−i noise(2i u, 2i v, 2i w)
i=0
Ketika diimplementasikan, hasil dari fungsi adalah normal-
isasi yang tepat antara -1 dan 1 untuk kepentingan institusi. Keterangan: i secara kontinu meningkatkan amplitudo noise
animasi formasi dari twist yang bentuknya seperti urat nadi.
Wavelet menjamin mean yang relatif null dan spektrum yang
hampir band-limited, dan kekompakkan support dari opti- Dalam 2D, hal ini dilakukan dengan menambahkan ukuran
misasi efisien. Fungsi noise merupakan fungsi periodic dan yang berbeda dari smoothed noise bersama-sama. Dengan
hal tersebut akan menampilkan regulariti pada pola dalam menambahkan 5 gambar tersebut bersama-sama, dan mem-
skala besar, namun waktu yang cukup lama tidak dapat bagi hasilnya sampai 5 untuk mendapatkan rata-rata, dida-
diketahui dalam kasus biasa. patkan tekstur turbulensi:
suara. Ini menyebabkan spektrum dari compound noise
memiliki bandwidth yang sama sekali berbeda dari kebisin-
gan fraktal. Jadi, untuk mengetahui bagaimana untuk men-
yaring fraktal noise dengan tujuan untuk menyaring senyawa
kebisingan, analisis spektral harus dilakukan. Dan didapat
pola marble yang dirumuskan sebagai berikut:

marble(x) = sin(a · x + b · F noise(x))


Figure 3: smoothed noise [9] = sin(a · x) · cos(b · F noise(x)) + cos(a · x) · sin(b · F noise(x))

Seri Taylor sangat cocok untuk interpolasi lokal. Perkem-


bangan urutan 1 akan memberikan
noise(x))2
marble(x) ≈ sin(a · x) − sin(a·x)·(b·F
2
+ b cos(a · x) · F noise(x)

Figure 4: smoothed noise [9] Fourier Transform dari ekspresi tersebut lebih mudah dalam
perhitungan, yang sebagai hasilnya menghitung bandwidth
compound noise dapat dilakukan dengan operasi sederhana
pada spektrum fraktal noise.

3.3 Marble Project


Pada bagian ini terdapat program marble yang akan diba-
has konsep dan tekniknya, berikut penjelasan dari bagian
program marble[3]:
Figure 5: tekstur turbulensi [9]

• Pada bagian ini, dilakukan pemeriksaan untuk tekstur


3.2 Compound Noise satuan image dan melakukan set up untuk matriks
Dalam prakteknya, fungsi noise yang jarang digunakan se- proyeksi.
bagai output langsung, tujuan awalnya adalah untuk meng-
ganggu pola sehingga terlihat tidak teratur. secara matem-
atis, fungsi noise terdiri dengan ”pola” fungsi[1]: //Check for 2 texture image units
GLint maxTexImageUnits;
glGetIntegerv
material(x)= pattern(noise(x)) (GL_MAX_TEXTURE_IMAGE_UNITS_ARB,
&maxTexImageUnits);
if(maxTexImageUnits<2)
Pola fungsi yang digunakan untuk compound noise dapat
{
berupa senyawa kompleks yang sewenang-wenang: banyak
LOG::Instance()->OutputError
percobaan kemungkinan dengan tekstur prosedural baru yang
("I require at least 2 texture
dapat dilakukan oleh desainer. Namun, beberapa fungsi ke-
image units");
bisingan kelas senyawa yang menonjol adalah:
return false;
}
∑ −1 noise(bi x)
• F noise(x) = N i=0 i or
∑N −1 noise(bai x) //Init font
T noise = i=0 | ai
| if(!font.Init())
Fnoise adalah fraktal noise yang dideskripsikan ter- return false;
lebih dahulu. Tnoise atau turbulensi adalah penjum-
lahan fraktal dari nilai absolut noise. //set viewport
• f (dist(x) + F noise(x)) int height=WINDOW::Instance()->height;
Penggunaan: Hal ini sering digunakan untuk model if(height==0)
volume kepadatan (misalnya awan, asap) height=1;

• pattern(x + k ∗ F noise(x)) glViewport(0, 0,


Penggunaan: Hal ini banyak digunakan untuk menam- WINDOW::Instance()->width, height);
bah pola keacakan. Sebuah contoh yang terkenal adalah
marble, dimana garis terlihat seperti urat marmer. //Set up projection matrix
glMatrixMode(GL_PROJECTION);
• ▽F noise(x)
glLoadIdentity();
Penggunaan: bump pemetaan
gluPerspective(45.0f,
(GLfloat)WINDOW::Instance()->
Penyaringan compound noise sangat sulit untuk dilakukan width/(GLfloat)WINDOW::Instance()->height,
karena fungsi sewenang-wenang kompleks terdiri dengan fungsi 1.0f, 100.0f);
• Selanjutnya dilakukan pemuatan untuk model view glBindTexture(GL_TEXTURE_3D,
yang terdiri dari shading state dan depth states den- weightTexture);
gan pengembalian nilai. Set up variabel juga dilakukan glTexImage3D(GL_TEXTURE_3D, 0,
dengan memanggil DemoInit (prototipe fungsi) den- GL_INTENSITY8,
gan tipe boolean(true/false) 32, 32, 32, 0,
GL_LUMINANCE,
//Load identity modelview GL_UNSIGNED_BYTE,
glMatrixMode(GL_MODELVIEW); weightValues);
glLoadIdentity(); );

//Shading states jika nilai x,y,z diubah maka akan mempengaruhi besar
glShadeModel(GL_SMOOTH); twist.
glClearColor(backgroundColor.r,
backgroundColor.g,
backgroundColor.b, • teapot dibuat dan dipetakan dengan matriks yang sete-
backgroundColor.a); lah itu tekstur dari marble akan dipetakan pada teapot.
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glHint(GL_PERSPECTIVE_CORRECTION_HINT,
//Draw the teapot
GL_NICEST);
glPushMatrix();
glMultMatrixf(modelMatrix);
//Depth states
glClearDepth(1.0f);
Teapot(16, GL_FILL);
glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST);
glPopMatrix();
return true;
}
glDisable(GL_VERTEX_PROGRAM_ARB);
glDisable(GL_FRAGMENT_PROGRAM_ARB);
//Set up variables
bool DemoInit() {
//Create and load the vertex/
fpsCounter.Update();
fragment programs
glGenProgramsARB(1, &marbleVP);
glBindProgramARB(GL_VERTEX_PROGRAM_ARB, 4. PENUTUP
marbleVP); Dengan menggunakan fungsi Perlin noise, fraktal dan tur-
if(!LoadProgram(GL_VERTEX_PROGRAM_ARB, bulensi kita dapat membuat suatu bentuk tekstur pemetaan
"marbleVP.txt")) prosedural untuk membuat proyek marble, ide utamanya
return false; adalah Prosedural atau analitis berbagai sifat permukaan
dari titik ke titik untuk memberikan tampilan detail per-
• Sedangkan program yang diperuntukkan turbulensi un- mukaan yang tidak benar-benar hadir dalam geometri per-
tuk menciptakan kesan twist urat nadi pada marble mukaan. Didalam paper ini,berdasarkan kajian dari beber-
adalah program berikut : apa tinjauan pustaka yang dibahas adalah mengenai teknik
dan konsep marble yang menggunakan metode tekstur pe-
for(int i=0; i<32; ++i) metaan prosedural yaitu dengan algoritma dari fungsi Per-
{ lin Noise, fraktal dan turbulensi. untuk pekerjaan yang akan
for(int j=0; j<32; ++j) datang yang kami perhatikan adalah perkembangan dari al-
{ goritma tersebut atau mencoba mengaplikasikan fungsi per-
for(int k=0; k<32; ++k) lin noise dengan cara berbeda sehingga didapat metode baru
{ yang lebih efektif dan mudah untuk mendukung pembuatan
float x=float(i)/31; efek marble dengan tekstur yang lebih baik.
float y=float(j)/31;
float z=float(k)/31; 5. DAFTAR PUSTAKA
[1] R. Arnerin. A journey in a procedural volume optimiza-
weightValues[(i*32+j)*32+k]= tion and filtering of perlin noise. pages 12,30, June 2009.
GLubyte(255.0f* Master 2 Recherche Informatique-GVR.
(1-(3*x*x - 2*x*x*x))* [2] C. Lindsay. Cs 563 advanced topics in computer graphics
(1-(3*y*y - 2*y*y*y))* texture mapping efeects. ”Top Ten List” Courtesy of David
(1-(3*z*z - 2*z*z*z))); Letterman’s Late Show and CBS.
} [3] Paul. Marble project open gl.
} [4] D. .Peachey. Solid texturing of complex surfaces. Com-
} puter graphics (SIGGRAPHŠ85 Proceedings), pages 279286,
1985.
glGenTextures(1, &weightTexture); [5] K. Perlin. Improving noise. page 1. Media Research
Laboratory, Dept. of Computer Science, New York Univer-
sity.
[6] K. Perlin. An image synthesizer. Computer graphics
(SIGGRAPHŠ85 Proceedings), 19:287296, July 1985.
[7] A. G. Ye. Procedural texture mapping on fpgas. pages
2,5,3739, 1999. A thesis submitted in conformity with the
requirements.
[8] M. Zucker. The perlin noise math faq procedural textur-
ing. wikipedia.
[9] www.wikipedia.org

Anda mungkin juga menyukai