OpenMfx icon indicating copy to clipboard operation
OpenMfx copied to clipboard

A low-overhead mesh-processing plug-in API for cross-software procedural effects

OpenMfx

OpenMfx

The OpenFX Mesh Effect API.

OpenMfx is a plug-in standard for 3D mesh processing effects built on top of OpenFX, a standard originally designed for 2D image processing.

The official documentation of the API is located at https://openmesheffect.org

NB OpenMfx was first known as "Open Mesh Effect", we decided to rename it because "OpenMfx" is easier to abbreviate and was emerging from the usage anyways.

Why a standard?

Many 3D software feature some non destructive workflow, relying on procedural geometry effect being recomputed on the fly whenever the underlying mesh data is modified. One can quote for instance Houdini SOPs, some of Maya's nodes, or Blender's modifiers. Unfortunately, usual open exchange formats do not support these, as they might be implemented differently in different software, forcing geometries to be "baked" at export. This destructive step prevents one from tweaking the procedural parameters again. A standard description of such mesh effects will lead to effect that work exactly the same way in various software, enabling exchange formats to store meshes without baking them first.

OpenFX has been designed for 2D images, it is completely different from 3D meshes, so why using it?

The OpenFX standard has been cleverly separated into several parts, leaving its core very generic. This OpenFX Mesh Effect API leverage on this agnostic core (called ofxCore) but completely ignores the image related part (ofxImageEffect). Instead, it defined an ofxMeshEffect, following similar patterns where it is relevant.

For a more complete post about the motivations behind OpenMfx, see The need for Open Mesh Effect.

Implementations

Hosts

Existing host software that supports OpenMfx are listed here.

Plug-ins

To use existing plug-ins, check out this list of existing plug-ins.

To write your own plug-in, see the C++ SDK tutorial.

License

See LICENSE.md.

Contributing

Although the standard itself is getting stable, help is welcome to improve the ecosystem of tools. Feel free to give some feedback through the GitHub issues of this repository.