Skip to content

pasbi/ommpfritt

Repository files navigation

ommpfritt

⚠️⚠️ I do not actively work on this anymore ⚠️⚠️

I had hoped that I would have more time for this project at some point. But I've hardly worked on it for more than two years and there's no sign of that changing any time soon. The construction sites are huge and the road to the first useful release is simply too long.

I still believe in the concept and I believe that this code is a good basis. If anyone would like to take over the project, I would be happy to help. Just write me an e-mail or GitHub message.

Build-Focal-GCC Build-Focal-Clang Build-Bionic Build-win Style Checker Total alerts Language grade: Python Language grade: C/C++ Codacy Badge CII Best Practices AppImageBade

ommpfritt or short omm is a free and open source vector modelling and motion graphics application. It brings the workflow of (3D) modelling tools to the 2D vector graphics world. The design of the application encourages and supports the user to produce maintainable documents, using concepts like procedural modelling and non-destructive editing.

Conceptually omm is a mix of traditional vector graphic editors (e.g., inkscape), CAD applications and (3D) modelling tools. Primary use case is creating, editing and rendering all sorts of animated and still graphics, diagrams, icons and drawings.

screenshot

How to Get It

omm is free. You can get its source from github and build it. You may find build instructions helpful.

For any LINUX, there is an AppImage, which requires no installation, make the downloaded file executable and just run it. For WINDOWS, there is an installer.

You can install ommpfritt-git from the AUR if you prefer a native package on Arch Linux.

omm has been tested on various Linux Distributions and Windows. It has never been tested on Mac. It works in theory.

How to use

omm was designed to be very easy to use. So if you can handle a mouse and a keyboard, it should be no problem to get started without studying the manual.

There is a (quite outdated) screen cast on youtube that shows some of the most important features and how they can be used.

Contributing

Although you can already use the app, it's still a long way until v1.0. So we need your help!

See how to contribute. Don't hesitate to get in contact with us!

Related Software

How does omm compare to other graphical applicatons? See comparison.

Features

omm is

  • general purpose: create any kind of graphics. No limits!
  • interactive: you receive immediate feedback
  • wysiwyg

User Interface

  • load and save scenes to/from human readable json format
  • all modifications to a scene can be undone (unlimited undo/redo-stack)
  • simple concept with few very concrete item classes (Object, Tag, Style, Tool)
  • wide drag'n'drop support: move, copy or link Objects, Tags and Styles naturally
  • non-destructive, non-linear editing: properties of Objects, Tags, Styles and Tools can be accessed and modified at any time.
  • build complex, reusable object hierarchies and object groups
  • flexible GUI using dockable widgets
  • customizable dark and light skins
  • multi-selection support for properties: compatible intersection of properties of all selected items (objects, tags, styles, tools) is shown and can be modified simultaneously
  • flexible, customizable key binding sequences (aka short-cuts)
  • multi-language (currently English, Spanish and German only)
  • rasterize to png and jpg
  • export to SVG

Styling

  • build complex reusable style cascades
  • dynamic Named Colors
  • interactive OpenGL-Shaders

styling

Objects

  • path object: any number of points, closed/open

    • bézier mode: modify the tangents of any point individually
    • smooth mode: tangents are set automatically
    • linear mode: no tangents
    • subdivide/remove points
  • procedural path: control the points and tangents using python

  • ellipse, rectangle, line

  • empty: no geometry, but useful as group parent

  • instance: all changes of the reference are updated in the instance-object, too

  • cloner: many instances in a regular arrangement

    • grid
    • linear
    • along any path
    • radial
    • by python script
  • mirror

  • view: define a view onto the scene for export

    • set the export region comfortably within the editor
    • adjust to viewport or vice versa
    • switch between any number of self-defined views
    • supports translation, scaling, rotation and shear

Tags

  • path tag: constrain position of any object to any path
  • style tag: define the color of an object
  • script tag: general purpose scripting without limits

Tools

  • object selection: select in viewport and rotate, move or scale* along common center of all selected objects
  • point-level: select in viewport and rotate, move or scale* along common center of all selected points. Works fine even if many path-objects are selected.
  • optinally transform axes only. Re-set the origin of the object without affecting its geometry.
  • brush-select: select points as if you were painting
  • Bounding Box-Handle

Animation

  • Keyframe Animation
  • Responsive Timeline
  • Dope Sheet
  • Seamless integration into undo/redo and multi-property- and multi-object-selection

animation

Programmable

  • programmable: every property can be controlled via embedded python scripting

python

  • visual node-based scripting alternative

nodes

  • user properties can be added at runtime to any object

Optional Command Line Interface

  • Batch rendering from command line
  • Get basic scene information from command line