/MeshSyncDCCPlugins

DCC plugins for MeshSync in Unity. Supported tools: Maya, Maya LT, 3ds Max, Motion Builder, Modo, Blender, Metasequoia

Primary LanguageC++OtherNOASSERTION

demo

Other Languages

MeshSync DCC Plugins

ReleaseBadge ReleaseBadge

This repository provides the source to build DCC plugins for MeshSync, which is a package for synchronizing meshes/models editing in DCC tools into Unity in real time.
This allows devs to immediately see how things will look in-game while modelling.

Features

Maya 3ds Max MotionBuilder Blender Modo Metasequoia
Polygon mesh sync ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Camera sync ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Light sync ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Double-sided Mesh ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Negative Scale 🔺 🔺 🔺 🔺 🔺
Multi UV ✔️ ✔️
Scene Cache Export ✔️ ✔️ ✔️ ✔️
Non-polygon shape

Caveats

  • Negative Scale: partially supported on some DCC Tools.
    If all XYZ values have negative values, the mesh will sync properly, however if only one axis has a negative value, Unity will treat the mesh as though every axis has a negative value. Certain DCC tools may have Bake Transform option which can sync the mesh in this case, but it will lose any deformer information.

Supported DCC Tools

Windows Mac Linux
Maya 2018 ✔️ ✔️ ✔️
Maya 2019 ✔️ ✔️ ✔️
Maya 2020 ✔️ ✔️ ✔️
Maya 2022 ✔️ ✔️ ✔️
Maya LT 2019 + ✔️
3ds Max 2018 ✔️
3ds Max 2019 ✔️
3ds Max 2020 ✔️
3ds Max 2021 ✔️
MotionBuilder 2017 ✔️ ✔️
MotionBuilder 2018 ✔️ ✔️
MotionBuilder 2019 ✔️ ✔️
MotionBuilder 2020 ✔️ ✔️
Blender 2.83
Blender 2.90
Blender 2.91
Blender 2.92
Blender 2.93
Blender 3.0
Modo 12 ✔️ ✔️ ✔️
Modo 13 ✔️ ✔️ ✔️
Metasequoia 4.x ✔️ ✔️

Notes:

  • ✔️ : Supported
  • ❌ : Impossible to support (platform unsupported by the DCC, etc)
  • empty : May be supported in the future

DCC Plugin Installation

MeshSyncPreferences

MeshSync's Preferences page provides easy installation on several DCC tools.
Alternatively, Manual Installation is also available.

Building

License

Currently being reorganized

This document is currently being reorganized. The previous version of the document is put below for reference.

Guides

  1. Maya
  2. Maya LT
  3. 3ds Max
  4. MotionBuilder
  5. Blender
  6. Modo
  7. Metasequoia
  8. Unity

Maya

Confirmed functionality with Maya 2015, 2016, 2016.5, 2017, 2018, 2019 + Windows, Mac, and Linux (CentOS 7).

  • Installation:
    • Download UnityMeshSync_Maya_*.zip from releases.
    • Windows: If %MAYA_APP_DIR% is already setup, copy the modules directory there, if not copy it to %USERPROFILE%\Documents\maya (← copy paste into the Explorer address bar).
      • For versions prior to 2016, copy to the version name directory (%MAYA_APP_DIR%\2016 etc.)
    • Mac: Copy the UnityMeshSync directory and .mod file to /Users/Shared/Autodesk/modules/maya.
    • Linux: Copy the modules directory to ~/maya/(Maya version).
  • Start Maya, then go to Windows -> Settings/Preferences -> Plug-in Manager, and activate the plugin by checking Loaded under MeshSyncClient.
  • Now that the UnityMeshSync shelf has been added, click on the gear icon to open the settings menu.
  • While "Auto Sync" is checked, any edits to the mesh will automatically be reflected in Unity. When Auto Sync is deactivated, click the "Manual Sync" button to sync changes.
  • Clicking Sync under Animations causes the timer to advance from the first frame to the final frame while baking the animation and sending it to Unity.
  • The other buttons correspond to their respective manual sync and animation sync functions.

 

  • Polygon mesh will carry skinning/bones (SkinCluster) and BlendShapes over to Unity as is.
    • MeshSync will attempt to apply any additional deformers, but if there is a SkinCluster before or after them they may not apply correctly.
    • Check "Bake Deformers" to sync the results of applying all deformers. This will mostly sync the Mesh on both the Maya and Unity sides, but this will result in loss of Skinning and BlendShape information.
  • Instancing is supported, but instancing for skinned meshes is currently not supported (on the Unity side they all end up in the same position as the original instance).
  • Commands are also registered to MEL, and all features can be accessed through MEL. See the source code for details.

Maya LT

Currently, only Windows is supported, and the tool is confirmed to work on Maya LT 2019 + Windows. Maya LT does not natively support outside plugins, so be aware that this may lead to problems. Even small version changes to Maya LT may lead to loss of compatibility.
This is a separate package, but the process for installation and use is the same as Non-LT Maya.

3ds Max

Confirmed functionality with 3ds Max 2016, 2017, 2018, 2019, 2020 + Windows.

  • Installation:
    • Copy MeshSyncClient3dsMax.dlu into the directory for plugin paths.
      • Plugin paths can be added in Max by going to Add under Customize -> Configure User and System Paths -> 3rd Party Plug-Ins
      • The default path (C:\Program Files\Autodesk\3ds Max 2019\Plugins) should be fine, but using a separate path is recommended
  • After installing, "UnityMeshSync" will be added to the main menu bar, and the settings window can be opened by clicking "Window".
    • If you change the menu bar, the "UnityMeshSync" category will be added under Action, where MeshSync features can also be accessed
  • While "Auto Sync" is checked, changes to the Mesh will automatically be reflected in Unity. If Auto Sync is disabled, the "Manual Sync" button can be used to sync changes manually.
  • Clicking Sync under Animations will cause the timer to advance from the first frame to the final frame while baking the animation before sending it to Unity.

 

  • Modifiers are mostly supported, but there are a few cases where they are not. Use the following rules.
    • When there is no Morph or Skin, all modifiers will be applied during sync.
    • If there is a Morph or Skin, all modifiers before them will be applied during sync.
      • If there are multiple Morphs / Skins, the one at the bottom will be chosen as the base.
    • Morphs and Skins will sync on the Unity side as Blendshapes / Skins.
      • Unity applies them in order of Blendshape -> Skin, so if the order is reversed in Max, unintentional results may occur.
    • If "Bake Deformers" is checked, the results of applying all deformers will be sent to Unity. This will keep the content of the Mesh mostly consistent between Max and Unity, but will also result in the loss of Skinning and Blendshape information.
  • Commands have also been added to the Max script, so all features can be accessed via the Max script. See the source code for details.

MotionBuilder

Confirmed functionality with MotionBuilder 2015, 2016, 2017, 2018, 2019 + Windows, Linux (CentOS 7)

  • Installation:
    • Copy MeshSyncClientMotionBuilder.dll to the directory registered as a plugin path
      • Plugin paths can be added in MotionBuilder under Settings -> Preferences -> SDK menu
  • After installation an object called UnityMeshSync will be added to the Asset Browser under Templates -> Devices, so add it to the scene
  • The various settings and features can be accessed in the Navigator by selecting Devices -> UnityMeshSync
  • While "Auto Sync" is checked, any changes to the Mesh will automatically be reflected in Unity. If Auto Sync is disabled, the "Manual Sync" button can be used to manually reflect changes
  • Clicking Sync under Animations causes the timer to advance from the first frame to the final frame while baking the animation before sending it to Unity.

 

  • The Polygon mesh's skinning/bone and BlendShapes will be carried over to Unity unchanged.

Blender

Functionality confirmed with Blender 2.79(a,b), 2.80 beta (2019-4-23) + Windows, Mac, Linux (CentOS 7). Be aware that depending on the implementation, there is a high possibility that upgrading the Blender version will lead to a loss of compatibility. Be especially careful when upgrading to the popular 2.8 versions. A supported version will be released when issues become known.

  • Installation:
    • In Blender, go to File -> User Preferences -> Add-ons (2.80 and after: Edit -> User Preferences), click "Install Add-on from file" at the bottom of the screen, and select the plugin zip file.
    • If an older version is already installed, it must be deleted beforehand. Select "Import-Export: Unity Mesh Sync" from the Add-ons menu, restart Blender after removing the older version then follow the above steps.
  • "Import-Export: Unity Mesh Sync" will be added to the menu, so select it to enable it.
  • The MeshSync panel will also be added, where settings and manual sync can be accessed.
    • The panel's location can be difficult to find in 2.8 versions. Use the screenshot to the right for reference.
  • When "Auto Sync" is selected, changes to the Mesh will automatically be reflected in Unity. If Auto Sync is disabled, use the "Manual Sync" button to sync changes.
  • Pressing the Animations Sync button will cause the timer to advance from the first frame to the final frame while baking the animation, then send it to Unity.

 

  • The polygon mesh's skinning/bone (Armature) and Blendshape will be sent to Unity unchanged. Mirror deformers are also supported. Other deformers will be ignored.
    • Check "Bake Modifiers" to sync the results of applying all modifiers. This will make the Mesh content mostly consistent between Blender and Unity, but will also result in the loss of Skinning and Blendshape information.
  • Use "Convert To Mesh" to convert objects such as Nurbs into polygons, if they are able to, then sync.

Modo

Functionality confirmed with Modo 10, 12, 13 + Windows, Mac, Linux (CentOS 7).

  • Installation:
    • Designate MeshSyncClientModo.fx in Modo under System -> Add Plug-in
  • After installing, View will be added to the menu (Application -> Custom View -> UnityMeshSync), where varous options and settings can be accessed
  • While "Auto Sync" is checked, changes made to the mesh will automatically be reflected in Unity. If Auto Sync is disabled, the "Manual Sync" button can be used to sync changes
  • Clicking Sync under Animations will cause the timer to advance from the first frame to the final frame while baking the animation and sending it to Unity.

 

  • Portions of Mesh Instance and Replicator are also supported.
  • Polygon mesh Skinning/Joints and Morph will carry over to Unity, but be aware of how deformers are handled.
    • MeshSync can only handle Joint + Weight Map skinning, or Morph deformers. Any other deformers will be ignored.
    • Checking "Bake Deformers" will send the results of applying all deformers to Unity. This will mostly synchronize the Mesh on the Unity side even with complex deformer compositions, but comes at the cost of losing skinning and Morph/Blendshape information.
    • Mesh Instance and Replicator skinning won't display properly in Unity. "Bake Deformers" must be used.
  • MeshSync features can also be accessed via commands. Use unity.meshsync.settings to change settings, and unity.meshsync.export to export

 

As of Modo 13, the Mood Bridge for Unity feature is available. This feature allows you to send Meshes and Materials directly to Unity.It has elements that are similar to MeshSync's features, with the following differences (as of 04/2019).

  • Mood Bridge supports Modo <-> Unity sync in both directions. MeshSync only supports Modo -> Unity sync.
  • MeshSync can sync Replicator and Mesh Skinning/Morphs, and animations. Currently, Mood Bridge cannot.
  • MeshSync attempts to replicate the results of bringing data into Unity via FBX as much as possible. On the other hand Modo Bridge has big differences such as using a different coordinate system (Z direction is reversed), decompressing the Mesh index (a model with 1,000 triangles will have 3,000 vertices), etc.

Metasequoia

Supported in Windows for version 3 and 4 (32bit & 64bit) and Mac (version 4 only). All 3 versions are probably supported, but 4 versions must be 4.6.4 or later (bone output is not supported for earlier versions). Also, dll is different in version 4.7 and later. This is due to changes to the bone system after 4.7 which lead to a loss of plugin compatibility. Morph output is also supported in 4.7 and later.

  • Installation:
    • Go to Help -> About Plug-ins in Metasequoia, and select the plugin file under "Install" in the lower left of the dialogue. It's a Station plugin type.
    • If older versions are already installed, remove them manually before hand. Delete the appropriate files before starting Metasequoia.
  • Panel -> Unity Mesh Sync will be added after installation, open this and check "Auto Sync".
  • While "Auto Sync" is checked, changes to the mesh will automatically be reflected in Unity. If Auto Sync is disabled, use the "Manual Sync" button to sync changes.
  • Checking "Sync Camera" will sync the camera in Metasequoia. "Camera Path" is the camera path in Unity.
  • Clicking "Import Unity Scene" will import the currently open Unity scene. Changes made to the scene can be reflected in real time.

 

  • Mirroring and smooting will be reflected in Unity.
    • However, "reflective surfaces where the left and right are connected" type mirroring is not supported.
  • Hidden objects in Metasequoia will also be hidden in Unity. Mesh details for hidden objects will not be sent to Unity, so when the number of objects in a scene makes sync heavy, making them hidden as appropriate should also speed up the sync process.
  • Materials will not be reflected in Unity, but they will be split into appropriate sub-meshes depending on the Material ID.
  • Subdivisions and metaballs will not be reflected in Unity until you freeze them.
  • Check "Sync Normals" to reflect vector changes supported by Metasequoia 4 versions.
  • Check "Sync Bones" to reflect bones supported by Metasequoia 4 versions. Checking "Sync Poses" will reflect the pose designated under "Skinning".

Related