PHYSIC ENGINE
Physic
Engine (Mesin Fisik) adalah perangkat lunak yang didesain untuk
menampilkan/ melakukan simulasi berbagai jenis fenomena objek fisik di alam.
Simulasi yang dilakukan dapat memprediksi bermacam-macam kejadian dalam kondisi
yang berbeda serta memperkirakan apa yang akan terjadi dalam kehidupan nyata.
Engine ini secara rutin menangani perilaku objek-objek misalnya, benda keras,
partikel, gelombang, cloth, serta deteksi benturan (collision) dan dinamik.
Prinsip
kerjanya, physic engine akan melakukan spesifikasi force (gaya) terhadap objek
berdasarkan input user dalam setiap loop. Sehingga, output yang ditimbulkan
adalah hasil komputasi dari physic engine.
Secara
proses misalnya, physic engine melakukan collision detection kemudian output
dari module tersebut diberikan pada komponen kedua, simulation system.
Simulation system (sistem integrator) ini digunakan untuk melakukan perhitungan
berdasarkan rumus fisika dan hasilnya akan melakukan update property dari objek
yang disimulasikan.
Ada
bermacam-macam jenis phisic engine yaitu, PhysX of AGEIA (NVIDIA), HAVOC engine
dari HAVOC, ODE (Open Dynamics Engine), dll. Yang mana, engine fisik ini tidak
hanya berguna untuk penelitian (research), tapi juga untuk berbagai macam
aplikasi seperti game (permainan) yang memasukkan unsur gravitasi, akselerasi,
pergeseran, dll.
physic
engine menjadikan sebuah game yang dibuat akan menjadi menarik dan perilaku
serta karakter objek game menjadi lebih nyata dibandingkan tanpa menggunakan
physic engine.
Macam-Macam Physics Engines
PhysX
of AGEIA
PhysX
pada awalnya dikembangkan oleh Ageia sebagai NovodeX SDK. Ageia adalah
perusahaan yang bergerak di bidang pasar grafis 3D dengan ide fantastis untuk
membawa fisika komputasi ke dalam permainan komputer. Why ??? karena para
teknisi Ageia mengetahui bahwa fisika memungkinkan perhitungan yang lebih
ekstrim dan memberikan pengalaman visual yang nyata. Nah gara-gara itulah,
akhirnya pada Februari 2008, nVIDIA membeli Ageia sebesar 30 juta dolar dan
mempekerjakan staff ahli Ageia untuk menghasilkan Ageia’s PhysX API.
PhysX
sendiri adalah proprietary (closed source) realtime /physics engine/middleware
SDK, yang dikembangkan oleh NVIDIA (bersama penemunya : AGEIA), untuk mengakselerasi
performa PhysX-enabled Video Games. Video Games yang telah mendukung/support
akselerasi hardware oleh PhysX dapat diakselerasi performa grafisnya, baik oleh
PhysX, maupun CUDA-enabled GeForce GPU secara bersamaan. Pemanfaaatan teknologi
ini di klaim mampu dapat menjadikan proses , perhitungan “physics” dari CPU
menjadi lebih cepat. Hal ini tentu juga meningkatkan framerate, hal inilah yang
menghasilkan gambar pada game keliatan halus.
Asal
tau aja PhysX telah didesain secara spesifik untuk akselerasi hardware dari
Processor yang powerful dengan ratusan core (inti). Dikombinasikan dengan
kemampuan proses yang luar biasa dari GPU. PhysX akan menyediakan peningkatan
eksponensial (perkalian berulang) pada kekuatan proses “physics”. Selain itu PhysX
akan memberikan memperlihatkan peningkatan daya pengolahan fisika dan
meningkatkan kualitas game dengan menyajikan efek seperti:
Kelebihan
*
Menambah efek debu dari reruntuhan bangunan
*
Karakter dengan kompleks untuk lebih hidup seperti gerakan dan interaksi
*
Efek senjata baru dan menakjubkan
*
Drapes kain yang alami dan air mata
*
Kabut asap tebal yang menggelembung sekitar objek dalam gerakan
Yang
intinya membuat efek, gerakan dan interaksi obyek dalam game menjadi nyata. hal
ini dikarenakan physics menggunakan data perhitungan fisika untuk menganimasi
gerakan dan interaksi yang nyata.
PRINSIP
KERJA PHYSICS ENGINE
Dengan
physisc engine, objek tidak lagi digerakkan secara langsung, tetapi
dispesifikasikan berdasarkan force berdasarkan input dari pemain, dalam setiap
loop pada setiap objek dalam game. Physics engine bertugas untuk menghitung
perkiraan posisi dan orientasi selanjutnya dari objek tersebut.
Kalau
boleh diruntut secara sistematis, sebenarnya ada dua proses utama dalam Physics
Engine : yang pertama adalah melakukan “collision detection”. Output dari modul
ini kemudian diberikan pada komponen kedua, yaitu “simulation system” (biasa
disebut “integrator”), untuk melakukan perhitungan berdasarkan rumus fisika.
Simulation system kemudian akan memberikan update properti dari objek yang
disimulasikan.
Kelemahan
PhysX
Untuk
software, kalkulasi physic oleh PhysX engine selain memerlukan driver PhysX,
juga hanya akan bekerja pada software2 yg telah mengimplementasikan engine
PhysX ini, jadi efek2 physic oleh PhysX engine HANYA akan bekerja pada
software2(game2) yg didukung, dg driver yg sesuai, dan hardware yg yg
mendukung.. intinya efek physic tidak akan keluar jika hanya memiliki salah
satu misalnya hardwarenya saja yg mendukung.
Box2D
Box2D
merupakan salah satu library physic 2D yang cukup populer
digunakan dalam game-game 2D. Colin Northway kemudian mengadaptasikan library
buatan Erin Catto ini kedalam format ActionScript 3 yang bisa digunakan untuk
aplikasi Flash.
HAVOC
ENGINE
kalau
kamu belum pernah mendengar Havok sebelumnya, Havok adalah
physics engine yang telah banyak digunakan dalam game AAA yang terkenal seperti
Skyrim, Assasin’s Creed, Call of Duty dan masih banyak lagi.
Kita
bisa menggunakan game engine ini secara free. Di blognya disebutkan kalau kita
bisa mendownloadnya secara free dan game buatan kita itu bisa dirilis untuk
platform iOS dan Android secara free tanpa ada biaya tambahan lagi.
Memang
sih, sudah ada beberapa game engine 3D yang sudah cukup populer di kalangan
pengembang game mobile saat ini. Tapi yang menarik dari Project Anarchy ini
adalah janji dari Havok kalau game engine ini benar-benar free tanpa ada
embel-embel biaya lisensi atau pemotongan fitur seperti halnya game engine yang
lain (misal: Unity3D atau Unreal).
Nah..
Kalau memang benar apa yang dijanjikan oleh Havok tadi, maka kita memiliki
peluang untuk membuat game 3D di mobile sekualitas game AAA tanpa harus
mengeluarkan biaya apapun untuk enginenya.
Havok
Physics is fully multi-threaded and cross-platform optimized for leading game
platforms including, Xbox One®, the all-in-one games and entertainment system
from Microsoft, Xbox 360™ video game and entertainment system, Playstation® 4,
PlayStation®3 computer entertainment system, PC Games for Windows, PlayStation
Vita®, Wii™, Wii U™, Android™, iOS, Apple Mac OS and Linux.
UNITY3D
Unity 3D adalah sebuah
game developer software yaitu sebuah software game engine pembuat game. Unity
3D adalah alat authoring yang terintegrasi untuk menciptakan video game 3D
atau konten interaktif lainnya seperti visualisasi arsitektur atau real-time
animasi 3D. Lingkungan pengembangan Unity 3D yang berjalan pada Microsoft
Windows dan Mac OS X, dan game yang dihasilkan dapat dijalankan pada Windows,
Mac, Xbox 360, PlayStation 3, Wii, iPad, iPhone, serta platform Android.
Unity 3D tersedia dalam
dua versi, ada yang free dan ada juga yang berlisensi. Tentu saja ada
fitur-fitur atau tool - tool yang di tonjolkan apabila kita memiliki unity 3D
yang versi berlisensi. Saya kurang begitu tahu fitur-fitur apa saja yang ada
dalam versi bayar karena di sini saya hanya pakai versi free.
Unity 3D juga memiliki
kemampuan mengekspor game untuk fungsional Tahap 3D Adobe di Flash, tapi fitur
tersebut di webplayer tidak bisa digunakan karena keterbatasan yang ada
di Flash. unity 3d sebenarnya hampir mirip seperti Director, Blender
game engine, Virtools,
Torque
Game Builder, and Gamestudio, yang menggunakan juga graphical environment sebagai
metode utama dalam pembuatan game.
Bagi
programer yang jago java dan C#, unity adalah salah satu game engine yang
mendukung bahasa pemrograman tersebut yang juga merupakan salah satu dari
kelebihan unity 3D.
Kelebihan
-
GRATIS! Engine ini
bisa dimanfaatkan secara cuma-cuma dan versi gratisnya sudah sangat memadai
untuk bikin game di Windows Phone 8.
-
Akan sangat mempercepat desain level
/ layout di game dengan adanya editor WYSIWYG (What You See Is What You Get).
Gak perlu nunggu build / compile, kita udah bisa lihat contoh tampilan game di
layar dengan resolusi tertentu.
-
Unity Asset Store sudah sediakan
segudang asset siap pakai (ada yang FREE, ada juga yang berbayar). Kalau kita
butuh sound effect, atau karakter untuk game kita, bisa berkunjung ke asset
store ini.
-
Bahasa yang digunakan sama dengan
development windows phone, yaitu C#. Bisa juga pilih bahasa mirip
Javascript, mereka menyebutnya UnityScript.
Kekurangan
-
Butuh penyesuaian yang agak kompleks
saat mau develop game 2d tanpa bantuan plugin. Kenapa kompleks? karena ada
kebutuhan menggunakan aplikasi modelling 3d (nah..) untuk membuat bingkai
sprite.
-
Perlu penyesuaian mengikuti gaya
Component Based. Di Unity, semua logic game (misalkan logic untuk Player,
Enemy, Weapon) di”tempelkan” langsung ke object via scripting. Contoh nyatanya,
misalkan dalam game kita ada object Mobil, “mesin” untuk menggerakkan mobil
adalah 1 komponen, dan “setir mobil” juga merupakan 1 komponen.
Unity3D Physics
Physics
Unity memiliki game engine physics Ageia PhysX yang terintegrasi. Hal ini memungkinkan behavior dalam game dibuat dengan unik dan sesuai dengan fisika.
Basics
Untuk menerapkan sifat fisika ke suatu objek, dilakukan dengan menambahkan component RigidBody
Setelah ini, objek akan terpengaruh dengan gravitasi dan bisa bertubrukan dengan objek lain yang ada di dalam scene.
Rigidbodies
Rigidbody dapat digunakan pada benda-benda yang dapat didorong oleh player seperti peti atau objek lepas. Joint juga dapat ditambahkan ke rigidbody untuk membuat behavior dari suatu objek lebih kompleks, contohnya membuat suatu pintu dengan engselnya atau suatu rantai yang terhubung dan berayun.
Rigidbody juga dapat digunakan untuk membuat kendaraan. Untuk membuat mobil, dapat mengginakan 4 Wheel Collider dan suatu script yang memberikan gaya pada roda berdasarkan input user. Pesawat dapat dibuat dengan mengaplikasikan gaya ke objek dari suatu script, atau anda dapat juga membuat kendaraan khusus atau robot dengan menambahkan joint.
Rigidbody biasanya sering digunakan bersamaan dengan primitive collider.
Constant Force
Constant Force adalah suatu cara untuk menambahkan gaya konstan pada suatu rigidbody, misalnya untuk membuat tembakan roket yang berakselerasi.
A rocket propelled forward by a Constant Force
Properties
Sphere Collider
Details
Sphere Collider dapat di-resize dan sangat bagus untuk bola, kelereng dan benda berbentuk bulat sempurna lainnya.
Collider bekerja dengan Rigidbody untuk memeberikan sentuhan fisika di Unity. Rigidbody (benda tegar) memungkinkan suatu objek dikendalikan oleh fisika, Collider memungkinkan suatu objek bertubrukan sesuai hukum fisika. Suatu collider tidak harus memiliki rigidbody sedangkan suatu rigidbody harus dipasang agar suatu objek bergerak sebagai hasil dari suatu tubrukan.
Box Collider
Box Collider adalah suatu deteksi collision berbentuk kubus.
A pile of Box Colliders
Properties
Details
Box Collider dapat di-resize dengan bermacam-macam bentuk prisma segi-empat. Sangat cocok untuk pinto, tembok, platform, atau objek simple yang berbentuk kotak.
Mesh Collider
Mesh Collider dibuat berdasarkan suatu Mesh, sehingga jauh lebih akurat untuk deteksi collision dibandingkan menggabungkan antar berbagai macam Collider. Mesh Collider yang dijadikan Convex dapat bertubrukan dengan Mesh Collider lainnya.
A Mesh Collider used on level geometry
Properties
Hints
Physic Material digunakan untuk mengatur gesekan dan efek memantul dari objek yang berbenturan.
Untuk membuat suatu Physic Material, pilih Assets->Create->Physic Material dari menu bar kemudian drag objeknya dari Project View ke Scene.
Properties
Details
Friction/gesekan adalah nilai yang mencegah 2 buah benda yang bersentuhan agar tidak saling tergelincir. Nilai ini sangat penting pada saat ingin menumpuk objek. Gesekan ada dua jenis yaitu statis dan dinamis. Gaya gesek statis digunakan saat objek berada dalam keadaan diam. Ia akan mencegah objek untuk bergerak. Jika suatu gaya diberikan dalam jumlah yang cukup besar, maka benda akan mulai bergerak dan gaya gesek yang berlaku adalah gaya gesek dinamis.
Hinge Joint
Hinge Joint menggabungkan 2 objek Rigidbody, membatasi gerakan mereka seolah terhubung oleh suatu sendi. Sangat cocok untuk pintu, dan bisa juga untuk memodelkan rantai, bandul, dll.
Unity3D Physics Engine
Unity3D Physics
Physics
Unity memiliki game engine physics Ageia PhysX yang terintegrasi. Hal ini memungkinkan behavior dalam game dibuat dengan unik dan sesuai dengan fisika.
Basics
Untuk menerapkan sifat fisika ke suatu objek, dilakukan dengan menambahkan component RigidBody
Setelah ini, objek akan terpengaruh dengan gravitasi dan bisa bertubrukan dengan objek lain yang ada di dalam scene.
Rigidbodies
Rigidbody dapat digunakan pada benda-benda yang dapat didorong oleh player seperti peti atau objek lepas. Joint juga dapat ditambahkan ke rigidbody untuk membuat behavior dari suatu objek lebih kompleks, contohnya membuat suatu pintu dengan engselnya atau suatu rantai yang terhubung dan berayun.
Rigidbody juga dapat digunakan untuk membuat kendaraan. Untuk membuat mobil, dapat mengginakan 4 Wheel Collider dan suatu script yang memberikan gaya pada roda berdasarkan input user. Pesawat dapat dibuat dengan mengaplikasikan gaya ke objek dari suatu script, atau anda dapat juga membuat kendaraan khusus atau robot dengan menambahkan joint.
Rigidbody biasanya sering digunakan bersamaan dengan primitive collider.
Constant Force
Constant Force adalah suatu cara untuk menambahkan gaya konstan pada suatu rigidbody, misalnya untuk membuat tembakan roket yang berakselerasi.
A rocket propelled forward by a Constant Force
Properties
Force
|
Vektor gaya yang diberikan pada
seluruh world.
|
Relative Force
|
Vektor gaya yang diberikan pada
wilayah lokal objek tertentu.
|
Torque
|
Vektor dari torsi yang diberikan
pada seluruh world. Objek aka berputar terhadap vector ini. Semakin panjang
vector semakin cepat rotasi.
|
Relative Torque
|
Vektor dari torsi yang diberikan
pada wilayah lokal objek tertentu.
|
Sphere Collider
Sphere Collider adalah suatu deteksi collision
berbentuk bola.
Properties
Material
|
Materi fisik yang menentukan sifat
collider ini dalam berinteraksi dengan objek lain. Hal ini menentukan sifat
pantul dari objek.
|
Is Trigger
|
Jika dicentang, maka collider ini
digunakan untuk memicu event, dan tidak dianggap oleh physics engine.
|
Radius
|
ukuran Collider.
|
Center
|
Posisi collider.
|
Details
Sphere Collider dapat di-resize dan sangat bagus untuk bola, kelereng dan benda berbentuk bulat sempurna lainnya.
Collider bekerja dengan Rigidbody untuk memeberikan sentuhan fisika di Unity. Rigidbody (benda tegar) memungkinkan suatu objek dikendalikan oleh fisika, Collider memungkinkan suatu objek bertubrukan sesuai hukum fisika. Suatu collider tidak harus memiliki rigidbody sedangkan suatu rigidbody harus dipasang agar suatu objek bergerak sebagai hasil dari suatu tubrukan.
Triggers
Cara lain menggunakan Collider adalah menjadikannya sebagai trigger/pemicu. Trigger tidak dianggap oleh physic engine. Trigger akan mengirim sinyal/message apabila bertubrukan. Trigger sering digunakan untuk even seperti cutscenes, pintu terbuka otomatis, menampilkan pesan tutorial, dsb.Box Collider
Box Collider adalah suatu deteksi collision berbentuk kubus.
A pile of Box Colliders
Properties
Material
|
Materi fisik yang menentukan sifat
collider ini dalam berinteraksi dengan objek lain. Hal ini menentukan
interaksi collider ini dengan objek lainnya.
|
Is Trigger
|
Jika dicentang, maka collider ini
digunakan untuk memicu event, dan tidak dianggap oleh physics engine.
|
Size
|
Ukuran collider pada arah X, Y, Z.
|
Center
|
Posisi collider pada wilayah lokal
objek.
|
Details
Box Collider dapat di-resize dengan bermacam-macam bentuk prisma segi-empat. Sangat cocok untuk pinto, tembok, platform, atau objek simple yang berbentuk kotak.
Mesh Collider
Mesh Collider dibuat berdasarkan suatu Mesh, sehingga jauh lebih akurat untuk deteksi collision dibandingkan menggabungkan antar berbagai macam Collider. Mesh Collider yang dijadikan Convex dapat bertubrukan dengan Mesh Collider lainnya.
A Mesh Collider used on level geometry
Properties
Material
|
Materi fisik yang menentukan sifat
collider ini dalam berinteraksi dengan objek lain. Hal ini menentukan
interaksi collider ini dengan objek lainnya..
|
Is Trigger
|
Jika dicentang, maka collider ini
digunakan untuk memicu event, dan tidak dianggap oleh physics engine.
|
Mesh
|
Mesh yang akan digunakan untuk
collision.
|
Smooth Sphere Collisions
|
Jika di-enable maka gaya normal
mesh akan diperhalus. Ini cocok dilakukan pada permukaan halus.
|
Convex
|
Jika di-enable Mesh Collider akan
bertubrukan dengan Mesh Collider lainnya. Mesh Collider Convex terbatas pada
255 segitiga.
|
Hints
- Mesh Colliders tidak dapat berbenturan dengan sesame kecuali tertanda sebagai Convex. Karena itu, Mesh Collider sangat cocok untuk object background.
- Convex Mesh Colliders terbatas pada 255 segitiga.
- Collider biasa lebih hemat komputasi untuk objek yang terpengaruh fisika.
Physic Material digunakan untuk mengatur gesekan dan efek memantul dari objek yang berbenturan.
Untuk membuat suatu Physic Material, pilih Assets->Create->Physic Material dari menu bar kemudian drag objeknya dari Project View ke Scene.
Properties
Dynamic Friction
|
Gesekan yang digunakan saat mulai
bergerak. Biasanya memiliki nilai 0-1. Nilai 0 seperti es, nilai 1 akan
memberikan gesekan yang sangat tinggi.
|
Static Friction
|
Gesekan yang digunakan saat suatu
objek terletak pada suatu permukaan. Jangkauan nilai 0-1.
|
Bouncyness
|
Menentukan sifat pantul permukaan
objek. Dengan nilai 0, maka benda tidak akan memantul, nilai 1 maka benda
memantul tanpa kehilangan energy.
|
Friction Combine Mode
|
Cara gesekan dari kedua objek
digabungkan.
|
Average
|
Nilai gesekan dari kedua objek
dirata-rata.
|
Min
|
Menggunakan nilai gesekan terkecil
dari kedua gesekan.
|
Max
|
Menggunakan nilai gesekan terbesar
dari kedua gesekan.
|
Multiply
|
Kedua gesekan dikalikan.
|
Bounce Combine
|
Cara kedua sifat pantul dari kedua
objek digabungkan. Mode yang sama dengan Friction Combine Mode.
|
Friction Direction 2
|
Arah anisotropy. Gesekan
anisotropic di-enable jika arah ini bukan 0. Dynamic Friction 2 dan Static
Friction 2 akan diaplikasikan bersama Friction Direction 2.
|
Dynamic Friction 2
|
Jika anisotropic friction
di-enabled, DynamicFriction2 akan diaplikasikan bersama Friction Direction 2.
|
Static Friction 2
|
Jika anisotropic friction
di-enabled, StaticFriction2 akan diaplikasikan bersama Friction Direction 2.
|
Details
Friction/gesekan adalah nilai yang mencegah 2 buah benda yang bersentuhan agar tidak saling tergelincir. Nilai ini sangat penting pada saat ingin menumpuk objek. Gesekan ada dua jenis yaitu statis dan dinamis. Gaya gesek statis digunakan saat objek berada dalam keadaan diam. Ia akan mencegah objek untuk bergerak. Jika suatu gaya diberikan dalam jumlah yang cukup besar, maka benda akan mulai bergerak dan gaya gesek yang berlaku adalah gaya gesek dinamis.
Hinge Joint
Hinge Joint menggabungkan 2 objek Rigidbody, membatasi gerakan mereka seolah terhubung oleh suatu sendi. Sangat cocok untuk pintu, dan bisa juga untuk memodelkan rantai, bandul, dll.
Sumber
:
http://kirmann.wordpress.com/2010/08/26/apa-itu-physic-engine/#more-377
http://www.havok.com/products/physics
http://www.havok.com/products/physics
http://gery-casakom.blogspot.com/2010/10/teknologi-kartu-grafis-vga-nvidia.html
http://imild.wordpress.com/2013/04/14/project-anarchy-3d-engine-yang-benar-benar-free-3/
http://ekagib.wordpress.com/2010/06/15/unity3d-physics-engine/
http://ekagib.wordpress.com/2010/06/15/unity3d-physics-engine/
0 comments:
Posting Komentar