Presentation is loading. Please wait.

Presentation is loading. Please wait.

SE Team 9 GlobalFlyer Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach.

Similar presentations


Presentation on theme: "SE Team 9 GlobalFlyer Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach."— Presentation transcript:

1 SE Team 9 GlobalFlyer Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach

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

3 Iteration Plans Fixup 1: Get music and sound effects working again 2: Get collision detection with buildings working 3: Get the propellor showing up again Visual Environment 1: Add hovering objects to the world 2: Add proximity detection to hovering objects 3: Modify texture of hovering objects based on proximity User Interface 1: Add mouse control of camera 2: Add visually-appealing digital readouts of data the user might want 3: Add the ability to toggle sound, gui, etc.

4 GlobalFlyer Web Site http://seteam9.cis.ksu.edu/

5 The Plan and Analysis

6 Plan for Iteration 2

7 Raw Data up to Presentation 5 BCWACWEst CompActual Comp Iter 1: Fixup10207202/26/20072/3/2007 Iter 1: Visual6603902/26/20072/10/2007 Iter 1: UI60014702/26/20072/23/2007 Pres 41802402/27/20072/23/2007 Iter 2: Fixup & VE - initial research1801203/6/20073/5/2007 - create slides120603/13/20073/12/2007 - collision detection with buildings3002403/20/20073/10/2007 - proximity detection with bubbles120603/27/20073/10/2007 - create OCL120 3/29/20073/26/2007 - test code60 3/30/20073/26/2007 - integrate code60 4/1/20073/26/2007 Iter 2: UI - initial research1801203/6/20073/5/2007 - create slides120603/13/20073/12/2007 - prettify text2406003/20/20073/26/2007 - test readout120903/27/20073/26/2007 - integrate code120303/30/20073/26/2007 Pres 5 - assemble presentation2404/1/2007

8 Raw Data after Presentation 5 BCWACWEst CompActual Comp Open House420 - prepare display2404/10/2007 - rehearse/test presentation1204/13/2007 Iter 3: Fixup - learn about rotating objects2404/22/2007 - fix propellor & test3604/29/2007 Iter 3: Visual80004/28/20073/10/2007 Iter 3: UI - study methods of toggling settings2404/22/2007 - implement toggling & test1204/29/2007 Pres 65/1/2007 - assemble presentation2405/1/2007 Final Docs CD2405/4/2007 Total74604440

9 EV Calculations DateBCWSBCWPACWPBACEVSPISVCPICV 2/2/200700074600.00%--0 0 2/9/200701020720746013.67%inf1020141.67%300 2/16/2007016801110746022.52%inf1680151.35%570 2/23/2007024602820746032.98%inf246087.23%-360 3/2/20072460 2820746032.98%100.00%087.23%-360 3/9/20072820 3060746037.80%100.00%092.16%-240 3/16/200730603480 746046.65%113.73%420100.00%0 3/30/2007420050004440746067.02%119.05%800112.61%560

10 Earned Value Shows the steady completion of tasks after presentation 4

11 Scheduled Performance Index On schedule until the end and now we are ahead of schedule

12 Scheduled Variance On schedule to ahead of schedule back on a finally ending ahead

13 Cost Performance Index Under budget to over and finally ending on budget

14 Cost Variance Under budget to over and ending on budget

15 Division of Time and LOC

16 Plan for Iteration 3

17 OCL

18 Areas that lend themselves well to OCL specifications The airplane cannot fly beneath the ground The FMOD sound system shouldn't be re-initialized The bubbles and buildings must be within the boundaries of the world Checking the win-condition for a level, theoretically we would load a new level after hitting all targets

19 OCL The airplane cannot fly beneath the ground context OgreCharacter::update(elapsedTime, *input) : void post: self.raySceneQuery->forAll( worldFragment.singleIntersection.y < self.mMainNode.getPosition().y )

20 OCL The FMOD sound system shouldn't be re-initialized context CFMod::InitSoundSystem() : bool pre: self.initialized = false post: self.initialized = true

21 OCL The bubbles and buildings must be within the boundaries of the world context SampleApplication::createScene() : void post: self.buildings.getBoundingBox->forAll( getMinimum.x >= 0 and getMinimum.z >= 0 and getMaximum.x <= 10000 and getMaximum.z <= 10000 ) post: self.bubbles.getBoundingBox->forAll( getMinimum.x >= 0 and getMinimum.z >= 0 and getMaximum.x <= 10000 and getMaximum.z <= 10000 )

22 OCL Checking the win-condition for a level -- theoretically we would load a new level after hitting all targets context OgreCharacter::targetsRemaining() : int result = self.targetHit->count(false) context OgreCharacter::checkWin() : bool result = self.targetsRemaining = 0 context SampleListener::frameStarted(frameEvent) : void post: self.mChar.checkWin = false

23 UML Models

24 FrameStarted Sequence Diag

25 Class Diagram Overview

26

27

28 The FrameListener

29 The Camera

30 The Plane

31 The Physics

32 The Sound

33 Source Code

34 Proximity Detection SampleApplication fills arrays that contain pointers to the buildings and bubbles in the world.

35 Hit a Building? bool OgreCharacter::inObstacle() { int i; const AxisAlignedBox me = this->mEntity->getWorldBoundingBox(); for (i=0; i<numObstacles; ++i) { if (obstacles[i]->getWorldBoundingBox().intersects(me)) { crashed = true; if (!crashSoundStarted) { engineSound.Pause(); crashSoundStarted = true; crashSound.Play(); } return true; } return false; } ogre_character.cpp

36 Hit a Bubble? bool OgreCharacter::inTarget() { int i; const AxisAlignedBox me = this->mEntity->getWorldBoundingBox(); for (i=0; i<numTargets; ++i) { if (targets[i]->getWorldBoundingBox().intersects(me)) { targets[i]->setMaterialName("GlobalFlyer/BlueSphere"); targetHit[i] = true; return true; } return false; } ogre_character.cpp

37 Bubbles Left? int OgreCharacter::targetsRemaining() { int i; int remaining = 0; for (i=0; i<numTargets; ++i) { if (this->targetHit[i] == false) { ++remaining; } return remaining; } ogre_character.cpp

38 GUI make the window look more like a cockpit remove Ogre logo and statistics overlay

39 The Old GUI

40 Operation Beautify eliminate debugging script and Ogre logo clean up physics script create cockpit graphic add graphic as overlay panel material orient text aesthetically

41 gf.material material GlobalFlyer/cockpit { technique { pass { lighting off scene_blend alpha_blend texture_unit { texture cockpit.png }

42 SampleApplication.cpp Ogre::OverlayContainer* panel = static_cast ( overlayMgr.createOverlayElement("Panel", "PanelName")); … panel->setMaterialName("GlobalFlyer/cockpit");

43 The Result:

44 Plan for Iteration 3

45 Who has Questions? -Images from texasbestgrok.mu.nu/images/GF2.jpg


Download ppt "SE Team 9 GlobalFlyer Cole Hoosier Ryan Hannebaum Leanne Gray Alex Stampbach."

Similar presentations


Ads by Google