• Tidak ada hasil yang ditemukan

The Real-Time Message Loop DirectX Basic

N/A
N/A
Protected

Academic year: 2018

Membagikan "The Real-Time Message Loop DirectX Basic"

Copied!
89
0
0

Teks penuh

(1)

Vertices

Transformation

Level 3 GRAFIKA KOMPUTER DAN ANIMASI

(2)

Windows Basic

 The Parts of a Game

 A Primer of Basic Windows

Creating a Window

 The Real-Time Message Loop

DirectX Basic

 Getting Started with Direct3D

Going FullScreen

(3)

An Overview of the Three Dimension

3D Coordinate Systems Triangular Geometry Color

Light

Drawing a Triangle

Flexible Vertex Formats Vertex Buffers

Drawing the Primitive Releasing Vertex Buffers The Finished Program

G

Transforming Vertices

The Geometry Pipeline Untransformed Vertices What is the Matrix?

Setting the World Transformation Setting the View Transformation

Setting the Projection Transformation

Lighting

(4)

 Pemrograman 3D sangatlah berkaitan dengan Matematika.

 Diperlukan pemahaman akan konsep bangun dan ruang 3D di dalam Matematika.

 3D Coordinate Systems

 Triangular Geometry

(5)

 Untuk memahami sistem koordinat 3D,

diperkenalkan terlebih dahulu sistem koordinat Kartesius.

Sistem koordinat Kartesius (sistem koordinat 2D)

adalah suatu sistem yang menentukan lokasi tepat suatu titik di suatu bidang datar.

G -H A N S U N

(6)

 Terdapat 2 sumbu (sumbu-x dan sumbu-y) dan masing-masing memiliki titik pusat (0).

 (x,y) = (12,4) → titik koordinat, digunakan untuk menentukan seberapa jauh suatu titik dari pusat koordinatnya (0,0).

G -H A N S U N

(7)

 Pengembangan dari sistem koordinat 2D, dengan menambahkan 1 sumbu baru (sumbu-z) yang tegak lurus terhadap sumbu-x dan sumbu-y.

G -H A N S U N

http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3

(8)

 Jika suatu titik di dalam sistem koordinat 3D

merujuk pada suatu posisi di ruang, maka kita dapat membentuk sebuah larik dari posisi-posisi pasti yang dapat menjadi suatu model 3D.

 Semakin banyak titik yang disimpan akan semakin

banyak memakan ruang memory, sehingga diperlukan metode khusus untuk menanganinya.

 Caranya dengan menggunakan segitiga.

Bangun segitiga dapat diatur dan digunakan untuk

membuat sembarang bentuk/ model yang dapat diimajinasikan.

(9)

http://directxtutorial.com/Lesson.aspx?lessonid=9-4-3

(10)

 Direct3D didesain dengan fokus utama penerapan segitiga dan menggabungkan segitiga-segitiga menjadi suatu bentuk.

Untuk membuat sebuah segitiga diperlukan 3 titik.

 Titik merupakan suatu lokasi tepat dalam ruang 3D, dan didefinisikan oleh 3 nilai (yakni x, y, dan z).

 Setelah ditulis dalam kode program, ketiga titik ini membentuk suatu bidang datar, yang selanjutnya dapat diputar, diberi tekstur, diposisikan dan

dimodifikasi sesuai kebutuhan.

(11)

x=0, y=5, z=1

 x=5, y=-5, z=1

 x=-5, y=-5, z=1

G -H A N S U

(12)

Untuk membuat obyek 3D, segitiga-segitiga tersebut

perlu digabungkan.

 Namun, mendefinisikan koordinat 3D untuk setiap segitiga dalam sebuah game berulang kali sangatlah kompleks.

Daripada mendefinisikan setiap titik sudut segitiga

dalam sebuah game, yang perlu dilakukan sebenarnya hanyalah membuat suatu daftar titik-titik, yang

menyimpan koordinat dan informasi dari setiap titik, serta urutan kemunculannya.

(13)

Primitive adalah suatu elemen tunggal dalam

lingkungan 3D, seperti sebuah segitiga, sebuah garis, titik, dan sebagainya.

 Daftar beberapa cara primitives dapat

dikombinasikan untuk membuat obyek 3D:

1. Point Lists

2. Line Lists

3. Line Strips

4. Triangle Lists

5. Triangle Strips

6. Triangle Fans

(14)

Daftar titik-titik yang diperlihatkan sebagai titik-titik

tunggal dalam layar.

 Dapat digunakan untuk me-render 3D starfields, membuat garis titik-titik, menampilkan lokasi di minimaps, dan sebagainya.

G -H A N S U N

(15)

Daftar titik-titik yang membentuk ruas garis terpisah

antara titik-titik ganjil dan titik berikutnya.

 Digunakan untuk berbagai efek, termasuk 3D grids, hujan deras, garis penunjuk arah, dan sebagainya.

G -H A N S U N

(16)

Mirip seperti line list, namun seluruh titik dalam

suatu daftar titik saling terhubung oleh ruas garis.

 Untuk membuat frame images, seperti wire-frame terrain, bilah-bilah rumput, dan obyek non-model lainnya.

G -H A N S U N

(17)

Daftar titik-titik dimana setiap kelompok 3 titik

digunakan untuk membuat sebuah segitiga terpisah.

 Digunakan dalam berbagai efek, seperti force-fields, ledakan, obyek-obyek yang disatukan, dan

sebagainya.

G -H A N S U N

(18)

Daftar titik-titik yang membentuk serangkaian

segitiga yang dihubungkan satu dengan lainnya.

 Metode yang paling umum digunakan dalam grafik dan pemodelan 3D.

G -H A N S U N

(19)

Mirip dengan suatu triangle strip, namun seluruh

segitiga saling berbagi satu titik tunggal.

G -H A N S U N

(20)

Biasanya hanya 1 sisi dari primitive yang ditampilkan.

 Jika suatu model sepenuhnya tertutup, hanya 1 sisi segitiga yang perlu digambarkan.

 Suatu primitive segitiga hanya akan digambarkan saat titik-titiknya diberikan dalam urutan yang sesuai

dengan arah jarum jam.

G -H A N S U N

(21)

Ada cara yang mudah (walaupun sia-sia jika

diterapkan dalam game skala besar) untuk menampilkan kedua sisi sebuah primitive.

 Caranya dengan menggambar primitive 2 kali, yang pertama dengan arah searah jarum jam dan yang kedua berlawanan dengan arah jarum jam.

G -H A N S U N

(22)

 Direct3D tidak menerapkan konsep-konsep warna pada umumnya, karena sangat memberatkan graphics hardware dan CPU.

Pencahayaan adalah panjang gelombang partikel yang

memungkinkan kita untuk melihat dan membedakan berbagai obyek di sekitar kita.

 Direct3D menerapkan pencahayaan dengan berbagai algoritma Matematika berbeda melalui graphics

hardware.

(23)

G -H A N S U N

(24)

G -H A N S U N

(25)

Additive colors

Warna primer RGB

 Warna cahaya

 Digunakan di layar monitor

Subtractive colors

 Warna primer CMY

 Warna dari obyek

Digunakan di printers

Color theory:

http://www.byronc.com/art_color.shtml

(26)

 Merupakan elemen tambahan dalam warna cahaya RGB.

 Jika ditambahkan alpha, maka citra akan terlihat semi-transparan.

G -H A N S U N

(27)

 Warna dalam Direct3D dibentuk dari suatu variabel 32-bit yang menyimpan seluruh informasi tentang warna.

Termasuk warna primer RGB dan jumlah Alpha

dalam warna.

 Setiap bagian tersebut dikenal sebagai channels, dan mengambil tempat 8 bits.

G

(28)

G -H A N S U N

(29)

 Direct3D menerapkan sistem untuk meniru cahaya di lingkungan dunia nyata.

 Membagi cahaya menjadi 3 jenis cahaya berbeda, yang saat disatukan akan menyerupai cahaya

sebenarnya.

3 jenis cahaya tersebut:

1. Diffuse Light

2. Ambient Light

3. Specular Light

(30)

 Cahaya yang bersinar pada suatu obyek secara tidak langsung.

 Memiliki sumber cahaya.

G -H A N S U N

(31)

 Cahaya yang bersinar di seluruh tempat.

 Tidak memiliki sumber cahaya.

G -H A N S U N

(32)

 Disebut juga Specular Highlight, karena menekankan suatu obyek dengan suatu warna pantulan.

G -H A N S U N

(33)

 Akan diperlihatkan bagaimana cara untuk membuat sebuah segitiga di layar monitor.

 Menggunakan sejumlah titik dan Direct3D device.

 Flexible Vertex Formats

 Vertex Buffers

 Drawing the Primitive

 Releasing Vertex Buffers

The Finished Program

(34)

 Titik (vertex): lokasi dan sifat dari suatu poin pasti dalam ruang 3D.

Lokasi terdiri atas 3 nilai numerik yang

merepresentasikan koordinat titik tersebut.

 Sifat dari suatu titik juga didefinisikan oleh nilai numerik.

 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.

(35)

G -H A N S U N

(36)

G

 Dalam Direct3D, setiap vertex dibuat dari suatu pre-set vertex format.

Vertex format bersifat fleksibel, dibuat dengan menggunakan beberapa elemen yang disediakan Direct3D.

 Elemen-elemen tersebut diatur dengan

(37)

G -H A N S U

N http://

(38)

d=9-4-G -H A N S U N

 Setelah membuat format, titik-titik dari format tersebut dapat dibuat.

 Cukup dengan membuat struct sederhana yang berisi variabel-variabel yang telah disisipkan dalam FVF

(39)

 Merupakan suatu antarmuka yang menyimpan suatu bagian dalam memory (baik Video RAM atau sistem memory) untuk menyimpan informasi mengenai titik-titik/ model-model dalam game Anda.

 Menggunakan fungsi CreateVertexBuffer().

(40)

http://directxtutorial.com/Lesson.aspx?lessonid=9-4-4

(41)
(42)

 Sebelum mengakses buffer yang telah dibuat, harus dikunci terlebih dahulu.

 2 alasan:

1. Memberitahu Direct3D bahwa Anda memerlukan

kendali penuh pada memory.

2. Memberitahu video hardware untuk tidak

memindahkannya.

(43)

 Selanjutnya, dipanggil fungsi memcpy() untuk meng-copy titik-titik ke dalam vertex buffer.

 Terakhir, dipanggil fungsi Unlock(), yang

memberitahu Direct3D bahwa memory telah selesai digunakan dan tidak perlu dikunci lagi.

(44)
(45)

 Terdapat 3 fungsi sederhana yang perlu diketahui agar dapat menampilkan primitive ke layar.

 Ketiganya dipanggil dari antarmuka Direct3D Device.

1. SetFVF()

2. SetStreamSource()

3. DrawPrimitive() G

(46)

 Merupakan fungsi yang memberitahu Direct3D, FVF code yang mana yang sedang digunakan.

 FVF code bisa ada banyak dan digunakan dalam

bagian-bagian yang berbeda dari suatu animasi 3D.

 Sebelum menggambar apapun, perlu diberitahukan pada Direct3D, FVF code mana yang kita gunakan.

(47)

 Memberitahu Direct3D vertex buffer mana yang digunakan.

(48)

Memberitahu Direct3D untuk menggambarkan titik-titik

yang telah dibuat.

 Fungsi ini menggambarkan primitive dalam vertex buffer

yang dipilih ke dalam layar.

 Parameter pertama: tipe primitive yang digunakan.

 Parameter kedua: jumlah titik pertama yang akan ditampilkan dalam layar.

Parameter ketiga: jumlah primitive yang akan digambar.

(49)

G -H A N S U N

(50)
(51)

 Seperti halnya Direct3D dan Direct3D Device, suatu vertex buffer perlu dilepas sebelum program

dihentikan.

(52)
(53)
(54)
(55)
(56)
(57)
(58)
(59)
(60)
(61)

 Setelah berhasil membuat obyek segitiga pada bidang datar (2D yang digambar pada koordinat layar), akan dipelajari cara untuk melakukan

transformasi titik-titik.

 Dengan kata lain, akan dipelajari cara untuk

mengubahnya dari koordinat 3D ke dalam koordinat layar.

 Kita juga akan belajar cara untuk memposisikan 3D camera, mengatur 3D “lens”, dan meletakkan segitiga di dunia 3D bersama dengan obyek 3D lainnya.

(62)

 Terdapat serangkaian aksi yang perlu dilakukan

sebelum sebuah obyek dapat tampil dengan benar di layar → geometry pipeline.

G -H A N S U N

(63)

 Mengubah koordinat dari model space ke dalam

world space.

 Dengan kata lain, meletakkan suatu model dalam suatu world pada lokasi yang tepat yang

didefinisikan oleh koordinatnya.

(64)

 Pergerakan dari suatu titik sepanjang sumbu koordinat tertentu.

G -H A N S U N

(65)

 Proses memutar obyek-obyek 3D sepanjang sumbu koordinat tertentu.

 Dapat dilakukan pada beberapa sumbu sekaligus. G

-H A N S U N

(66)

 Tindakan dalam membuat suatu obyek 3D menjadi lebih besar atau lebih kecil.

 Saat sebuah obyek di-skalasi, setiap titik pada obyek tersebut digandakan dengan suatu nilai.

 Nilai tersebut bisa berbeda untuk tiap sumbu yang berbeda, menghasilkan efek stretching.

G -H A N S U N

(67)

 Suatu proses yang mengatur sistem koordinat 3D untuk melihat pada arah yang tepat.

(68)

 Mengubah 3D scene ke dalam suatu citra 2D agar dapat digambarkan dalam layar monitor.

 Sederhananya, mengubah koordinat 3D ke dalam koordinat layar.

G -H A N S U N

(69)

 2D Form

 3D Form

(70)

 Menggambarkan suatu larik 2 dimensi yang terdiri atas bilangan-bilangan.

 Dalam 3D programming, matriks digunakan untuk merepresentasikan informasi selama transformasi dilakukan.

(71)

 Direct3D menggunakan sebuah struct dan sejumlah fungsi untuk menyederhanakan penerapan matriks.

(72)

 Suatu matriks Direct3D digunakan untuk

menyimpan data yang dibutuhkan dalam suatu transformasi.

Sebuah world space (world transformation) terdiri atas

teknik translasi, rotasi, dan skalasi model-model 3D ke dalam world space.

 Titik-titik dalam setiap model dikalikan dengan sebuah matriks untuk melaksanakan salah satu transformasi tersebut.

(73)

Code berikut dapat digunakan untuk melakukan translasi sederhana.

 Dapat dijalankan di antara fungsi SetStreamSource() dan DrawPrimitive().

(74)

 Rotasi dapat dilakukan pada 3 arah berbeda (sumbu-x, sumbu-y, dan sumbu-z).

(75)

 Dilakukan sama seperti pada translasi dan rotasi, dengan satu fungsinya sendiri untuk menginisialisasi matriks sebelum digunakan.

(76)
(77)

http://directxtutorial.com/Lesson.aspx?lessonid=9-4-5

(78)

 Dapat dilihat sebagai tahap untuk mengatur suatu virtual camera.

 Hanya ada 1 matriks dan 1 fungsi untuk membangun matriks tersebut.

(79)
(80)

 Dapat dilihat sebagai tahap mempersiapkan camera lens.

 Hanya ada1 matriks dan 1 fungsi untuk membangun matriks tersebut.

 The Field of View (fov)

 View-Plane Clipping

 Setting Up the Projection Matrix

(81)

 Mirip seperti fitur zoom suatu camera.

 Dalam grafik 3D, fov didefinisikan dengan mengatur jumlah radian yang diizinkan (secara vertikal).

Nilai normalnya adalah 0.78539 (pi/4, atau 450).

(82)

Clipping adalah proses dimana Direct3D memotong bagian-bagian sebuah gambar yang tidak perlu

digambarkan.

Direct3D menerapkan 2 view-planes, dan hanya

menggambarkan grafik yang berada diantaranya.

G -H A N S U N

(83)

 Menggunakan fungsi

D3DXMatrixPerspectiveFovLH().

(84)

 Pencahayaan harus dinyatakan dalam 3D programming.

 Saat ini, untuk membiarkan segala sesuatu disinari secara otomatis (normal), kita matikan fungsi lighting.

 Cukup memanggil 1 perintah, yang dapat diletakkan pada fungsi awal initD3D().

(85)

Header program

 Dalam fungsi initD3D()

 Dalam fungsi init_graphics(), ganti CUSTOMVERTEX:

(86)

 Fungsi render_frame()

(87)
(88)
(89)

http://directxtutorial.com/

http://i1.creativecow.net/u/106395/test2.jpg

http://en.wikipedia.org/wiki/RGBA_color_space Other web resources.

Referensi

Dokumen terkait

Lampu lantai ini memiliki fungsi untuk memancarkan cahaya namun dengan arah lampu yang tidak bisa disesuaikan dengan keinginan pengguna mencerminkan pemikiran gaya desain

Leg Press) lebih baik dari kelompok latihan Power tungkai dan kekuatan otot lengan (Lat Mach dan Leg Extension).(1)Latihan Power tungkai dan kekuatan otot

Sertifikat Kompetensi di Bidang Pariwisata adalah bukti tertulis yang diterbitkan oleh lembaga sertifikasi profesi terlisensi yang menerangkan bahwa seseorang telah

Dari 100 ada 17 tidak akan pernah mampu sekolah, dan ternyata 9 dari padanya adalah anak-anak perempuan;.. dan ketika ada 100 anak dunia masuk ke sekolah dasar akhirnya hanya 25

 Alat ini dapat digunakan sebagai alat input, alat proses atau.

Tujuan penelitian ini adalah mengukur keberhasilan penerapan Sistem Informasi Reservasi Hotel pada hotel berbintang di provinsi Kalimantan Selatan dengan menggunakan

[r]

Dalam strategi ini, seorang praktisi public relations dapat membangun hubungan personal yang baik dengan orang-orang yang berada di institusi media maupun dengan