Showing posts with label Grafika Komputer. Show all posts
Showing posts with label Grafika Komputer. Show all posts
Wednesday, May 1, 2013
Objek 3 Dimensi Open GL
Grafik komputer 3 dimensi biasa disebut 3D atau adalah
bentuk dari benda yang memiliki panjang, lebar, dan tinggi. Grafik 3 Dimensi
merupakan teknik penggambaran yg berpatokan pada titik koordinat sumbu
x(datar), sumbu y(tegak), dan sumbu z(miring).Representasi dari data geometrik
3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap
grafika komputer 2D. Tiga Dimensi, biasanya digunakan dalam penanganan grafis.
3D secara umum merujuk pada kemampuan dari sebuah video card (link). Saat ini
video card menggunakan variasi dari instruksi-instruksi yang ditanamkan dalam
video card itu sendiri (bukan berasal dari software) untuk mencapai hasil
grafik yang lebih realistis dalam memainkan game komputer.
Grafik
3D merupakan perkembangan dari grafik 2D. Didalam grafika komputer, 3D
merupakan bentuk grafik yang menggunakan representasi data geometri tiga
dimensi.
Suatu
objek rangka 3D apabila disinari dari arah tertentu akan membentuk bayangan
pada permukaan gambar. Proses pembuatan grafik komputer 3D dapat dibagi ke
dalam tiga fase, yaitu 3D modeling yang mendeskripsikan bentuk dari sebuah
objek, layout dan animation yang mendeskripsikan gerakan dan tata letak sebuah
objek, dan 3D rendering yang memproduksi image dari objek tersebut.
Istilah
atau Pengertian Grafik 3D adalah sebuah gambar,garis,lengkungan,dan sebagainya
yang memiliki titik-titik yang menghubungkan menjadi sebuah bentuk 3D.
Di
dalam dunia game, 3D secara umum merujuk pada kemampuan dari sebuah video card
(link). Saat ini video card menggunakan variasi dari instruksi-instruksi yang
ditanamkan dalam video card itu sendiri (bukan berasal dari software) untuk
mencapai hasil grafik yang lebih realistis dalam memainkan game komputer.
1.
Bentuk Wire
Fungsi Wire merupakan implementasi dari object 3D berupa kerangka benda
yang berpusat pada asal pemodelan sistem koordinat.
Utara dan kutub selatan bola berada di Z positif dan negatif
sumbu-masing-masing dan meridian utama persimpangan sumbu X positif.
Berikut adalah list untuk bangun kerangka pada 3D:
a. Ukuran adalah
panjang sisi
void
glutWireCube(GLdouble size);
b. Fungsi
glutWireSphere dan glutSolidSphere membuat bola berpusat pada asal pemodelan
sistem koordinat. Utara dan kutub selatan bola berada di Z positif dan negatif
sumbu-masing-masing dan meridian utama persimpangan sumbu X positif.
void glutWireSphere(GLdouble radius,GLint slices,
GLint stacks);
c. Ukuran benda
ditentukan dari dasar jari-jari alasnya.
void glutWireCone(GLdouble base, GLdouble height,GLint
slices, GLint stacks);
d. Render ditentukan
melalui 12 sisi. Berpusat pada asal,dan dengan radius sama dengan kuadrat dari
3.
void glutWireTorus(GLdouble innerRadius, GLdouble
outerRadius, GLint nsides, GLint rings);
e. Renders padat atau wireframe 12-sisi biasa
padat. Berpusat di sekitar asal dan dengan radius sama dengan akar kuadrat
dari 3
void
glutWireDodecahedron(void);
f. Renders padat atau
wireframe 4-sisi biasa padat. Berpusat di sekitar asal dan dengan radius
sama dengan akar kuadrat dari 3.
glutWiredTetrahedron void (void);
g. Renders padat atau
wireframe 8-sisi biasa padat. Berpusat di sekitar asal dan dengan radius
sebesar 1.0.
void
glutWireOctahedr5(void);
h. Renders padat atau
wireframe 20-sisi biasa padat. Berpusat di sekitar asal dan dengan radius
sebesar 1.0.
void glutWireIcosahedron(void);
i. Render dengan membuat membuat poci teh
void glutWireTeapot(GLdouble size);
2. Gunakan beberapa fungsi tambahan untuk memanggil
fungsi reshape dengan cara menambahkan fungsi glutReshapeFunc (reshape);. Fungs-fungsi di bawah adalah
inisialisasi 3dimensi grafika komputer menggunakan opengl.
Kemudian tambahkan fungsi
Pada fungsi main tambahkan callback
function
glutInitDisplayMode(GLUT_DOUBLE |
GLUT_DEPTH | GLUT_RGBA);
glutReshapeFunc(resize);
init();Membuat 2 Objek Bergerak dengan Memanfaatkan Interaksi Keyboard
Fungsi dasar pembuatan animasi dengan menggunakan KeyboardFunction adalah sebagai berikut
GLUTAPI void
APIENTRY glutKeyboardFunc(void (GLUTCALLBACK
*func)(unsigned char
key, int x, int
y));
Dalam penggunaan
glutKeyboardFunc dimungkinkan untuk mendeteksi input dari keyboard. Fungsi ini
diletakkan pada fungsi main dari program, dan parameternya adalah callback
function yang telah didefinisikan berupa fungsi dengan 3 parameter, seperti
contoh di bawah ini.
void myKeyboard(unsigned char key, int x, int y){
if(key ==
'a') glTranslatef(4,0,0); //seleksi tombol
yang ditekan
}
void mySpecialKeyboard(int key, int x, int y){
switch(key){
case GLUT_KEY_??? : …; break;
}
}
Langsung saja kita membuat 2 Objek Bergerak dengan Memanfaatkan Interaksi Keyboard
berikut Script programnya
#include<stdlib.h>
#include<glut.h>
float a = 0;
float b = 0;
float c = 0;
float d = 0;
void drawQuad(){ //segi4
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex2i(0.,0.);
glVertex2i(100.,0.);
glVertex2i(100.,100.);
glVertex2i(0.,100.);
glEnd();
glFlush();
}
void draw() //segitiga
{
glBegin(GL_TRIANGLES);
glColor3f(0,1,1);
glVertex2i(0,0);
glVertex2i(-50,-100);
glVertex2i(50,-100);
glEnd();
}
void renderScene()
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glTranslatef(c,d,0);
drawQuad();
glPopMatrix();
glPushMatrix();
glTranslatef(a,b,0);
draw();
glPopMatrix();
glFlush();
}
void myKeyboard(unsigned char key, int x, int y) {
if (key == 'a') c-=4
;
else if (key == 'd') c+=4;
else if (key == 'w') d+=4;
else if (key == 'x') d-=4;
}
void mySpecialKeyboard(int key,int x, int y){
switch(key){
case GLUT_KEY_LEFT:
a-=4;
break;
case GLUT_KEY_RIGHT:
a+=4;
break;
case GLUT_KEY_UP:
b+=4;
break;
case GLUT_KEY_DOWN:
b-=4;
break;
}
}
void update(int
value){
glutPostRedisplay();
glutTimerFunc(50,update,0);
}
void main(int
argc, char **argv){
glutInit(&argc,
argv);
glutInitWindowPosition(100,
100);
glutInitWindowSize(640,
480);
glutCreateWindow("Interaksi Keyboard");
gluOrtho2D(-320.0,320.0,-320.0,320.0);
glutDisplayFunc(renderScene);
glutKeyboardFunc(myKeyboard);
glutSpecialFunc(mySpecialKeyboard);
glutTimerFunc(1000,
update, 0);
glutMainLoop();
}
Selamat Mencoba .... ^_^
Transformasi Objek pada Open GL
Transformasi
dua dimensi adalah suatu model atau bentuk atau teknik memindahkan atau
mengubah nilai posisi objek dalam sistem koordinat dua dimensi. Pemindahan objek ini dapat diartikan sebagai pemindahan titik. Ada dua cara yang dapat digunakan untuk mentransformasi gambar yaitu :
-
Transformasi objek
|
|
- Definisinya adalah mengubah koordinat-koordinat dari tiap titik di objek dengan beberapa aturan ,
- meninggalkan underlying sistem koordinat yang tidak bisa diubah lagi.
-
Transformasi koordinat
- Definisinya adalah system koordinat yang baru dibuat sebelumnya merupakan perwakilan dari semua titik
- objek dalam sistem yang baru.
Tujuan transformasi adalah :
- Merubah atau menyesuaikan komposisi pemandangan.
- Memudahkan membuat
objek yang simetris.
- Melihat objek dari sudut
pandang yang berbeda.
- Memindahkan satu
atau beberapa objek dari satu tempat ke tempat
lain, ini
biasa dipakai
untuk animasi komputer.
Dalam transformasi pada dunia 2 dimensi, ada tiga transformasi dasar yang dapat dilakukan yaitu translasi, penskalaan, rotasi.
a.
Perpindahan (Translasi)
Pengertian translasi adalah perpindahan objek dari titik
P(x, y) ke titik P’(x’, y’) secara linier. Dalam
translasi dua dimensi diperlukan dua parameter, yaitu pemindahan kearah sumbu x dan pemindahan kearah sumbu y. Translasi (dx, dy) didefinisikan dengan :
x’= x + dx
y’ = y + dy
Fungsi
dasar untuk Translasi
(perubahan Posisi) objek
GLAPI void APIENTRY glTranslated( GLdouble x, GLdouble y, GLdouble
z );
GLAPI void APIENTRY glTranslatef( GLfloat x, GLfloat y,
GLfloat z );
Bentuk umum :
glTranslatef( x, y,
z )
glTranslated( x, y,
z )
glVertex3f(1.0f, -1.0f, -10.0f );
glColor3f( 1.0, 0.0, 0.0 );
glVertex3f(-1.0f, -1.0f,
-10.0f );
glEnd()
|
|
|
|
|
|
|
|
|
|
b.
Penskalaan (Scale)
Definisi dari penskalaan m adalah perpindahan objek dari titik P ke titik P’, dimana jarak titik P’ adalah
m kali titik P atau suatu operasi yang membuat suatu objek berubah ukurannya baik menjadi mengecil ataupun membesar secara seragam atau tidak seragam tergantung pada faktor penskalaan yang diberikan.
Fungsi dasar untuk skala (perubahan ukuran) objek
void
APIENTRY glScaled( GLdouble
x, GLdouble y,
GLdouble z );
GLAPI void
APIENTRY glScalef( GLfloat x,
GLfloat
y, GLfloat z );
Proses penskalaan dapat didefinisikan dengan :
x’ = mx x
y’ = my y
Bentuk umum :
glScalef( xf, yf, zf );
c.
Perputaran (Rotate)
Definisi rotasi adalah perpindahan objek dari titik P(x, y) ke titik P’(x’,y’) yang berupa pemindahan
berputar sebesar sudut θ atau suatu operasi
yang menyebabkan objek bergerak berputar pada titik pusat atau pada sumbu putar yang dipilih berdasarkan sudut putaran tertentu.
Fungsi
dasar untuk Rotasi objek
GLAPI void APIENTRY glRotated(
GLdouble angle, GLdouble x, GLdouble
y, GLdouble z );
GLAPI void APIENTRY glRotatef( GLfloat angle, GLfloat x,
GLfloat y, GLfloat z );
Operasi rotasi dapat diuraikan sebagai berikut :
1. Rotasi dari titik P yang berada di sumbu x, P(x,
0) menjadi P’(x’, y’) dapat digambarkan dengan :
x’ = x .cos θ
y’ = x.sin θ
2. Rotasi dari titik P yang berada di sumbu y, P(y,
0) menjadi P’(x’, y’) dapat digambarkan dengan :
x’ = -y .cos θ
y’ = y.sin θ
3. Rotasi dari titik P(x,
y) menjadi P’(x’, y’) merupakan kombinasi dari kedua macam transformasi di atas R
= Rx + Ry.
x’ = x .cos θ - y.sin θ
y’ = x.sin θ + y.cos θ
Bentuk umum :
glRotatef( sudut, sx, sy, sz
);
Ilustrasi Rotasi
Subscribe to:
Posts (Atom)


















