Pages

Minggu, 23 November 2014

PHYSIC ENGINE

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 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
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://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/

0 comments:

Posting Komentar