Praktikum 2.

Slides:



Advertisements
Presentasi serupa
Pemrograman Visual I Pendahuluan Presented by : Herianto.
Advertisements

Pertemuan 03: Grafika Komputer: Windows dan Viewport
Header Footer Header adalah teks yang muncul pada halaman atas
Dasar 3 Dimensi Spesifikasi Koordinat 3D
KOMPUTER GRAFIS I TEKNIK DASAR MEMBUAT OBJEK 3D 1. THICKNESS
KOMPUTER GRAFIS TEKNIK CAMERA Dalam 3D Studio Max, kamera dibuat dengan memilih tombol create dalam command panel, lalu.
KONSEP BAHASA PEMROGRAMAN
Fungsi, Parameter, Rekursi Daniel Riano Kaparang Book reference: Jogiyanto. Konsep Dasar Pemrograman Bahasa C. Andi Star. Yogyakarta Kristanto Andri.
BAB VIII PEMROGRAMAN GRAFIK
Antarmuka Tingkat Bawah (Canvas)
Grafika Komputer (TIZ10) Grafik 3D Disusun oleh Teady Matius Prodi Teknik Informatika – Universitas Bunda Mulia.
Fungsi (lanjutan) Pertemuan ke-9 Bahasa C.
Modul 11 – Hendi Hermawan - 1
Hidden Surface Removal (HSR)
Praktikum Grafika Komputer
Pemrograman Berorientasi Objek Bab 1 – Pemrograman Terstruktur.
Function(2).
TRANSFORMASI 2 DIMENSI Dasar Representasi Titik dan Transformasi
KOMPUTER GRAFIKA TRANSFORMASI 2D (ROTASI DAN SHEARING)
GRAFIKA KOMPUTER ATRIBUT OUTPUT PRIMITIF
Alokasi Memori Yuliana Setiowati.
Imam Cholissodin| 04 |Transformations Imam Cholissodin|
Perspective & Imaging Transformation
Algoritma dan Struktur Data
Eriq Muhammad Adams J | 04 |Transformation Eriq Muhammad Adams J |
Imam Cholissodin| 06 | Viewing / Camera Imam Cholissodin|
Matakuliah : T0074 / Grafika Komputer
Statement Input – Output
Imam Cholissodin| 06 | Viewing / Camera Imam Cholissodin|
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
PERTEMUAN KE-9 IFII SAINTEC UIN SGD. FUNCTION (FUNGSI) Function (fungsi) adalah kumpulan pernyataan/statement yang diberi nama, dimana nama tersebut dapat.
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
Pertemuan 11 Interaksi User Diadaptasi dari paint.c E. Angel.
Bab 4 Tools untuk Menggambar : Window dan viewport
KOMPUTER GRAFIKA TRANSFORMASI 3D (KONSEP 3 DIMENSI)
COMPUTER GRAPHICS D10K-5C01 GK11: OpenGL Transformasi dan Interaksi Dr. Setiawan Hadi, M.Sc.CS. Program Studi S-1 Teknik Informatika FMIPA Universitas.
Lutfi Budi Ilmawan Univ. Muslim Indonesia
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
COMPUTER GRAPHICS D10K-5C01 GK09: OpenGL Dr. Setiawan Hadi, M.Sc.CS.
G e o m e t r i F o t o U d a r a ?.
Drawing tools Dan aplikasinya
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Membuat Obyek Garis Command : LINE
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Hidden Surface Removal (HSR)
Konsep 3D dan Representasi Objek 3D
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Proyeksi.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
FUNCTION Fungsi (Function) merupakan sekumpulan instruksi yang membentuk satu unit serta memiliki nama. Fungsi digunakan.
Pertemuan 5 Konsep Pembentukan dan Proyeksi Benda
Viewing dan Clipping 2 Dimensi
Grafika Komputer Pengenalan Grafika Komputer &
Transformasi.
BAB 4 Tools untuk Menggambar : Window dan viewport
Struktur Data Khoiriya Latifa, M.Kom.
KOMPUTER GRAFIKA TRANSFORMASI 2D (TRANSLASI DAN SKALA)
KOMPUTER GRAFIKA TRANSFORMASI 2D (ROTASI DAN SHEARING)
TRANSFORMASI OBJEK (TRANSFORMASI AFFINE 2D DAN 3D)
Pertemuan 2 Pengantar Bahasa C dan Lingkungan Pemrograman Grafik dengan OpenGL Senin Wage, 28 September 2009.
02 |Introduction to OpenGL
ANALISIS ALGORITMA DALAM PENERAPAN GAMBAR
Konsep 3D dan Representasi Objek 3D
Mengolah Objek Pertemuan 3 Oleh : Sri Herawati, S.Kom
3D Viewing & Projection.
SYNTHETIC CAMERA Hieronimus Edhi Nugroho, M.Kom 12/6/2018
KOMPUTER GRAFIKA TRANSFORMASI 2D (TRANSLASI DAN SKALA)
TRANSFORMASI.
TRANSFORMASI & Flipping Coin
Transcript presentasi:

Praktikum 2

OpenGL Geometric primitives GL_QUAD_STRIP GL_POLYGON GL_TRIANGLE_STRIP GL_TRIANGLE_FAN GL_POINTS GL_LINES GL_LINE_LOOP GL_LINE_STRIP GL_TRIANGLES GL_QUADS

OpenGL Geometric primitives Setiap obyek dimodelkan sebagai kombinasi dari komponen-komponen dasar (Geometric primitives) Sebagai contoh, obyek segitiga pada tutorial 1 dimodelkan dengan menggunakan komponen dasar GL_POLYGON. Obyek tersebut dapat pula dimodelkan dengan komponen dasar GL_TRIANGLES. Obyek segiempat selain dapat dimodelkan dengan GL_POLYGON juga bisa dengan GL_QUADS. Dalam OpenGL, menggambar geometric primitives selalu dilakukan di antara fungsi glBegin(PRIMITIVES) // Fungsi Menggambar Primitives di sini glEnd()

Polygon Segi Delapan void display() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glColor3f(0, 1, 0); glVertex3f(-0.5, -0.5, 1); glColor3f(0, 0, 1); glVertex3f(-0.75, 0, 1); glColor3f(1, 0, 0); glVertex3f(-0.5, 0.5, 1); glVertex3f(0, 0.75, 1); glVertex3f(0.5, 0.5, -1); glVertex3f(0.75, 0, -1); glVertex3f(0.5, -0.5, -1); glVertex3f(0,-0.75, -1); glEnd(); glFlush(); } Dari Program Segitiga pertemuan 1, ubah pada fungsi display. Pada program berikut menggunakan vertek pada ruang 3D (x,y,z) yakni fungsi glVertex3f

Reshape Function Buatlah objek bujursangkar biru pada ruang 2D dengan koordinat titik kiri bawah (-0.5, -0.5) Jika kita drag ujung windows sehingga window tidak lagi berupa bujursangkar, bujursangkar-nya juga berubah bentuk. Gambar berikut mengilustrasikan situasinya.

Reshape Function Agar gambar tetap berada pada proporsi yang tepat, maka perlu digunakan callback reshape yang dipanggil setiap kali window berubah ukuran. Untuk itu perlu lakukan dua langkah berikut: membuat fungsi yang akan dipanggil saat reshape, di sini fungsinya adalah void resize(int width, int height) melakukan registrasi callback reshape dengan fungsi glutReshapeFunc(.)

Menambahkan Reshape Func Dari program bujur sangkar tadi, tambahkan fungsi resize() void resize( int w, int h ) { if (w >= h) glViewport(0, 0, (GLsizei)h, (GLsizei)h) ; else glViewport(0, 0, (GLsizei)w, (GLsizei)w) ; } glViewport(x_left, x_top, x_right, y_right) bertanggung jawab untuk melakukan setting viewport dari suatu window, yaitu bagian dari window yang digunakan untuk menggambar. Daftarkan fungsi resize tersebut di fungsi main dengan glutReshapeFunc sebelum glutMainLoop glutDisplayFunc(display); glutReshapeFunc(resize); glutMainLoop();

Transformasi Perhatikan cara kerja kamera. Memotret berarti mengubah obyek 3D menjadi obyek 2D berupa foto camera tripod model viewing volume

Transformasi Grafika Komputer adalah proses transformasi dari model 3D obyek menjadi citra 2D, ini sama dengan analogi kamera. Sebelum memotret, apa yang dilakukan? melakukan pengesetan kamera dalam bentuk setting lensa kamera (zoom in/out) mengarahkan kamera ke obyek (ex: mengatur letak tripod) mengatur letak obyek (ex: mengubah-ubah letak objek) mengatur skala dan layout dari foto (ex : foto dengan orang di sisi pinggir)

Transformasi Analogi di atas merupakan penjelasan dari jenis-jenis transformasi sbb: melakukan pengesetan kamera dalam bentuk setting lensa kamera (Transformasi Proyeksi), mengarah kamera ke obyek (Transformasi Viewing), mengatur letak obyek (Transformasi Modeling), mengatur skala dan layout dari foto (Transformasi Viewport) -> dengan glViewPort pada contoh sebelumnya

Transformasi Proyeksi Lensa kamera dan mata manusia memiliki daerah penglihatan (viewing volume) yang berbentuk kerucut, Namun karena bentuk display yang biasanya berbentuk segiempat membuat OpenGL (dan hampir semua API grafika komputer lain) lebih efisien memodelkan daerah penglihatan sebagai volume berbentuk piramida.

Transformasi Proyeksi Tipe transformasi proyeksi ada dua macam, bergantung pada parameter dan bentuk piramidanya. Dua tipe transformasi tersebut adalah Transformasi Ortogonal/Paralel (Orthogonal Transformation) dan Transformasi Perspektif(Perspective Transformation) Transformasi Ortogonal : membuat jarak benda relatif terhadap kamera tidak berpengaruh pada citra benda tersebut. Biasanya transformasi ini digunakan pada aplikasi-aplikasi teknik seperti gambar teknik Transformasi Perspektif : Pada transformasi jenis ini jarak benda akan mempengaruhi gambar yang di buat. Transformasi proyeksi yang banyak digunakan adalah Transformasi Perspektif

Transformasi Proyeksi terdiri dari a Transformasi Proyeksi terdiri dari a. Transformasi Orthogonal/Paralel (gambar atas) b. Transformasi Perspektif (mengerucut ke satu titikproyeksi, gambar bawah)

Transformasi Proyeksi Untuk merubah parameter transformasi ortogonal dapat menggunakan perintah glOrtho() dengan didahului proses merubah status OpenGL ke mode proyeksi dengan perintah glMatrixMode(GL_PROJECTION). Parameter transformasi perspektif dapat dirubah dengan menggunakan gluPerspective()/glFrustum() , juga dengan didahului proses merubah status OpenGL ke mode proyeksi dengan perintah glMatrixMode(GL_PROJECTION).

Program Transformasi Proyeksi Tambahkan pada program segi 8 Keyboard Func Timer Func Reshape Func untuk resize Daftarkan ketiga func tsb di main Ubah jadi double buffered

gluPerspective() glMatrixMode(GL_PROJECTION); glLoadIdentity( ); gluPerspective(fovy, aspect, near, far) fovy adalah sudut antara bidang bottom dan up.

Setting ke mode transformasi proyeksi void init() { glClearColor( 1.0, 0.0, 0.0, 1.0 ); // A Background Clear Color //masuk ke mode transformasi proyeksi glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45, (GLdouble)500.0/(GLdouble)500.0, 0, 100); //kembali ke mode transformasi modelling/viewing glMatrixMode(GL_MODELVIEW); }

Timer Func void myTimeOut(int id) { // called if timer event // ...advance the state of animation incrementally... rot+=10; glutPostRedisplay(); // request redisplay glutTimerFunc(100, myTimeOut, 0); // request next timer event }

Keyboard Func void myKeyboard(unsigned char key,int x, int y) { if((key=='<')||(key==',')) z_pos-=0.1f; if((key=='>')||(key=='.')) z_pos+=0.1f; }

Reshape Func void resize( int w, int h ) { glViewport( 0, 0, (GLsizei) w, (GLsizei) h ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective(45, (GLdouble)w/(GLdouble)h, 0, 100); glMatrixMode( GL_MODELVIEW ); }

Display Func void display() { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0,0.0f,z_pos); glRotatef(rot, 0, 0, 1); glBegin(GL_POLYGON); glColor3f(0, 1, 0); glVertex3f(-0.5, -0.5, -5); glColor3f(0, 0, 1); glVertex3f(-0.75, 0, -5); glColor3f(1, 0, 0); glVertex3f(-0.5, 0.5, -5); glVertex3f(0, 0.75, -5); glVertex3f(0.5, 0.5, -5); glVertex3f(0.75, 0, -5); glVertex3f(0.5, -0.5, -5); glVertex3f(0,-0.75, -5); glEnd(); glFlush(); glutSwapBuffers(); }

Directive & Global Variable #include <GL/glut.h> float z_pos=0.0f; float rot=0.0f;

Main Func int main( int argc, char **argv) { glutInit( &argc, argv); // Initialize GLUT function callings glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB); // Set window size (width, height) in number of pixels glutInitWindowSize( 400, 400); // Set window position, from the left and top of the screen, glutInitWindowPosition( 500, 500); // in numbers of pixels // Specify a window creation event glutCreateWindow( "Transformasi Proyeksi"); // Specify the drawing function that is called when the window glutDisplayFunc( display); // is created or re-drew glutKeyboardFunc(myKeyboard); glutTimerFunc(100, myTimeOut, 0); glutReshapeFunc(resize); init(); // Invoke this function for initialization glutMainLoop(); // Enter the event processing loop return 0; // Indicate normal termination (Required by ANSI C) }

Transformasi Viewing Untuk menghasilkan gambar, kamera perlu diletakkan pada posisi yang tepat didepan pemandangan yang diinginkan. Secara default, dalam OpenGL kemera akan berada pada posisi (0,0,0) dengan menghadap ke arah z = -1 dengan sumbu y mengarah ke atas kamera. Hal ini dapat dilakukan dengan menggunakan perintah gluLookAt() dengan didahului proses merubah status OpenGL ke modelview dengan perintah glMatrixMode(GL_MODELVIEW).

Transformasi Modeling Selain posisi dan orientasi kamera yang dapat dirubah-rubah, secara natural obyek juga dapat berpindah posisi dan orientasi relatif terhadap yang lain. Transformasi obyek dapat direpresentasikan dengan dua cara, yaitu: menggunakan matriks transformasi (glLoadMatrix) menggunakan operasi transformasi (glRotate, glTranslate) dengan didahului proses merubah status OpenGL ke modelview dengan perintah glMatrixMode(GL_MODELVIEW).

Konsep Double Buffer Konsep Double Buffer. Pada program di atas mode display menggunakan tipe GLUT_DOUBLE yang diikuti oleh glutSwapBuffers(). Hal ini merupakan teknik yang disebut Double Buffer untuk menghindari flicker. Untuk mengetahui apa itu flicker, ubah mode display menjadi GLUT_SINGLE dan hapus/commented perintah glutSwapBuffer().