Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran

Slides:



Advertisements
Presentasi serupa
Pertemuan 03: Grafika Komputer: Windows dan Viewport
Advertisements

Fungsi, Parameter, Rekursi Daniel Riano Kaparang Book reference: Jogiyanto. Konsep Dasar Pemrograman Bahasa C. Andi Star. Yogyakarta Kristanto Andri.
Hidden Surface Removal (HSR)
ALJABAR LINEAR DAN MATRIKS
HASIL KALI SILANG.
Praktikum Grafika Komputer
GRAFIKA KOMPUTER ATRIBUT OUTPUT PRIMITIF
PERTEMUAN III ARRAY BAG II JURUSAN TELEKOMUNIKASI
Hubungan Non-linear.
STRUKTUR KONTROL PENYELEKSIAN KONDISI LANJUTAN…….
Pertemuan 11 Interaksi User Diadaptasi dari paint.c E. Angel.
Bab 4 Tools untuk Menggambar : Window dan viewport
Praktikum 2.
Defiana Arnaldy, M.Si Geometry Fractal Defiana Arnaldy, M.Si
Fungsi Kuadrat Pertemuan 4
Penggambaran Fungsi Kuadrat dan Fungsi Kubik
COMPUTER GRAPHICS D10K-5C01 GK11: OpenGL Transformasi dan Interaksi Dr. Setiawan Hadi, M.Sc.CS. Program Studi S-1 Teknik Informatika FMIPA Universitas.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
S1 FLOW CHART Pendidikan Teknik Informatika Jurusan Teknik Elektro
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
COMPUTER GRAPHICS D10K-5C01 GK09: OpenGL Dr. Setiawan Hadi, M.Sc.CS.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Hidden Surface Removal (HSR)
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Apa itu Fungsi? Sebuah fungsi adalah modul program yang mengerjakan tugas atau aktivitas yang spesifik dan mengembalikan sebuah nilai dari tipe tertentu,
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
PERCABANGAN.
Proyeksi.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Pertemuan 4 Fungsi Kuadrat Grafik Fungsi Kuadrat
Integral Lipat Dua   PERTEMUAN TGL b R n
Algoritma dan Struktur Data
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Grafika Komputer Pengenalan Grafika Komputer &
Transformasi.
Contoh Aplikasi Sederhana
Pertemuan 26 Fraktal.
BAB 4 Tools untuk Menggambar : Window dan viewport
PERTEMUAN 8 Algoritma Presented by : Sity Aisyah, M.Kom
BAB. 3 (Skalar, Vektor) 5/22/
MEDAN ELEKTROMAGNETIK TF 2204
02.1 Hari-2.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Pertemuan 2 Pengantar Bahasa C dan Lingkungan Pemrograman Grafik dengan OpenGL Senin Wage, 28 September 2009.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
BAB I ANALISIS VEKTOR 1.1 SKALAR DAN VEKTOR Skalar Vektor Medan skalar
Penyelesaian Persamaan Linier dengan Matriks
BAB 7. HUBUNGAN NON LINEAR
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
PENJUMLAHAN BESARAN VEKTOR
Menentukan Maksimum atau Minimum suatu fungsi
ANALISIS ALGORITMA DALAM PENERAPAN GAMBAR
S1 FLOW CHART Pendidikan Teknik Informatika Jurusan Teknik Elektro
Oleh : Rahmat Robi Waliyansyah, M.Kom.
V E K T O R (4 SKS ).
PERTEMUAN 6 Cross Product, Garis dan Bidang di Ruang-3.
MODUL-3 VEKTOR dan SKALAR
Defiana Arnaldy, M.Si Geometry Fractal Defiana Arnaldy, M.Si
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
KESETIMBANGAN SISTEM GAYA SPATIAL
TRANSFORMASI.
TRANSFORMASI & Flipping Coin
Transcript presentasi:

Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran COMPUTER GRAPHICS D10K-5C01 GK10: OpenGL 3D Dr. Setiawan Hadi, M.Sc.CS. Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran

Materi Membuat objek 3D melalui Sierpinski gasket (Fractal) Mengenal Hidden-surface Removal

Aplikas 3 Dimensi Dalam OpenGL, aplikasi 2D merupakan kasus khusus grafika 3D Berpindah dari 2D ke 3D Menggunakan glVertex3f() Dalam hal ini, urutan penngambaran poligon sangat berpengaruh dimana ada bidang tertutupi bidang yang lain Untuk membuat gambar lebih realistis menggunakan hidden-surface removal

Sierpinski Gasket dalam 2D Diawali dengan sebuah segitiga Sambungkan sisi-sisi segitiga dengan segitiga lain, buang segitiga yang ditengah Ulangi prosesnya

Contoh Sierpinski Gasket dengan 5 subdivisi

Gasket merupakan sebuah Fraktal Perhatikan luas area hitam dan kelilingnya Jika kita terus membagi maka Luas akan menuju nol Tetapi keliling akan menuju tak berhingga Bentuk ini adalah objek geometri yang tidak biasa Bukan dua- maupun tiga dimensi Melainkan sebuah objek yang berdimensi fraktal

Program 2D #include <math.h> #include <stdio.h> #include <stdlib.h> #include <GL/glut.h> void init() { glClearColor(0.0, 0.0, 0.0, 1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); } void gasket(int n, float ax, float ay,float bx, float by,float cx, float cy) if (n <= 0) glVertex2f(ax, ay); glVertex2f(bx, by); glVertex2f(cx, cy); else float dx = (ax+bx)/2; float dy = (ay+by)/2; float ex = (bx+cx)/2; float ey = (by+cy)/2; float fx = (cx+ax)/2; float fy = (cy+ay)/2; gasket(n-1, ax, ay, dx, dy, fx, fy); gasket(n-1, bx, by, ex, ey, dx, dy); gasket(n-1, cx, cy, fx, fy, ex, ey);

Program 2D void draw() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glColor3f(1.0, 0.0, 0.0); gasket(4, 0,0.5, -0.5,-0.5, 0.5,-0.5); glEnd(); glFlush(); } int main(int argc, char *argv[]) glutInit(&argc, argv); glutInitWindowSize(500, 500); glutInitWindowPosition(250, 250); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutCreateWindow("Gasket2D"); glutDisplayFunc(draw); init(); glutMainLoop(); return 0;

Tugas Modifikasi (enhacement) program di Sierpinski Gasket 2D menurut kuriositas dan kreativitas anda Buat laporan dalam Word hasil yang anda kerjakan

Catatan Efisiensi Dengan menerapkan glBegin dan glEnd pada display callback (tidak pada fungsi segitiga dan menggunakan GL_TRIANGLES, bukan GL_POLYGON dalam glBegin, maka glBegin dan glEnd tidak dipangil setiap kali untuk penggambaran sebuah segitiga, emlainkan hanya dipanggil sekali untuk keseluruhan

3D Gasket Pembagian bidang menjadi 4 Apabila tetrahedron tengah dihilangkan maka akan membuat 4 tetrahedra yang lebih kecil

Contoh Setelah 5 iterasi

Program Gasket3D #include <math.h> #include <stdio.h> #include <stdlib.h> #include <GL/glut.h> void init() { glClearColor(0.0, 0.0, 0.0, 1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); glEnable(GL_DEPTH_TEST); } 13

Program Gasket3D void gasket(int n, float ax, float ay, float az, float bx, float by, float bz, float cx, float cy, float cz) { if (n <= 0) glVertex3f(ax, ay, az); glVertex3f(bx, by, bz); glVertex3f(cx, cy, cz); } else float dx = (ax+bx)/2; float dy = (ay+by)/2; float dz = (az+bz)/2; float ex = (bx+cx)/2; float ey = (by+cy)/2; float ez = (bz+cz)/2; float fx = (cx+ax)/2; float fy = (cy+ay)/2; float fz = (cz+az)/2; gasket(n-1, ax, ay, az, dx, dy, dz, fx, fy, fz); gasket(n-1, bx, by, bz, ex, ey, ez, dx, dy, dz); gasket(n-1, cx, cy, cz, fx, fy, fz, ex, ey, ez); 14

Program Gasket3D void draw() { float ax = 0.0; float ay = 0.5; float az = -0.5; float bx = -0.43; float by = -0.25; float bz = -0.5; float cx = 0.43; float cy = -0.25; float cz = -0.5; float dx = 0.0; float dy = 0.0; float dz = 0.0; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_TRIANGLES); glColor3f(0.5, 0.5, 0.5); gasket(3, ax, ay, az, bx, by, bz, cx, cy, cz); glColor3f(1.0, 0.0, 0.0); gasket(3, dx, dy, dz, ax, ay, az, bx, by, bz); glColor3f(0.0, 1.0, 0.0); gasket(3, dx, dy, dz, bx, by, bz, cx, cy, cz); glColor3f(0.0, 0.0, 1.0); gasket(3, dx, dy, dz, cx, cy, cz, ax, ay, az); glEnd(); glFlush(); } 15

Program Gasket3D int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitWindowSize(500, 500); glutInitWindowPosition(250, 250); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH); glutCreateWindow("Gasket3D"); glutDisplayFunc(draw); init(); glutMainLoop(); return 0; } 16

Hasil tidak 100% Betul Segitiga digambar sesuai dengan urutan, maka segitiga yang didepan tidak dalam posisi yang benar Yang diperoleh Yang diinginkan

Hidden Surface Removal Yang terlihat hanyalah bidang atau permukaan yang di depan, bidang dibelakangnya tidak boleh kelihatan OpenGL menggunakan metode hidden-surface removal yang dinamakan algoritma z-buffer Algoritma ini menyimpan informasi kedalaman (depth) sedemikian rupa sehingga pada saat rendering, yang kelihatan hanyalah objek atau bidang yang didepan.

Menggunakan algoritma z-buffer Algoritma ini menggunakan buffer tambahan yang disebut the z-buffer, untuk menyimpan informasi kedalaman sebagai informasi geometri yang mengalir pada pipeline. Kebutuhan Dalam main.c glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH) Diaktifkan dalam init.c glEnable(GL_DEPTH_TEST) Di-clear-kan dalam display callback glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) Z-Buffer bukan satu-satunya cara untuk HSR

Tugas Modifikasi (enhance) program di Sierpinski Gasket 3D menurut kuriositas dan kreativitas anda Buat laporan (tuliskan) dalam Word hasil yang anda kerjakan Gabungkan dengan tugas sebelumnya (Sierpinski 2D), submit ke e-learning sebagai Tugas OpenGL1.