Ogre Overview.

Slides:



Advertisements
Similar presentations
3D Mental Vision A teaching platform for Computer Graphics and Virtual Reality.
Advertisements

MVisio: a multi-device 2D/3D graphic engine for PDAs, PCs and CAVEs Achille Peternier, Ph. D. Student VRLab, EPFL, Switzerland 3D Mental Vision.
FireMonkey Deep Dive The Next Generation of Business Application Development.
MANIFEST DESTINY 560group3 Abe Kim David Straily Jarrod Freeman Abdul Mod-Rokbi “The future of RTS games...”
Irrlicht Engine Overview By Eric Osugi. Irrlicht's development started in 2003 with only Nikolaus Gebhardt. Only after the 1.0 release of Irrlicht in.
CGDD 4003 THE MASSIVE FIELD OF COMPUTER GRAPHICS.
Game Engines Non-game specific technology Game: – Engine – Assets (models, animations, sounds, AI, and physics) – Code (AI, Scripting, etc.)
Unity 3D game IDE 1.  Unity is a multi-platform, integrated IDE for scripting games, and working with 3D virtual worlds  Including:  Game engine ▪
AGD: 5. Game Arch.1 Objective o to discuss some of the main game architecture elements, rendering, and the game loop Animation and Games Development.
Hierarchical Transformations Hierarchical Models Scene Graphs
Week 1 - Friday.  What did we talk about last time?  C#  SharpDX.
Games Development 2 Entity / Architecture Review CO3301 Week
Dakota Humphries (Project Lead) Thomas Impellitteri (Tech Lead) Daryl McGhee II (Design Lead) Keith Rosier (Asset Lead)
Antigone Engine Kevin Kassing – Period
Spatial Data Structures Jason Goffeney, 4/26/2006 from Real Time Rendering.
Zhonghua Qu and Ovidiu Daescu December 24, 2009 University of Texas at Dallas.
UFCEKU-20-3Web Games Programming Unity 3D Basic Concepts Using and Creating Prefabs.
EEC-693/793 Applied Computer Vision with Depth Cameras Lecture 13 Wenbing Zhao
Computer Graphics World, View and Projection Matrices CO2409 Computer Graphics Week 8.
Game Engine Programming. Game Engine Game Engine Rendering Engine (OGRE) Rendering Engine (OGRE) Physics Engine (Bullet) Physics Engine (Bullet) Input/Output.
1 Useful Tools for Making Video Games Part V An overview of.
CS 450: COMPUTER GRAPHICS PORTRAIT OF AN OPENGL PROGRAM SPRING 2015 DR. MICHAEL J. REALE.
Game Engine Jian-Liang Lin ( 林建良 )
Learning Unity. Getting Unity
2008/9/24 Kim, HyungSeok. HyungSeok Kim, Konkuk University Part I: Framework – 1. Windows creation – 2. Renderer – 3. Lights and Objects/Model loading.
Useful Tools for Making Video Games Part II An overview of.
“The perfect project plan is possible if one first documents a list of all the unknowns.” Bill Langley.
CSE 381 – Advanced Game Programming GLSL. Rendering Revisited.
Auran Jet Engine Keng Shih-Ling
Introduction to Game Programming Pertemuan 11 Matakuliah: T0944-Game Design and Programming Tahun: 2010.
REFERENCE: QUATERNIONS/ Ogre Transformations.
Object Animation CMT3317. Do you need to do animation? We consider ways of animating composite objects – that have a number of different parts e.g. a.
Game Engines Game: – Engine – Assets (models, animations, sounds, AI, and physics) – Code (Rules, AI, Scripting, etc.)
Lecture 8: Discussion of papers OpenGL programming Lecturer: Simon Winberg Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
Game Development with Unity3D
EEC-693/793 Applied Computer Vision with Depth Cameras
Quick Intro to Unity Lecture 2.
Reference: Object Oriented Design and Programming (Horstmann)
3D Slicer module programming
- Introduction - Graphics Pipeline
Scene Manager Creates and places movable objects like lights and cameras so as to access them efficiently, e.g. for rendering. Loads and assembles world.
Week 2 - Monday CS361.
Computer Graphics Imaging
Antigone Engine.
Game Architecture Rabin is a good overview of everything to do with Games A lot of these slides come from the 1st edition CS 4455.
EEC-693/793 Applied Computer Vision with Depth Cameras
Introduction to Microsoft Access
Introducing Blender.
Ogre Overview Lecture 3.
CISC326ix Raymond Chung ( ) Tim Crowley ( ) Jerry Mak ( ) Jashan Sudan ( ) Chris Thomas ( ) Cody Weeden ( )
Understanding Theory and application of 3D
Introducing Blender.
TerraForm3D Plasma Works 3D Engine & USGS Terrain Modeler
EEC-693/793 Applied Computer Vision with Depth Cameras
Introducing Blender.
Hierarchical and Object-Oriented Graphics
CSE 381 – Advanced Game Programming Terrain
Unit 20 Software Part 2.
Assignment 1 Creating a Heart.
Unit 20 Software Part 2.
Hierarchical and Object-Oriented Graphics
Game Engines Non-game specific technology Game: Engine
Procedural Animation Lecture 2: 3D & Houdini basics
EEC-693/793 Applied Computer Vision with Depth Cameras
02 | What DirectX Can Do and Creating the Main Game Loop
CIS 441/541: Introduction to Computer Graphics Lecture 15: shaders
03 | Creating, Texturing and Moving Objects
Games Development 2 Tools Programming
Games Development 2 Entity / Architecture Review
Presentation transcript:

Ogre Overview

What is it? Object-Oriented Graphics Rendering Engine Not a game engine – we'll add that! Implements much of what your learned about in ETGG280x Shadows Hierarchical Transformations (with culling and material optimization) Optimized scene managers (tileable-terrain, BSP, etc). Plugin architecture allows many custom managers Billboards / overlays Shader support Skeletal (forward kinematics) animation particle systems … C++ oriented It's large, but well-designed. Cross-platform (linux, iOS, OSX, …) using DirectX / OpenGL Easy to integrate other libraries Python (scripting) Bullet (physics) irrklang (3d sound) SDL (windowing, input) MIT license

First steps Create a window (SDL) – Lab01 Include rudimentary input support (keyboard) Initialize Ogre (and it's subsystems) – Lab02 Make Ogre render to the SDL window Render a simple scene Update the scene – Lab03 (we'll look at transformations here)

Part I: SDL To Lab1 !! Our goal: Create a window Rudimentary input (escape key presses and close button) No drawing

PartII: Add a dash of Ogre… Ogre can be a bit intimidating Turns a lot of people off I'll list here my top-6 "things" to know about in Ogre. Our goal (Lab2): Let Ogre create a window and make SDL capture the input for it. Initialize Ogre Load a mesh and a light source and display in 3d.

II.a The Root The only object you directly allocate in Ogre Ogre::Root * mRoot = new Ogre::Root("plugins.cfg"); (Make sure you deallocate it when the program ends…) The root contains all of the top-level managers TextureManager, GPUProgramManager, … The render window (if any) The scene manager (if any) So…this is technically the only Ogre variable you need to store. Although, saving some convenience programs is usually desirable. Plugins.cfg [Look at it and describe it]

II.b Render Window In our apps, we'll have two window objects (but only one window) Ogre Window: an actual window SDL Window: attached to the ogre window (detects input) Steps Call mRoot->showConfigDialog() (sets render settings like screen size). Call the "initialise" method of the root (tell it to auto-create a window) Get the window handle from it #include <windows.h> // Maybe only if WIN_32 defined??? … HWND hwnd; mRenderWindow->getCustomAttribute("WINDOW", &hwnd); Create an SDL "window" from hwnd SDL_CreateWindowFrom((void*)hwnd);

II.c The Scene Manager The scene manager organizes / optimizes all the renderables Lights, camera, meshes (entities) [including the materials attached], particle emitters, etc. Hierarchical Each (scene) node must be a child of the scene manager's root node You can also have children nodes of those scene nodes as well. If you transform one node, everything below it is transformed [Example scene] Optimizes GL/DX calls: material swaps, rendering, occlusion-culling, etc. Several different types: Octree, BSP, Terrain, etc. mSceneManager = mRoot->createSceneManager(Ogre::SceneType::ST_GENERIC);

II.d Viewports and Cameras They are separate objects, but closely related Viewport: A rectangular portion of the window (with a z-value for layering) Created through the render window Camera: A 3d object created by the scene manager Must be attached to a viewport to render to it.

II.e Resources (e.g. Materials) You specify where resources are located like this: Ogre::ResourceGroupManager::getSingleton().addResourceLocation("..\\media", "FileSystem"); You parse (and load?) all resource files like this: Ogre::ResourceGroupManager::getSingleton().intialiseAllResourceGroups(); Some important resources: [Each has its own manager] .material file. Contains settings and links to textures shader programs … .mesh file. A binary (optimized for reading quickly) mesh file. Has a link to a .material file.

II.f Entities and Meshes Ogre has a generic class called Moveable. A number of classes are derived from it: Camera, Entity, Light, ParticleEmitter, … You create pointers to each of these through the scene manager (and then attach to a scene node) Ogre is managing the memory. You can either call a method (of the scene manager) to destroy it or wait until shutdown. Every Moveable object must have a unique name (across that type or globally?) An Entity is an instance of a mesh. The actual mesh data is loaded once (into a vertex/index buffer) It can be referenced with multiple entities, each with their own material (optional) Each Entity also can have independent "activations" of skeletal animations.

II.g (Scene) Nodes As mentioned, the scene manager has a single root scene node. Access it with mSceneManager->getRootSceneNode(); Only things attached to a scene node which is a child of the root will be rendered. Each scene node has a transformation matrix (3x4) that contains: rotation scale translation You can modify the matrix directly, or more commonly through a helper function: setPosition setOrientation(Quaternion q); setScale You can attached any instance of a class derived from Moveable using the attachObject method.

To Lab2!!

Side-Topic: Singleton pattern

Side-Topic: Observer / Listener pattern http://freesoup.deviantart.com/art/eyeball-guy-77813564

Transformations in Ogre.