header

Free Plugins


This page shows a list of all freely availabe OpenFlipper plugins. If you have feature requests please use the bugtracking system or send us an e-mail.

Most of the plugins on this page are included if you check out the latest free branch of OpenFlipper or download the Windows or Mac binaries.

Some of the plugins are marked as staging. These plugins are not finished yet or need more polishing. Nevertheless, they are already usable. If you want to get these plugins as well, take one of the staging daily builds.

There are different categories of Plugins:

General (14)   Basic functionality
Mesh Processing (11)   Algorithms to manipulate meshes
File Plugins (9)   Importers and exporters
Skeletal Animation (3)   Dealing with skeletons and animations
Surface Reconstruction (1)   Reconstruction of surfaces from point clouds
Post Processors (11)   Special post processing of the rendered images
Renderers (9)   Plugins used for rendering in OpenFlipper
Type Plugins (9)   Providing the basic datatypes


All Plugins


Backup


The Backup Plugin manages store and restore operations on objects. Plugins manipulating objects have to support backup and restore operations (which applies to all plugins in the free branch). It will add buttons and a history to OpenFlippers user interface to step through previous operations.

Backup and restore functionality in OpenFlipper is only available if this plugin is loaded.





Data Control


plugimg

The Data Control Plugin helps you to manage objects in OpenFlipper. It is used to show/hide objects, change their selection, copy, delete them or other properties. Additionally you can manage the object material via the context menu.

Included is also a way to group objects for handling larger scenes and a function to visualize object bounding boxes.





Decimater


plugimg

This Plugin can be used to decimate triangular meshes.

The decimation process can be controlled by several error constraints:

  • Distance to original mesh
  • Normal deviation
  • Edge length
  • Roundness of the triangles
  • Aspect ratio of the triangles

The decimation order can be based on the distance, normal deviation or edge length.

Next to the incremental decimation, where the decimation is done in a sequential order by using a heap, we also provide a faster multiple choise decimation algorithm which is based on random samples. This algorithm is faster but still guarantees a minimum adjustable quality.

A mixture of both algorithms providing a good balance between speed and quality for large meshes is also included.





Deserialize Screenshot Metadata


plugimg

This plugin provides a dialog that allows the user to deserialize meta data from a viewer snapshot taken with "View" -> "Viewer Snapshot" (the "Store Mesh Comments" option must be on when taking the snapshot).

At a minimum, the viewport position and the materials used in the scene are restored when deserializing meta data with this plugin. If you attach your own meta data to your objects, you can implement one of the slots in MetadataInterface to handle that meta data once it gets deserialized from a viewer snapshot.

A typical scenario where this is used is, when you have a complex set of user set parameters used by your plugin to generate the scene seen in a snapshot. If your plugin serializes these parameters into the object meta data, it will be stored in the snapshot. Later, you can reproduce the exact same result by restoring the parameters from the meta data in the snapshot.





File Assimp


This plugin allows to import and export data in OpenFlipper via the Open Asset Import Library (Assimp). This adds a large set of supported file types to OpenFlipper. A list of the supported types is available on the assimp website.

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



File BVH


This plugin reads and writes Biovision BVH files. This format can be used to store skeletal animation data.





File OBJ


This plugin is required to read and write Wavefront OBJ files. We support triangular and polygonal meshes as well as B-Spline curves and surfaces from OBJ files





File OFF


This plugin is required to read and write OFF files.





File OM


This Plugin is required to read and write OpenMesh files.





File PLY


This plugin is required to read and write PLY files.





File STL


This plugin is required to read and write STL files.





File VTK


This plugin is required to read and write VTK files.





HeightField


plugimg

This plugin can be used to import image data as a height field. This is especially usefull for height maps stored as grayscale images. They can be converted to geometry by this plugin.





Hole Filling


plugimg

This plugin is based on the dynamic programming approach by Peter Liepa, , 2003, Filling holes in meshes. However, the algorithm handles the filling step in seperate blocks to avoid the O(n³) complexity. After the initial triangulation of the hole is computed, an optimization step improves the quality of the new mesh segment. Furthermore, the smoother plugin of OpenFlipper is used internally to get a smooth boundary and interior of the new patch.





Info MeshObject


plugimg

The Info MeshObject plugin provides information about mesh objects.

The mesh objects can be either polygonal or triangular meshes. Next to simple information such as:

  • #vertices, #edges, #faces
  • #boundaries
  • #components
  • genus

This plugin provides also more detailed statistics:

  • Vertex valence
  • Edge length
  • Aspect ratio
  • Inner face angles
  • Dihedral angles
  • Object bounding box
  • Center of gravity





Info Skeleton


plugimg

The Info Skeleton plugin is used to display information about skeletons in the scene.

It provides statistics such as joint counts, attached animations and the current bounding box of the skeleton.





Isotropic Remesher


plugimg

The Isotropic Remesher implements an incremental remeshing algorithm which remeshes a given triangular mesh so that all edges have approximately the same target edge length and the triangles are as regular as possible.

The algorithm used consists of 5 steps:

  • Split all edges longer than the given target edge length.
  • Collapse all edges shorter than the given target edge length.
  • Flip edges to achieve an optimal average vertex valence.
  • Move the vertices in their tangential plane to their center of gravity.
  • Project vertices back onto original surface

The process can be iterated and it respects additional constraints such as features or boundaries. Vertices marked as features via the selection plugin will not be modified.





Material Picker


The material picker can be used to copy and paste materials between objects. The material information is retained when OpenFlipper is closed.





Mem Info


plugimg

This plugin monitors GPU and main memory information. On the left it shows the current memory usage of the gpu while on the right it shows the main memory information. The statistics provided are system wide and not only the OpenFlipper usage.





Mesh Compare


plugimg

The Mesh compare plugin can be used to compare meshes with respect to the following properties:

  • Distance
  • Normal deviation
  • Mean curvature
  • Gauss curvature

The plugin will visualize the difference as points and also provides a histogramm showing the result.





Mesh Repair


The mesh repair plugin can be used to identify and fix some common defects of meshes. It can:

  • Detect and remove flat triangles (with valence 3 vertices in the center)
  • Detect and remove skinny triangles
  • Detect and remove triangles with one inner angle greater than a given threshold
  • Detect and remove foldovers
  • Flip the orientation of selected faces

Next to these repair features, the mesh repair plugin can be used to recompute vertex, halfedge and face normals of meshes. It also provides functions to snap vertices based on a given distance threshold.





Move


plugimg

The Move Plugin allows to apply affine transformations on objects or selections.

It provides the following transformations:

  • Translations
  • Rotations
  • Scaling
  • Shearing

The transformations can be applied to complete objects or only to a given selection. It has also functions to automatically scale objects to get a given bounding box size or to move the objects center of gravity into the origin.

Next to the input via a manipulator handled by the mouse, it is possible to set the transformation parameters in a context menu.





Poisson Reconstruction


plugimg

Poisson reconstruction based on the Code by Michael Kazhdan and Matthew Bolitho. The plugin requires points with associated normals. It is currently only usable on OpenMesh and SplatCloud based input, but should be easy to extend to other input data types.

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



Postprocessor Anaglyph Stereo


plugimg

This plugin can be used to provide stereo output on standard displays. OpenFlipper can render two images (one for the left eye and one for the right eye). If no special stereo display is available, the Anaglyph Stereo postprocessor can take the images, shift them to red and green and blend them together. The resulting image can be watched with red green glasses providing a 3D view of the rendered content.





Postprocessor Bilateral Blur


plugimg

Bilateral blurring takes the depth of the scene into account. It is possible to control the smoothness in spatial and depth range individually. This way edges can be preserved for example.

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



Postprocessor Depth Image


plugimg

Next to the color image, the renderers produce a depth image describing the distance of each rendered scene pixel to the viewer. The Depth Image Postprocessor plugin replaces the final rendered color image in the viewer by the depth image. The depth values are mapped to a grayscale image in the postrocessing step.





Postprocessor Depth of Field


plugimg

Depth of Field simulates a lense model instead of a pinhole camera. Objects are blurred based on the distance to the plane in focus. Bokeh is a blurring effect that takes the shape of the camera aperture blades into account.
Depth of Field
Bokeh

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



PostProcessor FXAA


plugimg

The FXAA plugin implements an approximate anti-aliasing technique in a post processing step. Anti-aliasing is achieved by blurring the image along contrast edges.

[ Timothy Lottes, "FXAA", Febuary 2009 NVIDIA ]

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



Postprocessor Gaussian Blur


plugimg

The image is blurred with a standard seperable Gaussian filter.

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



Postprocessor Grayscale


This plugin takes the rendering output and removes the color from it. It uses the input brightness to compute the resulting grayscale values.





Postprocessor Philips Autostereoscopic Displays


plugimg

This plugin processes the rendered images to be displayed on Philips Autostereoscopic Displays. These Displays take a color image on the left and a depth image on the right. Additionally some flags (additional blue pixels) are added in the top left corner which are used to control the display behaviour.

Note: You have to switch OpenFlipper to fullscreen (Strg+F) when you use it on these Displays and this postprocessor has to be the last one in the postprocessor chain.





Postprocessor Poisson Blur


plugimg

The image is blurred with a Poisson kernel. Samples in a Poisson kernel have a minimal distance to each other.

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



Postprocessor Radial Blur


plugimg

The image is blurred radially from a center pixel. Center and strength are controllable.

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



Postprocessor Sobel


plugimg

This postprocessor plugin takes the output image and applies a sobel operator to it.





Primitives Generator


plugimg

The primitve Generator Plugin provides functions to create simple primitives in OpenFlipper.

It adds a menu to create the following objects:

  • Cube (Triangle/Tetrahedral Mesh)
  • Dodecahedron (Polygonal Mesh)
  • Icosahedron (Triangle mesh)
  • Octahedron (Triangle mesh)
  • Pyramid (Triangle mesh)
  • Cylinder (Triangle mesh)
  • Sphere (Triangle Mesh, different parametrizations)
  • Cuboid (Tetrahedral Mesh)





Print


This simple plugin adds printing support to OpenFlipper. When triggered, it will make a screenshot of the current scene and send that to your systems printing system. You can choose which printer to use or send it to a pdf/ps file (if supported by the OS).





Property Viz


plugimg

The Property Visualization plugin can be used to visualize various properties of triangular or polygonal meshes. The properties can be either scalar or vector valued and may be stored at vertices, halfedges, edges, and faces.

A color coder is integrated to get an optimal visualization of scalar valued properties. Vector valued properties can be visualized as lines or for example as colors based on the vector lengths.





Remesher


plugimg

The Remesher plugin can be used to reduce the complexity of triangular meshes. In contrast to the Isotropic remesher, it tries to adapt the triangle size with respect to curvature of the mesh. Therefore the resulting triangles will be large in flat areas while in areas with high curvature they will get smaller achieving a high precision output mesh with a low triangle count.

The user can set the maximal and minimal edge length of the output mesh and a maximal distance to the original mesh.





Render Classic


plugimg

The default classical renderer implements rendering the scene of OpenFlipper with the fixed function pipeline of OpenGL.

It is suitable for most graphics cards and requires only OpenGL 2.0. Therefore the shader support of this Renderer plugin and the resulting pipeline is limited.

Requirements: OpenGL 2.0





Render Deferred Shading


plugimg

This render plugin integrates deferred shading in OpenFlipper. Additionally, it shows how to perform full MSAA with offscreen render textures.

Requirements: OpenGL 3.2

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



Render DepthPeeling


plugimg

The DepthPeeling plugin integrates order-independent transparency rendering in OpenFlipper.

Two variants of depth-peeling are implemented:

Requirements: OpenGL 3.2





Render Normals


plugimg

The render normals plugin is used to take the current normals of the objects in the scene and render as colors. It is usefull to inspect the normal information during the rendering or as a result of a computation. As it works directly on the buffers, no additional functionality has to be added to the plugins.

Requirements: OpenGL 3.2





Render Order Independent Transparency


plugimg

This is an order independent transparency renderer. The method first builds a linked list of all fragments in the scene. In a fullscreen pass, the list of fragments belonging to the same pixel is then manually sorted and blended in back-to-front order. This technique requires only one scene pass, followed by a fullscreen pass. ref: "OIT and GI using DX11 linked lists" by Nick Thibieroz & Holger Grün, presentation at GDC 2010

Branch:
Staging

Note:
This plugin is not part of the free branch yet. You can download the staging package on the download page or via the Daily-Builds. For the source code, check out the staging branch.



Render Picking


plugimg

The picking renderer plugin can be used to visualize OpenFlippers picking buffers. The picking functions use standard color picking. This means that all primitives get rendered in their own color. On a mouse click, the color in the picking buffer at the current position is used to lookup the object and possibly which part of the object has been clicked.

The plugin just renders the picking buffer into the output color buffer.

Requirements: OpenGL 2.0





Render Shader Pipeline


plugimg

As opposed to the internal and classical renderer, the ShaderPipeline plugin implements the fixed fuction behaviour with shaders.

The combinatoric problem of dynamic states such as flat/smooth shading, texturing and light types is solved by dynamically generating and caching shaders for each combination while providing a high flexibility when adding additional shader code.

Requirements: OpenGL 3.2





Render SSAO


plugimg

The SSAO plugin approximates the ambient occlusion factor by locally sampling the normal and depth-maps of the scene. Sampling is done by randomly rotating offsets within a spherical kernel at each pixel. The occlusion factor is then obtained by comparing the sample position with the actual depth map of the scene. In a final pass, a downsampled and blurred image of the occlusion factor is blended with the color map of the scene.[ Vladimir Kajalin, ShaderX7 - "Screen-Space Ambient Occlusion"]

Image: Left w/ SSAO, Right w/o SSAO





Render Toon


plugimg

The toon render plugin replaces the default lighting model with cel-shading and additionally outlines silhouettes in a post processing step.

In cel-shading, the diffuse and specular lighting factors are quantized to a fixed pallette. Silhouette outlining is achieved applying a sobel filter for edge detection.

Requirements: OpenGL 3.2





Ruler


plugimg

This plugin can be used to measure euclidean distances in the OpenFlipper view.

You can click at the start and the end point of the measurement and the plugin will visualize the distance between the clicked points. After you selected the starting point, the distance to the current mouse position will updated while you move it.





Script


plugimg

OpenFlipper provides a very flexible plugin system which can be used to automate tests or write entire new algorithms e.g. as combinations or modifications of existing ones. Each function in an OpenFlipper plugin can be easily made available as a scripting function (implement them as public slots).

The Scripting Plugin provides an interface to create scripts using these functions.

The interface of the plugin includes:

  • Widget containing a list of all available scripting functions along with their documentation and parameters
  • Live view showing functions which are called by the plugins(Has to be supported in the plugins)
  • Editor with syntax highlighting, checking, and simple debugging

The script language is based on QtScript with is similar to javascript. For additional info see the Qt Documentation.

Note: If you want to use scripting in OpenFlipper, this plugin has to be loaded!





Selection Base


plugimg

The Selection Base Plugin is used to add or modify selections on objects. It only provides the core functionality like selection metaphors. These basic information is then passed to lower level selection plugins which have to be implemented for each available datatype.

There are four types of selections which can be modified: Object-, Vertex-, Edge-, Halfedge-, and Face-Selection.

For all types the plugin adds different kinds of selection metaphors like Lasso-Selection( screen space and volume lasso) , Sphere-Painting-Selection, Boundary-Selection or Floodfill-Selection.

In addition selections can be converted between different types (feature selection, vertex selection, ...), stored to disk or colorized.





Skeletal Animation


plugimg

This plugin provides basic controls to animate skeletons in OpenFlipper. It can be used to switch and control the playback of animations.

Furthermore it allows to control skinning algorithms (Not available in the free version yet) to attach meshes to skeletons.





Skeleton Editing


plugimg

The Skeleton Editing plugin can be used to modify or create skeletons in OpenFlipper. It can add and remove joints from skeletons.

It is also used to move joints in 3D. The modifications can be either applied to:

  • one single joint (in the current frame or in a whole animation)
  • to the joint itself or the whole subtree of the joint

Furthermore a simple inverse kinematic implementation is provided to move the joints and modify their children and parents accordingly.





Slice


The Slicing Plugin can control the clipping planes in the renderers. If you want to look inside an object you can define a slice of the scene that is rendered instead of the full object. This is especially usefull for the volumetric datatypes like the ones based on OpenVolumeMesh.





Smoother


plugimg

The Smoother Plugin implements a laplacian smoother for triangular meshes.

The smoothing can be controlled by several constraints:

  • normal/tangential direction or both
  • C0 or C1 continuity
  • Distance to original mesh
  • Respect features (select them via the selection plugin first and convert them to features)





Subdivider


plugimg

The Subdivider Plugin implements several subdivision algorithms for triangular and polygonal meshes (depending on the used algorithm):

  • C. T. Loop, "Smooth Subdivision Surfaces Based on Triangles", M.S. Thesis, Department of Mathematics, University of Utah, August 1987.
  • L. Kobbelt, "Sqrt(3) subdivision", Proceedings of SIGGRAPH 2000.
  • "Interpolating Labsik Greiner Subdivider" as described in "Interpolating sqrt(3) subdivision" Labsik & Greiner, 2000
  • "Modified butterfly scheme" of Denis Zorin, Peter Schröder and Wim Sweldens,
  • "Interpolating subdivision for meshes with arbitrary topology'' in Proceedings of SIGGRAPH 1996, ACM SIGGRAPH, 1996, pp. 189-192.
  • "Catmull Clark" subdivision




Texture Control


plugimg

The Texture Control Plugin manages all textures in OpenFlipper. It enables the user to switch between different types of textures. OpenFlipper supports global textures which are available on all objects and visualize properties on the surface like e.g. curvatures(computed on demand to save computation time). For this scalar properties the plugin also offers a histogram to analyze and define ranges for rendering this values by using a texture. Additionally local textures are supported so that objects can be textured differently. The Plugin manages which texture is active on an object and allows to modify parameters for all available textures.





Topology


plugimg

The Topology Plugin is a very simple one providing tools to change the topology of a mesh (triangular and polygonal). It can be used to split, collapse or flip single edges on a mesh. Furthermore it provides functions to add, delete and split faces. These operations are available via a simple mouse interface to allow the user to directly modify the topology.





Type B-Spline Curve


plugimg

This plugin adds a B-Spline Curve object type to OpenFlipper.





Type B-Spline Surface


plugimg

This plugin adds a B-Spline Surface object type to OpenFlipper.





Type Camera


plugimg

Datatype to visualize cameras. It uses the camera settings such as projection matrix and modelview zu visualize a camera in the scene.





Type Coordinate Systems


plugimg

Simple data type for displaying coordinate systems. It provides a coordinate system at a given position and orientation. The type contains rendering routines and of course picking functionality.





Type Plane


plugimg

This plugin adds a simple Plane object type to OpenFlipper.





Type Polygonal Mesh


plugimg

This plugin integrates a polygonal mesh type based on OpenMesh into OpenFlipper. The facets in this type can have arbitrary valence (including triangles).

The type also provides efficient rendering.





Type Skeleton


plugimg

Datatype plugin for skeletons. The datatype contains all functions to handle and render skeletons. The skeleton is implemented as a tree structure. It is possible to attach additional information to the primmitives.

Furthermore animation data can be attached and is controlled via the Skeletal Animation plugin. This way, skeletal animations can be directly visualized. Advanced plugins can use this information to deform meshes and create surface animations.





Type Sphere


plugimg

This plugin adds a simple Sphere object type to OpenFlipper.





Type Triangle Mesh


plugimg

This plugin integrates a triangular mesh type based on OpenMesh into OpenFlipper. It is only usable for strictly triangular meshes (non-triangular facets will be automatically triangulated when added to the datastructure).

This type is the basis for various OpenFlipper mesh processing plugins and also provides fast and efficient rendering.





View Control


plugimg

The View Control Plugin manages the visualization of objects. It provides context menus to:

  • Switch the objects draw modes
  • Show/Hide selections, features, modeling area, ...

Furthermore it provides a toolbar with predefined views to be applied to the viewer. For the scripting system it implements various functions to control and get information about the camera, the rendering of the objects and other scene parameters.





Visual Scripting


plugimg

The Visual Scripting Interface Plugin provides a visual programming interface to OpenFlippers scripting system. You can design algorithms by producing simple block/dataflow diagrams which are internally converted to OpenFlipper Scripts. Almost all freely available plugins provide blocks in the visual script editor which can be used to combine them to new algorithms or processing chains.

The editor also includes blocks for basic user interaction like dialog boxes.

Users without programming knowledge can use this interface to easily generate complex algorithms using existing function blocks.





Disclaimer Home Visual Computing institute RWTH Aachen University