39
SE Team 9 3D Flyer Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach Matt Cook

SE Team 9 3D Flyer

  • Upload
    debra

  • View
    26

  • Download
    0

Embed Size (px)

DESCRIPTION

SE Team 9 3D Flyer. Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach Matt Cook. Project Statement. GlobalFlyer allows a player to fly a Wright brothers-style airplane in 3D space using the OGRE graphic rendering engine and the FMOD sound system. Presentation Outline. Introduction - PowerPoint PPT Presentation

Citation preview

Page 1: SE Team 9 3D Flyer

SE Team 93D Flyer

Cole HoosierRyan Hannebaum

Leanne GrayAlex Stampbach

Matt Cook

Page 2: SE Team 9 3D Flyer

Project Statement

• GlobalFlyer allows a player to fly a Wright brothers-style airplane in 3D space using the OGRE graphic rendering engine and the FMOD sound system.

Page 3: SE Team 9 3D Flyer

Presentation Outline

I. Introduction

II. Review of web page (including goals)

III. Overview of OGRE

IV. GlobalFlyer software design

V. Project plan evaluation

VI. Conclusion

Page 4: SE Team 9 3D Flyer

GlobalFlyer Web Site

• http://seteam9.cis.ksu.edu/

Page 5: SE Team 9 3D Flyer

Overview of OGRE

Page 6: SE Team 9 3D Flyer

Common Function/Classes in Ogre

• root• sceneManager• sceneNode• Entity• Camera/viewPort• light• frameListener• eventProcessor

Page 7: SE Team 9 3D Flyer

root

• Constructor–Root(pluginFileName, configFileName, logFileName)

• Some Functions–SceneManager* getCurrentSceneManager(void)–void addFrameListener(FrameListener *)–void startRendering(void)–void shutdown(void)–RenderWindow* initialise(bool, “OGRE Render Window””)

Page 8: SE Team 9 3D Flyer

sceneManager

• Constructor– SceneManager(“[nstance name”)

• Some Functions– Camera* createCamera(“name”)– Light* createLight(“name”)– SceneNode* getRootSceneNode(void)– SceneNode* createSceneNode(“name”)– Entity* createEntity(“name”)– void setAmbientLight(ColourValue)– void setWorldGeogmetry(“filename”)– void setSkyPlane(bool, Plane, “materialName”, scale,…)– void showBoundingBoxes(bool)– void setShadowTechnique(ShadowTechnique)– Viewport* getCurrentViewport(void)

Page 9: SE Team 9 3D Flyer

sceneNode

• Constructor– SceneNode(SceneManager, “name”)

» Only called by creator SceneManager

• Some Functions– void attachObject(MovableObject)

– SceneNode* createChildSceneNode(Vector3, Quatrernion)

– void setOrientation(w,x,y,z)

– void setDirection(x,y,z, TransformSpace, Vector3)

– void lookAt(Vector3, TransformSpace, Vector3)

– void scale(Vector3)

– void addChild(Node*)

– void setListener(Listener*)

Page 10: SE Team 9 3D Flyer

Entity

• Inherits from MovableObject– ShadowCaster– AnimableObject

• ConstructorEntity(“Name”, MeshPtr)

• Some Functions– sceneManager _getManager(void)– void setCastShadows(bool)– sceneNode getParentSceneNode(void)

Page 11: SE Team 9 3D Flyer

Camera/viewPort

• Camera(“Name”, SceneManager)– void setPosition(Vector3)– void lookAt(Vector3)– setFocalLength(Real)

• Viewport(Camera, RenderTarget, Real…)– RenderTarget* getTarget(void)– Camera* getCamera(void)– void setDimensions(real, real, real, real)– void setBackGroundColour(ColourValue)– void setShadowsEnabled(bool)– void setSkiesEnabled(bool)

Page 12: SE Team 9 3D Flyer

Light

• Inherits from MovableObject• Constructor

– Light (“name”)

• someMethods– void setType(LightTypes)

• Spotlight, Point, Directional

– void setDiffuseColour(real, real, real)– void setSpecularColour(real, real, real)– void setAttenuation(real, real, real, real)

Page 13: SE Team 9 3D Flyer

frameListener

• Detailed Description Later

• Has 2 public Methods– Bool frameStarted(FrameEvent)– Bool FrameEnded(FrameEvent)

Page 14: SE Team 9 3D Flyer

eventProcessor

• void startProcessingEvents(bool)

• bool frameStarted(FrameEvent)

• void addEventTarget(EventTarget*)

• void addMouseListener(MouseListener*)

• void addKeyListener(KeyListener*)

• void processKeyEvent(KeyEvent*)

Page 15: SE Team 9 3D Flyer

Ogre FrameListeners

• Not just for kids anymore!

• Featuring code examples from– OgreWiki– OgreAPI

Page 16: SE Team 9 3D Flyer

Root::startRendering

• Calls the frameStarted method on all registered FrameListeners

• Renders one frame

• Calls the frameEnded method on all registered FrameListeners

– This continues until one of these methods returns False

Page 17: SE Team 9 3D Flyer

FrameListener Class

• struct FrameEvent– timeSinceLastEvent– timeSinceLastFrame

• frameStarted

• frameEnded

Page 18: SE Team 9 3D Flyer

Safety Notice

• Ogre chooses the order in which it executes frameStarted and frameEnded

• User cannot dictate this order

• Nesting FrameListener’s is one way to get around this

Page 19: SE Team 9 3D Flyer

Exampleclass TutorialFrameListener : public ExampleFrameListener { public:

TutorialFrameListener( RenderWindow* win, Camera* cam, SceneManager *sceneMgr )  : ExampleFrameListener(win, cam, false, false)

{ }

bool frameStarted(const FrameEvent &evt) //This function is where you place actions{

return ExampleFrameListener::frameStarted( evt ); }

bool frameEnded(const FrameEvent &evt) //This function is where you place actions{

return ExampleFrameListener::frameEnded( evt ); }

protected: bool mMouseDown; // Whether or not the left mouse button was down last frame Real mToggle; // The time left until next toggle Real mRotate; // The rotate constant Real mMove; // The movement constant SceneManager *mSceneMgr; // The current SceneManager SceneNode *mCamNode; // The SceneNode the camera is currently attached to

};

Page 20: SE Team 9 3D Flyer

There Can be only One!

• Code can be placed in either:– frameStarted– frameEnded

• But, there is only ONE render-cycle per frame– Changes don’t render between frameEnded and

frameStarted• So, if frameEnded has a movement that frameStarted

negates, the movement will not show

Page 21: SE Team 9 3D Flyer

Creating a FrameListener• Example:

: ExampleFrameListener(win, cam, false, false) //Window, Camera, buffered key input, buffered mouse input

• Example:// Create the FrameListener

mFrameListener = new TutorialFrameListener(mWindow, mCamera, mSceneMgr);

mRoot->addFrameListener(mFrameListener);

Page 22: SE Team 9 3D Flyer

User Interaction

• Arrow keys• Spacebar• F1, F2, F3• Adding mouse

support for camera rotation

Page 23: SE Team 9 3D Flyer

GlobalFlyer software design

Page 24: SE Team 9 3D Flyer

FrameStarted Sequence Diag

Page 25: SE Team 9 3D Flyer
Page 26: SE Team 9 3D Flyer
Page 27: SE Team 9 3D Flyer
Page 28: SE Team 9 3D Flyer
Page 29: SE Team 9 3D Flyer
Page 30: SE Team 9 3D Flyer
Page 31: SE Team 9 3D Flyer
Page 32: SE Team 9 3D Flyer

Project Plan

Page 33: SE Team 9 3D Flyer

Physics

Lighting

Sky

Testing

Presentation 3

Tutorials

Page 34: SE Team 9 3D Flyer

Matt17%

Cole20%

Ryan18%

Leanne20%

Alex25%

Ryan

Leanne

Alex

Cole

Matt

Page 35: SE Team 9 3D Flyer

Tasks up to present

Page 36: SE Team 9 3D Flyer

Task estimation vs. actual time

0100

200300

400500

600700

800900

Actual

Estimation

Task

Minutes

Page 37: SE Team 9 3D Flyer

Upcoming Tasks

Page 38: SE Team 9 3D Flyer

Conclusion• Goals for next presentation

– Make physics engine– Improve lighting– Fix sky

Page 39: SE Team 9 3D Flyer

Who has Questions?

-Images from texasbestgrok.mu.nu/images/GF2.jpg