Presentation is loading. Please wait.

Presentation is loading. Please wait.

Game Design and Dev Ogre3D Overview

Similar presentations


Presentation on theme: "Game Design and Dev Ogre3D Overview"— Presentation transcript:

1 Game Design and Dev Ogre3D Overview
CSE 786 Prof. Roger Crawfis

2 Ogre 3D Base web site: www.ogre3d.org Download and install Notes Wiki
The SDK just seems to unpack the files where they were, so move to you development area (Programming/SDKs?) The Environment variable (OGRE_HOME) was not set. Use this in you Project settings. Includes Boost and OIS. Does not include CEGUI. OIS name conflicts with Ogre (Vector3), so never have a: using namespace OIS; Wiki Tutorials API documentation

3 What is Ogre3D? Object-Oriented Some Design Patterns used
A little old school and the code is getting bloated. Not very well engineered now. Some Design Patterns used Singletons Managers Factory Methods

4 What is Ogre3D? Plug-In Architecture
Rendering System Core Features Enhancements Dynamically loads dll’s at runtime. Copy the ones you need over to your repository. Default framework reads in a config file to determine which plug-ins to load. Not automatic.

5 Plug-In Framework Default Plugins.cfg # Defines plugins to load
# Define plugin folder PluginFolder=. # Define plugins Plugin=RenderSystem_Direct3D9_d Plugin=RenderSystem_GL_d Plugin=Plugin_ParticleFX_d Plugin=Plugin_BSPSceneManager_d Plugin=Plugin_CgProgramManager_d Plugin=Plugin_PCZSceneManager_d.dll Plugin=Plugin_OctreeZone_d.dll Plugin=Plugin_OctreeSceneManager_d

6 Media Resources Default Resources.cfg file:
# Resource locations to be added to the 'boostrap' path # This also contains the minimum you need to use the Ogre example framework [Bootstrap] Zip=../../media/packs/OgreCore.zip # Resource locations to be added to the default path [General] FileSystem=../../media FileSystem=../../media/fonts FileSystem=../../media/materials/programs FileSystem=../../media/materials/scripts FileSystem=../../media/materials/textures FileSystem=../../media/models FileSystem=../../media/overlays FileSystem=../../media/particle FileSystem=../../media/gui FileSystem=../../media/DeferredShadingMedia FileSystem=../../media/PCZAppMedia Zip=../../media/packs/cubemap.zip Zip=../../media/packs/cubemapsJS.zip Zip=../../media/packs/dragon.zip Zip=../../media/packs/fresneldemo.zip Zip=../../media/packs/ogretestmap.zip Zip=../../media/packs/skybox.zip

7

8 Core Objects -The 'Root' object is the entry point to the OGRE system. This object MUST be the first one to be created, and the last one to be destroyed. -(ST_GENERIC, ST_INTERIOR , BSP_MANAGER)The intention is that specialisations will be created for each type of scene such that under the surface the subclass will optimise the scene organisation for best performance given assumptions which can be made for that scene type. An example is the BspSceneManager which optimises rendering for large indoor levels based on a Binary Space Partition (BSP) tree. -An entity is an instance of a movable object in the scene. -The Material object controls how objects in the scene are rendered. It specifies what basic surface properties objects have such as reflectance of colours, shininess etc, how many texture layers are present, what images are on them and how they are blended together, what special effects are applied such as environment mapping, what culling mode is used, how the textures are filtered etc. -Overlays allow you to render 2D and 3D elements on top of the normal scene contents to create effects like heads-up displays (HUDs), menu systems, status panels etc.

9 Startup Sequence ExampleApplication Go() Setup() Configure()
setupResources() chooseSceneManager() createCamera() createViewport() createResourceListener() loadResources() createScene() frameStarted/Ended() createFrameListener() destroyScene()

10 Basic Scene Entity, SceneNode Camera, lights, shadows BSP map
Integrated ODE physics Frame listeners Demo_BspCollision

11 Terrain, sky, fog Demo_Terrain Media\Terrain.cfg

12 CEGUI Window, panel, scrollbar, listbox, button, static text
Media/gui/ogregui.layout CEGUI::Window* sheet = CEGUI::WindowManager::getSingleton().loadWindowLayout( (CEGUI::utf8*)"ogregui.layout"); mGUISystem->setGUISheet(sheet); Demo_Gui Can show Buffered input: OIS::KeyListener, OIS::MouseListener

13 Animation Node animation (camera, light sources) Skeletal Animation
AnimationState *mAnimationState; mAnimationState = ent->getAnimationState("Idle"); mAnimationState->setLoop(true); mAnimationState->setEnabled(true); mAnimationState->addTime(evt.timeSinceLastFrame); mNode->rotate(quat); -Softimage XSI, Milkshape 3D, Blender, 3D Studio or Maya exporters Shadow_deneme Demo_SkeletalAnimation => CEGUI_MeshViewer -Morph animation works by storing snapshots of the absolute vertex positions in each keyframe, and interpolating between them. -Pose animation is about blending multiple discrete poses, expressed as offsets to the base vertex data, with different weights to provide a final result.

14 Animation Crowd (instancing vs single entity) Facial animation
InstancedGeometry* batch = new InstancedGeometry(mCamera->getSceneManager(), "robots" ); batch->addEntity(ent, Vector3::ZERO); batch->build(); Facial animation VertexPoseKeyFrame* manualKeyFrame; manualKeyFrame->addPoseReference(); manualKeyFrame->updatePoseReference ( ushort poseIndex, Real influence)  Demo_Crowd Demo_FacialAnimation

15 Picking CEGUI::Point mousePos = CEGUI::MouseCursor::getSingleton().getPosition(); Ray mouseRay = mCamera->getCameraToViewportRay(mousePos.d_x/float(arg.state.width), mousePos.d_y/float(arg.state.height)); mRaySceneQuery->setRay(mouseRay); mRaySceneQuery->setSortByDistance(false); RaySceneQueryResult &result = mRaySceneQuery->execute(); RaySceneQueryResult::iterator mouseRayItr; Vector3 nodePos; for (mouseRayItr = result.begin(); mouseRayItr != result.end(); mouseRayItr++) { if (mouseRayItr->worldFragment) nodePos = mouseRayItr->worldFragment->singleIntersection; break; } // if } 3D desktop

16 Particle Effects mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject( mSceneMgr->createParticleSystem("sil", "Examples/sil")); Examples/sil { material Examples/Flare2 particle_width 75 particle_height 100 cull_each false quota billboard_type oriented_self // Area emitter emitter Point { angle emission_rate 75 time_to_live 2 direction velocity_min velocity_max colour_range_start colour_range_end } // Gravity affector LinearForce force_vector force_application add // Fader affector ColourFader red -0.5 green -0.5 blue -0.5 Demo_ParticleFX Media/particle/Example.particle

17 Particle Effects Particle system attributes quota material
particle_width particle_height cull_each billboard_type billboard_origin billboard_rotation_type common_direction common_up_vector renderer sorted local_space point_rendering accurate_facing iteration_interval nonvisible_update_timeout Emitter attributes (point, box, clyinder, ellipsoid, hollow ellipsoid, ring) angle colour colour_range_start colour_range_end direction emission_rate position velocity velocity_min velocity_max time_to_live time_to_live_min time_to_live_max duration duration_min duration_max repeat_delay repeat_delay_min repeat_delay_max Affectors (LinearForce, ColorFader) Linear Force Affector ColourFader Affector ColourFader2 Affector Scaler Affector Rotator Affector ColourInterpolator Affector ColourImage Affector DeflectorPlane Affector DirectionRandomiser Affector

18 Fire and Smoke affector Rotator { rotation_range_start 0
rotation_range_end 360 rotation_speed_range_start -60 rotation_speed_range_end } Demo_Smoke


Download ppt "Game Design and Dev Ogre3D Overview"

Similar presentations


Ads by Google