I am not done with the proposal yet and I want to add a schedule to it and possibly review it a little. What do you guys think about the proposal? the project?
Constructive criticism is very welcome.
Thank you.
Old Proposal:
Submitted Proposal (as original with typos and all):OGRE 3D Summer Of Code Proposal
Lois Desplat
The Proposal:
A plugin to Softimage XSI that would be similar in function to that of Ofusion for 3dsmax. The plugin/tool will allow artists to preview their models in an Ogre viewport in real-time and/or when they push a button/keystroke. The plugin will have a complete Ogre material editor so that artists can use 100% of the features of Ogre's material system. A support for different scene managers will also be included (all the scene managers that Ogre comes with by default and the oFusion one). This obviously, includes previewing of static meshes as well as animated meshes (shape or skeletal animations).
Why?
It is often said that Ogre needs better tools and this is the ultimate tool that Ogre can have. Since Ogre is a graphics engine and nothing else, tools that are specific to an application cannot be back ported for general Ogre use. This tool will allow an artist to create models that will look exactly the same in their application. It significantly decreases the amount of hoops that an artist has to go through to be able to get art in an Ogre application. In this situation, all their work is done in Softimage XSI and by pushing an export button, it will look exactly the same in their application because they have been able to preview that model all throughout the creation of their art.
If you need more convincing then go look at the oFusion official page and oFusion forums and you will understand.
Why Me?
I am going to be a Senior at San Jose State University in California. I am currently going for a BS degree in Software Engineering. I own Softimage XSI 5.1 Foundation and Visual Studio 8.0 Professional. I have been signed up in the Ogre forums since March of 2003 and have been following its progress since then. I have played with Ogre extensively but I have never finished anything because I had no serious plans to do so. I plan to write a flight simulator using Ogre as my graphics engine and have been doing lots of research as to how to go about it and I am pretty much ready to start. One thing that I think could really boost my productivity is that since a Flight Simulator requires lots of art is that I have a clean and fast pipeline from the program with which I create art to an Ogre application. So, this proposal is a project which I will be in for the long term. I plan to improve and support this plugin way past the 2006 SoC.
Methodology To Tackling This Project:
The research part of this project is basically done. I know that it is feasible to do this with Softimage XSI 5.1 Foundation because of the Custom Display Host feature. I know that I can create custom UI elements as well. I also know the Ogre material system and the Ogre manual has a thorough documentation of it. I also have access to the full code of the XSI export code written by Sinbad (Steve Streeting) which will be a very good reference.
It is my intention to always have a working build. I am going to be adding one feature at a time and then testing that feature and testing that it does not interfere with others. This is because I am guessing that I will have a lot of problems with the synchronization between Ogre and XSI.
Almost all the UI code will probably be implemented in script (JScript, Python, ...), while the C++ code will only declare and implement commands that allow Ogre and Softimage to communicate and synchronize (models, time, ...) between each other.
Features:
- Real Time and Push-button previewing of models in Ogre Viewport.
- Full Ogre Material Editor.
- Real-time shader support (Artists can create real-time shaders, Cg, HLSL, GLSL, in XSI and thus the material editor needs to be able to use them)
- Ability to export (that's already done by the current exporter and will probably use the same or similar code, this tool might actually reside side by side with the current exporter)
- Ability to play animations in XSI and see them play at the same time on the Ogre Viewport.
- Support for official scene managers and the oFusion scene manager. (If designed correctly, other people could then have it support other scene managers without any problems)
- Run in Windows and uses options that will make it easy to get a Linux Port out but Linux support is not planned for this proposal.
Challenges:
The major challenge in creating this tool/plugin is that XSI is a very complex program and I will probably have to fight it to get what I need. Thankfully, I have a pretty good knowledge about Ogre and thus this side of the program will be much easier to deal with. I predict that I will most probably get bogged down getting the real-time viewport to properly synchronize with the model. The real-time preview of materials will be relatively easy to do (since the material editor will all be created by me), but I will probably (at first) not include the real-time support when an artist is editing the mesh.
Conclusion:
I am confident that I can tackle this tool. There are about seven features listed here and the real meat of the program is in the Full Ogre Material Editor and that will be what I will be focusing on as soon as I get an ogre viewport with an XSI model rendered in XSI. The success to creating this tool is all about separating all the components and making sure that each of them work individually so that they can be combined together. This is why maintaining a working build of the project along with adding features one at a time and testing them will deliver a working product on time.
The Proposal:
To develop a tool that integrates into an artist�s modeling program to provide a one-step solution for getting art into an application using OGRE. This tool will be integrated within Softimage XSI. XSI was chosen because it is a feature rich, affordable and proven modeling program, which has been used by big name developers like Valve Software.
This tool will be made in two parts. One part of the tool will be made as a library so that other tools that use Ogre could use this library to do common things such as:
"code to get mesh info (vertices num, indices num, vertex buffer list bones list/hierarchy) as list of string properties , some code to get texture list in a material, material info as list of properties, xml serializers, buffer optimisation, animation list (to check difference between modeler and results), animations blender, Ogre Resource group handling... " Tuan Kuranes, on the forums.
Why?
It is often said in the OGRE community that OGRE needs better tools and this is the ultimate tool that there can be for artists trying to get art into OGRE. Since OGRE is a graphics engine and nothing else, tools that are specific to an application cannot be back ported for general OGRE use. This tool will allow an artist to create and preview models in XSI that will look exactly the same in their own application. It significantly decreases the amount of hoops that an artist has to go through to be able to get art in an OGRE application. Currently, artists that create models in XSI have to export the model, then open up their application and check that the model has been correctly exported. Odds are that at that time, the artists will also need to edit the material files that the exporter created because they are not 100% correct. This tool will make this a one-step solution.
The library is being created because of a strong community need. Every since, I have posted an old version of my proposal on the forums, this has been asked by various prominent members of the community. This library will provide such commonly used functions in tools that it should be a huge success.
Why Me?
I am going to be a senior at San Jose State University in California. I am currently going for a BS degree in Software Engineering. I have been part of the OGRE community since March of 2003 and have been following its progress since then. I have played extensively with OGRE and am quite familiar with how to use it and some of its internals. In Fall 2005, I took a Software Engineering class that made us go through the entire process of creating a software application. We went all the way from the planning to the implementation. This gave me a great amount of experience, with different software process models. I have also made various small software applications, the last one, created for some research at Cisco, that I made needed to record keyboard, mouse and network activity to find patterns in infected zombie computers.
I plan to support and add features to this tool much beyond SoC 2006 because I will start working on a game that is Ogre powered during Fall 2006 and beyond. This game has a high content requirement, and thus I plan to use this tool extensively.
Methodology To Tackling This Project:
I already know that this project is feasible. I know that what I plan to do is possible with OGRE, and also possible with XSI thanks to its extensive SDK that allows developers to create new GUI screens and bind windows to its viewports with its Custom Display Host technology.
I will be able to use a lot of already created code from the XSI exporter (which is open source and created by Steve Streeting, the creator and maintainer of OGRE). The existing code will be adapted to providing quick and real-time preview of XSI models into an OGRE powered viewport.
It is my intention to always have a working build at the end of each day. I am going to be adding one feature at a time and then testing that feature and testing that it does not interfere with others. It is important to do it component by component because it will allow me to make sure that each feature is implemented completely.
The library will probably be built as a static library with a liberal license. Functions identified as being common in usage by the community, will be backported to the library and redesigned (if necessary) to match its general nature.
Features By Order Of Implementation:
1) Real Time and Push-button previewing of models in integrated OGRE Viewport (The current exporter already creates the Mesh/Skeleton/Material in-memory already and thus it will be used since it already works).
2) Ability to export
3) Ability to move lights and cameras in XSI and have them move at the same time on the OGRE viewport
4) Ability to play animations in XSI and see them play at the same time on the OGRE Viewport.
5) Full Ogre Material Editor.
6) Real-time shader support (Artists can create real-time shaders, Cg, HLSL, GLSL, in XSI and thus the material editor needs to be able to use them)
7) Release of the library of common Ogre functions (the library will be implemented all throughout the project, and new features added to it probably long afterwards).
Support for official scene managers and the oFusion scene manager. (If designed correctly, other people could then have it support other scene managers without any problems)
9) Run in Windows and uses options that will make it easy to get a Linux Port out but Linux support is not planned for this proposal.
Some Deadlines:
June 24: Have features 1-4 completed and possibly have 5 under early progress.
July 20: Have feature 5 completed, with feature 6 under progress and feature 7 near completion for its first release. Get community to use the tool to get feedback.
August 18: Have all features completed.
Conclusion:
I am confident that I can tackle this tool. There are nine features listed here and the real meat of the program is in the Full Ogre Material Editor and the library of common functions. The success to creating this tool is all about separating all the components and making sure that each of them work individually so that they can be combined together. This is why maintaining a working build of the project along with adding features one at a time and testing them will deliver a working complete product on time.