The Real-Time Message Loop DirectX Basic
S E N G
- Vertices
H A
Transformation
N S
Level 3
GRAFIKA KOMPUTER DAN ANIMASI U
N S E N
Windows Basic
G
- H
The Parts of a Game
A Primer of Basic Windows
A N
Creating a Window
S
The Real-Time Message Loop
U N
DirectX Basic
Getting Started with Direct3D
Going FullScreen S E N
An Overview of the Three Transforming Vertices
G
Dimension The Geometry Pipeline
- Untransformed Vertices
3D Coordinate Systems
H
What is the Matrix?
A
Triangular Geometry
N
Setting the World Color
S
Transformation Light
U
Setting the View Drawing a Triangle
N
Transformation Flexible Vertex Formats Setting the Projection Vertex Buffers Transformation Drawing the Primitive Lighting Releasing Vertex Buffers The Quick Review The Finished Program The Finished Program
Pemrograman 3D sangatlah berkaitan dengan
Matematika.- H A N S U N
Diperlukan pemahaman akan konsep bangun dan ruang 3D di dalam Matematika.
3D Coordinate Systems
Triangular Geometry
Color
S E N G
Light
S E N
Untuk memahami sistem koordinat 3D,
G
diperkenalkan terlebih dahulu sistem koordinat
- H Kartesius.
A
Sistem koordinat Kartesius (sistem koordinat 2D)
N
adalah suatu sistem yang menentukan lokasi tepat
S U suatu titik di suatu bidang datar. N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Terdapat 2 sumbu (sumbu-x dan sumbu-y) dan
G masing-masing memiliki titik pusat (0).
- H
(x,y) = (12,4) → titik koordinat, digunakan untuk
A
menentukan seberapa jauh suatu titik dari pusat
N koordinatnya (0,0).
S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Pengembangan dari sistem koordinat 2D, dengan
G
menambahkan 1 sumbu baru (sumbu-z) yang tegak
- H lurus terhadap sumbu-x dan sumbu-y.
A N S U N
(x,y,z) = (12,4,15) (x,y,z) = (12,4,-15) http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Jika suatu titik di dalam sistem koordinat 3D
G
merujuk pada suatu posisi di ruang, maka kita dapat
- H
membentuk sebuah larik dari posisi-posisi pasti yang
A dapat menjadi suatu model 3D. N
Semakin banyak titik yang disimpan akan semakin
S U
banyak memakan ruang memory, sehingga diperlukan
N metode khusus untuk menanganinya.
Caranya dengan menggunakan segitiga.
Bangun segitiga dapat diatur dan digunakan untuk membuat sembarang bentuk/ model yang dapat diimajinasikan. S E N G
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Direct3D didesain dengan fokus utama penerapan
G
segitiga dan menggabungkan segitiga-segitiga menjadi
- H suatu bentuk.
A
Untuk membuat sebuah segitiga diperlukan 3 titik.
N S
Titik merupakan suatu lokasi tepat dalam ruang 3D,
U
dan didefinisikan oleh 3 nilai (yakni x, y, dan z).
N Setelah ditulis dalam kode program, ketiga titik ini membentuk suatu bidang datar, yang selanjutnya dapat diputar, diberi tekstur, diposisikan dan dimodifikasi sesuai kebutuhan.
- H A N S U N
x=0, y=5, z=1
x=5, y=-5, z=1
x=-5, y=-5, z=1
S E N G
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Untuk membuat obyek 3D, segitiga-segitiga tersebut
G
perlu digabungkan. -
H
Namun, mendefinisikan koordinat 3D untuk setiap
A
segitiga dalam sebuah game berulang kali sangatlah
N S kompleks.
U
Daripada mendefinisikan setiap titik sudut segitiga
N
dalam sebuah game, yang perlu dilakukan sebenarnya
hanyalah membuat suatu daftar titik-titik, yang menyimpan koordinat dan informasi dari setiap titik, serta urutan kemunculannya. S E N
Primitive adalah suatu elemen tunggal dalam
G
lingkungan 3D, seperti sebuah segitiga, sebuah garis,
- titik, dan sebagainya.
H A
Daftar beberapa cara primitives dapat
N
dikombinasikan untuk membuat obyek 3D:
S 1.
Point Lists
U N 2
Line Lists 3. Line Strips 4. Triangle Lists 5. Triangle Strips 6. Triangle Fans S E N
Daftar titik-titik yang diperlihatkan sebagai titik-titik
G
tunggal dalam layar. -
H
Dapat digunakan untuk me-render 3D starfields,
A
membuat garis titik-titik, menampilkan lokasi di
N S minimaps, dan sebagainya.
U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3
Digunakan untuk berbagai efek, termasuk 3D grids, hujan deras, garis penunjuk arah, dan sebagainya.
Daftar titik-titik yang membentuk ruas garis terpisah antara titik-titik ganjil dan titik berikutnya.
S E N G
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Mirip seperti line list, namun seluruh titik dalam
G
suatu daftar titik saling terhubung oleh ruas garis. -
H
Untuk membuat wire-frame images, seperti wire-
A
frame terrain, bilah-bilah rumput, dan obyek non-
N S model lainnya.
U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Daftar titik-titik dimana setiap kelompok 3 titik
G
digunakan untuk membuat sebuah segitiga terpisah. -
H
Digunakan dalam berbagai efek, seperti force-fields,
A
ledakan, obyek-obyek yang disatukan, dan
N S sebagainya.
U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3
Metode yang paling umum digunakan dalam grafik dan pemodelan 3D.
Daftar titik-titik yang membentuk serangkaian segitiga yang dihubungkan satu dengan lainnya.
S E N G
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Mirip dengan suatu triangle strip, namun seluruh
G
segitiga saling berbagi satu titik tunggal. -
H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Biasanya hanya 1 sisi dari primitive yang ditampilkan.
G
Jika suatu model sepenuhnya tertutup, hanya 1 sisi
- H segitiga yang perlu digambarkan.
A N
Suatu primitive segitiga hanya akan digambarkan saat
S
titik-titiknya diberikan dalam urutan yang sesuai
U dengan arah jarum jam. N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Ada cara yang mudah (walaupun sia-sia jika
G
- diterapkan dalam game skala besar) untuk
H menampilkan kedua sisi sebuah primitive. A
Caranya dengan menggambar primitive 2 kali, yang
N S
pertama dengan arah searah jarum jam dan yang
U kedua berlawanan dengan arah jarum jam. N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Direct3D tidak menerapkan konsep-konsep warna
G
pada umumnya, karena sangat memberatkan graphics
- H hardware dan CPU.
A
Pencahayaan adalah panjang gelombang partikel yang
N
memungkinkan kita untuk melihat dan membedakan
S U berbagai obyek di sekitar kita. N
Direct3D menerapkan pencahayaan dengan berbagai
algoritma Matematika berbeda melalui graphics hardware. S E N G
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N G
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Additive colors
G
Warna primer RGB
- H
Warna cahaya
A
Digunakan di layar monitor
N S Subtractive colors
U
Warna primer CMY
N
Warna dari obyek
Digunakan di printers
Color theory:
Jika ditambahkan alpha, maka citra akan terlihat semi-transparan.
Merupakan elemen tambahan dalam warna cahaya RGB.
S E N G
- H A N S U N
http://i1.creativecow.net/u/106395/test2.jpg S E N
Warna dalam Direct3D dibentuk dari suatu variabel
G
32-bit yang menyimpan seluruh informasi tentang
- H warna.
A
Termasuk warna primer RGB dan jumlah Alpha
N dalam warna.
S U
Setiap bagian tersebut dikenal sebagai channels, dan
N mengambil tempat 8 bits.
http://en.wikipedia.org/wiki/RGBA_color_space S E N G
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Direct3D menerapkan sistem untuk meniru cahaya
G di lingkungan dunia nyata.
- H
Membagi cahaya menjadi 3 jenis cahaya berbeda,
A
yang saat disatukan akan menyerupai cahaya
N sebenarnya.
S U
3 jenis cahaya tersebut:
N 1.
Diffuse Light 2. Ambient Light 3. Specular Light S E N
Cahaya yang bersinar pada suatu obyek secara tidak
G langsung.
- H
Memiliki sumber cahaya.
A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Cahaya yang bersinar di seluruh tempat.
G
- H A N S U N
Tidak memiliki sumber cahaya.
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3 S E N
Disebut juga Specular Highlight, karena menekankan
G suatu obyek dengan suatu warna pantulan.
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3
Akan diperlihatkan bagaimana cara untuk membuat sebuah segitiga di layar monitor.
- H A N S U N
Menggunakan sejumlah titik dan Direct3D device.
Flexible Vertex Formats
Vertex Buffers Drawing the Primitive
Releasing Vertex Buffers
S E N G
The Finished Program
S E N
Titik (vertex): lokasi dan sifat dari suatu poin pasti
G dalam ruang 3D.
- Lokasi terdiri atas 3 nilai numerik yang
H A merepresentasikan koordinat titik tersebut. N
Sifat dari suatu titik juga didefinisikan oleh nilai
S numerik. U N
Direct3D menggunakan teknologi Flexible Vertex Format (FVF).
Format titik (vertex format) adalah kerangka data yang menyimpan lokasi dan sifat dari sebuah titik.
FVF: format data yang dapat dimodifikasi dan diatur sesuai kebutuhan Anda. S E N G
- H A N S U N
http://directxtutorial.co m/Lesson.aspx?lessonid= 9-4-4 S E N
Dalam Direct3D, setiap vertex dibuat dari suatu pre-
G set vertex format.
- H
Vertex format bersifat fleksibel, dibuat dengan
A
menggunakan beberapa elemen yang disediakan
N Direct3D.
S U
Elemen-elemen tersebut diatur dengan
N
menggunakan flag tertentu, yang saat di-OR bersama, membentuk suatu definisi vertex. S E N G
- H A N S U N
http:// directx tutoria l.com/ Lesson .aspx?l essoni d=9-4- S E N
Setelah membuat format, titik-titik dari format
G tersebut dapat dibuat.
- H
Cukup dengan membuat struct sederhana yang berisi
A
variabel-variabel yang telah disisipkan dalam FVF
N code.
S U N
S E N
Merupakan suatu antarmuka yang menyimpan suatu
G
bagian dalam memory (baik Video RAM atau sistem
- H
memory) untuk menyimpan informasi mengenai titik-
A titik/ model-model dalam game Anda. N
Menggunakan fungsi CreateVertexBuffer().
S U N
S E N G
- H A N S U N
- H A N S U N
Sebelum mengakses buffer yang telah dibuat, harus
G dikunci terlebih dahulu.
- H
2 alasan:
A 1.
Memberitahu Direct3D bahwa Anda memerlukan
N S kendali penuh pada memory.
U 2.
Memberitahu video hardware untuk tidak
N memindahkannya.
S E N
Selanjutnya, dipanggil fungsi memcpy() untuk meng-
G copy titik-titik ke dalam vertex buffer.
- H A N S
Terakhir, dipanggil fungsi Unlock(), yang
U
memberitahu Direct3D bahwa memory telah selesai
N digunakan dan tidak perlu dikunci lagi.
S E N G
- H A N S U N
Terdapat 3 fungsi sederhana yang perlu diketahui
G agar dapat menampilkan primitive ke layar.
- H
Ketiganya dipanggil dari antarmuka Direct3D Device.
A 1.
SetFVF()
N S 2.
SetStreamSource()
U 3.
DrawPrimitive()
N
S E N
Merupakan fungsi yang memberitahu Direct3D, FVF
G code yang mana yang sedang digunakan.
- H
FVF code bisa ada banyak dan digunakan dalam
A bagian-bagian yang berbeda dari suatu animasi 3D. N S
Sebelum menggambar apapun, perlu diberitahukan
U pada Direct3D, FVF code mana yang kita gunakan. N
S E N
Memberitahu Direct3D vertex buffer mana yang
G digunakan.
- H A N S U N
Memberitahu Direct3D untuk menggambarkan titik-titik
G yang telah dibuat.
- H
Fungsi ini menggambarkan primitive dalam vertex buffer
A yang dipilih ke dalam layar. N S U N
Parameter pertama: tipe primitive yang digunakan.
Parameter kedua: jumlah titik pertama yang akan
ditampilkan dalam layar. Parameter ketiga: jumlah primitive yang akan digambar. S E N G
- H A N S U N
- H A N S U N
Seperti halnya Direct3D dan Direct3D Device, suatu
G
vertex buffer perlu dilepas sebelum program
- H dihentikan.
A N S U N
S E N G
- H A N S U N
- H A N S U N
- H A N S U N
- H A N S U N
- H A N S U N
- H A N S U N
- H A N S U N
- H A N S U N
- H A N S U N
Setelah berhasil membuat obyek segitiga pada
G
bidang datar (2D yang digambar pada koordinat
- H
layar), akan dipelajari cara untuk melakukan
A transformasi titik-titik. N
Dengan kata lain, akan dipelajari cara untuk
S U
mengubahnya dari koordinat 3D ke dalam koordinat
N layar.
Kita juga akan belajar cara untuk memposisikan 3D camera, mengatur
3D “lens”, dan meletakkan segitiga di dunia 3D bersama dengan obyek 3D lainnya. S E N
Terdapat serangkaian aksi yang perlu dilakukan
G
sebelum sebuah obyek dapat tampil dengan benar di
- H
layar → geometry pipeline.
A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-5
Mengubah koordinat dari model space ke dalam world space.
- H A N S U N
Dengan kata lain, meletakkan suatu model dalam suatu world pada lokasi yang tepat yang didefinisikan oleh koordinatnya.
1. Translasi (translation) 2.
Rotasi (rotation)
3. Skalasi (scaling)
S E N G
S E N
Pergerakan dari suatu titik sepanjang sumbu
G koordinat tertentu.
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-5 S E N
Proses memutar obyek-obyek 3D sepanjang sumbu
G koordinat tertentu.
- H Dapat dilakukan pada beberapa sumbu sekaligus.
A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-5 S E N
Tindakan dalam membuat suatu obyek 3D menjadi
G lebih besar atau lebih kecil.
- H
Saat sebuah obyek di-skalasi, setiap titik pada obyek
A tersebut digandakan dengan suatu nilai. N S
Nilai tersebut bisa berbeda untuk tiap sumbu yang
U berbeda, menghasilkan efek stretching. N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-5 S E N
Suatu proses yang mengatur sistem koordinat 3D
G untuk melihat pada arah yang tepat.
- H A N S U N
Sederhananya, mengubah koordinat 3D ke dalam koordinat layar.
Mengubah 3D scene ke dalam suatu citra 2D agar dapat digambarkan dalam layar monitor.
S E N G
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-5 S E N
2D Form
G
- H A N S
3D Form
U N
S E N
Menggambarkan suatu larik 2 dimensi yang terdiri
G atas bilangan-bilangan.
- H
Dalam 3D programming, matriks digunakan untuk
A
merepresentasikan informasi selama transformasi
N dilakukan.
S U N
S E N
Direct3D menggunakan sebuah struct dan sejumlah
G fungsi untuk menyederhanakan penerapan matriks.
- H A N S U N
Suatu matriks Direct3D digunakan untuk
G
menyimpan data yang dibutuhkan dalam suatu
- H transformasi.
A
Sebuah world space (world transformation) terdiri atas
N
teknik translasi, rotasi, dan skalasi model-model 3D
S U ke dalam world space. N
Titik-titik dalam setiap model dikalikan dengan
sebuah matriks untuk melaksanakan salah satu
transformasi tersebut.
Code berikut dapat digunakan untuk melakukan
translasi sederhana.S E N G
- H A N S U N
Dapat dijalankan di antara fungsi SetStreamSource() dan DrawPrimitive()
S E N
Rotasi dapat dilakukan pada 3 arah berbeda (sumbu-
G x, sumbu-y, dan sumbu-z).
- H A N S U N
Dilakukan sama seperti pada translasi dan rotasi,
G
dengan satu fungsinya sendiri untuk menginisialisasi
- H matriks sebelum digunakan.
A N S U N
S E N G
- H A N S U N
- H A N S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-5
Dapat dilihat sebagai tahap untuk mengatur suatu virtual camera.
S E N G
- H A N S U N
Hanya ada 1 matriks dan 1 fungsi untuk membangun matriks tersebut
S E N G
- H A N S U N
Dapat dilihat sebagai tahap mempersiapkan camera lens.
- H A N S U N
Hanya ada1 matriks dan 1 fungsi untuk membangun matriks tersebut.
The Field of View (fov) View-Plane Clipping
S E N G
Setting Up the Projection Matrix
Mirip seperti fitur zoom suatu camera.
- H A N S U N
Dalam grafik 3D, fov didefinisikan dengan mengatur
jumlah radian yang diizinkan (secara vertikal).
Nilai normalnya adalah 0.78539 (pi/4, atau 45 ).
S E N G
http://directxtut orial.com/Lesson .aspx?lessonid=9
- 4-5
Clipping adalah proses dimana Direct3D memotong
G
bagian-bagian sebuah gambar yang tidak perlu
- H digambarkan.
A
Direct3D menerapkan 2 view-planes, dan hanya
N menggambarkan grafik yang berada diantaranya.
S U N
http://directxtutorial.com/Lesson.aspx?lessonid=9-4-5 S E N
Menggunakan fungsi
G D3DXMatrixPerspectiveFovLH().
- H A N S U N
Pencahayaan harus dinyatakan dalam 3D
G programming.
- H
Saat ini, untuk membiarkan segala sesuatu disinari
A secara otomatis (normal), kita matikan fungsi lighting. N S
Cukup memanggil 1 perintah, yang dapat diletakkan
U pada fungsi awal initD3D(). N
Header program Dalam fungsi initD3D()
S E N G
- H A N S U N
Dalam fungsi init_graphics(), ganti CUSTOMVERTEX:
S E N
Fungsi render_frame()
G
- H A N S U N
- H A N S U N
- H A N S U N
http://directxtutorial.com/
G
http://i1.creativecow.net/u/106395/test2.jpg -
H
http://en.wikipedia.org/wiki/RGBA_color_space
A Other web resources. N S U N