Nama : Randy Galawana
Nim : 113060186
Game Programming : Graphic 3D, Solid Modeling dan Camera Control
A. Introduction
Graphic 3D, Solid Modeling dan Camera Control merupakan beberapa fitur yang sering terdapat
pada 3D game. Beberapa technology tersebut mulai berkembang sejak munculnya technology
OpenGL, yang kemudian diikuti oleh Microsoft Direct3D. Perkembangan computer’s hardware juga
yang semakin baik dalam pemrosesan (baik perhitungannya) pengolahan graphic 3D, membuat
perkembangan fitur-fitur pada games 3D semakin cepat.
B. Graphic 3D
Graphic 3D adalah grafis dengan menggunakan representasi 3 dimensi (cartesian) dalam bentuk
ruang (x,y dan z) yang ada dalam computer dalam format data tertentu untuk keperluan rendering
Graphic 2D atau untuk real-time viewing dalam game.
Sumber : http://en.wikipedia.org/wiki/3D_computer_graphics
Pada pencitraan 3D kita mengenal vector 3D dimana terdapat representasi arah pada sumbu x, y
dan z. Beberapa bagian dari Objek 3Dadalah :
1. Vertex : titik yang merupakan ujung (node) dari Objek biasanya dihubungkan oleh sebuah garis.
2. Edge : garis yang menghubungkan antar vertex dari Objek.
3. Face : merupakan kesatuan antara garis dan titik yang membentuk sebuah ruang 2D,
biasanya berupa persegi (polygonal) dan segitiga (tris).
Node : pada games modeling tipa face yang biasanya sering digunakan adalah tris (segitiga).
4. Element : kesatuan sebuah Objek secara utuh.
Matematika pada Graphic 3D
Berikut ini adalah beberapa bahasan matematis pada pembuatan Graphic 3D: (menurut
a. The Rendering Pipeline
Pada Mainboard terdapat sebuah bagian yaitu GPU (Graphic Processing Unit) yang
mengeksekusi intruksi untuk rendering 3D graphic secara independen. CPU selalu mengirimkan
instruksi untuk merender pada GPU ini. GPU pada jaman sekarang sudah terpisah dari
Mainboard dan diberi nama VGA. GPU ini memiliki tempat penyimpanan sementara juga seperti
halnya CPU yang memiliki RAM, pada GPU terdapat lah VRAM. Perintah rendering yang
dikirimkan oleh CPU biasanya merupakan perintah dengan menggunakan fungsi dari OpenGL.
b. Vector
Seperti halnya kita ketahui, pada graphic 3D digunakan konsep grafika yaitu vector 3D yang
menyimpan informasi dari primitive node-node yang memiliki properties masing-masing.
c. Transformation
Vertex Transfromation : yaitu sebuah fungsi untuk memindahkan dan memodifikasi dari vertex
sebuah Objek 3D seperti rotasi, translasi, skalasi, dan pergeseran ) dan proyeksi (seperti
perspektif dan ortografi) semuanya dapat diwakili oleh penerapan yang tepat 4 '4 matriks untuk
mewakili koordinat titik sudut.
Sumber : http://glprogramming.com/red/appendixf.html
Sumber : Lengyel, Eric.2003. Mathematics for 3D Game Programming and Computer Graphics
2nd Edition. Charles River Media: Massachusetts.
Atribut primitif, Algoritma dan metode dalam Graphic 3D
a) Ray Tracing : sebuah teknik untuk menghasilkan gambar dengan pencahayaan yang mendekati
sebenarnya. Komputasi yang lebih lama dan memakan resources. Ray Tracing cocok pada
gambar diam dan animasi (film) , dan lebih kurang cocok untuk real-time aplikasi seperti
permainan komputer. Ray tracing mampu mensimulasikan berbagai efek optis, seperti refleksi
dan pembiasan.
Sumber : http://en.wikipedia.org/wiki/Ray_tracing_(graphics)
b) Lighting atau Illumination : teknik pencahayaan untuk penggunaan sumber cahaya buatan
seperti lampu dan penerangan alami seperti skylight, matahari dll.
c) Shadow : efek dari pencahayaan, area di mana cahaya tidak dapat mencapai-nya karena
terhalang oleh sebuah objek.
d) Difuse Color : warna sebenarnya dari objek
e) Reflection : efek pencahayaan, pemantulan cahaya.
f) Refraction : efek pencahayaan, pembiasan cahaya ketika terkena objek.
g) Rendering : proses menghasilkan sebuah gambar dari sebuah model, dengan menggunakan
program computer.
h) Shading : efek pencahayaan, bagaimana warna dan kecerahan dari permukaan bervariasi
dengan pencahayaan.
i) Texture Mapping : memberikan kulit / pola (pattern) pada objek 3D, contohnya memberikan
material dinding pada objek box.
j) Bump Mapping : memberikan kesan seakan-akan kasar pada objek 3D yang halus dengan
menggunakan textures / map.
Sumber : Charter, Chad.2007.Microsoft XNA Unleashed.SAMS : Indianapolis
k) Normal Mapping (height map) : sebuah textures yang mendeskripsikan normal dari tiap pixel,
membuat objek 3D memiliki ketinggian yang berbeda (lekukan, goresan dll) karena itu disebut
juga Normal Map
Sumber : Charter, Chad.2007.Microsoft XNA Unleashed.SAMS : Indianapolis
l) Transparency : kemampuan objek untuk ditembus cahaya.
m) Translucency : penyebaran cahaya ketika melalui benda padat.
n) Caustic : suatu bentuk pencahayaan tidak langsung. Pantulan cahaya dari sebuah benda yang
shiny, atau memfokuskan cahaya melalui objek yang transparan, untuk menghasilkan cahaya
warna cerah pada objek lain.
o) etc
Graphic 3D ini dapat terdapat dalam berbagai format seperti .obj, .3ds dan .x (yang sering digunakan
dalam game)
C. Solid Modeling
Solid Modeling adalah suatu teknik untuk merepresentasikan sebuah Objek 3D dengan
menggunakan berbagai teknik pemodelan diantaranya (face modeling, box modeling, wireframe
modeling), biasanya digunakan untuk pembuatan arsitektur, desain produk, game dan animasi dan
menggunakan software CAD.
Software Solid Modeling awalnya digunakan untuk merepresentasikan teknik constructive solid
geometry (CSG) atau Boundary representation (B-REP) untuk mendefinisikan bentuk solid. Pada
awal 1980, software engineer mulai mengaplikasikan abstraksi teknik solid modeling yang lebih
tinggi. contohnya parametric feature-based solid-modelling.
Computer Aided Design (CAD) merupakan sebuah software yang mengimplementasikan teknik
parametric feature-based solid modeling. Berikut ini adalah beberapa teknik yang dapat digunakan
untuk Solid Modeling :
Sweeping
o Sebuah area fitur yang "disapu keluar" dengan memindahkan primitif sepanjang path
untuk membentuk suatu solid feature. Fitur ini dapat menambahkan objek ( "extrusion")
atau menghilangkan material ( "cutter path").
o Biasa juga dikenal sebagai 'sketch based modeling'.
o Menggunakan teknik analog seperti extrusion, milling, lathe dan lain-lain.
Boundary representation (BRep)
o Sebuah Objek solid direpresentasikan oleh sebuah batas-batas dari permukaan Objek
(edge / boundary surface) yang kemudian diberi isi untuk menjadikannya solid.
o Biasa dikenal juga sebagai 'surfacing'.
o Menggunakan teknik analog seperti; Injection moulding, casting, forging,
thermoforming, dll.
Parameterized primitive instancing.
o Sebuah Objek yang dispesifikasikan pada library dan dibentuk dengan mengubah
parameter primitif-nya.
o Contohya, tabung dibuat pada library, model tabung ini akan digunakan untuk model
semua tabung untuk semua ukuran.
Spatial occupancy enumeration (voxel)
o Suatu ruang vector dibagi menjadi sel-sel kecil dimana suatu Objek direpresentasikan
dengan himpunan Objek yang ditempatnya..
Cellular decomposition
o Hampir mirip dengan "spatial occupancy", tetapi sel-selnya tidak regular, maupun
"prefabricated".
Constructive solid geometry (CSG)
o Objek sederhana (primitives) yang digabung dengan menggunakan operasi boolean
(union, difference, intersection) dan transformasi linear.
o Special struktur datanta disebut CSG-tree, dimana primitives adalah leaves-nya dan
operasi bolean sebagai nodenya.
Function representation (FRep)
o Setiap Objek diwakili oleh sebuah fungsi nyata dari titik koordinat. Titik berada diluar
Objek jika fungsi bernilai negatif, didalam Objek jika fungsi bernilai positif dan tepat
pada garis batas jika fungsi bernilai nol (isosurface).
o Fungsinya di evaluasi pada sebuah titik dengan menelusuri struktur tree mirip dengan
CSG-tree.
o Representasi ini dapat di convert menjadi BRep dengan menggunakan algortima
polygonization, contohnya untuk , algoritma “marching cubes algorithm”.
Feature based modeling
o kombinasi kompleks dari Objek-Objek dan operator-operato yang dianggap sebagai
suatu kesatuan yang dapat dimodifikasi dan diduplikasi.
o Urutan dari operasi dicatat dalam sebuah “history tree”, dan perubahan parameter
dapat dilakukan melalui tree-nya.
Parametric modeling
o Atribut dari fitur-fitur yang sudah terparameterkan, memberikan label, daripada
memberikan dimensi numerik, dan hubungan antara parameter dalam model dapat
dilacak, untuk merubah nilai-nilai numerik parameter lebih mudah..
o Hamper selalu digabungkan dengan parametric feature based modeling.
Facet modeling
o Membentuk permukaan objek luar dari volume dari setiap plane segitiga, Sering
digunakan dalam model fisik reverse engineering .
Sumber : http://en.wikipedia.org/wiki/Solid_modeling
3D modeler Software yang menggunakan teknik dan metode pada solid modeling dan sering
digunakan dalam pembuatan Game :
1. AutoDesk 3DsMAx
Tools standart untuk membuat 3D yang dikeluarkan oleh Autodesk, lebih unggul dibidang
dalam pemodelan Objek arsitecture seperti rumah, meja, kursi dll.
2. AutoDesk Maya
Tools advance untuk membuat 3D yang dikeluarkan oleh Autodesk, lebih unggul dibidang
dalam pemodelan character design dan animasi.
3. Blender
Tools Freeware yang sudah support bahasa pemrograman phyton serta dapat langsung
membuat game dengan blender itu sendiri tanpa meeggunakan game engine lain, walaupun
blender juga dapat mengeksport file 3D agar dapat menggunakan game engine lainnya,
dapat dibandingkan dengan software berbayar lainnya seperti Maya, 3DsMax dan
Cinema4D.
4. AC3D (invis)
Modeler yang memiliki compability yang baik dengan berbagai OS walaupun tidak memiliki
rendere sendiri, biasanya rendering dengan menggunakan Pov Ray.
5. Aladdin4D (DiscreetFX)
Multi-Platform Modeler yang dikembangkan oleh adspec programming.
6. Carrara (DAZ Production)
3D tool set yang sudah lengkap dan banyak fiturnya untuk modeling, texturing, scene
rendering dan animasi.
7. Cinema4D (MAXON)
3D ,modeler yang diklaim paling friendly dengan user (artisan).
8. Houdini (Side Efek Software)
Digunakan untuk visual efek dan animasi karakter, biasa digunakan di Disney dan Pixar.
9. Autodesk Inventor
Varian lain dari Autodesk yang lebih dikhususkan pada mechanical design.
10. LightWave 3D
Modeler yang lumayan popular lainnya, biasa digunakan pada TV Production, diantaranya
Babylon 5, CSI Series, Iron Man dll.
11. Google Sketchup
3D modeler yang berbasiskan pada sketsa gambar awal, simple dan ringan digunakan. Ada
professional version dan free version dan terintegrasikan dengan google earth dan export ke
Google 3D Warehouse.
12. Autodesk SoftImage (XSI)
Varian lain dari Autodesk, merupakan professional tools untuk 3D Designer untuk Film,
Video Games dan Iklan. Terintegrasikan dengan mental Ray. Digunakan oleh banyak game
studio professional.
13. Swift 3D
Modeler 3D alternative yang murah dan lagi cukup powerful, terintegrasikan dengan baik
dengan software Adobe, Microsoft Silverlight, dan dapat memisahkan 3D animasi yang
sudah diexport ke dalam layer yang berbeda.
14. ZBrush
Tools 3D modeler yang memiliki konsep lain dari yang lain, ZBRush memodelkan 3D dengan
menggunakan metode Sculting (Memahat) seperti halnya kita saat membuat patung dari
tanah lait atau kayu. Dapat dilakukan modeling, texturing dan painting.
Sumber : http://wapedia.mobi/en/3D_modeler
Beberapa Standard Primitives yang biasanya terdapat dalam Software 3D modeler
Box — prisma kotak. Kubus atau balok denganparameter length, width dan height dari box yang
dapat diatur.
Cylinder
Torus —membentuk seperti cincin atau donut.
Cone — membentuk cone dengan dasar lingkaran.
Sphere — membentuk bola penuh atau bola dengan proporsi tertentu.
Tube — tabung.
Pyramid — limas dengandasar persegi.
Plane — Objek datar dan tipis, biasanya untuk terrain atau skin atau cloth.
Geosphere — GeoSphere menghasilkanspheres and hemispheres berdasarkan 3 kelas dari
regular polyhedrons.
D. Camera Control
Camera Control pada Games 3D memerlukan perhitungan matematika pada vector 3D agar kamera
dapat di translasi, Zoomin (Skalasi), dan di Rotasi.
Sebagai contoh pada XNA :
Kamera memiliki projection terhadap real world (dalam bentuk matriks )
Kamera memiliki position, target.
Private vector3 cameraPosition – new vector3 (0.0f,0.0f,3.0f);
Private vector3 cameraTarget – new vector3.zero;
Kamera memiliki fungsi standart untuk zooming, Translasi, Rotasi dengan melakukan update nilai
pada vector3 diatas perlu dilakukan operasi matematika yang sesuai agar kamera dapat terkontrol
dengan baik.
+ Translasi : dengan menambahkan nilai pada vector3 tersebut sesuai dengan keinginan translasi.
+ Zooming : dengan menambahkan nilai pada vector3 tersebut sesuai dengan arah depan yang di
target kamera tersebut.
+ Rotasi : dengan menggunakan fungsi lingkaran pada vector3 tersebut sesuai dengan poros. Atau
dengan menggunakan convert dari vector4 (quartenion) menjadi rotasi pada Vector3. (Advance
Teknik).
Ket : arah pada vector 3D sesuai dengan kaidah tangan kanan pada sistem koordinat.
Sumber : Charter, Chad.2007.Microsoft XNA Unleashed.SAMS : Indianapolis p.61-63
Beberapa jenis kamera perspective pada Games 3D :
1. First Person perspective
Pada perspektif ini, kamera dianggap seakan akan sebagai mata dari pemain. Pada kamera tipe
ini, kita dibuat seakan-akan merasa kita sedang melihat keadaan dan merasakan hal yang sama
seperti karakter.
Tipe kamera ini adalah free role kamera dimana kamera dapat bergerak bebas pada sumbu x
dan z dan terbatas pada sumbu y. biasanya fungsi standartnya untuk translasi pada sumbu x dan
z, jika dapat meloncat / naik ke tempat tinggi maka di tambah translasi pada sumbu y.
2. Third Person perspective atau Over the Shoulder (OTS)
Pada perspektif ini, kamera dianggap seakan akan sebagai mata dari penonton yang selalu
mengikuti. Pada kamera tipe ini, kita dibuat seakan-akan merasa kita sedang melihat keadaan
dari karakter.
Tipe kamera ini adalah target kamera, dimana kamera bergerak mengikuti dari perpindahan
target (karakter). biasanya fungsi standartnya untuk translasi, rotation dan zooming.
3. Fixed Camera
Pada perspektif ini, kamera tetap pada tempat dan tidak berpindah. Dan biasanya terletak
diatas.
Tipe kamera ini adalah free kamera, dimana kamera sama sekali tidak bergerak atau bergerak
mengikuti dari perpindahan target (karakter) secara sumbu x dan y saja.
4. Combined System
Pada perspective ini kita dapat menggabungkan beberapa perspektif kamera diatas untuk
fungsionalitas yang berbeda.
Sumber : Larame, Francois Dominic.2002.Game Design Perspective.Charles River Media :
Massachusetts p.169-170