Selasa, 18 Juni 2013

Tugas Pengantar Teknologi Game, Interactive System (Bagian 3)

Pada kesempatan kali ini saya akan menjelaskan tentang Sistem Interaktif atau biasa disebut dengan Interactive System. Pada Sistem Interaktif ini secara garis besar terbagi menjadi 2 bagian penyusun yaitu, Interactive Entertaintment atau Hiburan Interaktif, dan Intercative Programs atau Program Interaktif. Pertama-tama mari kita bahas tentang Interactive Entertainment terlebih dahulu. Interactive Entertaintment adalah sebuah Interaksi yang bersifat menghibur melalui media. Konsep dari Hiburan Interaktif ini adalah melalui media yang dapat langsung direspon oleh pengguna system, pengguna menerima interaksi melalui kombinasi teks, gambar, animasi, atau video yang sifatnya memberikan informasi dengan diselipkan unsure hiburan yang membuat pengguna tidak jenuh. Selanjutnya Interactive Programs. Ketika program sudah aktif, bukan berarti program tersebut sudah dapat rilis dan dipasarkan ke masyarakat pengguna. Ada prosedur yang harus dilengkapi sebelum program tersebut dilempar ke ranah user media. Fokus dari program interaktif ini adalah teks program yang menjadi interface utama untuk program yang dijalankan, bukan aplikasi interaktif yang berkomunikasi dengan pengguna. Program interaktif lebih dikonsentrasikan dalam pengembangannya untuk digunakan sesudah programnya menyebar luas ke masyarakat pengguna. Ada hal penting yang harus diperhatikan dalam program interaktif, yaitu pengguna program dan programnya itu sendiri. Pengguna sangat dibutuhkan untuk menentukan cakupan fasilitas program, karena program yang dibuat berdasarkan kebutuhan pengguna dan digunakan untuk memudahkan pengguna. Jadi program dan pengguna adalah 2 elemen vital yang saling berhubungan yang dibangun dalam sebuah komunikasi yang diwujudkan denga GUI pada program tersebut. Setelah kita membahas tentang system interaktif, kita melompat pada penggunaan GUI dalam dunia pengetahuan komputer. Beberapa fungsi GUI antara lain : Pointing device dengan perangkat berupa mouse Memiliki fungsi sebagai plug and play, yang mana memudahkan user dalam menginstall dan uninstall hardware/sofware (sinkronisasi) Membuat software-software yang menuntut aplikasi dalam komputer user yang dapat digunakan untuk kegiatan user dalam proses seperti menulis text, spreadsheet. sound, graphic dan lain-lain Untuk digunakan dalam pembuatan System Operasi sebagai User friendly dan ergonomis Pembuatan website Opensource software/hardware atau pengembang aplikasi-aplikasi skala besar lainnya. GUI juga memiliki beberapa komponen, antara lain : Label
Button
Text Field
Text Area
Combo Box
Radio Button
Check Box
Didalam GUI juga terdapat event, yaitu kejadian yang muncul ketika pengguna berinteraksi dengan aplikasi, tanpa event, GUI tidak akan bisa dijalankan. Ada beberapa jenis event dalam GUI, antara lain : · Event Source Adalah komponen visual seperti Button, Combobox, Text Field, dan lain-lain · Event Model Untuk mendeskripsikan bagaimana reaksi program terhadap interaksi pengguna pada bagian-bagian penting program. · Event Listener Objek penerima dan pengolah event, sebagai inti dari program (menampilkan informasi penting kepada pengguna, melakukan komputasi, dan lain-lain) · Event Object Objek yang terbentuk saat event dijalankan · Event Handler Blok method dari listener yang menetukan proses selanjutnya setelah melakukan event, misalnya tombol next, tombol save, dan lain-lain. Setelah penjelasan tentang GUI diatas, saya bertaruh anda semua bertanya-tanya tentang hubungan yang terjadi antara event dan program interaktif. Apa yang sebenarnya terjadi antara mereka berdua, apa jangan-jangan mereka mempunyai hubungan gelap? Atau bahkan mereka sebenarnya sama sekali tidak saling kenal? Ini menjadi sebuah misteri bagi saya dan kelompok saya. Sampai akhirnya kami bertiga memutuskan untuk mencari referensi di google untuk mendapatkan literatur yang berdasar tanpa harus menebak-nebak apa yang sebenarnya terjadi diantara mereka. Setelah saya dan teman-teman saya menyelam sambil minum es campur kedalam google, kami menemukan gambar yang menjelaskan tentang hubungan event dengan konsep program interaktif. Berikut ini adalah gambarnya :
Sebenarnya saya dan kawan-kawan tidak begitu mengerti maksud dari gambar tersebut, karena banyak tanda panahnya, saya sempat berpikir kalau gambar tersebut berhubungan dengan pernikahan seseorang. Karena disetiap undangan pernikahan biasanya terdapat dengan menuju lokasi hajatan. Nah, saya lihat ada kemiripan tanda panah yang ada pada gambar tersebut dengan gambar disetiap undangan-undangan pernikahan. Tapi ternyata saya salah, dan saya malu. Tetapi tidak apa-apa karena dalam setiap pembelajaran, melakukan kesalahan itu adalah sebuah hal yang biasa, yak an? J Setelah berdiskusi beberapa lama, kelompok kami akhirnya bisa mengartikan secara harfiah arti gambar tersebut. Dalam gambar tersebut ternyata dibedakan antara pemrograman standard dan pemrograman interaktif. Pada pemrograman standar, implementasi solusi dari program diberikan begitu saja tanpa ada interaksi antara program dengan pengguna, jadi pengguna tidak dapat menentukan apa yang ingin dilakukan olehnya karena semua telah diatur oleh program. Beda dengan pemrograman interaktif, pengguna mempunya kontrol terhadap keputusan yang akan diambilnya untuk kelanjutan solusi dari program tersebut. Dengan kata lain, disini terjadi interaksi antara program dengan pengguna, maka dari itu dinamakan pemrograman interaktif (Interactive Programming). Sekian penjelasan dari kelompok kami tentang system interaktif, mohon maaf apabila ada kesalahan dan kekurangan, saya akhiri, salam dan terima kasih. Sumber : http://www. nryulia.staff.gunadarma.ac.id http://www.noorhayatin.staff.umm.ac.id http://ittelkom.ac.id/staf/mhd/MateriKuliah/Software%20Project%20I/Referensi/e-Book/GUI.pdf http://en.wikipedia.org/wiki/Interactive_programming http://elektroengineering.blogspot.com http://momotarokun.wordpress.com http://noorhayatin.staff.umm.ac.i http://www.apl.jhu.edu/~hall/CWP-Chapter13/images/Checkboxes-WJ.gif http://www.roseindia.net/java/example/java/swing/images/SwingRadioButtonsWithoutSelected.gif https://www.java.net//blog/pkeegan/archive/comboToTable.png http://www.leepoint.net/notes-java/GUI/components/40textarea/TextAreaDemoBefore.gif http://docs.oracle.com/javase/tutorial/figures/uiswing/components/TextFieldDemo.png http://zetcode.com/img/gui/javaswing/multiplesources.png http://docs.oracle.com/javase/tutorial/figures/uiswing/components/LabelDemoMetal.png

Minggu, 28 April 2013

Tugas Pengantar Tekhnologi Game (Bagian 2)

SHADDING & MAPPING 1. Apa yang di maksud dengan Shadding? Shadding merupakan suatu variasi warna dan kecerahan yang timbul pada suatu permukaan berdasarkan pencahayaan yang dilakukan dengan efek pewarnaan tingkat kecerahan setiap face yang terdapat pada objek gambar. Shadding dibagi ke dalam dua metode, yaitu : a. Metode Flat Shading Flat shading adalah salah satu teknik shading dimana satu face mempunyai warna yang sama. Metode ini memiliki beberapa karakteristik, diantaranya : - Pemberian tone yang sama untuk setiap Polygon - Penghitungan jumlah cahaya mulai dari titik tunggal pada permukaan - Penggunaan satu normal untuk seluruhnya b. Metode Gouraud Shading Metode ini merender sebuah permukaan Polygon dengan interpolasi linier yaitu nilai intensitas yang mengenai setiap permukaan berbeda. Warna yang dipantulkan dihitung tiap vertex kemudian secara halus diinterpolasikan. Karakteristik shading yang dihasilkan : - Shading yang dihasilkan halus (tampak nyata) Vektor normal pada vertex V dihitung dengan jumlah rata-rata permukaan normal dari masing-masing Polygon dibagi vertex tersebut. - Perhitungan Incremental digunakan untuk memperoleh urutan nilai intensitas tepi (edge) antara scanlinebentuk dan untuk memperoleh intensitas berurutan sepanjang scanline. 2. Jelaskan mengenai Ambient, Specular dan Diffuse yang berkaitan dengan Shadding! a. Ambient Ambient adalah efek pencahayaan yang telah membaur dengan lingkungan sehingga arah cahaya tidak dapat diketahui, seakan-akan cahaya datang dari segala arah. Efek ini akan mempengaruhi terang atau tidaknya suatu lingkungan yang terlihat oleh mata. Semakin banyak lampu maka ruangan semakin terang, sebaliknya jika lampu sedikit maka ruangan remang-remang. Intensitas ambient pada suatu obyek dapat dicari dengan persamaan : I = Ia * Ka dimana, I= Intensitas yang dihasilkan Ia = Intensitas ambient Ka = Koefisien ambient b. Specular Specular adalah efek pencahayaan dimana bayangan sumber cahaya terlihat pada permukaan obyek. Efek specular terlihat pada obyek yang mengkilap. Semakin mengkilap permukaan suatu obyek maka makin jelas bayangan sumber cahaya yang terlihat pada permukaan obyek tersebut. Untuk mencari intensitas specular dapat digunakan persamaan sebagai berikut : I = Ip * Ks (cos θ ) n Dari persamaan intensitas specular tersebut cos θ menggunakan dot product antara arah pantulan dengan negasi dari arah sinar. I = Ip * Ks * ( R • V ) n dapat dihitung dengan dimana, I= Intensitas yang dihasilkan Is = Intensitas specular dari sumber cahaya ‘x’ Ks = Koofisien specular n = Variabel yang menentukan luas area yang berkilau jika terkena cahaya yang dipancarkan oleh sumber cahaya (bila n semakin besar maka cahaya semakin terfokus atau area yang berkilau menjadi lebih kecil) R = Arah pantulan, berupa unit vektor V = Negasi dari arah sinar Sedangkan vektor R diperoleh dari − S + 2 * ( S • N ) * N dimana, S = Vektor dari titik tabrak ke sumber cahaya N = Vektor normal dari obyek c. Diffuse Diffuse adalah menyebarkan cahaya yang datang dari sumber kecil tersebut sehingga meluas atau cahaya yang keluar tidak keras. Diffuse di gunakan untuk menghalangi area tertentu dari arah cahaya flash dan membelokkannya ke tempat lain. Ini mengurangi kekuatan flash yang kita gunakan tersebut. Umumnya tersedia diffuser khusus untuk flash tertentu mengingat head flash berbeda-beda. Sehingga posisi lampu sangat mempengaruhi efek diffuse ini. Intensitas diffuse dapat dicari dengan hukum Lambertian sebagai berikut: I = Ip * Kd (cosθ ) Dari persamaan intensitas diffuse tersebut cos θ dapat dihitung dengan melakukan dot product antara sinar dari lampu ke titik tabrak obyek dengan normal obyek itu, masing-masing merupakan unit vektor. Sehingga didapat persamaan baru I = Ip * Kd * ( L • N ) dimana, I= Intensitas yang dihasilkan Ip = Intensitas diffuse dari sumber cahaya ‘x’ Kd = Koofisien diffuse N = Vektor normal dari obyek L = Vektor dari titik tabrak ke sumber cahaya θ = Sudut antara N dan L 3. Mapping berkaitan dengan objek Material. A). Apa yang dimaksud dengan Mapping. Mapping merupakan sebuah proses dimana dua model data dibuat menggunakan sebuah link diantara kedua model data tersebut yang didefinisikan untuk memetakan setiap fungsi dua ataupun tiga dimensi.. B). Sebutkan dan Jelaskan jenis-jenis Mapping. a. Texture mapping adalah teknik shading untuk pengolahan gambar yang memetakan sebuah fungsi pada permukaan tiga dimensi dalam scene. Fungsi yang dipetakan mencakup satu dimensi, dua dimensi, dan tiga dimensi dan dapat digambarkan sebagai array atau fungsi matematika atau gambar. b. bump mapping untuk memperjelas karakteristik permukaan yang bergelombang - Transparency mapping untuk mengatur intensitas cahaya permukaan tembus pandang - Specularity mapping untuk mengubah kehalusan permukaan - Illumination maaping untuk memodelkan distribusi cahaya yang datang dari berbagai arah 4.A). Rancanglah game sangat-sangat sederhana ! Disini saya membuat game sederhana yang berjudul “Permainan Ular”. Rancangannya yaitu, pertama-tama kita menentukan target rancangan game ini. Disini saya hanya membatasi sampai animasi sederhana saja, deteksi area ular mencari makanan, makanan ular itu sendiri, dan kondisi dimana kepala ular bertabrakan dengan anggota badannya sendiri. Untuk awal pengerjaan game, kita hanya membutuhkan 2 class. Yang satu untuk panel utama pada game dan satu lagi untuk ular yang akan berjalan. Ini belum termasuk class tambahan lain. Mulai dengan class ular. Yang dibutuhkan hanya koordinat ular, arah ular menghadap, dan panjang maksimal. Sedangkan behavior yang bisa dilakukan ular antara lain, mengubah arah menghadap, dan update koordinat anggota badan saat berjalan. Berikut ini adalah source code-nya : package snakehq; import java.awt.Point; public class Snake { //************// //*** Variable area ***// //*********************// // coordinates of body private Point[] body; // facing private int face; //*******************// //*** Method area ***// //************// public Point[] getBody() { return body; } public void public void update() { // update body for(int i = body.length - 1; i > 0; i--) { body[i].x = body[i-1].x; body[i].y = body[i-1].y; } // update head Point head = body[0]; if(face == NORTH) { if(head.y <= 0) head.y = Panel.AREA_HEIGHT - 1; else head.y--; } else if(face == EAST) { Bagian terpenting dari game ini adalah panel kerangka game, source code-nya: package snakehq; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.event.KeyAdapte; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.SwingUtilities /** * Panel class, the skeleton of the game */ public class Panel extends JPanel { //*******************// //*** Variable area ***// //*******************// private Snake snake; private Thread animation; public static final int PANEL_WIDTH = 400; public static final int PANEL_HEIGHT = 300; public static final int AREA_WIDTH = PANEL_WIDTH / Snake.SNAKE_SIZE; public static final int AREA_HEIGHT = PANEL_HEIGHT / Snake.SNAKE_SIZE; //******************// //** Constructor area **// //*******************// public Panel() { // render the snake private void drawSnake(Graphics2D g2) { Point[] s = snake.getBody(); int pixel = Snake.SNAKE_SIZE; // fill the head g2.fillOval(s[0].x * pixel, s[0].y * pixel, pixel,pixel); // draw body outline for(int i = 0; i < s.length; i++) { g2.drawOval(s[i].x * pixel, s[i].y * pixel, pixel, pixel); } } // initiate animation thread private void initThread(); animation = new Thread(new Runnable() { public void run() {; while(true) { try { // sleep a while for animation Thread.sleep(300); } catch // Keyboard handler of the game private class KeyManager extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { super.keyPressed(e); int c = e.getKeyCode(); switch(c) { case KeyEvent.VK_RIGHT: snake.moveEast(); break; case KeyEvent.VK_LEFT: snake.moveWest(); break; case KeyEvent.VK_UP: snake.moveNorth(); break; case KeyEvent.VK_DOWN: snake.moveSouth(); break; } } } /** * Main method that run firstly when the program starts * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here B). Buat scenario game tersebut ! Skenario game ini adalah dimana ular harus memakan titik makanan yang ada didalam kotak, apabila ular berhasil mengenai makanannya, maka badannya akan bertambah panjang. Terus bertambah panjang sampai kepala ular menabrak anggota badannya sendiri. Disini lah gamenya berakhir. C). Buat 1 objek yang ada didalam game tersebut ! Objek pada game ini ada 2 yang penting. Pertama ular itu sendiri, yang kedua adalah thread yang digunakan untuk mengatur animasi, ini diatur dalam method initThread(). Bagian penting lainnya adalah private class KeyManager. Digunakan untuk menangkap event yang dilakukan pada keyboard. Sumber : http://sadchalis15.wordpress.com/2012/01/10/rendering-grafika-komputer/ http://maulbaikyah.blogspot.com/2010/10/grafik-komputer-pencahayaan.html http://tikknara.blogspot.com/2010/12/ray-tracing.html http://tikknara.blogspot.com/2010/12/ray-tracing.html http://fantasygrafis.blogspot.com/2010/11/bouncediffuse.html http://tikknara.blogspot.com/2010/12/ray-tracing.html http://sadchalis15.wordpress.com/2012/01/10/rendering-grafika-komputer/

Minggu, 21 April 2013

Tugas Pengantar Teknologi Game (Bagian 1)

Scan Conversion Scan Conversion merupakan metoda untuk memetakan titik ke dalam suatu pixel. Scan Conversion dapat dilakukan terhadap Line (garis), polygon, ataupun garis lengkung (kurva) yang terdiri dari beberapa teknik untuk mengubah vertikal / horizontal frekuensi scan dari sinyal video untuk tujuan dan penerapan yang berbeda. Berhubungan dengan pembuatan garis pada Scan Conversion terdiri dari beberapa Algoritma yang dibutuhkan, seperti : • Algoritma DDA, adalah suatu algoritma (pendekatan) pengkonversian suatu himpunan pixel–pixel menjadi suatu garis yang didasari atas perhitungan delta(x) dan delta(y); • Algoritma Bresenham merupakan suatu algoritma (pendekatan) yang dikreasikan oleh Bresenham yang tidak kalah akurat dan efisien dengan algoritma primitif lainnya (seperti DDA), bagian pengkonversian (scan–konversi) garis akan melakukan kalkulasi untuk penambahan nilai–nilai integer (yang dibutuhkan untuk membentuk garis) yang disesuaikan dengan tipe grafik yang dipakai oleh layar komputer., dan yang terakhir adalah : • Algoritma C++ Setelah beberapa Algoritma yang di butuhkan dalam pembentukan garis di Scan Conversion yang telah saya sampaikan tadi, saya akan mengulas salah satu cara penggabaran garis dengan menggunakan metoda Algoritma Bresenham, yaitu : - ALGORITMA GARIS BRESSENHAM Prosedur untuk menggambar kembali garis dengan membulatkan nilai x atau y ke bilangan integer memerlukan waktu. serta variabel x,y maupun m memerlukan bilangan real karena kemiringan merupakan nilai pecahan.Bressenham mengembangkan algoritma klasik yang lebih menarik, karena hanya menggunakan perhitungan matematik dengan bantuan bilangan integer. Dengan demikian tidak perlu membulatkan nilai posisi pixel setiap waktu. Langkah-langkahnya adalah sebagai berikut: 1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis. 2. Tentukan salah satu titik disebelah kiri sebagai titik awal (x0,y0) dan titik lainnya sebagai titik akhir (x1,y1) 3. Hitung dx, dy, 2dx dan 2dy-2dx 4. Hitung parameter P0 = 2dy – dx 5. Untuk setiap xk sepanjang garis dimulai dengan k=0 § Bila Pk < 0 maka titik selanjutnya adalah (xk+1, yk) dan Pk+1=Pk+2dy § Bila tidak maka titik selanjutnya adalah (xk+1, yk+1) dan Pk+1=Pk+2dy-2dx 6. Ulangi nomor 5 untuk menentukan posisi pixel selanjutnya sampai x=x1 dan y=y1 Dalam pembentukan garis dalam penerapan materi Scan Conversion, ada beberapa hal yang juga harus kita perhatikan dalam menggambarkan garis, seperti ketebalan garis (thickness) dan juga Bentuk tepi garis (ends) yang terdiri dari : Butt, Round dan Square. Berikut merupakan gambar dengan bentuk tepi Butt, Round dan Square. Selain adanya teknik penggambaran garis, di dalam Scan Conversion dikenal juga teknik penggabungan garis (Joining), seperti Ugly, Bevel, Round, Miter. Berikut merupakan gambar dari teknik penggabungan dua garis dengan tipe Ugly, Bevel, Round, dan Miter. - Mitter >> titik pertemuan 2 garis lurus yang membentuk sudut lancip. - Round >> titik sudut pertemuan yang membulat. - Bevel >> titik sudut pertemuannya tampak terpotong rata. - None >> titik sudut pertemuan yang terpotong agak membentuk siku. a. Type Ugly Joined Line b. Type Miter, Square dan Bevel Join Transformations Transformation adalah suatu metoda untuk mengubah lokasi titik. Operasi-Operasi Primitive pada Transformations terbagi menjadi:  Scale,  Rotate,  Shear,  Flip,  Translate Berikut ini merupakan contoh dari gambar pembentukan suatu objek masing-masing: a. Scale merupakan skala pengali sama untuk semua komponen. b. Rotate merupakan adalah merotasi atau memutar suatu objek dengan nilai yang ditentukan. Dibawah ini adalahRotasi terhadap titik (0,0) sebanyak 450 . c. Translasi (Perpindahan) d. Pencerminan (Flip) e. Shear Dalam transformasi linear, metoda pengubahan lokasi titik dilakukan secara teratur, dan membentuk semacam pattern. Misalnya dalam grafik 2 dimensi, transformasi linear melakukan penambahan atau pengurangan garis lurus secara teratur. Berikut merupakan contoh transformasi linear : Sedangkan transformasi non linear adalah metoda pengubahan lokasi titik yang tidak dilakukan secara teratur. Dalam grafik, pengurangan atau penambahan garis yang dilakukan tidak akan membentuk sebuah pattern yang teratur. Contoh transformasi non linear : Di dalam teknik Tranformasion terdapat beberapa contoh Linear Transformation dan Non-Linear Transformation dari Operasi-Operasi Primitive transformation! - Contoh operasi primitive Perbedaan antara Geometric Transformation dan Color Space Transformation adalah dalam transformasi geometric perubahan titik lebih memfokuskan pada bentuk dari objek yang berubah tersebut. Sedangkan Color space transformation lebih menitik beratkan pada perubahan warna dari titik-titik pixel tersebut. Sedangkan, Sistem koordinat homogen adalah system koordinat yang mempunyai satu dimensi lebih tinggi dari system koordinat yang ditinjau. Digunakan untuk menyatakan semua proses transformasi dengan perkalian matrix termasuk pergeseran. Proyeksi Proyeksi merupakan salah satu jenis transformasi, yaitu transformasi koordinat. Proyeksi pada bidang datar (planar) dilakukan melalui sinar proyeksi yang muncul dari titik pusat proyeksi melewati setiap titik dari benda dan memotong bidang proyeksi (projection plane) untuk mendapatkan benda hasil proyeksi. Proyeksi Planar (Planar Geometric Projections) dibedakan menjadi: 1. Proyeksi Paralel. Berdasarkan hubungan antara arah proyeksi dengan vektor normal dari bidang proyeksi, proyeksi paralel dibedakan menjadi: 1. Orthographic  Proyeksi orthographic ada yang disebut proyeksi axonometric. Proyeksi Axonometric dibedakan menjadi proyeksi:  isometric,  dimetric, dan  trimetric. 2. Oblique. 2. Proyeksi Perspektif. Perbedaan antara proyeksi parallel & perspektif adalah: pada proyeksi parallel jarak antara titik pusat proyeksi ke bidang proyeksi tidak terhingga, sementara para proyeksi perspektif jarak antara titik pusat proyeksi ke bidang proyeksi bersifat infinite (tertentu). - Proyeksi Orthographic Proyeksi Orthographic diperoleh apabila sinar proyeksi tegak lurus dengan bidang proyeksi. Proyeksi orthographic sering digunakan untuk menghasilkan tampak depan, tampak belakang, tampak samping dan tampak atas dari sebuah benda atau disebut sebagai Multiview orthographic. Tampak atas, tampak belakang dan tampak dari samping sebuah benda sering disebut sebagai elevation. Sedangkan tampak dari atas disebut sebagai plan view. Transformasi untuk proyeksi multiview orthographic dapat diperoleh dengan rumus Proyeksi terhadap bidang x-z:qx = px,qy =pz Proyeksi terhadap bidang y-z:qx = px,qy =pz Proyeksi terhadap bidang x-y:qx = px,qy =py Dimana q(x,y) merupakan titik hasil proyeksi dari p(x,y,z) seperti digambarkan di bawah ini : Proyeksi orthographic yang menampakan lebih dari satu permukaan benda disebut sebagai proyeksi axonometric • proyeksi axonometric dilakukan dengan mengatur agar bidang proyeksi berpotongan dengan ketiga sumbu koordinat (principal axes) pada sudut yang sama maka kita akan memperoleh proyeksi isometric • proyeksi dimetric yaitu proyeksi yang diperoleh dengan mengatur agar bidang proyeksi berpotongan dengan dua sumbu utama pada sudut yang sama • proyeksi trimetric diperoleh apabila ketiga sumbu utama berpotongan dengan bidang proyeksi pada sudut yang berbeda - Proyeksi Perspective Proyeksi Perspective diperoleh saat sudut pandang yang lebih realistis dibandingkan proyeksi orthographic. Pada kenyataannya jarak benda terhadap kita akan mempengaruhi bagaimana benda tersebut terlihat. Benda yang terlihat jauh akan kelihatan kecil sedangkan benda yang dekat akan terlihat lebih besar. Efek ini disebut sebagai shortening. Pada perspektif semua garis menghilang pada satu atau lebih titik yang sama atau disebut titik hilang (vanishing point). Contoh dari proyeksi perspektif : Perbedaan antara proyeksi parallel & perspektif secara umum ialah pada proyeksi parallel jarak antara titik pusat proyeksi ke bidang proyeksi tidak terhingga, sementara para proyeksi perspektif jarak antara titik pusat proyeksi ke bidang proyeksi bersifat infinite (tertentu). Dalam penggunaan kedua teori ini terdapat beberapa perbedaan yang dapat dilihat dari tabel perbandingan yang ada seperti di bawah ini : Sekian informasi yang dapat saya sampaikan melalui Tugas Pengantar Teknologi Game yang pertama, mohon maaf apabila ada kesalahan. Terimakasih. Sumber : http://dazako.blogspot.com/2009/05/transformasi-obyek-dua-dimensi.html http://www.mathworks.com/matlabcentral/fileexchange/28790-colorspace-transformations https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC4QFjAA&url=http%3A%2F%2Finst.eecs.berkeley.edu%2F~cs184%2Ffa05%2Flectures%2Flecture- 03.pdf&ei=jfFlUdm5ObCuiQf2tYCwBA&usg=AFQjCNF5mydLIEOwhMZdJLTd_oyt_-3stA&sig2=BF12NPxbZ92pVMtnK8c62A&bvm=bv.45107431,d.aGc&cad=rja http://harmon-middle-school.wikispaces.com/Linear+and+Nonlinear+Graphs!!! http://fellypun.wordpress.com/2013/01/15/80/ http://prihastomo.wordpress.com/2011/01/17/konversi-scan/

Jumat, 21 Desember 2012

Membuat Animasi Menggunakan Software Ogre

Membuat animasi skeleton untuk model mesh OGRE memang gampang gampang susah. Tetapi meskipun demikian, itu bukanlah sesuatu hal yang mustahil untuk dilakukan. Kita dapat membuatnya dengan dua cara yaitu cara halus dan cara kasar. Kedua cara tersebut memanglah berbeda namun tetap dapat saling melengkapi. Pada contoh kali ini, kita akan mencoba mempraktekkan kedua cara tersebut dalam membuat animasi skeleton. Langkah-langkah untuk menganimasikannya adalah sebagai berikut : 1. Buka model Sonic The Hedgehog menggunakan aplikasi Blender. Setelah itu, aturlah tampilan workspace yang Anda gunakan sehingga memiliki jendela 3D View, Button Window, User Preferences, Timeline, dan Action Editor. Khusus untuk Timeline dan Action Editor, kedua jendela ini akan sangat kita butuhkan dalam pembuatan animasi ini. Timeline nantinya kita gunakan sebagai jendela untuk merekam dan menguji animasi yang akan kita buat dari Action Editor. Untuk lebih jelasnya, perhatikan gambar di bawah ini!
2. Setelah itu, perbesarlah dahulu model Sonic yang ada pada jendela 3D View dengan menggunakan scroll mouse. Ini dimaksudkan agar kita dapat melihat dengan jelas armature-armature yang akan kita gerakan dari model tersebut. Selanjutnya, klik tombol Record dari jendela Timeline untuk mulai merekam animasi. Oiya, semua gerakan armature akan dianimasikan dalam jendela Pose Mode. Perhatikan gambar di bawah ini!
3. Lalu, gerakanlah armature-armature yang akan dianimasikan pada jendela 3D View. Saat menggerakkan armature-armature tersebut, pastikan Anda menggunakan frame yang sesuai dengan keinginan Anda. Sedangkan untuk berpindah frame, gunakan saja jendela Action Editor agar lebih mudah. Sebagai contoh, kita akan menganimasikan Sonic tersebut untuk berjalan. Rencana gerakannya adalah sebagai berikut. Pada frame pertama kita akan melangkahkan kaki kanan ke depan disertai gerakan kaki kiri ke belakang. Setelah itu, pada frame kesepuluh giliran kaki kiri yang melangkah ke depan dan kaki kanan yang ke belakang. Jadi untuk dapat melakukannya, kita pilih frame pertama pada Action Editor lalu gerakkan armature-armature kaki kanan ke depan dan armature-armature kaki kiri ke belakang. Setelah itu, pindahlah ke frame kesepuluh lalu gerakkan armature-armature kaki kiri ke depan dan armature-armature kaki kanan ke belakang. Jika gerakan armature-armature tersebut berhasil direkam maka akan muncul node kuning pada jendela Action Editor sesuai dengan armature apa saja yang telah digerakkan.
4. Setelah itu, Anda bisa mengetes animasi yang telah dibuat menggunakan tombol Play yang ada pada jendela Timeline. Oiya, secara default animasi tersebut akan diberi nama Action dan semakin jauh jarak antarframe yang memiliki animasi pada Action maka secara otomatis gerakan animasi tersebut akan semakin halus. 5. Bila dirasa animasi yang kita buat telah sesuai dengan keinginan maka kita dapat meng-ekpornya ke format mesh dan skeleton OGRE. Anda masih ingat caranya, bukan? Sama seperti cara pengeksporan biasa, namun kali ini kita harus mengikutkan skeleton yang beranimasi tersebut. Cara mudah yaitu dengan menekan tombol Add pada opsi Skeleton pada jendela OgreMeshesExporter. Setelah itu, baru klik tombol Export. Perhatikan gambar berikut!
6. Selanjutnya, kita buka model Sonic tersebut menggunakan aplikasi CeguiMeshViewer. Masuklah ke tab Anim pada jendela Mesh, maka seharusnya akan ada pilihan animasi yang bernama Action. Perhatikan gambar di bawah ini!
7. Terakhir, cobalah animasi Action tersebut dengan cara mengkliknya. Bila animasi tersebut sesuai dengan apa yang Anda lihat di aplikasi Blender maka bisa dikatakan proses pembuatan animasi dengan cara halus ini telah berhasil dilakukan. Namun bila tampilan animasi itu berbeda dengan yang ada di aplikasi Blender atau bahkan hancur sama sekali, maka Anda dapat memilih untuk mengulangi langkah-langkah di atas atau mengikuti cara kasar dalam pembuatan animasi berikut ini. Sebagai contoh, sebenarnya animasi dari model Sonic tersebut tergolong animasi yang hancur saat diekspor ke OGRE. Jadi, mau tidak mau kita harus menggunakan cara kasar dalam membuat animasinya. Paling tidak, lebih baiklah dari hasil pembuatan animasi cara halus sebelumnya. Untuk lebih jelasnya, perhatikan gambar di bawah ini!
Cara kasar yang saya maksud di sini yaitu cara manual dalam membuat animasi. Kita melakukannya dengan cara mengedit secara langsung skrip xml dari mesh dan skeleton. Ya, mirip-mirip hacker gitulah . Namun, kali ini saya hanya akan memfokuskan pada pembahasan secara garis besar tentang cara mengedit file *.skeleton .xml-nya saja. Biarpun demikian, saya juga akan mencoba sedikit memberi gambaran tentang isi file *.mesh.xml-nya. Jadi, untuk ngoprek-ngopreknya Anda lakukan sendiri dengan menggunakan metode Try and Error, ya! Pada file *.mesh.xml ini ada sebuah seksi yang bernama skeletonlink. Seksi ini gunanya untuk meng-embed file skeleton yang akan kita pakai untuk animasi. Jadi, bila kita salah menentukan nama dari skeleton yang kita embed tersebut, maka akibatnya adalah file *.mesh yang dihasilkan akan sama saja seperti tidak ber-skeleton. Ini dapat terjadi bila kita asal saja mengganti nama mesh dan skeletonnya. Misalnya, penggantian nama dari undefined1_None.mesh menjadi sonic.mesh dan undefined1_None.skeleton menjadi sonic.skeleton. Walaupun nama mesh dan skeletonnya disamakan, namun sebenarnya file sonic.mesh tersebut tetap masih meng-embed file skeleton dengan nama undefined1_None.skeleton bila belum di-edit nama skeletonnya pada seksi skeletonlink tersebut. Sedangkan untuk seksi submeshes, hanyalah berisi koordinat-koordinat vertex untuk penggunaan material yang dipakai model tersebut.
Kembali ke inti permasalahan. Sekarang kita akan menelaah isi dari file *.skeleton.xml-nya. File tersebut berisi tiga buah seksi, yaitu bones, bonehierarchy, dan animation.Untuk seksi bones berisi daftar dari tulang-tulang atau armature-armature yang digunakan oleh objek mesh. Sedangkan untuk seksi bonehierarchy, berisi daftar susunan hirarki dari tulang-tulang tersebut. Lain halnya untuk seksi animation. Seksi ini berisi daftar animasi yang ada dan dapat dimainkan oleh model mesh yang meng-embed-nya. Jadi pada seksi animation inilah sasaran kita saat “mengobrak-ngabrik” file *.skeleton.xml untuk membuat animasi secara manual. Keterangannya adalah sebagai berikut: * Animation : nama dari animasi yang dapat kita gunakan. * Tracks : kumpulan dari track-track dari sebuah animasi. * Track : sebuah gerakan dari keseluruhan animasi berdasarkan tulang. * Keyframes : kumpulan dari keyframe-keyframe dari sebuah track animasi. * Keyframe : kunci gerakan dari sebuah track animasi berdasarkan waktu. * Translate : pergeseran dari tulang pada sumbu x, y, dan z. * Rotate : perputaran dari tulang sesuai dengan sudut. * Axis : patokan untuk perputaran tulang pada sumbu x, y, dan z. Kesimpulannya yaitu kita dapat membuat banyak animasi pada seksi animation dengan track dari tulang-tulang yang bergeser atau berputar pada sumbu x, y, dan z dengan lama gerakan yang dapat kita tentukan. Hal-hal yang menjadi kesulitan dari pembuatan animasi cara kasar atau manual ini, sesuai dengan pengalaman saya yaitu : 1. Dalam penentuan nama dari bone yang akan kita gerakkan, Untuk menangani permasalahan tersebut saya membuat daftar bone memakai printscreen-an dari model pada aplikasi Blender. Perhatikan gambar berikut ini!
2. Penentuan gerakan animasi dari tulang yang dimaksud. Seringkali apa yang sesuai dengan logika menjadi tidak sesuai dengan kejadian saat file mesh tersebut dijalankan bersamaan dengan skeleton-nya. Untuk mengatasi masalah ini, saya mencoba cara halus di atas untuk mengambil gerakan tulang yang benar-benar saya inginkan walaupun agak hancur. Intinya, selamatkan yang bagus dan musnahkan yang rusak. 3. Pembuatan animasi dengan cara ini seringkali membuat mesh dari objek tersebut seperti tertarik ke titik tertentu. Tingkat ketertarikan mesh tersebut tergantung VGA Card yang digunakan. Sebagai contoh, perhatikanlah dua gambar di bawah ini! Sebelah kiri memakai NVIDIA dan sebelah kanan memakai VIA. Bukan maksud hati membanding-bandingkan merek VGA Card, lho! Ini cuma sebagai referensi saja, ya!
Sekian info mengenai cara pembuatan Animasi 3D menggunakan Software Ogre yang dapat saya beritahukan, mudah-mudahan bermanfaat ya untuk para pembaca :):):). Selamat Mencoba