Skip to content

extract_skeleton_mesh

ExtractSkeletonMesh

Bases: MayaExtractorPlugin, OptionalPyblishPluginMixin

Extract Rig in FBX format from Maya.

This extracts the rig in fbx with the constraints and referenced asset content included. This also optionally extract animated rig in fbx with geometries included.

Source code in client/ayon_maya/plugins/publish/extract_skeleton_mesh.py
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class ExtractSkeletonMesh(plugin.MayaExtractorPlugin,
                          OptionalPyblishPluginMixin):
    """Extract Rig in FBX format from Maya.

    This extracts the rig in fbx with the constraints
    and referenced asset content included.
    This also optionally extract animated rig in fbx with
    geometries included.

    """
    order = pyblish.api.ExtractorOrder
    label = "Extract Skeleton Mesh"
    families = ["rig.fbx"]

    def process(self, instance):
        if not self.is_active(instance.data):
            return
        # Define output path
        staging_dir = self.staging_dir(instance)
        filename = "{0}.fbx".format(instance.name)
        path = os.path.join(staging_dir, filename)

        fbx_exporter = fbx.FBXExtractor(log=self.log)
        out_set = instance.data.get("skeleton_mesh", [])

        instance.data["constraints"] = True
        instance.data["skeletonDefinitions"] = True

        fbx_exporter.set_options_from_instance(instance)

        # Export
        fbx_exporter.export(out_set, path)

        representations = instance.data.setdefault("representations", [])
        representations.append({
            'name': 'fbx',
            'ext': 'fbx',
            'files': filename,
            "stagingDir": staging_dir
        })

        self.log.debug("Extract FBX to: {0}".format(path))