Skip to content
OpenFX Mesh Effect API - A plug-in API for cross-software procedural mesh effects
Branch: master
Clone or download


Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Finish plugin guide Jul 19, 2019
examples Update code samples Feb 8, 2020
include Add support for arbitrary point/vertex/face attributes Feb 8, 2020 Add license for the logo Jul 16, 2019 Add link to the blog post Sep 9, 2019

Open Mesh Effect

OpenFX Mesh Effect API

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

Recommended fore-reading: OpenFX Core Guide and Reference from the OpenFX repository.

The present repository contains:

  • The Mesh Effect API itself: ofxMeshEffect
  • Examples of implementation, both for host and plug-ins.
  • Documentation, with a programming guide as well as config to generate doc from header files (you can also read comments from header files directly).

Current status of this memo This is a work in progress DRAFT of the API. Some parts are still missing, others need intensive testing. Feel free to fill issues if you have any suggestions.

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 different softwares, enabling exchange formats to store meshes without baking them first.

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

Why OpenFX?

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.



NB: None of these implementations are complete. The Blender implementation is based on the example from this repository.


  • Examples of plugins from this repository
  • MfxVCG is an example of Open Mesh Effect plug-in that provides mesh filters from VCGlib, the core library of MeshLab.




This document currently is a draft. Feel free to give some feedback through the GitHub issues of this repository.

Current limitations

Some limitations that we need to address while designing the standard:

  • It must be possible to declare and attach arbitrary attributes to points, vertices and faces.
  • Custom strides must be possible in data arrays in order to minimize the need for hosts to re-layout data when invoking the effects.


The need for such a standard urged when I tried to tie Blender and Houdini together while respecting the spirit of the GPL license under which Blender is released. See the discussion on Blender Dev Talk forum.

You can’t perform that action at this time.