Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

3D Game Engine Agung Toto Wibowo

Presentasi serupa


Presentasi berjudul: "3D Game Engine Agung Toto Wibowo"— Transcript presentasi:

1 3D Game Engine Agung Toto Wibowo
Materi tutorial diambil dari wiki Ogre :

2 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

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

4 Ogre 3DEngine OGRE (Object-oriented Graphics Rendering Engine) adalah open source rendering engine grafik yang ditulis dan dimaintain oleh tim inti kecil, Telah berkembang luas menjadi komunitas Well documented and tutorial

5 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 pada Windows (STLport dibutuhkan untuk versi Visual C++ sebelum 2003); Dapat dibangun pada gcc 3+ di Linux dan Mac OSX .

6 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,

7 Instalasi Ogre File SDK ada di

8 Instalasi Ogre Berbagai tambahan plugin disediakan oleh Ogre, termasuk Ogre SDK Wizzard.

9 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) };

10 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

11 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)

12 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

13 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)

14 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

15 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

16 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

17 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

18 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

19 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;

20 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

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

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

23 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");

24 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

25 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

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

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

28 Selamat bersenang-senang


Download ppt "3D Game Engine Agung Toto Wibowo"

Presentasi serupa


Iklan oleh Google