TRANFORMASI 3D
Disusun Sebagai Bahan Acuan Petunjuk Pelaksanaan Pratikum dan Salah Satu
Syarat Untuk Melaksanakan Pratikum Pada Laboratorium Komputer
Universitas Pembangunan Panca Budi
Medan
Penyusun :
ROBY SEPTIAN PRATAMA ( 1414370134 )
Kelompok III
PROGRAM STUDI SISTEM KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS PEMBAGUNAN PANCA BUDI
MEDAN
2016
Universias Pembangunan Panca Budi
Medan
OBJEK 3D
A. Pengertian Objek 3D
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.
Perbedaan paling utama dari objek 2 dimensi dan objek 3 dimensi yaitu
kedalamannya. Yaitu suatu jarak antara pengamat dengan suatu objek yang dilihat
(point of view). Jadi, jika objek 2 dimensi hanya menggunakan 2 ukuran (panjang
dan lebar), maka 3 dimensi menggunakan 3 ukuran meliputi panjang, lebar,
kedalaman yang disimbolkan dengan sumbu x, y, z.
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.
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.
B. Objek 3D
Benda tiga dimensi tersusun dari sekumpulan surface. Surface yaitu
permukaan kulit.
Universias Pembangunan Panca Budi
Medan
Gbr. Contoh permukaan 3d
Surface dapat dibuat dari rangkaian Polygon. Polygon adalah bentuk yang
disusun dari serangkaian garis yang terhubung satu dengan yang lain dan
berbentuk kurva tertutup sehingga membentuk sebuah objek gambar. Titik sudut
dari Polygon disebut vertex sedangkan garis penyusun Polygon disebut edge.
Gbr. Contoh polygon
Polygon digambar dengan menggambar masing-masing edge dengan
setiap edge merupakan pasangan dari vertexi vertexi+1 kecuali untuk edge
terakhir merupakan pasangan dari vertexn vertex1.
Gbr. Objek 3d yang tersusun dari kumpulan polygon
Universias Pembangunan Panca Budi
Medan
Bentuk polygon yang paling tepat digunakan untuk membuat permukaan
benda tiga dimensi adalah polygon segitiga (triangle). Hal ini disebabkan polygon
segitiga akan selalu berada dalam keadaan planar (datar) se-mentara polygon
dengan vertex lebih dari 3 dapat berada dalam kondisi non-planar karena salah
satu vertex tidak berada di lokasi yang sejajar. Satu hal yang harus diperhatikan
pada saat menggunakan polygon segitiga adalah winding. Winding adalah urutan
dan arah vertex-vertex penyusun polygon. Winding menganggap bahwa arah
vertex berlawanan jarum jam sebagai tampak depan sedangkan arah vertex searah
jarum jam dianggap sebagai bagian belakang benda.
Gbr. Arah vertex : (a) berlawanan dengan arah jarum jam (b) searah jarum jam
Pada gambar tersebut polygon menggunakan winding berlawanan jarum
jam karena didefinisikan sebagai urutan vertex v3-v4-v5 sedangkan pada gambar
8.6.b menggunakan winding searah jarum jam karena urutan vertex yang
digunakan v3-v5-v4.
Pada setiap permukaan dari poligon yang membentuk objek akan memuncukan
garis Normal, yaitu vektor tegak lurus pada permukaan. Fungsinya untuk
bayangan benda tersebut.
Universias Pembangunan Panca Budi
Medan
Gbr. Garis normal polygon
C. Alur Proses Rendering Grafis 3D
Pada grafika komputer, rendering adalah proses pembuatan/ produksi
image/gambar pada layar dari pendeskripsian suatu model. Proses rendering grafis
3D mendeskripsikan objek 3D dari vertex-vertex pada objek primitive(seperti
segitiga, titik, garis, dan segiempat), dan menghasilkan warna-warna pada pixel
pada layar.
Gbr. Alur proses rendering grafis 3d
1) Modelling Trasnformations
Menempatkan model pada sistem koordinat yang disebut world space. Semua
objek, sumber cahaya, dan sudut pandang pengamat berada pada world space.
2) Trival Rejection
Rejection (penolakan) dilakukan terhadap bagian-bagian yeng tidak perlu
sebagai upaya optimalisasi.
Universias Pembangunan Panca Budi
Medan
3) Illumination
Cahaya menyebabkan suatu objek dapat terlihat. Warna objek ditentukan dari
properti material objek itu sendiri dan sumber cahaya pada tampilan tersebut.
Algoritma Illuminasi tergantung pada pemodelan bayangan (shading model)
dan pemodenl permukaan (surface model).
4) Viewing transformation
Transformasi pengamatan adalah bentuk lain dari koordinat sistem.
Memetakan titik-titik yang ada pada world space ke ruang pengamatan. Posisi
pengamat ditransformasikan ke asalnya. Arah pengamatan diorientasikan
sepanjang axis. Mendefinisikan pengamtan volume.
5) Clipping
Proses clipping dulakukan pada penggambaran volume 3D yang biasa disebut
viewing frustum. Pada tahap ini dilakukan eliminasi total pada objek (dan
bagian objek) yang tidak visible bagi citra.
6) Projection
Objek selanjutnya diproyeksikan ke dalam 2D. Transformasikan dari ruang
pengamatan ke layar.
7) Rasterization
Konversi tiap objek primitive ke suah set fragment. Sebuah fragment
diperlakukan seperti pixel pada ruang 3 dimensi, selaras dengan grid pixel,
dengan atribut seperti posisi, warna, dan tekstur yang normal.
8) Display
Melakukan interpolasi parameter. Melakukan beragam operasi 2D.
D. Sistem Koordinat
Secara umum, sistem koordinat tiga dimensi dibedakan menjadi dua, yaitu
sistem koordinat tangan kiri dan sistem koordinat tangan kanan. Sistem koordinat
tangan kanan dapat digambarkan dengan tiga buah jari pada tangan kanan yang
menghadap pengamat yaitu jari tengah sebagai sumbu z positif, jari telunjuk
sebagai sumbu y dan ibu jari sebagai sumbu x. Sedangkan sistem koordinat
tangan kiri dapat digambarkan dengan tiga buah jari pada tangan kiri dengan
Universias Pembangunan Panca Budi
Medan
punggung tangan menghadap pengamat dengan jari tengah sebagai sumbu z
negatif, jari telunjuk sebagai sumbu y dan ibu jari sebagai sumbu x.
Sistem koordinat tangan kanan banyak digunakan pada penggambaran
geometri. Sebaliknya sistem koordinat tangan kiri banyak digunakan pada
peggambaran pada grafika komputer Sistem koordinat tangan kiri digunakan agar
objek 3 dimensi memiliki nilai z positif (jarak jauh dekat benda lebih terlihat).
Setiap titik dalam sistem koordinat tiga dimensi dapat ditentukan posisinya
dengan meentukan seberapa jauh, tingggi dan lebar dari objek aslinya yang
dtentukan berdasarkan koordinat-koordinat pada sumbu x, y, dan z.
Gbr. Sistem koordinat 3d tangan tangan kiri dan tangan kanan
E. Primitive
Ada beberapa bentuk primitive dari objek 3 dimensi. Promitive yaitu bentuk
dasar yang dapat dengan mudah didefinisikan secara matematik.
a. Sphere
glutWireSphere(5, 20, 20);
Gbr. Sphere (bola)
b. Cube
Universias Pembangunan Panca Budi
Medan
glutWireCube(25);
Gbr. Cube (kubus)
c. Cone
glutWireCone(alas, tinggi, 20, 20);
Gbr. Cone (kerucut)
d. Dodecahedron
glutWireDodecahedron();
Gbr. Dodecahedron (bola segilima)
e. Teapot
glutWireTeapot(15);
Universias Pembangunan Panca Budi
Medan
Gbr. Teapot (poci)
f. Torus
glutWireTorus(luar, dalam, 20, 20);
Gbr. Torus (cincin)
Setiap primitive 3D memiliki parameter nilai yang mengekspresikan letak
dan bentuk primitive objek tersebut.
F. Tranformasi objek 3D (tiga dimensi)
Metode transformasi objek tiga dimensi sangat berbeda dengan objek dua
dimensi karena terdapat sumbu z yang ditambahkan sebagai salah satu acuan
untuk memperoleh posisi koordinat baru.
a. Translasi (perpindahan)
merupakan bentuk transformasi yang memindahkan posisi suatu objek, baik
pada sumbu x, sumbu y, atau sumbu z. Fungsi yang digunakan untuk melakukan
translasi adalah : glTranslatef(Tx, Ty, Tz) glTranslated(Tx, Ty, Tz) Parameter Tx
digunakan untuk menentukan arah dan seberapa jauh suatu benda akan
dipindahkan berdasarkan sumbu x. Parameter Ty digunakan untuk menentukan
arah dan seberapa jauh suatu benda akan dipindahkan berdasarkan sumbu y.
Sedangkan parameter Tz digunakan untuk menentukan arah dan seberapa jauh
suatu benda akan dipindahkan berdasarkan sumbu z (berlaku pada model 3D).
Universias Pembangunan Panca Budi
Medan
Dalam tranformasi objek tiga dimensi, translasi adalah pemindahan suatu titik dari
titik P=(x,y,z) ke posisi P=(x,y,z) (Hearn, 1994) dengan menggunakan operasi
matriks :
Parameter tx, ty, dan tz menjelaskan perpindahan jarak untuk koordinat x,
y, dan z.
Gbr. Memindahkan titik dengan translasi Vektor T = (tx1 ty1 tz)
Fungsi yang digunakan pada translasi yaitu :
glTranslatef (Tx,Ty,Tz)
glTranslated (Tx,Ty,Tz)
parameter Tx digunakan untuk menentukan arah dan seberapa jauh suatu benda
akan dipindahkan berdasarkan sumbu x. Ty digunakan untuk menentukan arah
dan seberapajauh suatu benda akan dipindahkan berdasarkan sumbu y. Sedangkan
parameter Tz digunakan untuk menentukan arah dan seberapajauh suatu benda
akan dipindahkan berdasarkan sumbu z(berlaku pada model 3D).
Universias Pembangunan Panca Budi
Medan
Gbr. Ilustrasi translasi
b. Rotasi (perputaran)
Rotasi merupakan bentuk transformasi yang digunakan untuk memutar posisi
suatu benda. Fungsi yang digunakan untuk melakukan rotasi ialah : glRotatef(,
Rx, Ry, Rz) glRotated(, Rx, Ry, Rz) Parameter yang dibutuhkan pada fungsi
tersebut ada 4 macam, yaitu parameter untuk besar sudut putaran, parameter Rx
untuk putaran berdasarkan sumbu x, parameter Ry untuk putaran berdasarkan
sumbu y, dan parameter Rz untuk putaran berdasarkan sumbu z. Jika parameter
bernilai postif, maka objek akan diputar berlawanan arah jarum jam. Sedangkan
jika parameter bernilai negatif, maka objek akan diputar searah jarum jam.
Untuk merotasikan sebuah objek diperlukan sumbu rotasi (poros untuk
merotasikan objek) (Donald Hearn, 1994). Sintaks untuk merotasikan objek pada
OpenGL adalah glRotate(sudut, x, y, z).
Parameter pertama adalah nilai perputaran sudut. Parameter kedua , ketiga, dan
keempat bernilai 1 apabila sumbunya dijadikan sumbu putar. Contoh perotasian
objek ditunjukkan pada gambar di bawah ini.
Universias Pembangunan Panca Budi
Medan
Gbr. Tabung sebelum dan setelah di rotasi
Fungsi yang digunakan pada rotasi yaitu :
glRotatef(, Rx, Ry, Rz)
glRotated(, Rx, Ry, Rz)
Parameter yang dibutuhkan pada fungsi tersebut ada 4 macam, yaitu parameter
untuk
besar
sudut
putaran.
Sudut
rotasi
adalah
besaran
yang
menentukan seberapa jauh sebuah titik akan diputar. Parameter Rx
untuk putaran berdasarkan sumbu x, parameter Ry untuk putaran berdasarkan
sumbu y, parameter Rz untuk putaran berdasarkan sumbu z. Jika parameter
bernilai positif, maka objek akan diputar berlawanan arah jarum jam, sedangkan
jika parameter bernilai negatif, maka akan diputar searah jarum jam.
Operasi rotasi dapat diuraikan sebagai berikut :
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
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
Rotasi dari titik P(x, y) menjadi P(x, y) merupakan kombinasi dari
kedua macam transformasi di atas yaitu :
R = Rx + Ry
X = xp +(x - xp) cos (y - yp) sin
Y = yp + (x xp) sin + (y yp) cos
Universias Pembangunan Panca Budi
Medan
c. Scalling (skala)
Skalasi merupakan bentuk transformasi yang dapat mengubah ukuran(besarkecil) suatu objek. Fungsi yang digunakan untuk melakukan skalasi ialah :
glScalef(Sx, Sy, Sz) glScaled(Sx, Sy, Sz) Perubahan ukuran suatu objek diperoleh
dengan mengalikan semua titik atau atau vertex pada objek dengan faktor skala
pada masing-masing sumbu (parameter Sx untuk sumbu x, Sy untuk sumbu y, dan
Sz untuk sumbu z).
Parameter pertama, kedua, dan ketiga masing - masing menunjukkan nilai skala
dari ukuran objek. Apabila parameter tersebut bernilai 1, maka berarti ukuran
objek tersebut tetap. Contoh penskalaan ditunjukkan oleh gambar di bawah ini.
Gbr. Sesudah dan sebelum diskalasi
Fungsi yang digunakan pada skala yaitu :
glScalef(Sx, Sy, Sz)
glScaled(Sx, Sy, Sz)
Berbeda dengan transformasi geser yang tidak mengubah bentuk objek,
transformasi skala akan mengubah bentuk objek sebesat skala Sx dab Sy ,
sehingga : (Qx,Qy)= (Px*Sy*Sy)
Universias Pembangunan Panca Budi
Medan
Transformasi skala dilakukan terhadap titik pusat (0,) karena setiap titil p akan
digeser sebesar Sx dari titik pusat dalam sumbu x dan sejauh Sy dalam sumbu Y.
Apabila matrik M berisi nilai negative maka akan diperoleh pencerminan terdahap
sumbu v dan Y.jika kedua factor skala berisi nilai yang sama, Sx=Sy=s maka akan
diperoleh uniform scaling, dimana objek akan diperbesar pada kedua sumbu besar,
jika 0<s<1 maka akan diperoleh objek yang diperkecil (demagnification). Jika
factor skala tidak sama , maka akan diperoleh penskalaan defernsial. Jika salah
satu dari factor skala sama dengan 1 maka akan diperoleh transfornasi strain.
Berikut contoh program pada 3d transformasi yang berbentuk sphere (bola).
Pada tampilan output program diatas terdapat penjelasan penjelasan sebagai
berikut :
a. Pada tampilan tersebut terdapat gambar seperti kubus, dimana gambar
tersebut memiliki fungsi sebagai bidang untuk tempat pantulan supaya bola
yang terdapat pada gambar dapat berpindah pindah tempat.
Berikut perintah perintah yang terdapat pada sebuah objek kubus tersebut :
line(0, 0, -500, width, 0, -500);
line(0, 0, -500, 0, height, -500);
line(0, height, -500, width, height, -500);
line(width, height, -500, width, 0, -500);
Universias Pembangunan Panca Budi
Medan
line(0, 0, -500, 0, 0, 0);
line(width, 0, -500, width, 0, 0);
line(0, height, -500, 0, height, 0);
line(width, height, -500, width, height, 0);
pada program diatas terdapat perintah line, dimana line tersebut fungsinya
untuk membentuk sebuah objek garis berbentuk kubus yang terdapat pada
tampilan gambar.
b. Pada tampilan tersebut juga terdapat sebuah objek bola, dimana bola tersebut
dapat bergerak atau berpindah pindah tempat dengan sendirinya.
Berikut perintah perintah yang terdapat pada sebuah objek bola tersebut :
translate (xPos, yPos, -zPos);
sphere(200);
noFill();
pada program diatas terdapat perintah sphere, dimana sphere fungsinya untuk
membuat ukuran diameter pada bola tersebut.
Kemudian di bawah ini terdapat program untuk perpindahan bola dan
kecepatan bola :
int xPos=150;
int yPos=50;
int zPos=10;
int xSpeed=2;
int ySpeed=2;
int zSpeed=2;
int xDirection=1;
int yDirection=1;
int zDirection=1;
pada progam diatas terdapat perintah int, dimana int tersebut adalah sebagai
variabel. intPos fungsinya untuk memberi perpindahan bola dari satu bidang
kubus ke bidang kubus lainnya. Dan intxSpeed yang fungsinya untuk
memberi kecepatan bola pada saat bola tersebut dalam berpindah ke bidang
bidang lainnya. Sedangkan pada perintah intzDirection fungsinya untuk
memberi kecepatan bola ketika bola tersebut memantul.
Kemudian pada program tersebut terdapat perintah untuk menghentikan bola
pada saat bola tersebut memantul mantul atau berpindah pindah dengan
menggunakan perintah mouse dengan program :
if (mousePressed) {
xDirection *=-1;
yDirection *=-1;
zDirection *=-1;
Universias Pembangunan Panca Budi
Medan
Dari contoh contoh program diatas, maka terdapat listing program yang di
butuhkan untuk membentuk sebuah objek gambar seperti tampilan diatas
dengan menggunakan processing yaitu :
int xPos=150;
int xDirection=1;
int yPos=50;
int
int yDirection=1;
zPos=10;
int
intzDirection=1;
xSpeed=2;
int ySpeed=2;
intend
//
zSpeed=2;
of variables
void setup() {
size (640, 480, P3D);
smooth();
}
void draw() {
background(192,192,192);
lights();
// box setup
stroke(0,0,128);
// background square
line(0, 0, -500, width, 0, -500);
line(0, 0, -500, 0, height, -500);
line(0, height, -500, width, height, -500);
line(width, height, -500, width, 0, -500);
// perspective lines
line(0, 0, -500, 0, 0, 0);
line(width, 0, -500, width, 0, 0);
line(0, height, -500, 0, height, 0);
line(width, height, -500, width, height, 0);
Universias Pembangunan Panca Budi
Medan
// inital ball set up
translate (xPos, yPos, -zPos);
sphere(200);
noFill();
// motion setup
xPos = xPos + (xSpeed * xDirection);
yPos = yPos + (ySpeed * yDirection);
zPos = zPos + (zSpeed * zDirection);
if (xPos>width-50) {
xDirection*=-1;
}
if (yPos>height-50) {
yDirection*=-1;
}
if (zPos>500) {
zDirection*=-1;
}
if (xPos<50) {
xDirection*=-1;
}
if (yPos<50) {
yDirection*=-1;
}
if (zPos<0) {
zDirection*=-1;
}
Universias Pembangunan Panca Budi
Medan
//reversal
if (mousePressed) {
xDirection *=-1;
yDirection *=-1;
zDirection *=-1;
}
}
Untuk menjalankan program diatas menggunakan software processing. Processing
sendiri terdapat berbagai macam macam versi, kebetulan pada program diatas
menggunakan processing versi 2.2.1.
Universias Pembangunan Panca Budi
Medan