RSGCreator was programmed by
It is programmed using QT and openGL under OS X and Linux.
For all non-self-made images used in RSGCreator see [licenses].
An example of using RSGCreator can be seen under [Example].
General tips for creating OBJ-files that can be used in simspark can be found under [OBJ-Files].
Deployment only tested for OS X version. For Linux or Windows, the sourcecode can be downloaded and build with Qt 4.8 in Linux (and OS X) or Qt 5 in Windows (both with Qt Creator).
RSGCreator is a tool to generate and edit rsg-files for the simspark simulator. It allows for changing, adding and removing bodyparts from an robot without editing the rsg-code itself. Furthermore it gives different views over the data of the current robot such as a list of all joints with their anchor, axis and further values. The tool is separated in 5 parts: the left scenegraph, the 3d/code-view in the middle, the special-list on the right, the top-menu with the toolbar and the edit-view in the bottom. Besides the toolbar all of these parts can be resized as fit.
The toolbar contains quick-access buttons for opening, saving and rebuilding as well as for creating a new robot and adding new variables and bodyparts.
These options can also be found via the main menu under "File", "Build" and "Add". In the "File"-menu there are also the recently used files for quick access.
Additionally the main-menu contains submenus to change the view in the different parts of the GUI under "View" and undo-redo functionality as well as the remove function under "Edit".
The main view shows either a 3D-view of the robot or the code of the currently selected rsg-file. In the 3d-view a very simple renderer is deployed that only shows the diffuse color of the material. It also allows for selection through picking and picked bodyparts will be rendered as green wireframes. The 3D-view can either show the OBJ-files of the robot, the ODE-primitives or a combination of both. What shall be displayed can be chosen from the drop-down menu in the toolbar or with the rightclick-contextmenus. In the dropdown-menu beside the one for the 3D-view and in the rightclick-contextmenus as well the view can be changed to display a code-editor. In this codeeditor the currently selected rsg file will be displayed and editable. The code is color-highlighted, search- and replace-functionalities can be used and variables (e.g. ("$var")) can be looked up via right-clickmenu. Manual changes in the code will be displayed after a rebuild. In the 3d-view the background color can be switched between black and white, the camera can be reset and 3d-axis can be shown or hidden via the "View"-menu. You can move the camera in the 3d-view by using the arrow-keys or WSAD and rotate it with the mouse, as well as zoom in and out with the mouse-wheel and the plus and minus keys.
The scenegraph on the left shows the hierarchical structure of the current scene. Therefore it shows the imported rsg-files and optional (selectable over the bottom or top menu) all the variables and nodes it contains. All entries appear in the same order as they are defined in the rsg-files. Clicking on a item in the scenegraph as well as the bodypartlist (and the 3d-view) selects it and changes the edit-widget accordingly.
The special-list on the right can show different list of information. These are a list of all joints, all bodyparts and all primitives in the scene. For the joints it displays the joint-ID, the type of the joint with a small icon, which bodyparts it connects as well as values for axis, anchor, min/max degree and the names of perceptors and effectors. The bodypart list contains all nodes that are direct children of the space node (and therefore bodyparts). This list contains the bodyparts name as well as the OBJ-file, the primitive, rigid-body and joint associated with it. If the bodypart contains vision perceptors a little eye-icon is displayed besides the name and a little lightning for force resistance-perceptors. The last list contains all primitive with their shape and sizes as well as the mass of the bodypart. The sizes of the primitives for the most parts should be the same as these of the rigid-bodys used for collision.
It is possible to add variables and bodyparts to the current scene via the "Add"-menu, the toolbar or the rightclick menus. When adding variables you may insert either a float-value, a boolean in the form of "true" or "false" or a string. The string can also be a nested variable like an eval (e.g. "(eval $var + 2)" to calculate the already existing variable $var + 2). In this case it will be just inserted as a string, but after a rebuild the variable will be recognized as what it is.
When adding bodyparts you need to set a unique name for the new bodypart as well as values for transformation, appearance, physic, joint and optionally perceptor. For all of these "standard"-values are already inserted and some are only optional (such as an OBJ-file and its scale and rotation for the appearance). In each field it is possible to use existing variables with a dollar sign (e.g. "$var"). The RSGCreator will check all values and in case of variables if they exist and if not prompt a message stating where a problem occurred in the statusbar.
To delete a bodypart simply select it in one of the views and delete it via the rightclick-menu or the mainmenu ("Edit -> remove Bodypart"). When selecting a node that is not a bodypart the bodypart that contains this node will be removed. The bodypart will be removed from the current scene in the RSGCreator as well as the rsg-code.
Variables can not be removed in the GUI, but may be deleted from the code and will then be gone after a rebuild.
As adding and editing changes will not be saved until a save or rebuild happened.
The editwidget in the bottom allows to edit existing variables and bodyparts. The fields correspond to these of the addwidget used while adding and behave in the same way. After editing variables sometimes a rebuild is necessary for the changes to show. Changes will not be saved to the actual rsg-files until a save or rebuild has happened. This also applies for adding new variables or bodyparts.
The redo and undo functions allow to undo and redo changes to the bodyparts (adding, deleting and editing). Furthermore there is a additional undo-redo functionality in the codeeditor for manual text changes.