3D Game Engine Agung Toto Wibowo

Slides:



Advertisements
Presentasi serupa
Alam Aby Bashit  Merupakan aplikasi pengolah grafis komputer 3D  Dapat digunakan untuk membuat film animasi, visual efek, aplikasi 3D interaktif.
Advertisements

Usulan Liputan Materi. Apakah Komputer Grafis itu?  Kreasi, Manipulasi, dan Penyimpanan obyek geometris (pemodelan) dan citranya (rendering)  Peragaan.
APLIKASI MANAJEMEN PERKANTORAN - D Minggu 1. Kata “ Visual ” merujuk kepada metode yang digunakan untuk membuat antar muka yang bersifat grafis Graphical.
Grafik 3D.
KOMPUTER GRAFIS I PENGENALAN AUTOCAD 3D
KOMPUTER GRAFIS TEKNIK CAMERA Dalam 3D Studio Max, kamera dibuat dengan memilih tombol create dalam command panel, lalu.
CAHAYA Oleh : Teguh.S.
Agung Toto Wibowo Materi tutorial diambil dari wiki Ogre :
Agung Toto Wibowo Materi tutorial diambil dari wiki Ogre :
Praktikum Bahasa Pemrograman
pelindung orang-orang yang beriman. Dia mengeluarkan mereka dari kegelapan menuju cahaya. (QS 2:257)
pelindung orang-orang yang beriman
Hidden Surface Removal (HSR)
PEMROGRAMAN VISUAL 2 SKS (TEORI)
P E N D A H U L U A N Word Processing
Interferensi Gelombang EM
Algoritma & Pemrograman 1
Menggambar perspektif
Pendahuluan Tentang .Net
Kurniawan Teguh Martono Sistem Komputer Universitas Diponegoro
Mata kuliah Komputer Grafik ( Grafika Computer ) 4 SKS
Grafika & Pengolahan Citra (CS3214) 12 – Rendering
ANIMASI 24/02/10 01:Introduction TEKNOLOGI IF.UB.
Rekayasa Perangkat Lunak Proses Rekayasa Perangkat Lunak
PENGANTAR GRAFIK KOMPUTER & OLAH CITRA
Imam Cholissodin| 06 | Viewing / Camera Imam Cholissodin|
Imam Cholissodin| 06 | Viewing / Camera Imam Cholissodin|
Dasar-dasar Pemrograman PHP
“PERANCANGAN MAP MENGGUNAKAN 3D STUDIO MAX DAN OGREMAX PADA SIMULASI PROSEDUR KESELAMATAN KETIKA TERJADI KEBOCORAN GAS DI DALAM GEDUNG”
Human Modeling Matakuliah: U0676 – Modeling & Shading, Lighting, Rendering I Tahun: 2010.
Animasi Komputer.
17 februari 2011 PJ : Nuraini Purwandari
Pemograman Berorientasi Objek
MODUL KULIAH 10 Ekstraksi Fitur Bentuk
Mata Kuliah : Sistem Operasi
TOOLS OPTIMALISASI ARDUINO
Produksi 3D untuk Desainer
Transformasi Geometri Sederhana
G e o m e t r i F o t o U d a r a ?.
Pengantar Grafika 3D Fakultas Ilmu Komputer 2014
Multimedia Authoring For Health Information
Pengantar Teknologi Mobile
Hidden Surface Removal (HSR)
KULIAH -9 MEMULAI GAMBAR DENGAN 3D MAX
MODUL16 Aplikasi Fitur Bentuk
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Step 3: Memahami Prinsip Desain Antarmuka
Pena "Ajaib" Advan bak Sekretaris Pribadi Saat melakukan rapat, seringkali dokumen hasil corat-coret merepotkan. Catatan pembicaraan, bagan, atau skema.
Proyeksi.
Grafika Komputer Pengenalan Grafika Komputer &
02 |Introduction to OpenGL
Blog : muningmini.wordpress.com
Pemrograman Berorientasi Obyek IT209
Grafika komputer 1.
02 |Introduction to OpenGL
MATA PRAKTIKUM GRAFKOMP2
02 |Introduction to OpenGL
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
Mata Praktikum GRAFKOM2 Pertemuan-1
TUGAS REVIEW JURNAL GRAFIKA KOMPUTER
Nama : Noni Henny Nahumury  Tugas : Simulasi Digital
SIMULASI VISUAL.
X Akomodasi Perhotelan 1
Menggambar perspektif
S1 Teknik Informatika Disusun Oleh Dr. Lily Wulandari
PENCAHAYAAN (LIGHTING)
ALGORITMA DAN BAHASA PEMROGRAMAN JAVA
02 |Introduction to OpenGL
PPG DALAM JABATAN Merancang model obyek 3 dimensi : Fitur dasar aplikasi pemodelan 3 dimensi PROFESIONAL PAKET KEAHLIAN MULTIMEDIA KELOMPOK KOMPETENSI.
NoNamaPenjelasan 1 Header Menu utama Blender yang terdiri dari File, Add, Render dan Help 2 Viewport tampilan yang terdiri dari objek 3D dan objek.
Transcript presentasi:

3D Game Engine Agung Toto Wibowo http://gameprogramming.blog.ittelkom.ac.id/blog/ Materi tutorial diambil dari wiki Ogre : http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials

Game Engine game engine is a software system designed for the creation and development of video games. core functionality : rendering engine (“renderer”) for 2D or 3D graphics, a physics engine or collision detection (and collision response), sound, scripting, & animation, artificial intelligence, networking, streaming, memory management, threading, and a scene graph

Game Engine sometimes called "game middleware" provide a flexible and reusable software platform provides all the core functionality needed, reducing costs, complexities, and time-to-market Some game engines only provide real-time 3D rendering capabilities "graphics engine," "rendering engine," or "3D engine“ RealmForge, Truevision3D, OGRE, Crystal Space, Genesis3D, Irrlicht and JMonkey Engine.

Ogre 3DEngine OGRE (Object-oriented Graphics Rendering Engine) adalah open source rendering engine grafik yang ditulis dan dimaintain oleh tim inti kecil, http://www.ogre3d.org/about/team Telah berkembang luas menjadi komunitas http://www.ogre3d.org/ Well documented and tutorial http://www.ogre3d.org/wiki/index.php/Ogre_Tutorials

Fitur pada Ogre Fitur Ogre meliputi : productivity, platform & 3D API, material / shader, mesh, scene feature, special Effect, dan fitur-fitur penting lainnya. Productivity : Desain interface OO sederhana dan mudah dipergunakan Independent terhadap implementasi 3D (Direct 3D, OpenGL, Glide dan sebagainya Frame work yang extensible Desain yang baik, teratur, dan dokumentasi penuh terhadap semua class engine platform & 3D API, Direct3D (mensupport DirectX 7 dan 9) dan OpenGL; Support terhadap Windows (semua versi utama), Linux dan Mac OSX; Dapat dibangun pada Visual C++ 6, Visual C++ .NET, Visual C++ .NET 2003 dan Visual C++ 2005 pada Windows (STLport dibutuhkan untuk versi Visual C++ sebelum 2003); Dapat dibangun pada gcc 3+ di Linux dan Mac OSX .

Fitur pada Ogre material / shader, mesh, Pengelolaan asset material bisa diluar kode Mendukung fungsi operasi multi texture, dan multipass blending, pembangunan dan pengubahan koordinat tekstur, operasi warna dan alpha blend Mendukung texture file-file PNG, JPEG TGA, BMP, DDS dan beberapa format yang tidak standar lainnya mesh, Menerima format data mesh, memisahkan konsep dari vertex buffers, index buffers, vertex declarations dan buffer mappings Dapat mengeksport dari beberapa modelling tools (Milkshape3D, 3D Studio Max, Maya, Blender dan Wings3D) Patch Biquadric Bezier pada permukaan lengkung; Progressive meshes (LOD) ; scene feature, dan special Effect,

Instalasi Ogre File SDK ada di http://www.ogre3d.org/download/sdk

Instalasi Ogre Berbagai tambahan plugin disediakan oleh Ogre, termasuk Ogre SDK Wizzard. http://sourceforge.net/projects/ogreconglo/files/

Memulai Ogre Buat aplikasi dengan nama “TutorialApplication” melalui Ogre SDK Wizzard Kita akan berkonsentrasi pada kode berikut : class TutorialApplication : public ExampleApplication { protected: public: TutorialApplication() }   ~TutorialApplication() void createScene(void) };

Pembangun Ogre SceneManager Entitas Memanage semua yang muncul pada layar Objek, plane, billboards, light, dan sebagainya type ScneneManager : Octree, Terrain, Nature, Paging, BSP, DotSceneOctree, Portal Connected Zone, Myrddins Paging Landscape, Editable Terrain, dan Planet Rendering Engine Entitas Object (mesh 3D) yang dirender pada sebuah scene. Contoh : Sebuah robot, ikan, terrain Object dirender melihat aspek lokasi, dan orientasi Tidak langsung menempatkan sebuah entity pada scene, melainkan harus ditempelkan pada sebuah object SceneNode

Pembangun Ogre SceneNode mentrack lokasi dan orientasi semua objek yang ditempelkan padanya SceneNode dapat memiliki beberapa object yang ditempelkan kepadanya Posisi SceneNode selalu relative terhadap parentSceneNode, dan setiap SceneManager memiliki root node (lokasi semua SceneNode diletakkan)

Meletakkan Objek Tambahkan kode berikut pada TutorialApplication::createScene() // menset pencahayaan mSceneMgr->setAmbientLight( ColourValue( 1, 1, 1 ) ); // menambahkan objek ke scene. Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" ); SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" ); node1->attachObject( ent1 ); Kompile, dan jalankan aplikasi

Koordinat dan Vektor Sumbu x dan z sebagai bidang horisontal, dan sumbu y adalah sumbu vertikal. Sumbu x akan berjalan dari kiri ke kanan monitor Sumbu y sejajar dengan bawah ke atas monitor, Sumbu z adalah arah menuju dan menjauh dari monitor, class Vector untuk merepresentasikan posisi dan arah 2 (Vector2), 3 (Vector3), dan 4 (Vector4)

Menambahkan Objek Tambahkan kode berikut pada TutorialApplication::createScene() yang telah kita ubah tadi. // menambahkan robot kedua dengan lokasi bergeser 50 unit dari robot pertama. Entity *ent2 = mSceneMgr->createEntity( "Robot2", "robot.mesh" ); SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode2", Vector3( 50, 0, 0 ) ); node2->attachObject( ent2 ); Kompile, dan jalankan program

Beberapa Method Penting Entity Entity::setVisible, Entity::isVisible, Entity::getName, Entity::getParentSceneNode SceneNode SceneNode ::getPosition , SceneNode ::setPosition , SceneNode :: translate, SceneNode :: scale, SceneNode::yaw, SceneNode::pitch, SceneNode::roll, SceneNode::resetOrientation, SceneNode::setOrientation, SceneNode::getOrientation, SceneNode::rotate

Translasi Ubah kode pada TutorialApplication::createScene() menjadi seperti di bawah ini Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" ); SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" ); node1->attachObject( ent1 );   Entity *ent2 = mSceneMgr->createEntity( "Robot2", "robot.mesh" ); SceneNode *node2 = node1->createChildSceneNode( "RobotNode2", Vector3(0, 0, 0 ) ); node2->attachObject( ent2 ); node2->translate( Vector3( 50, 0, 10 ) ); // ubah-ubah nilai di sini, maka kedua robot masih berjarak sama. Kenapa??? node1->translate( Vector3( 10, 0, 10 ) ); Kompile, dan jalankan program

Penskalaan Ubah kode pada TutorialApplication::createScene() menjadi seperti di bawah ini Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" ); SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" ); node1->attachObject( ent1 );  node1->scale( .5, 1, 2 );   Entity *ent2 = mSceneMgr->createEntity( "Robot2", "robot.mesh" ); SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode2", Vector3( 50, 0, 0 ) ); node2->attachObject( ent2 );  node2->scale( 1, 2, 1 ); Kompile, dan jalankan program

Rotasi Kita dapat merotasikan objek dengan mempergunakan method yaw, pitch, dan roll baik dalam degree atau dalam radian. Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" ); SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" ); node1->attachObject( ent1 );  node1->yaw( Degree( -90 ) );   Entity *ent2 = mSceneMgr->createEntity( "Robot2", "robot.mesh" ); SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode2", Vector3( 50, 0, 0 ) ); node2->attachObject( ent2 );  node2->pitch( Degree( -90 ) ); Kompile, dan jalankan program

Kamera, Bayangan dan Cahaya Sebelum lebih lanjut mencoba kamera, bayangan dan cahaya pada ogre, kita akan ubah terlebih dahulu kode pada class TutorialApplication dengan menambahkan method berikut virtual void createCamera(void) { }   virtual void createViewports(void)   void createScene(void) Entity *ent; Light *light;

Kamera dan Viewport Kamera Viewport objek special yang berkerja seperti SceneNode dipergunakan untuk melihat scene memiliki fungsi setPosition, yaw, roll, dan pitch, dan bisa kita attach pada SceneNode Viewport menentukan scene mana pada kamera yang akan kita render

Membuat Kamera Tambahkan kode berikut pada TutorialApplication::createCamera() // create the camera mCamera = mSceneMgr->createCamera("PlayerCam"); // set its position, direction mCamera->setPosition(Vector3(0,10,500)); mCamera->lookAt(Vector3(0,0,0)); mCamera->setNearClipDistance(5); Perintah pertama membuat kamera dengan nama “PlayerCam” Perintah kedua menset posisi dari kamera, sedang perintah berikutnya menset arah pandang kamera Perintah terakhir menentukan jarak terdekat yang terlihat kamera. Untuk menset jarak terjauh gunakan setFarClipDistance.

Membuat Viewport Tambahkan kode berikut pada TutorialApplication::createViewport() // Create one viewport, entire window Viewport* vp = mWindow->addViewport(mCamera);   vp->setBackgroundColour(ColourValue(0,0,0)); // mengubah aspect ratio camera mCamera->setAspectRatio( Real(vp->getActualWidth()) / Real(vp->getActualHeight()) ); Perintah membuat viewport dengan menempelkan sebuah kamera pada viewport. Perintah kedua menset background dari viewport. Menset aspect ratio dari viewport.

Bayangan (shadow) SceneManager memiliki fungsi setShadowTechnique untuk menset type bayangan yang kita inginkan Untuk mencoba shadow pada Ogre, tambahkan kode berikut pada TutorialApplication::createScene(); mSceneMgr->setAmbientLight(ColourValue(0, 0, 0)); mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE); // menambahkan objek ent = mSceneMgr->createEntity("Ninja", "ninja.mesh"); ent->setCastShadows(true); mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent); // membuat ground tempat shadow diproyeksikan. Plane plane(Vector3::UNIT_Y, 0); MeshManager::getSingleton().createPlane("ground", ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane, 1500,1500,20,20,true,1,5,5,Vector3::UNIT_Z); ent = mSceneMgr->createEntity("GroundEntity", "ground");

Cahaya (Light) Point (LT_POINT) Spotlight (LT_SPOTLIGHT) cahaya point memancarkan cahaya dari titik ke semua arah Spotlight (LT_SPOTLIGHT) Cahaya akan keluar melalui suatu arah tertentu Bisa ditentukan besar sudut lingkaran dalam dan lingkaran luar terang pada center, dan lebih redup pada bagian luar Directional (LT_DIRECTIONAL) mensimulasikan cahaya jarak jauh yang menabrak apapun pada scene dari satu arah menset directional light

Membuat Cahaya pada Ogre[1] Tambahkan kode berikut pada TutorialApplication::createScene light = mSceneMgr->createLight("Light1"); light->setType(Light::LT_POINT); light->setPosition(Vector3(0, 150, 250)); light->setDiffuseColour(1.0, 0.0, 0.0); light->setSpecularColour(1.0, 0.0, 0.0); Kompile dan jalankan aplikasi. Kita dapatkan ninja dan bayangannya. Lihat juga ninja dari depan, maka akan terlihat ada silhouette

Membuat Cahaya pada Ogre[2] Tambahkan kode berikut pada TutorialApplication::createScene() light = mSceneMgr->createLight("Light2"); light->setType(Light::LT_SPOTLIGHT); light->setDiffuseColour(0, 0, 1.0); light->setSpecularColour(0, 0, 1.0); light->setDirection(-1, -1, 0); light->setPosition(Vector3(300, 300, 0)); light->setSpotlightRange(Degree(35), Degree(50)); Kompile dan jalankan aplikasi.

Membuat Cahaya pada Ogre[3] Tambahkan kode berikut pada TutorialApplication::createScene() light = mSceneMgr->createLight("Light3"); light->setType(Light::LT_DIRECTIONAL); light->setDiffuseColour(ColourValue(.25, .25, 0)); light->setSpecularColour(ColourValue(.25, .25, 0)); light->setDirection(Vector3( 0, -1, 1 )); Kompile dan jalankan aplikasi.

Selamat bersenang-senang