Download presentation
Presentation is loading. Please wait.
Published byAnabel Whitehead Modified over 9 years ago
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
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.