Posted by : Unknown Rabu, 01 Mei 2013


Dalam pemrograman grafis berbasis openGL, kita tidak hanya dapat membuat suatu objek 2 dimensi/3 dimensi. tetapi kita juga dapat menggerakkan suatu objek/menganimasikannya. Animasi yang dimaksud adalah memindahkan posisi suatu objek sehingga hasilnya objek tersebut akan terlihat bergerak. Untuk membuat animasi, kita dapat memanfaatkan fungsi timer yang tersedia pada library pemrograman openGL. Kita dapat memanfaatkan fungsi glutTimerFunc(unsigned milis,Glut function(callback),int value); dimana parametenya waktu unsigned milis yang digunakan untuk mengontrol suatu animasi berdasarkan waktu, Glut function(callback) yang digunakan untuk memanggil fungsi timernya. Contoh implementasi dari animasi 2 dimensi ini adalah sebagai berikut:
Animasi Bintang:
#include "stdlib.h"
#include "glut.h"

int x=0;
int z=0;

void Bintang(){
       glBegin(GL_POLYGON);
       glVertex2f(-10.,-13.);
       glVertex2f(0.,80.);
       glVertex2f(30.,30.);
       glVertex2f(90.,40.);
       glVertex2f(50.,0.);
       glVertex2f(80.,-50.);
       glVertex2f(25.,-25.);
       glVertex2f(-15.,-75.);
       glVertex2f(0.,25.);
       glVertex2f(-70.,0.);
       glEnd();
}

void renderScene(void){

 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(1,1,1);
 glRotatef(x,0,0,1);
 Bintang();
 glFlush();
}

void timer (int value){
if (z <= 360){
x = 1;
z +=1;
}

glutPostRedisplay();
glutTimerFunc(5,timer,0);
}

void main(int argc,char **argv){
 glutInit(&argc,argv);
 glutInitWindowPosition(100,100);
 glutInitWindowSize(480,480);
 glutCreateWindow("Stars");
 gluOrtho2D(-320.,320.,-320.,320.);
 glutDisplayFunc(renderScene);
 glutTimerFunc(1,timer,0);
 glutMainLoop();
}

Script di atas akan menghasilkan tampilan bintang yang berotasi berputar berlawanan jarum jam, seperti gambar berikut:

Penjelasan:
Langkah awal dalam membuat animasi pada script di atas adalah membuat objek terlebih dahulu dengan menentukan ukuran letak setiap koordinat yang. Kemudian untuk tampilan seperti pemberian warna suatu objek, dapat menggunakan fungsi glcolor(). Untuk merotasi objek dapat menggunakan fungsi glrotate(). Dan melakukan render dengan looping seperti yang tertera pada fungsi renderScene di atas.
Pada fungsi timer, digunakan untuk mengatur kecepatan animasi objek pada program dengan mengatur time delay. Kemudian glutPostRedisplay untuk mengirimkan perintah untuk mengaktifkan display secara berkala (looping). Setelah pengaturan waktu delay pada objek, kita tinggal mengatur posisi, ukuran jendela tampilan juga pemanggilan fungsi render dan timer pada objek. 

{ 1 komentar... read them below or add one }

  1. void main(int argc,char **argv){
    Eror mulu gan :( solusi nyaa

    BalasHapus

Date & Time

Follower

mira. Diberdayakan oleh Blogger.

Copyright © Myrrh's World -Black Rock Shooter- Powered by Blogger - Designed by Johanes Djogan