CABAListic
28-02-2008 16:11:04
For the next version of ETL, I would like to have a demo project which really shows off what ETL can do and how, and the current demo ripped off of one of the Ogre demos just doesn't quite cut it.
However, I'm quite busy currently, so it would be a great help if someone else could step in here to either fully take it or prepare the foundations for me. I'll add you to the list of developer(s) of ETL so you'll share the fame for the next major release
Here is a feature list I would like to see:
However, I'm quite busy currently, so it would be a great help if someone else could step in here to either fully take it or prepare the foundations for me. I'll add you to the list of developer(s) of ETL so you'll share the fame for the next major release
Here is a feature list I would like to see:
- Terrain creation: In a dialogue you can choose the vertex and Ogre sizes of the whole terrain and of the patches as well as the initial height value for each vertex and the base splatting texture. If you are really motivated, you could also add support to import a terrain from a pregenerated heightmap (image loading) or even auto-generate a terrain with the help of libnoise or similar.[/*:m]
- Brush selection: Select a brush from a list of available image files and set its size and rotation[/*:m]
- Terrain deformation: Deform the terrain with the currently selected brush. Both directions (up and down) should be supported. A projective decal should show the current editing position.[/*:m]
- Terrain stamping: If motivated, allow a user to create a "stamp" by clicking on a terrain part. The heights of the terrain will now be saved to the brush and can be copied to other regions of the terrain.[/*:m]
- Splatting: Select a texture from a list of available textures, then paint with this one over the terrain. Don't worry, the new high level splatting manager will be very smart and will add or remove textures on the fly implicitly, so no need to preselect the textures for the current terrain, just let the user select any texture known to the editor.
If motivated, you could add stamping for splatting, too.[/*:m]
- Colour painting: Via an additional dynamic texture let the user give some colour on top of splatting. The user should be able to select an arbitrary RGB colour (via colour sliders or a ColourChoice dialogue or whatever).[/*:m]
- Saving and loading terrain: For each terrain the editor should create a separate directory with a name given by the user. To load, the user can then give the name of that directory (either simply via a textbox or, if you are motivated, via a proper list selection). Saving or loading is pretty much saving or loading all the involved images (heightmap, splatting maps, colour map, lightmap, minimap) as well as a simple config file to store which splatting texture was used on which channel.[/*:m]
- Editor configuration: I would put all of the following stuff in a simple config file which is just read on start, but you could also make some or all of it modifiable while running, it's just more work for the configuration boxes. The editor needs two dedicated resource groups in which it can find a) the brushes and b) the splatting textures. You can even hardcode the resource group names, but they must be populated. A third resource group must be populated with ETL's shader programs and any GUI resources.[/*:m]
- Camera movement: Ideally, but not necessarily, the camera should behave like in RTS games, i. e. a focus follows the terrain, and the camera is attached to the focus in some distance and orientation, both of which can be modified (zooming/rotating the camera view). I already have a CameraControl class from my project which does exactly that, it could be taken and modified to fit the new ETL and the editor environment.[/*:m][/list:u]
If that sounds like much, note that most of the things necessary for the editing will be taken over by ETL. The real work (and the one which I don't have time for) is the foundation: Loading Ogre, loading config, populating resources, reacting to input from OIS, setting up the scene, moving the camera (but as mentioned, I have a class for this you could use as a start), and, most of all, setting up and handling the GUI. The GUI needs to offer ways to save and load, a Brush selector, an Edit mode selector (deform, splat, paint, ...) and a texture selector (for splatting).
Seeing as the GUI will add an additional requirement beyond Ogre (unless you plan on using BetaGUI), I don't particularly care for the GUI choice. Since this is a demonstration project I would prefer CEGUI for the very simple reason that it comes bundled with Ogre' SDK or dependency packages, so it is often already available. But if you can work faster with something else or even wish to make a "proper" editor by embedding Ogre in wxWidgets, fine. It just has to be portable.
Also, since this is a demonstration project, the code needs to be nicely structured and commented in a way that users can quickly find the relevant sections and understand them. So that means no ExampleFramework and separating the ETL parts from the rest as good as possible or adequate.
ETL's primary use is to offer editable terrain, which is most likely needed for editors. So actually providing a basic editor is what would really help most users to get into ETL. If you are interested in helping me out here, please let me know, and we can discuss further details Obviously, since ETL is a free library, I can't pay you, and you need to agree to an open source license for the editor code (zlib or GPL would be the most obvious choices). Thanks