Kamis, 27 Juni 2013

Tugas Pengantar Teknologi Game, Visibility (Bagian 4)

Hai para blogger kali ini saya kembali lagi dengan segudang tugas dari Tugas Pengantar Teknologi Game, Interactive System yang ke empat. Berikut tugas-tugas yang saya kerjakan bersama kedua rekan saya Azzanul Anwar dan juga Ruslan Hadi, cekidot... Disini akan banyak istilah2 baru yang akan dibahas berhubungan dengan istilah-istilah dunia per Game an nih para blogger... Ada yang tau istilah dari scene 2.5D ? scene 2.5D adalah sebuah teori game dengan tampilan 3D datar (3D Plaine) namun biasa juga disebut game 2D tapi mereka tidaklah sama. Game seperti ini bukan 2D tapi tidak juga full 3D. Biasanya gameplaynya memang mirip game 2D dimana kita hanya bisa bergerak secara horizontal dan vertical namun beberapa gambarnya di render secara 3D. Teori grafik 2.5D ini biasa juga disebut dengan pseudo-3D sedangkan pada istilah game lebih dikenal dengan isometric/diametric atau bahkan trimetric projection. Berbeda dengan game 2D, dalam game 3D anda akan menemui tiga sisi (X,Y,Z). Game bertipe ini menggunakan 2 macam tipe pemodelan: -3D object/model : ini merupakan model/ object 3 dimensi yang nantinya akan anda jadikan sebagai karakter utama, bangunan, object-object seperti senjata,musuh, permukaan tanah ,pohon, bukit,dll. Object 3d seperti ini bisa anda buat dengan menggunakan program seperti “3D S.Max”,”Maya”,”Hash”,dll -2d graphic: gambar 2D juga berperan dalam membuat game bertipe 3D fungsi gambar 2D antara lain: - sebagai texture untuk object - sebagai latar belakang ( langit , pemandangan,dll) - sebagai meteran untuk nyawa , gambar untuk speedometer (untuk game racing), dll. Sedangkan untuk membuat animasi dalam 3D dapat digunakan bones(tulang) yang layaknya manusia dapat digerakkan. Selain itu animasi tetap juga dapat menggunakan bitmap (gambar 2D) untuk animasi pada texture air, api,dll. Kegunaan 2.5D dalam game adalah sebagai pengaturan gerakan seperti golden axe, double dragon, pathfinding musuh biasanya cukup sederhana , yang berguna jika musuh di kiri gerak ke kiri, kalau lebih atas maka gerakin musuh ke atas dst. Atau bisa dikatakan dengan istilah mengikuti posisi pemain (musuh dibuat bisa mengakses posisi pemain) dan agar lebih 'hidup' (kalau ada banyak musuh nggak melakukan gerakan yang sama secara bersamaan terus menerus), secara acak si musuh mukul atau pake jurus tertentu kalau dekat pemain. Selain itu, juga ada istilah Level of Detail (LOD) yang merupakan sebuah Karakteristik untuk menciptakan dunia virtual. Konsep yang digunakan merupakan sebuah konsep untuk geometri rinci saja, konsep dasar bisa disamaratakan. Baru-baru ini, teknik LOD termasuk manajemen juga shader untuk tetap mengontrol kompleksitas pixel. Suatu bentuk tingkat manajemen detail telah diterapkan untuk tekstur selama bertahun-tahun, di bawah nama mipmapping, juga memberikan kualitas rendering yang lebih tinggi. Ini adalah hal yang lumrah untuk mengatakan bahwa "sebuah objek telah LOD'd" ketika objek disederhanakan oleh mendasari algoritma LOD-ing. Konsep dari Level of Detail (LOD) itu sendiri bisa digambarkan sebagai berikut :
Dalam suatu game, Terrain merupakan model yang sangat besar. Membuat setiap pointnya secara eksplisit sangatlah tidak mungkin, maka metoda untuk mengotomatiskan pembangkitan Terrain merupakan hal biasa. Ketika proses rendering, sebagian dari Terrain tertutup dan sebagian lain sangat jauh, oleh karena itu dikembangkanlah Terrain LOD algorithms. Teknik LODs mempunyai banyak jenis, salah satunya adalah Terrain LODs. Algoritma ROAM merupakan algoritma terrain LOD yang menggunakan top-down dengan struktur data binary triangel. Algoritma ROAM (real-time Optimally Adapting Meshes) sangat baik untuk diimplementasikan pada terrain yang tidak datar atau terrain yang bergelombang. Ukuran dari terrain tidak mempengaruhi jumlah poligon yang terbentuk. Namun semakin besar jumlah poligonnya, makaframe-Ratenya semakin kecil. Ada juga Triangle Bintrees (Binary Triangle Trees) yang merupakan sebuah representasi populer permukaan medan yang elevasi telah sampel pada interval jarak teratur adalah triangulasi subset dari titik sampel yang terdiri dari sumbu-blok, segitiga siku-siku isoceles. Selanjutnya, adalagi istilah Metode quadtree yang merupakan sebuah bentuk partisi hasil modifikasi dari metode fixed block. Teknik awalnya membagi citra kedalam range-range berbentuk 4 bujur sangkar yang sama besar. Setelah itu pada range yang memiliki error lebih besar dari threshold akan dilakukan partisi lagi pada range tersebut. Begitu pula dengan range didalamnya, apabila masih lebih besar dari threshold akan dipartisi kembali. Tetapi pada batasan maksimum, partisi akan berhenti dilakukan. Jenis partisi ini cukup menghemat waktu pada saat pemetaan domain ke range sebab tidak semua range memiliki ukuran kecil. Kelemahan dari partisi ini adalah threshold yang dipergunakan sama untuk segala level partisi. Setelah diteliti, hal ini tidak efektif dan hasil dari partisi menghasilkan banyak range. Berdasarkan analisis diatas, metode quadtree memiliki keunggulan lebih. Dengan menggunakan algoritma adaptive threshold maka kelemahan dari quadtree dapat diatasi. Berikut merupakan gambar dari Metode Quadtree dan Metode Triangle Bintrees (Binary Triangle Trees) adalah : 1.Metode Quadtree
2.Metode Triangle Bintrees (Binary Triangle Trees)
Sumber : http://dennycharter.wordpress.com/2008/05/08/konsep-dasar-web-gis/ http://library.trunojoyo.ac.id/elib/detil_jurnal.php?id=2397&PHPSESSID=08145cf597a1381559af01d599e3d7dd http://www.scribd.com/doc/55249400/presentasi22

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/