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
S E N G

  • H A N S U N
S E 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
S E 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
S E 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
S E N G

  • H A N S U N
S E 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
S E N G

  • H A N S U N
S E N G

  • H A N S U N
S E N G

  • H A N S U N
S E N G

  • H A N S U N
S E N G

  • H A N S U N
S E N G

  • H A N S U N
S E N G

  • H A N S U N
S E N G

  • H A N S U N
S E 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
S E 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
S E 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
S E N G

  • 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
S E N

   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
S E 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
S E N G

  • H A N S U N
S E N G

  • H A N S U N
S E 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