마야 cache export

반투50·2022년 4월 13일
0

git link

geocache export

import maya.cmds as cmds
import maya.mel as mel


def export_cache(members, path, name, frame_from, frame_to, world):
    maya_version = int(cmds.about(version=True).split()[0])
    version = 6 if maya_version >= 2013 else 4

    args = [
        0,  # 0 -> Use provided start/end frame.
        frame_from,
        frame_to,
        "OneFilePerFrame",  # File distribution mode.
        0,  # Refresh during caching?
        path,  # Directory for cache files.
        0,  # Create cache per geometry?
        name,  # Name of cache file.
        0,  # Is that name a prefix?
        "export",  # Action to perform.
        1,  # Force overwrites?
        1,  # Simulation rate.
        1,  # Sample multiplier.
        0,  # Inherit modifications from cache to be replaced?
        1,  # Save as floats.
    ]

    if version >= 6:
        args.extend((
            "mcc",  # Cache format.
            int(world),  # Save in world space?
        ))

    cmds.refresh(suspend=True)
    original_selection = cmds.ls(selection=True)
    hidden_layers = [layer for layer in cmds.ls(type="displayLayer") or () if not cmds.getAttr(layer + '.visibility')]

    try:

        for layer in hidden_layers:
            cmds.setAttr(layer + '.visibility', True)

        cmds.select(members, replace=True)

        mel.eval('doCreateGeometryCache %s { %s }' % (
            version,
            ', '.join('"%s"' % x for x in args),
        ))

    finally:

        # Restore selection.
        if original_selection:
            cmds.select(original_selection, replace=True)
        else:
            cmds.select(clear=True)

        # Restore visibility
        for layer in hidden_layers:
            cmds.setAttr(layer + '.visibility', False)

        # Restore refresh
        cmds.refresh(suspend=False)
profile
취미로 개발

0개의 댓글