| Version 13 (modified by chaiy, 18 years ago) (diff) |
|---|
HUD
Author
What's HUD
A full description of HUD can be found under WikiPedia.
HUD with Ogre
Ogre has its own class for HUD designing: CLASS OVERLAY.
There are two ways to write an overlay, neither it can be written in a script, or it can be dynamically created in C++ file.
All possibilities and variabilities for an overlay script are found unter Ogre Tutorial.
For Windows Users there is already an editor made by Patrick Kooman: Overlay Editor
Fall 2007
See Printscreen: Version 2.0
Spring 2008
Instead defining the whole HUD in a single script, and then linking every object of the script into a C++ file, it is now possible to directly creating the HUD in a single C++ file. In orxonox.cc, only one command is needed:
HUD hud = new HUD(int zoom);
the idea is to create a flexible HUD, which can become bigger or smaller easily.
A simple element of the HUD can be created as following:
Ogre:: OverlayManager& overlayManager = Ogre:: OverlayManager::getSingleton();
Ogre:: OverlayElement* element = overlayManager.createOverlayElement("Panel",name);
In the second step, it is to create few inherited classes to Ogre:: OverlayElement, so more complicated and often used elements can be easily implemented. There is a problem about inheritance: Ogre:: OverlayElement doesnt have a constructor for itself, and Ogre:: OverlayManager::getSingleton().createOverlayElement() only creates an OverlayElement, but not its inherited classes. I could not find out how to inherit Ogre:: OverlayElement, so I wrote classes, which have an OverlayElement as public variable and several functions to change this OverlayElement.
Class Bar:
class _OrxonoxExport Bar
{
.....
.....
public:
Ogre:: OverlayElement* element;
Bar(Ogre:: Real left, Ogre:: Real top, Ogre:: Real width, Ogre:: Real height,
int dir, int colour, std::string name);
~Bar(void);
void reset(int percentage);
void setColour(int colour);
void show();
void hide();
};
Single elements cannot be directly put into HUD, they have to be added into a panel at first. The panel will be set into the whole overlay afterwards.
Bar* energyCounter;
Ogre::OverlayContainer* energyCounterPanel;
...
Ogre::Overlay* orxonoxOverlay = overlayManager.create("Orxonox/HUD");
orxonoxOverlay->add2D(energyCounterPanel);
orxonoxOverlay->show();
TODO
- To find out how to write letters or numbers with C files.
- To create more module classes.
- To realize Radar System.
Proposals
- use SVG for drwaing - saves space, and is resolution indendant; drawback need to be implemented in OGRE/framework
- more suitable font.
- improve radar: removed grid, add distance rings
Printscreens
Version 1.0
Version 2.0
Attachments (3)
- HUD1.0.png (12.3 KB) - added by chaiy 18 years ago.
- HUD2.0.png (359.6 KB) - added by chaiy 18 years ago.
- stearingBoard0.1.jpg (42.0 KB) - added by chaiy 18 years ago.
Download all attachments as: .zip












