maya api造球大法

利用Maya API2.0创建10000个球体,我测试花了73秒

import maya.api.OpenMaya as om2
from functools import wraps
import time


def time_counter(function):
    @wraps(function)
    def function_timer(*args, **kwargs):
        print '[Function: {name} start...]'.format(name=function.__name__)
        t0 = time.time()
        result = function(*args, **kwargs)
        t1 = time.time()
        print '[Function: {name} finished, spent time: {time:.2f}s]'.format(name=function.__name__,
                                                                                time=t1 - t0)
        return result

    return function_timer


def creat_openSphere(num):
    transform_fn = om2.MFnDagNode()
    transform_obj = transform_fn.create('transform', 'pSphere{}'.format(num + 1))

    mesh_fn = om2.MFnDagNode()
    mesh_obj = mesh_fn.create('mesh', 'pSpherShape{}'.format(num + 1), transform_obj)

    sphere_fn = om2.MFnDependencyNode()
    sphere_fn.create('polySphere')

    output_plug = sphere_fn.findPlug('output', False)
    inmesh_plug = mesh_fn.findPlug('inMesh', False)

    dg_mod = om2.MDGModifier()
    dg_mod.connect(output_plug, inmesh_plug)
    dg_mod.doIt()

    selection_list = om2.MSelectionList()
    selection_list.add('initialShadingGroup')

    set_fn = om2.MFnSet(selection_list.getDependNode(0))
    set_fn.addMember(mesh_obj)


@time_counter
def openSphere_creator(num):
    return map(creat_openSphere, range(num)) if num > 0 else None


if __name__ == '__main__':
    quantity = 10000
    openSphere_creator(quantity)

你可能感兴趣的:(maya api造球大法)