Commit 20100825
Commit 20100825
∗ † ‡
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
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.
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:
G · [u, v, w]
• 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:
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.
//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