Imam Cholissodin| imam.cholissodin@gmail.com 04 |Transformations Imam Cholissodin| imam.cholissodin@gmail.com
Transformations : What’s Transformations Types of Transformation Vertex Transformation Pipeline Transformation Process [Example] Transformations Syntax Order of Transformation Demos Program Transformation
What’s Transformations Transformasi adalah memindahkan objek tanpa merusak bentuk aslinya, meskipun ada perubahan bentuk atau modifikasi pada hasil akhirnya. Tujuan Transformasi : Melihat objek dari sudut pandang yang berbeda. Membuat komposisi pemandangan yang sesuai. Memudahkan membuat objek yang simetris. Memindahkan satu atau beberapa objek dari satu tempat ke tempat lain (animasi).
Types of Transformation Modeling. In 3D graphics, handles moving objects around the scene. Viewing. In 3D graphics, specifies the location of the camera. Projection. Defines the viewing volume and clipping planes from eye coordinate to clip coordinates. Viewport. Maps the projection of the scene into the rendering window. Modelview. Combination of the viewing and modeling transformations.
Vertex Transformation Pipeline Modelview Matrix Projection Matrix Perspective Division Viewport Transformation Vertex Transformasi dalam OpenGL dilakukan dengan menggunakan konsep matrik. Matrix Modes : ModelView Matrix (GL_MODELVIEW) These concern model-related operations such as translation, rotation, and scaling, as well as viewing transformations. Projection Matrix (GL_PROJECTION) Setup camera projection. Object Coordinates Eye Coordinates Clip Coordinates Normalized device Coordinates Window Coordinates
Transformation Process [Example] Translasi : Skala : Rotasi :
Process Transformation [Example] Sebelum Sesudah Shearing Kombinasi (Translasi + Skala + Rotasi + Shearing)
Transformations Syntax 3 basic syntax transformations: glTranslate(T x, T y, T z) Memindahkan titik/objek dalam arah x, y dan z. Nilai x, y dan z ditambah atau dikurangi dengan nilai tertentu. Jika titik A di traslasikan ke B dengan matrik translasi K, maka persamaannya adalah A = KB. glScale(T x, T y, T z) Nilai x, y dan z dikalikan dengan bilangan skalar. glRotate(T angle, T x, T y, T z) T angle (in degrees) dengan arah berlawanan dengan jarum jam (counterclockwise). Nilai koordinat x, y dan z diputar ke sekeliling titik referensi.
Translation Snippet Code // warna segiempat asli adalah kuning glColor3f(1,1,0); glRecti(100,50,200,200); // warna segiempat hasil translasi adalah merah glColor3f(1,0,0); glPushMatrix(); // Saves current matrix glTranslated(200,150,0); glPopMatrix(); // Returns current matrix
Scale Snippet Code // warna segiempat asli adalah kuning glColor3f(1,1,0); glRecti(50,50,100,100); // warna segiempat hasil skala adalah merah glColor3f(1,0,0); glPushMatrix(); glScaled(2,3,1); glPopMatrix();
Rotation Snippet Code // warna segiempat asli adalah kuning glColor3f(1,1,0); glRecti(50,50,100,100); // warna segiempat hasil rotasi adalah merah glColor3f(1,0,0); glPushMatrix(); glRotated(45,0,0,1); glPopMatrix();
Shearing Snippet Code // Create T glBegin(GL_LINE_LOOP); for (i=0;i<8;i++) glVertex2i(original[0][i],original[1][i]); glEnd(); // Transformation Process for(i=0;i<8;i++) shearing[0][i]=(original[0][i])+(skalar*original[1][i]); shearing[1][i]=original[1][i]; // hasil transformasi dengan shearing glVertex2i(shearing[0][i],shearing[1][i]);
Order of Transformation Hasil transformasi dikatakan benar, jika dilakukan sesuai dengan kondisi yang tepat. Apakah hasil posisi akhir pada gambar (a) dan (b) terletak pada koordinat yang sama ? (b) (a)
Tugas Kelompok (bagian 1) Buatlah Program bangun 2D berikut : (gunakan konsep primitif objek) Buatlah Program render mobil, helikopter, kincir Angin atau model 2D/3D lainnya, yang dapat dikontrol dengan tombol, misal “n” dan “m“. Jika ditekan tombol ‘n’, maka objek akan berjalan dan jika ditekan tombol ‘m’, maka objek akan berhenti. (gunakan konsep transformasi) (a) (b) (c) Note : Soal 1&2 (Buat Program dan Laporan Penjelasan Kode Program)
Imam Cholissodin| imam.cholissodin@gmail.com Selesai Imam Cholissodin| imam.cholissodin@gmail.com