Version franšaise

  • Home page
  • Architecture and operations
  • Screenshots

  • Manuals
  • Installation
  • User manual
  • Developer manual

  • Download
  • Sources
  • Examples

  • Project members
  • Developer team
  • Greetings

  • Project leader:
  • Guillaume DAMIAND


    3D Topological Modeler

    Architecture and operations


      Moka contains more than 20 types of different operations, many of them being declined in several variants depending on the dimension or on different options. We can group the main operations in important categories:

      • The basic operations: like creations of basic objects (polygons, pyramids, cubes, torus, spheres...), the sewings (to put in relation two objects by identifying some cells), the unsewings (reverse operations) and sticks on;
      • The modification operations: for example the cell removals and contractions, triangulations or quadrangulations operations, cell insertions or closing;
      • The extrusions which can be simple, along a path or by revolution;
      • The chamfering (or rounding) of vertices of edges.
      • The meshing or smoothing which allow to refine a subdivision to obtain smother forms ;
      • The boolean operations which are primordial to in a modeler, and which allow objects union, intersection and difference;
      • The operations of topological computations: computation of number of cells, computation of Euler characteristic and of homology groups (that includes Betti numbers).


      The architecture of MOKA is inspired from classical schema of model-view-controler. Moreover, the software is cut in several libraries in order to facilitate its modularity and its extension.

      • lib-gmapkernel: the kernel of MOKA, containing the 3G-map definition and the main operations;
      • lib-controleur: a controler makes the link between a model and a GUI. This part of the controler is generic without any link with 3G-map;
      • lib-controleur-gmap: the part of the controler which is related to the kernel (lib-gmapkernel). The controler contains all the kernel operations, but added with the management of operation parameters, the management of view allowing to compute openGL lists used for drawing the model. For these reasons, a GUI must call only controler methods, and not directly the methods of the model;
      • high level operations are separated in modules which can be enabled of disabled depending on your needs. Each module is defines in a separated library. Actually, there are the following modules:
        • lib-mesh Smoothing and meshing operations
        • lib-rounding rounding operations (chamfering)
        • lib-corefinement corefining operations (which are the basis for boolean operations)
        • lib-tools some operations used in other modules

        Other modules are specific operations dedicated to some research works:
        • lib-spamod a module allowing to visualize objects in their discrete form (pixels in 2D and voxels in 3D)
        • lib-extraction-images a module allowing to extract a map from a 3D image
        • lib-homology homology groups computation


      Kernel operations (in lib-gmapkernel) are stable and normally do not cause crash. However, send us an email in case of problems.

      But it is possible that some operations in modules contain again some bugs. One again, send us an email saying the problems.