The project has started three years ago with a lengthy timetable and todo list including lots of capabilities. It had been under development for 9 months and then suspended for a long period of time until recently that I decided to post it and reprogram the project in order to conform it to the new standards and compilers. Fortunately, I have successfully reprogram some parts in order to recompile the whole project in the new MS Visual Studio 2017, but I believe still there are a lot of works to do to conform it with the new C++ standards like C++14. An outnumbered warnings I have get during the compile proved me the issue as well. Now lets back to project and its features.
The project is not only a 3D simulator but at the same time gives almost all 3D studio environment tools such as importing new 3D models, applying textures to them and changing their attributes. The only really missing feature is to create new 3D objects.
The simulator is capable of loading different scenarios. Each scenario is consist of one project file with the file extension of cbtx. The project file is XML formatted and contains relative addresses of other files to the project file location, that the scenario needs to load. These files could be audio files (wav, …), 3D Model files (3ds, fbx, …), GIS files (dem, …) and image files for textures and skyline purposes (jpg, bmp, …). Also the XML file contain some other entities that are not addressing any physical file but are references to the actual real files addressed before with all the properties that an object could have within a 3D environment like (Coordinates, Rotation, Orientation, Scale, Pivot and …) . This feature is used for duplicating several objects using only one loaded 3D model and texture which could save a lot of memory and texture mipmap processing task. Changing the values of these properties are available from software GUI and also the software is capable of importing new 3D, GIS models and texture files. Most of the tasks could be performed via magnificent GUI provided by MFC ribbon interface.
The program is developed with C++ and OpenGL is used for 3D Graphics purposes.
Some features of the program:
- Creating and loading new scenarios with project file
- Importing 3ds and fbx objects to project
- Importing GIS information as terrain for real world simulations
- Navigation inside the scenario
- Creating multiple views of one scenario (with independent navigation tools)
- Capability of loading multiple scenarios at the same time
- Applying day time options and sun properties to the scenario
- Applying fog and dust options to the scenario
- Using configurable materials
- Defining animation commands for any 3D model within the project.
- Editing animation commands for 3D models
- Playing and pausing animations used for 3D objects.
- Applying mix reality feature using OpenCV library.
- Capable of supporting multiple displays and head mont for different views.
- Connecting a database to store and load performance of the users with full report option.