I'm Zi. I've been an Ogre user for quite a few years now, but regrettably I have not been too active around the forums. I plan to apply for GSoC this year as a student, and just wanted to take this chance to introduce myself and present this project proposal. Nothing formal yet, just some ideas thrown around in the back of my head. It was initially pulled from the Help Requested page, and slightly expanded upon. Please give me all the feedback you can, guys!
Demos and SDK samples are one of the best ways to attract new users to our community. And among all the open-source 3D engines out there, I personally think that Ogre has some of the better samples to show. This said, Ogre deserves a kickass sample framework to match. Having a unified framework and interface will not only make all samples look professional and spiffy; it would also allow the team to make and edit samples with more ease and speed, and serve as an excellent basis for users to get started with Ogre or to produce simple demos quickly.
Some key/obvious features:
- Sample browser to allow dynamic switching between samples
- An extensible (non-rigid) design that allows great flexibility in samples
- Easy addition of new samples
- New input/GUI setup allowing easy addition of key toggles, value sliders, stats, etc.
- Common camera control scheme presets (orbit, FPS, turntable, custom, etc.)
- A new, truly "Ogre" look for the GUI
- (Suggestions, please!)
- Dynamic device property modification (dimensions, fullscreen, vsync, etc.)
- Allow pausing, unpausing, and resetting the simulation
My current plan is to make each sample into an Ogre plugin. The sample browser will be the only executable in the samples directory. Samples could be listed in the existing "Plugins.cfg" or a new "Samples.cfg". The startup code for an Ogre plugin is smaller than that of the current sample apps (Not to mention it's all functional, instead of a cloud of preprocessor directives) Adding a new sample would be as simple as creating a new plugin and adding it to "Samples.cfg". The browser will load all sample plugins at startup, and display their names, descriptions and thumbnails, which are all provided by the plugins (thumbnails can be stored in a subdirectory under the media folder). At any time when viewing a sample, the user should be able to summon this main menu and select another sample to view.
Examples and demos are likely to have some tweakable options/values. Because this is so common, I figured there should be some easy way to do this. Off the top of my head, it should look something vaguely like:
Code: Select all
sampleMgr->addNumericOption(densitySlider, &setParticleDensity, defaultDensity); sampleMgr->addBooleanOption(source, &toggleFireworks, true); // source could be a checkbox or key
Code: Select all
sampleMgr->setCameraMode(CM_ORBIT, 0.5f); // mode and speed
Pause and Reset:
Sometimes, I'd like to be able to pause and reset the samples. This is useful for observing small details in examples with moving objects without having to take screenshots.
Ogre's been crying out for an icon, and I hope the sample browser can have one. Besides, with an icon, you could proudly put a Ogre Sample Browser shortcut under the Start Menu or something . Fonts and widgets should also follow a consistent styling. With its own consistent visual theme, the SDK would look that much more kickass.
Given the timeframe, I do not think these goals are unrealistic. I might be wrong though. Any suggestions/criticism is welcome.
Please give me a hand, guys! Thanks!