Alembic and FBX

An Alembic file can contain several entities, such as geometry (polygon meshes and subdivided surfaces), cameras, materials, and lights. Alembic files allow different groups of people to work on the same assets without losing any data.

Mari supports the use of Alembic files, especially when handling multiple geometries within a single Alembic (.abc) file. On project creation or import, Alembic files can be used in place of .obj or .ptx files, with their own mesh options and parameters for specifying how Mari treats the different entities. However, there are differences. Mari only allows geometry and cameras to be loaded or imported, and there are some considerations that must be made if you're used to working with .obj or .ptx files.

An FBX file can contain several entities, such as geometry (vertices and patches), materials, texture, and animation. As opposed to the Alembic format, which is a point cache format that bakes rigs and constraints to vertices, FBX files export these entities to FBX nodes, which gives you the flexibility to have the original data, and manipulate it as needed.

Alembic Support

Alembic allows Mari to import hierarchies of objects within a single file. Any Alembic file containing multiple objects as part of a hierarchy can have these objects merged on project creation or load. Cameras, also packaged as part of the file, can be imported and treated as Mari would treat other projectors in the Projectors palette.

Currently, Alembic support in Mari includes:

starting a new project with either multiple objects or several objects merged into one from the same .abc file

optionally choosing to merge geometry as a single mesh or in such a way as to preserve the geometry and metadata

working with object hierarchies in order to retain multiple child objects as part of a parent object, just as you would within your modeling package

creating a project with, or loading in, projectors from an .abc file to store in the Projectors palette

loading in animated geometry as a single .abc file as opposed with .obj files, which require a file for each frame of animation

loading or importing face sets packaged with the .abc file to store in the Selection Groups palette

Python bindings for Alembic project creation, object and camera loading, and import/export functionality. Refer to the Python HTML documentation within Python > API for further information.

detecting whether to subdivide each Alembic geometry piece, based on subdivision flags set in the file.

Limitations to Mari's Support of Alembic

Mari does not support all the functionality that comes along with Alembic files. Some entities that the file format contains cannot be handled in Mari or are restricted.

Currently, the limitations of Mari's Alembic support include:

loading or importing only geometry and cameras, not lights or materials, even if the .abc file contains them

loading or importing only one .abc file, as one file can contain several objects, unlike .obj or .ptx files

creating selection groups from geometry faces cannot be done in the same way as with .obj or .ptx files; instead face sets are imported from the .abc file and stored in the Selection Groups palette.

adding new versions of child objects all at once by loading or importing the parent object cannot be done. Child objects' versions need to be updated individually.

FBX Support

Mari supports importing cameras, geometry, and animation from .fbx files, and loads .fbx and .abc files similarly. Additionally, the scene data from the file is presented in the New Project dialog in the same tree widget format. As with Alembic files, FBX GeoEntities are created from polymeshes and sub-divisions, projectors are created from imported cameras, and selection sets are created from face sets and assigned materials on a polymesh.

Currently, FBX support in Mari includes:

creating GeoEntities from polymeshes and sub-divisions

creating Mari selection groups out of FBX face sets and polymesh materials

creating projectors from imported cameras

selecting animation takes and applying the animation to a GeoEntity in Mari

importing keyframe animation from selected geometry and cameras

importing object hierarchies and transform animation

loading FBX deformations (mesh skinning and blendshapes) onto a selected geometry

Python bindings for FBX project creation, object and camera loading, animation take management, and import/export functionality. Refer to the Python HTML documentation within Python > API for further information.

Limitations to Mari's Support of FBX

Mari does not support all the functionality that comes along with FBX files. Some entities that the file format contains cannot be handled in Mari or are restricted.

Currently, the limitations of Mari's FBX support include:

only loading polymesh and sub-division geometry, cameras, and any transform or group nodes that contain geometry. NURBS, patches, markers, locators, lights, and curves are not loaded into Mari.

only loading the skeleton data for a mesh (that is to say, joints, bones, their transforms, and keyframe animation). The associated mesh is deformed using the skeleton. Mari does not read in higher level IK/FK solver systems.

Note:  If you want to bring any modeler-specific solver animation data into Mari, you need to bake the IK/FK animation into the skeleton and then export the mesh and skeleton to Mari.