Importation & Adaptation of the previous project.

This is just an update about the progress of the project. Many parts of the previous project have been imported in the new one.

So there are a new available module using the OpenSceneGraph library. It is composed of specific objects:

  • Viewer3D: Display an OpenSceneGraph scene.
  • OsgReader: Load a file using osg mechanism (osgDB::ReadNodeFile function).
  • LDrawReader: LDraw files are commonly composed of many files inclusions, OsgReader can't load included file and only manage direct geometry parts. So LDrawReader assembles structures of the object.
  • OsgObject: this is a simple access to an osg::Node.
  • OsgObjectWithDisplayAccess: this is an access to an osg::Node and it allows to update Viewer3D.
  • OsgTree: this displays the tree of an osg::Node on a BaseObjectTreeWidget using OsgBase object.
  • OsgBase: It corresponds to an osg::Node and its children correspond to children of the osg::Node.
Imbricable project with the openscenegraphmodule
Imbricable project with the openscenegraphmodule

Return of the Imbricable

I didn't update the imbricable project more than one year ago. I can say I did have the time due to my PhD, but it's maybe a lie. In any event, I want to work again on this project. Currently, I am implementing a second version of this project and I try to create a strong base. a versatile software as that one I did work during my PhD: Sofa.

So I present you the project: the bricks and 3D interfaces are not yet implemented, there is just a mechanism for data management. So the basic object is a member of a tree and it is composed of many attributes.

There are three types of attribute:

  • Data may be an integer a string or another thing.
  • Links are an access to an another Object. It is another way to use complex data. For example: an image may be stored as a list of pixels, but the program needs to know the size of the image to do image processing or other stuff.
  • Processing is an access to a function. For example: apply a Gaussian blur to an image.

The useful objects are limited to the widgets and load/save mechanism:

  • The display of an object (1),
  • The display of a tree of objects (2). A click on an object of (2) may change the display (1) or a drop from (2) to (1) can create a link between objects,
  • The display of the factory (3). A drop from (3) to (2) add an other object in the displayed tree (objects may not be accepted depending condition),
  • A window which contains widgets. For examples: (1) (2) (3),
  • A dock widget, a widget container which may be part of the window.
  • A module loader. Open a dynamic library (*.dll or *.so) with many objects (tools or data containers).
  • A reader and a writer of 'Imbricable' files. The files are written in XML.
blue: object attributes display; red: tree display; green factory display; grey: central widget (empty).
blue: object attributes display; red: tree display; green factory display; grey: central widget (empty).

This project is available on GitHub. I have developed on Linux, nevertheless it theoretically works on Windows or Mac (not tried). The Qt framework is used (graphical user interface) and smart pointers of the Boost library. Finally, makefiles are generated by CMake.

Currently, I work on the mechanism to save files (to add link information) and a launcher of projects.