If you believe this plugin is good enough to request Github Sponsoring, please say so here
Version 1.4.0 released for Windows!
Support for Maya 2017-2022
Added feature to detect step animations by using super sampling
-ext option (
-externalTextures) to keep textures outside of
Cameras can be exported, either by selecting them, or by passing one or more by name with the
-cam <name> flag
Skin weights are normalized to 1 now
Export node order is now deterministic
Fixed wrong exported frame count
Added donet core tool to merge multiple GLTF files into one
Added scripts to generate animated GIF and VP9s
Exports small animation metadata JSON file.
See the releases tab.
Supports Maya 2017-2020, Windows 10 x64, macOS High Sierra+ and Linux
Windows 10 x64
zipfile to any location (e.g. your desktop)
macOS High Sierra and Linux
maya2glTF_UIto launch the UI.
maya2glTF_UIscript text and drag it using the middle-mouse-button to the
Customshelf, or even better, make a
select all polygon meshesbutton
export selected meshesbutton.
maya2glTF_UIscript or hit the
refresh user interfacebutton.
assign PBR shader to selectionbutton
albedo=> base color texture
_orm=> metallic texture
_orm=> roughness texture
_ao=> occlusion texture
normal=> tangent space normal texture
-mtsflag for MikkTSpace information if your models come from Blender
emissive=> emissive texture
diffuse_env=> Image-based-lighting (IBL) prefiltered diffuse environment map (PMREM)
specular_env=> Image-based-lightning (IBL) prefiltered specular environment map (PMREM)
brdf=> Bidirectional reflectance distribution function lookup table texture
putenv "AW_JPEG_Q_FACTOR" "92";
putenv "AW_JPEG_Q_FACTOR" "100"; putenv "AW_JPEG_SUB_SAMPLING" "1x1,1x1,1x1";
At IIM, we are specialized in creating realtime interactive 3D animation, for web, education, events and broadcast television, since 1992. We have developed our own multi-machine real-time 3D puppeteering software called AnimationNow, and we are about to upgrade this to make use of up-to-date rendering techniques.
If something goes wrong in our production pipeline, it usually is exporting our complex rigged Maya characters. In the past, we contributed both donations and patches to the open source OGRE exporter, but now we want to dig deep into the Maya API ourselves, so we can help out our artists if something goes wrong during the export.
Maya interally uses a dataflow architecture (called the dependency graph). This means that power-users can connect the dependency nodes in the graph in any way they like. Unfortunately this awesome flexibility also makes it insanely difficult to develop an exporter that always works ;-)
-outputFolder (-of) STRING _(required)* * the output folder
-scaleFactor (-sf) FLOAT (optional)
-copyright (-cpr) STRING (optional)
-selectedNodesOnly (-sno) (optional)
-sceneName (-sn) STRING (optional)
-binary (-glb) (optional)
binfile containing the buffers
-externalTextures (-ext) (optional)
-camera (-cam) STRING (optional, multiple)
-initialValuesTime (-ivt) TIME (optional)
-animationClipName (-acn) STRING (optional, multiple)
-animationClipStartTime (-ast) TIME (optional, multiple)
-animationClipEndTime (-aet) TIME (optional, multiple)
-animationClipFrameRate (-afr) FLOAT (optional, multiple)
-detectStepAnimations (-dsa) NUMBER (optional)
-dsa 2to detect
STEP"interpolations" in the sampled animations curves.
node.scale.x, y z, to prevent interpolation.
-meshPrimitiveAttributes (-mpa) STRING (optional)
-blendPrimitiveAttributes (-bpa) STRING (optional)
-force32bitIndices (-i32) (optional)
-disableNameAssignment (-dnn) (optional)
-mikkelsenTangentSpace (-mts) (optional)
-mikkelsenTangentAngularThreshold (-mta) (optional)
-skipStandardMaterials (-ssm) (optional)
-excludeUnusedTexcoord (-eut) (optional)
-defaultMaterial (-dm) (optional)
-colorizeMaterials (-cm) (optional)
-dumpMaya (-dmy) STRING (optional)
CONSOLEto print to the Maya output window
-dumpGLTF (-dgl) STRING (optional)
CONSOLEto print to the Maya output window
-ignoreMeshDeformers (-imd) STRING (optional, multiple)
MGi) to the deformer to ignore it.
maya2glTF_UIhas a button to add this attribute to the selected deformer(s)
-skipSkinClusters (-ssc) (optional)
-skipBlendShapes (-sbs) (optional)
-redrawViewport (-rvp) (optional)
I consider this plugin to be production quality now, but use it at your own risk :)
Supports Maya 2017-2020 (64-bit only)
Linux support hasn't been tested a lot.
Supports static and animated, skinned and morphed meshes
Supports multiple animation clips (node and joint transforms, blend shape weights)
Supports exporting to
glTF + bin, single
glTF or single
Uses a modified fork of the glTF code from the COLLADA2GLTF project
Currently Phong, Lambert and Blinn shaders are converted to PBR, but only the color texture and transparency is taken into account (this is mainly done for testing with existing models).
Comes with GLSL code with a friendly UI ported from the official Khronos PBR WebGL code.
maya2glTF\maya\scripts\assign_glTF_PBR_material_and_textures.melscript to assign multiple textures at once, based on filename patterns
Supports exporting cameras
No lights yet
Currently out-of-the-box downloads are only provided for Windows x64
I assume you already installed a GIT client
Some versions of Maya require a Maya devkit
Clone this repository
git clone https://github.com/iimachines/Maya2glTF.git --branch master
Install Visual Studio 2019
Install the Win64-x64 version of CMAKE
maya2glTF folder, and run
windows_create_vs_project -D MAYA_VERSION=2020
Next build the
maya2glTF plugin itself
Launch Visual Studio 2019
Open the solution
Select the desired configuration target (e.g.
If all goes well, the plugin and all scripts will be copied to your
git clone https://github.com/iimachines/Maya2glTF.git ~/Documents/Maya2glTF
Load a scene
NOTE to load scenes from this project, first set the Maya project to the
to see if the plugin was built correctly, it's best to use a scene from this repository, for example
select the meshes and cameras you want to export
run the following MEL script
maya2glTF -outputFolder "<your output folder>"
If you want to contribute to the development, you might want to use the MEL script
maya2glTF\maya\scripts\test-iteration.mel. This unloads and reloads the plugin everytime, unlocking the DLL.