Tutorial 06. Texture Mapping & Blending

dokumen-dokumen yang mirip
/*Bismillahirrohmanirrohim _Fatimah_Rombel 2_Projek_Akhir_Komgraf*/ #include <stdio.h> #include <stdlib.h> #include <string.

Tutorial 08. Fog. mensimulasikan efek kabut membatasi ruang pandang pengguna agar komputasi grafis yang diperlukan dapat dibatasi.

EC5130 Grafika Komputer dan Pemrograman GPU

Tutorial 04 Modeling & Transformasi Proyeksi

Topik bahasan: 1. Membuat objek mudah dan kompleks dengan jaring poligon 2. Merender jaring poligon sebagai wireframe dan atau pejal dengan OpenGL

Program 1 /* Menampilkan Bayangan sebuah obyek sumber file */

Tutorial 09. Lighting

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB. SHEET PRAKTIKUM GRAFIKA KOMPUTER

Grafika Komputer. Evangs Mailoa

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB. SHEET PRAKTIKUM GRAFIKA KOMPUTER

Gambar 1. Contoh tekstur makrostruktur

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB. SHEET PRAKTIKUM GRAFIKA KOMPUTER

Tabel 1 Perintah-perintah OpenGL yang telah dipraktekan

BAB II LINGKUNGAN PEMROGRAMAN GRAFIK DENGAN OPEN GL

PETEMUAN KE-3 PRIMITIVE DRAWING 2

DAFTAR PUSTAKA. (diakses 1 maret 2016)

Tabel 1 Perintah-perintah OpenGL yang telah dipraktekan

apa yang terjadi?. Kemudian lakukan pengantian beberapa bagian seperti sintak

LAMPIRAN SOURCE CODE

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB. SHEET PRAKTIKUM GRAFIKA KOMPUTER

Pengenalan OpenGL. Sintax Perintah OpenGL. Library yang Berhubungan dengan OpenGL

Gambar 1. Viewport pada layar

Pengenalan OpenGL. Sintax Perintah OpenGL. Library yang Berhubungan dengan OpenGL

PRIMITIVE DRAWING. Achmad Basuki Nana Ramadijanti

Praktikum Komputer Grafik [MODUL] Genap 2012/2013. Laboratorium Multimedia 1/35

Gambar 1. Viewport pada layar

Modul 1 Primitif Drawing

PETEMUAN KE-5 TRANSFORMASI-PANDANGAN (Viewing)

BAB IV IMPLEMENTASI DAN PENGUJIAN

Praktikum Komputer Grafik [MODUL] Ganjil 2012/2013. Laboratorium Multimedia 1/41

BAB I PENGENALAN OPENGL

Praktikum Komputer Grafik [MODUL] Genap 2013/2014. Laboratorium Multimedia 1/47

OPENGL DALAM MICROSOFT VISUAL STUDIO EXPRESS Created by: Gideon

MODUL 9 Material Texture

PENGANTAR GRAFIKA KOMPUTER

PERANCANGAN POLIHEDRA DENGAN METODE JARING POLIGON

ALGORITMA PERPOTONGAN OBJEK

Laboratorium Teknologi Informasi & Aplikasi. Praktikum Komputer Grafik [MODUL] Genap 2014/2015. Lab TIA 1/58

Laboratorium Teknologi Informasi & Aplikasi. Praktikum Komputer Grafik [MODUL] Genap 2015/2016. Lab TIA 1/59

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB. SHEET PRAKTIKUM GRAFIKA KOMPUTER

LAPORAN PRAKTIKUM KOMPUTER GRAFIK

TRANSFORMASI. Tujuan transfomasi adalah:

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM

DIAN PRATIWI. ST, MTI

BAB IV TOOLS UNTUK MENGGAMBAR (WINDOW DAN VIEWPORT)

TUGAS PENGANTAR GRAFIK KOMPUTER DAN OLAH CITRA

Modul 6 Interaksi dengan Keyboard dan Mouse

ANALISA TEKNIK CUBE MAPPING BERBASIS OPENGL

Pewarnaan dan Perputaran Polygon Untuk Objek Gambar Segi Tiga dan Segi Empat Menggunakan Program OPENGL 32

TEKNOLOGI AUGMENTED REALITY

LAPORAN PRATIKUM KOMPUTER APLIKASI

Transformasi Obyek (Lanjutan)

PEMBENTUKAN TRANSFORMASI OBJEK 2 DIMENSI DENGAN OPENGL

BAB 2 TEORI PENUNJANG

Efek Pemetaan Tekstur Prosedural pada Marble Project dengan Fungsi Perlin Noise

Pembuatan Simulasi Pergerakan Objek 3D (Tiga Dimensi) Menggunakan OpenGL

Primitive Drawing. Achmad Basuki Nana Ramadijanti

BAB III ANALISA DAN DESAIN SISTEM

Pemrograman Dasar C. Minggu 6

Bab 4 Studi Kasus. 4.1 Tampilan Awal Aplikasi Perangkat Lunak

FUNCTION (FUNGSI) LOGO. Pendidikan Teknik Elektronika FT UNY. Muh. Izzuddin Mahali, M.Cs.

Bab 1 Pengenalan GLUT

Transformasi Obyek (Kasus 2D)

Modul 2 Primitive Objects

DAFTAR ISI TOOLBAR SOLID TOOLBAR SHADE TOOLBAR 3D ORBIT TOOLBAR SURFACE TOOLBAR SOLIDS EDITING TOOLBAR MODIFY II TOOLBAR VIEW TOOLBAR TOOLBAR UCS

Pemodelan Objek Monitor 3D

Sistem Multimedia. Image. Donny Reza, S.Kom

Perancangan permainan dakon menggunakan C++ dan GLUT (OpenGL Utility Toolkit) Designing dakon game using C ++ and

BAB III ANALISIS DAN PERANCANGAN SISTEM PROGRAM SIMULASI PERAMBATAN GETARAN MENGGUNAKAN FRAKTAL 3D

Pemrograman I Bab V Percabangan. Adam Mukharil Bachtiar, S.Kom. Universitas Komputer Indonesia

Tipe Data, Variabel, Input/Output

Bab 2 Part Design Workbench

Struct Lanjutan: Studi Kasus

VARIABEL & TIPE DATA PEMROGRAMAN C++

membuat sebuah game yang menggunakan grafik vektor dan grafik bitmap. Penggunaannya seperti pemindahan sebuah object, memper-besar atau

J U R N A L I L M I A H KOMPUTASI

Grafika Komputer. Evangs Mailoa

Serba Serbi Grafika Game

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

Pemodelan Gelas, Botol, & Meja 3d (3ds Max Modeling Tutorial)

Pengantar Kuliah: Grafika Komputer. By: Nana Ramadijanti

An Interactive Introduction to OpenGL Programming

Modul 3 Objek 2 Dimensi

TUGAS PROGRAM DIAGONAL, VETIKAL, DAN HORIZONTAL OPENGL (MENGGUNAKAN JAVA) NAMA : SYIFA MUTIARA SARI KELAS : 3KA23 NPM :

PROSES PEMBUATAN MODELING ARSITEKTUR 1. PENGATURAN BACKGROUND IMAGE

BAB III ANALISA DAN PERANCANGAN

Achmad Solichin.

Minggu ke-14 Typedef, Struct & Command Line Argument

BAB 3 PERANCANGAN SISTEM

Kurikulum Qt. Chapter 4 Function. Fungsi

Perancangan permainan dakon menggunakan C++ dan GLUT (OpenGL Utility Toolkit) Designing dakon game using C++ and GLUT (OpenGL Utility Toolkit)

Fungsi DASAR PEMROGRAMAN

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Tipe dan Jenis Layar Komputer Grafik. By Ocvita Ardhiani.

IMPLEMENTASI OPEN GL32 UNTUK MEMANIPULASI GAMBAR SEGITIGA DAN SEGIEMPAT

Struktur Data. Stack STMIK AMIKOM YOGYAKARTA. Bayu Setiaji, S.Kom

REKONSTRUKSI/RESTORASI REKONSTRUKSI/RESTORASI. Minggu 9: TAHAPAN ANALISIS CITRA. 1. Rekonstruksi (Destripe) SLC (Scan Line Corrector) off

APLIKASI WEB BROWSER ANIMATIF MENGGUNAKAN DELPHI DAN OPENGL. Oleh : TEDDY GIGIH PRABOWO M Teknik Komputer

BAB I PENDAHULUAN 1.1 Latar Belakang 1.2 Tujuan Penelitian

Transkripsi:

Tutorial 06. Texture Mapping & Blending Hingga tahap ini, geometric primitive digambar dengan warna solid atau warna hasil interpolasi warnawarna vertex-nya. Texture mapping memungkinkan untuk menaruh gambar pada geometric primitive tersebut dan sekaligus mengikuti transformasi yang diterapkan kepada polygon tersebut (cf. Gambar 8). Texture merupakan data segi-empat sederhana yang berada pada bidang texture. Bidang texture diwakili oleh dua sumbu koordinat yaitu sumbu s dan sumbu t. Setiap texture akan memenuhi bidang koordinat (0.0,0.0) sd. (1.0,1.0). Nilai individual dari array texture biasanya dikenal dengan istilah texels (texture pixels). Yang membuat texture mapping sedikit rumit adalah bagaimana proses pemetaan antara bentuk segiempat texture ke polygon menginngat secara umum bentuk poligon biasanya non-rectangular. Beberapa contoh penggunaan texture mapping antara lain: mensimulasikan aspek visual dari material seperti tampakan kayu, batu bata, atau

granit mengurangi kompleksitas (jumlah polygon yang dibutuhkan) dari suatu obyek geometri. teknik pemrosesan citra seperti image warping dan rectification, rotation dan scaling mensimulasikan berbagai efek permukaan seperti efek reflektif seperti cermin atau lantai yang telah digosok mengkilat, efek tonjolan dll. Salah satu keuntungan dari texture mapping adalah bahwa detail visual itu berada di citra bukan di geometri. Dan sekompleks apapun citra, selama tidak merubah ukuran citra, tidak berpengaruh pada kinerja keseluruhan, yaitu kompleksitas cari citra tidak berpengaruh kepada pipeline geometric (transformasi, clipping) dari OpenGL. Texture ditambahkan saat rasterisasi ketika geometric pipeline dan pixel pipeline bertemu seperti diilustrasikan pada Gambar berikut. Secara konseptual ada tiga langkah dalam melakukan texture mapping, yaitu: 1. Penentuan texture Baca image dari file Generate texture id untuk image tersebut glgentextures(3, &texture[0]) 2. Pemberian koordinat texture ke vertex 3. Penentuan parameter texture (wrapping / filtering) // Texture Mapping // Program ini memetakan sebuah texture pada permukaan object 3D // Image Loadernya menggunakan library tambahan yaitu SOIL (Simple OpenGL Image Library) // Untuk meangaktifkan state BLENDING uncomment perintah glenable(gl_blend); #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdarg.h> #include <SOIL/SOIL.h> #include <GL/glut.h>

float z_pos = -5.0f; float xrot, yrot, zrot; float rot = 0.0f; GLfloat LightAmbient[] = 0.5f, 0.5f, 0.5f, 1.0f; GLfloat LightDiffuse[] = 1.0f, 1.0f, 1.0f, 1.0f; GLfloat LightPosition[] = 0.0f, 0.0f, 2.0f, 1.0f; // storage for one texture GLuint tex_2d; /* storage for one texture */ GLuint texture[1]; void init(); void mykeyboard(unsigned char, int, int); void mydisplay(void); void mytimeout(int); void resize(int, int); int main(int argc, char* argv[]) glutinit(&argc, argv); glutinitdisplaymode(glut_double GLUT_DEPTH); glutinitwindowsize(500, 500); glutinitwindowposition(0, 0); glutcreatewindow("texture Mapping"); glutdisplayfunc(mydisplay); glutidlefunc(mydisplay); glutkeyboardfunc(mykeyboard); glutreshapefunc(resize); gluttimerfunc(100, mytimeout, 0); init(); glutmainloop(); return 0; GLuint LoadGLTextures() // Load Bitmaps And Convert To Textures /* load an image file directly as a new OpenGL texture */ tex_2d = SOIL_load_OGL_texture("background.bmp", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y);

/* check for an error during the load process */ if(tex_2d == 0) printf( "SOIL loading error: '%s'\n", SOIL_last_result() ); // Typical Texture Generation Using Data From The Bitmap glbindtexture(gl_texture_2d, tex_2d); gltexparameteri(gl_texture_2d,gl_texture_min_filter,gl_linear); gltexparameteri(gl_texture_2d,gl_texture_mag_filter,gl_linear); return tex_2d; // Return Success void init() LoadGLTextures(); glenable(gl_texture_2d); glshademodel(gl_smooth); glclearcolor(0.0f, 1.0f, 1.0f, 0.5f); glcleardepth(1.0f); glenable(gl_depth_test); gldepthfunc(gl_lequal); glhint(gl_perspective_correction_hint, GL_NICEST); gllightfv(gl_light1, GL_AMBIENT, LightAmbient); gllightfv(gl_light1, GL_DIFFUSE, LightDiffuse); gllightfv(gl_light1, GL_POSITION, LightPosition); glenable(gl_light1); void mykeyboard(unsigned char key, int x, int y) switch(key) case '<': case ',': z_pos -= 0.1f; case '>': case '.': z_pos += 0.1f; case 27: exit(0); default:

void mydisplay(void) glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); glpolygonmode(gl_front_and_back, GL_FILL); glloadidentity(); gltranslatef(0.0f, 0.0f, z_pos); glrotatef(xrot,1.0f,0.0f,0.0f); glrotatef(yrot,0.0f,1.0f,0.0f); glrotatef(zrot,0.0f,0.0f,1.0f); //glenable(gl_blend); //glcolor3f(0.0, 0.0, 1.0); // Rotate On The X Axis // Rotate On The Y Axis // Rotate On The Z Axis // enabling BLENDING state // Setting BLENDING color glbegin(gl_quads); // Front Face glnormal3f( 0.0f, 0.0f, 1.0f); gltexcoord2f(0.0f, 0.0f); glvertex3f(-1.0f, -1.0f, 1.0f); gltexcoord2f(1.0f, 0.0f); glvertex3f( 1.0f, -1.0f, 1.0f); gltexcoord2f(1.0f, 1.0f); glvertex3f( 1.0f, 1.0f, 1.0f); gltexcoord2f(0.0f, 1.0f); glvertex3f(-1.0f, 1.0f, 1.0f); // Back Face glnormal3f( 0.0f, 0.0f,-1.0f); gltexcoord2f(1.0f, 0.0f); glvertex3f(-1.0f, -1.0f, -1.0f); gltexcoord2f(1.0f, 1.0f); glvertex3f(-1.0f, 1.0f, -1.0f); gltexcoord2f(0.0f, 1.0f); glvertex3f( 1.0f, 1.0f, -1.0f); gltexcoord2f(0.0f, 0.0f); glvertex3f( 1.0f, -1.0f, -1.0f); // Top Face glnormal3f( 0.0f, 1.0f, 0.0f); gltexcoord2f(0.0f, 1.0f); glvertex3f(-1.0f, 1.0f, -1.0f); gltexcoord2f(0.0f, 0.0f); glvertex3f(-1.0f, 1.0f, 1.0f); gltexcoord2f(1.0f, 0.0f); glvertex3f( 1.0f, 1.0f, 1.0f); gltexcoord2f(1.0f, 1.0f); glvertex3f( 1.0f, 1.0f, -1.0f); // Bottom Face glnormal3f( 0.0f,-1.0f, 0.0f); gltexcoord2f(1.0f, 1.0f); glvertex3f(-1.0f, -1.0f, -1.0f); gltexcoord2f(0.0f, 1.0f); glvertex3f( 1.0f, -1.0f, -1.0f); gltexcoord2f(0.0f, 0.0f); glvertex3f( 1.0f, -1.0f, 1.0f); gltexcoord2f(1.0f, 0.0f); glvertex3f(-1.0f, -1.0f, 1.0f); // Right face glnormal3f( 1.0f, 0.0f, 0.0f); gltexcoord2f(1.0f, 0.0f); glvertex3f( 1.0f, -1.0f, -1.0f); gltexcoord2f(1.0f, 1.0f); glvertex3f( 1.0f, 1.0f, -1.0f); gltexcoord2f(0.0f, 1.0f); glvertex3f( 1.0f, 1.0f, 1.0f); gltexcoord2f(0.0f, 0.0f); glvertex3f( 1.0f, -1.0f, 1.0f); // Left Face

glnormal3f(-1.0f, 0.0f, 0.0f); gltexcoord2f(0.0f, 0.0f); glvertex3f(-1.0f, -1.0f, -1.0f); gltexcoord2f(1.0f, 0.0f); glvertex3f(-1.0f, -1.0f, 1.0f); gltexcoord2f(1.0f, 1.0f); glvertex3f(-1.0f, 1.0f, 1.0f); gltexcoord2f(0.0f, 1.0f); glvertex3f(-1.0f, 1.0f, -1.0f); glend(); glflush(); xrot+=0.1f; // X Axis Rotation yrot+=0.1f; // Y Axis Rotation zrot+=0.1f; // Z Axis Rotation glutswapbuffers(); void mytimeout(int id) rot += 5.0f; glutpostredisplay(); gluttimerfunc(100, mytimeout, 0); void resize(int width, int height) glviewport(0, 0, width, height); glmatrixmode(gl_projection); glloadidentity(); gluperspective(45.0, (GLdouble)width / (GLdouble)height, 1.0, 300.0); glmatrixmode(gl_modelview); glloadidentity(); Seringkali, efek yang diinginkan dapat diperoleh dengan mencampur lebih dari satu texture. Proses pencampuran lebih dari satu texture disebut dengan istilah blending. Salah satu efek blending yang paling sederhana adalah dengan memblending texture dengan warna. Untuk mengaktifkan BLENDING state pada program diatas, buka comment pada statemen //glenable(gl_blend); dan //glcolor3f(0.0, 0.0, 1.0); pada fungsi void mydisplay() jika kita ingin melakukan pencampuran antara texture dan warna. Di sini texture di blend dengan warna biru.