Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Agung Toto Wibowo Materi tutorial diambil dari wiki Ogre :

Presentasi serupa


Presentasi berjudul: "Agung Toto Wibowo Materi tutorial diambil dari wiki Ogre :"— Transcript presentasi:

1 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. RealmForgeTruevision3DOGRECrystal Space Genesis3DIrrlichtJMonkey 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);STLport  Dapat dibangun pada gcc 3+ di Linux dan Mac OSX.

6 Fitur pada Ogre  material / shader,  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)Blender  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() { } protected: void createScene(void) { } };

10 Pembangun Ogre  SceneManager  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  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"); mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);

24 Cahaya (Light)  Point (LT_POINT)  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 "Agung Toto Wibowo Materi tutorial diambil dari wiki Ogre :"

Presentasi serupa


Iklan oleh Google