Skip to content

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

License

Notifications You must be signed in to change notification settings

eliemichel/OpenMfx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Epic MegaGrants Recipient

Epic MegaGrants Recipient

CMake Badge

 

OpenMfx OpenMfx

OpenMfx

Table of Contents

What is this?

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.

Quick Start

Download and run

  1. OpenMfx is a plugin API. In order to run a plugin, you need an OpenMfx-compliant host. To quickly get started, we recommend to download a release of our Blender branch.

  2. Then download a plugin, for instance the MfxExamples plugin. Unzip the archive so that you get a .ofx file. This is the plugin.

  3. Start our Blender branch, add a modifier to the default cube. Select new type of modifier called "OpenMfx".

  4. In the Plugin Path field, browse to the .ofx file that you downloaded at step 2.

  5. A plugin file can contain multiple effects. If the plugin loaded correctly, you can chose one from the drop down menu bellow the Plugin Path field. Choose for instance the Explode effect. Otherwise, you should see an error message in the modifier's UI.

  6. You may now play with the effect's parameters.

  7. An other way of using an OpenMfx plugin is as a node in a Geometry Node graph. Go to the Geometry Nodes tab of Blender, and press New in the header of the node graph area.

  8. Add a new node, search for "OpenMfx Plugin" in the Add menu. The same process as for the modifier goes, you first browse to the .ofx file, then select the effect and finally tune its parameters.

Project layout

The API itself is only a set of headers found in include/. To make the creation of hosts and plugins easier, an ecosystem of C and C++ libraries has been developed around, called the SDK.

Overview

Writing a plugin

The easiest way to write your own plug-in, is to follow the C++ SDK tutorial. You can also just start from the MfxExamples repository and adapt it to your needs.

Writing an host

There is no tutorial yet for this, but you can look at sdk/examples/cpp/host.

Going further

Available 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.

Contributing

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

License

OpenMfx is free and open source, and compatible with the use in commercial software. See LICENSE.md.

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published