We're locked to maya2011, API2.0 is a 2012 thing right?

On Monday, August 6, 2012, Marco D'Ambros wrote:

> the first question is:
>
> did you use the api 2.0 or the "normal one"?
> the new api suppose to be faster ( almost 3 times more ).
> --------------------------------
> Marco D'Ambros
> phone : (+61) (0) 435809628
> web    : www.marcodambros.com
> mail    : [email protected] <javascript:_e({}, 'cvml',
> '[email protected]');>
>
>
>
> On Mon, Aug 6, 2012 at 11:00 AM, Justin Israel <[email protected]>wrote:
>
> Ah, I figured it out. The 'add' method using a wildcard on a
> MSelectionList is super slow. If you use MGlobal to fill the list for you,
> it apparently does it more efficiently:
>
>
> start = time.time()
>
> search = "nurbsSphereShape*"
> sel = om.MSelectionList()
> om.MGlobal.getSelectionListByName(search, sel)
> iter = om.MItSelectionList(sel)
> depFn = om.MFnDependencyNode()
> mObj = om.MObject()
>
> while not iter.isDone():
>     iter.getDependNode( mObj )
>      depFn.setObject(mObj)
>     depFn.findPlug("castsShadows").setBool(True)
>     iter.next()
>
> end = time.time()-start
> print ('api = %s' % end)
> # api = 0.212560892105
>
>
>
> On Aug 5, 2012, at 5:36 PM, Justin Israel wrote:
>
> This is an interesting approach:
>
> start = time.time()
>
> cmds.select('nurbsSphereShape*')
> size = len(cmds.ls(sl=True))
> cmds.setAttr(".castsShadows", *(1 for _ in xrange(size)))
>
> end = time.time()-start
> print end
> # 0.243406057358
>
> ... Though an extra slow down happens if you have to deselect.
>
>
>  On Aug 5, 2012, at 5:17 PM, Matt Estela wrote:
>
> (cc my reply to the group)
>
>
>
> On Mon, Aug 6, 2012 at 9:16 AM, Matt Estela <[email protected]> wrote:
>
> Yeah, again it was a contrived example, in production lighters will
> definitely be using whatever bizarro wildcards they can muster.
>
> As you say it appears to be a core limitation of wildcards, will have to
> rethink how we let lighters define object selections. In this case maybe we
> just can't let lighters use wildcards, instead they'll have to pre-define
> it using sets. Or possibly pre-filtering to specific object types, and
> running list comprehensions on that.
>
> Hmm, houdini's smart bundles would come in handy here... (dynamic sets
> based on wildcards, they run surprisingly fast)
>
> Thanks again for the help Justin, you saved me several days worth of
> research. :)
>
>
>
>
> On Mon, Aug 6, 2012 at 5:15 AM, Justin Israel <[email protected]>wrote:
>
> Ya, in some cases you can't beat the python commands module if you are
> only doing a single command. Most of the work is happening behind the
> scenes in C++. The wildcard searches just appear to be beasty no matter
> what.
>
> But considering you didn't need a wildcard pattern, and instead just want
> to say "Apply to all nurbsSurface objects under this root:
>
> #
> # cmds
> #
> start = time.time()
> sel =cmds.listRelatives('|set', ad=True, type="nurbsSurface")
> for each in sel:
>     cmds.setAttr("{0}.castsShadows".format(each), 1)
> end = time.time()-start
> print ('cmds = %s' % end)
> # ** cmds = 0.290652990341 **
>
> #
> # api
> #
> start = time.time()
>
> sel = om.MSelectionList()
> dagFn = om.MFnDagNode()
> mObj = om.MObject()
> dagIt = om.MItDag()
>
> sel.add("|set")
> sel.getDependNode(0, mObj)
> dagIt.traverseUnderWorld(True)
> dagIt.reset(mObj, dagIt.kDepthFirst, om.MFn.kNurbsSurface)
>
> while not dagIt.isDone():
>     curr = dagIt.currentItem()
>     dagFn.setObject(curr)
>     dagFn.findPlug("castsShadows").setBool(False)
>     dagIt.next()
>
>  --
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings:
> http://groups.google.com/group/python_inside_maya/subscribe
>

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to