Langsung ke konten utama

Transformasi 3D

Transformasi 3D pada dasarnya hampir sama dengan transformasi 2D, hanya pada 3D kita menghitung sumbu Z. Sama seperti pada 2D, ada tiga  transformasi dasar yang dapat dilakukan terhadap verteks, yaitu: 
  1. Translasi. 
  2. Pensekalaan. 
  3. Rotasi. 
Titik hasil transformasi dapat diperoleh melalui rumus affine transformation
Q = P * M + tr
Dimana: 
Q: (Qx, Qy, Qz) menyatakan matrix 1x3 yang berisi titik hasil transformasi.
P: (Px, Py, Pz) menyatakan matrik 1x3 yang berisi titik yang akan ditransformasi.
tr: (trx, try, trz) menyatakan matriks 1x3 yang berisi banyaknya pergeseran sumbuk x,y, z.
M: Matriks transformasi berukuran 3x3 
seperti berikut :

KONSEP 3 DIMENSI
Untuk mendapatkan tampilan 3D yang dimodelkan dalam koordinat dunia, pertama harus menentukan koordinat referensi untuk “kamera”. Koordinat referensi ini mendefinisikan posisi dan orientasi untuk bidang datar kamera, yang digunakan untuk menampilkan objek.
Deskripsi objek dikirim ke koordinat referensi kamera dan diproyeksikan ke display plane (bidang datar untuk tampilan). Titik-titik di dunia nyata dipetakan ke dalam ruang 2 dimensi.
Yang mempengaruhi sebuah objek nyata terlihat 3Dimensi antara lain : 
  • Cahaya yang menyebabkan suatu objek dapat terlihat
  • Warna objek yang ditentukan dari properti objek tersebut
TRANSLASI
Translasi dilakukan dengan menggunakan matriks sebagai berikut:
Setelah sistem koordinat kamera terbentuk, maka harus dipindah dan disesuaikan ke origin dari koordinat kamera. Untuk mengembalikan ke posisi origin maka dilakukan matriks inverse translasi dari koordinat kamera.
Transformasi Koordinat Dunia ke Koordinat Kamera

SCALLING (PENSKALAAN)
Penskalaan dilakukan dengan mengisi tr = (0,0,0) dan matriks M diatur seperti beikut.

ROTASI
Untuk menyesuaikan ke sistem koordinat maka dapat juga dikatakan bahwa titik yang yang akan dipindah ke koordinat kamera diproyeksikan ke sistem koordinat kamera (u,v,n). Maka :
Berbeda dengan rotasi di 2D yang menggunakan titik pusat(0,0) sebagai pusat perputaran,
rotasi 3D menggunakan sumbu koordinat sebagai pusat perputaran. Dengan demikian ada 3
macam rotasi yang dapat dilakukan, yaitu:
§  Rotasi terhadap sumbu X 
§  Rotasi terhadap sumbu Y 
§  Rotasi terhadap sumbu Z 
Rotasi terhadap sumbu X, Y, dan Z diperlihakan seperti pada gambar berikut:

Mengingat ada 3 buah sumbu rotasi maka matriks transformasi yang digunakan juga bergantung kepada sumbu putar. Adapun isi masing-masing transformasi sesuai dengan sumbu putar didefinisikan sebagai berikut.  

Berdasarkan penjelasan sebelumnya maka urutan transformasinya adalah translasi kemudian rotasi. Tidak berlaku sebaliknya. Maka bisa didefinisikan matriks gabungan untuk transformasi ke koordinat kamera adalah M = R.T
M adalah matriks transformasi ke koordinat kamera.
R adalah matriks rotasi dan T adalah matriks translasi.
Jadi untuk mendapatkan posisi titik di koordinat kamera rumusnya adalah : Koord_cam = M.Koord_dunia.

Disini saya juga menyediakan program yang telah di implementasikan di aplikasi Basic4GL. Program tersebut merupakan implementasi dari transformasi 3 dimensi. Berikut dapar di download soure code nya. Jika tidak memiliki aplikasi Basic4GL juga dapat di download dibawah ini.

Komentar

Postingan populer dari blog ini

Garis DDA, Garis Bresenham, dan Lingkaran

Garis dibuat dengan menentukan dua endpoint atau posisi awal dan posisi akhir dari suatu garis. Kmeudian peralatan output membuat garis sesuai posisi titik titik tersebut. Untuk peralatan analog seperti plotter an random-scan display garis lurus dapat dihasilkan dengan halus. Garis adalah penghubung antara dua buah titik (titik awal dan titik akhir). Seperti yang kita tahu, bahwa persamaan garis lurus dinyatakan dalam rumus: y=mx+c. Dimana m adalah gradien yang didapatkan dari hasil pembagian deltaY dengan deltaX dan c adalah sebuah konstanta. Berangkat dari sini kita coba mulai untuk membahas algortima apa saja yang digunakan dalam pembuatan garis lurus.  1. ALGORITMA DDA A. PENGERTIAN ALGORITMA DDA Algoritma DDA adalah algoritma pembentukan garis berdasarkan perhitungan dx maupun dy, menggunakan rumus dy=m.dx. Semua koordinat titik yang membentuk garis diperoleh dari perhitungan kemudian dikonversikan menjadi nilai integer. DDA ( Digital Differential Analyzer) adalah g...