Ejemplo n.º 1
0
def uiFunc_valuesTweak(self, mode='+'):
    _str_func = 'uiFunc_valuesTweak'

    if mode == 'zero':
        log.info("|{0}| >> Zeroing ".format(_str_func))
        for a in 'XYZ':
            self.__dict__['uiff_transformTweak{0}'.format(a)].setValue(0)
        for k, cb in self._d_transformCBs.iteritems():
            cb.setValue(0)
        return

    _ml_targets = uiFunc_getTargets(self)
    if not _ml_targets:
        raise ValueError, "Must have targets"

    _l_toTweak = []
    for k, cb in self._d_transformCBs.iteritems():
        if cb.getValue():
            _l_toTweak.append(k)

    _tweak = []
    for a in 'XYZ':
        _tweak.append(
            self.__dict__['uiff_transformTweak{0}'.format(a)].getValue())

    pprint.pprint([mode, _l_toTweak, _tweak])

    if mode == '+':
        _tweak_call = MATH.list_add
    else:
        _tweak_call = MATH.list_subtract

    for mObj in _ml_targets:
        for attr in _l_toTweak:
            if attr in [
                    'translate', 'rotate', 'scale', 'jointOrient', 'rotateAxis'
            ]:
                _v = ATTR.get(mObj.mNode, attr)
                log.info("|{0}| >> pre tweak: [{1}] ".format(_str_func, _v))
                _v = _tweak_call(_v, _tweak)
                log.info("|{0}| >> post tweak: [{1}] ".format(_str_func, _v))
                ATTR.set(mObj.mNode, attr, _v)

            elif attr == 'position':
                _v = TRANS.position_get(mObj.mNode)
                log.info("|{0}| >> pre tweak: [{1}] ".format(_str_func, _v))
                _v = _tweak_call(_v, _tweak)
                log.info("|{0}| >> post tweak: [{1}] ".format(_str_func, _v))
                TRANS.position_set(mObj.mNode, _v)
            elif attr == 'orient':
                _v = TRANS.orient_get(mObj.mNode)
                log.info("|{0}| >> pre tweak: [{1}] ".format(_str_func, _v))
                _v = _tweak_call(_v, _tweak)
                log.info("|{0}| >> post tweak: [{1}] ".format(_str_func, _v))
                TRANS.orient_set(mObj.mNode, _v)
            else:
                log.warning("|{0}| >> Haven't setup for {1}...".format(
                    _str_func, _s))

    pass
Ejemplo n.º 2
0
         log.info("|{0}| >> Trying Object: {1} | [{2}]... ".format(_str_func,mObj.mNode,_s)) 
         pos = TRANS.position_get(mObj.mNode)
         log.info("|{0}| >> pre pos: [{1}] ".format(_str_func,pos)) 
         
         for k,v in _d_fieldValues.iteritems():
             pos['XYZ'.index(k)] = v
         log.info("|{0}| >> pos pos: [{1}] ".format(_str_func,pos))   
         try:
             TRANS.position_set(mObj.mNode, pos)     
         except Exception,err:
             log.error("|{0}| >> Failed to get set data. Object: {0} | section: {2}...".format(_str_func,mObj.mNode,_s))                
             log.error(err) 
 elif _s == 'orient':
     for mObj in _ml_targets:
         log.info("|{0}| >> Trying Object: {1} | [{2}]... ".format(_str_func,mObj.mNode,_s)) 
         val = TRANS.orient_get(mObj.mNode)
         log.info("|{0}| >> pre val: [{1}] ".format(_str_func,val)) 
     
         for k,v in _d_fieldValues.iteritems():
             val['XYZ'.index(k)] = v
         log.info("|{0}| >> post val: [{1}] ".format(_str_func,val))   
         try:
             TRANS.orient_set(mObj.mNode, val)     
         except Exception,err:
             log.error("|{0}| >> Failed to get set data. Object: {0} | section: {2}...".format(_str_func,mObj.mNode,_s))                
             log.error(err)         
 elif _s == 'scaleLossy':
     log.warning("|{0}| >> NOTE - Scale lossy is pushed to local scale on targets ".format(_str_func,mObj.mNode,_s))                     
     for mObj in _ml_targets:
         log.info("|{0}| >> Trying Object: {1} | [{2}]... ".format(_str_func,mObj.mNode,_s))
         scale = TRANS.scaleLossy_get(mObj.mNode)
Ejemplo n.º 3
0
def create_at(obj=None,
              create='null',
              midPoint=False,
              l_pos=[],
              baseName='created'):
    """
    Create a null matching a given obj
    
    :parameters:
        obj(str): Object to modify
        create(str): What to create

    :returns
        name(str)
    """
    _str_func = 'create_at'

    obj = VALID.mNodeString(obj)
    _create = create

    log.debug("|{0}| >> obj:{1}".format(_str_func, obj))
    log.debug("|{0}| >> create:{1}".format(_str_func, _create))

    if midPoint:
        _d = TRANS.POS.get_midPointDict(obj)
        objTrans = _d['position']
        objRot = _d['rotation']
        objRotAxis = None

    elif _create in ['null', 'joint']:
        objTrans = TRANS.position_get(
            obj)  #mc.xform (obj, q=True, ws=True, rp=True)
        objRot = TRANS.orient_get(
            obj)  #mc.xform (obj, q=True, ws=True, ro=True)
        objRotAxis = mc.xform(obj, q=True, ws=True, ra=True)

    if _create == 'null':
        _created = mc.group(w=True, empty=True)
        if not midPoint:
            mc.xform(_created, roo=mc.xform(obj, q=True,
                                            roo=True))  #...match rotateOrder

        mc.move(objTrans[0], objTrans[1], objTrans[2], [_created])
        mc.xform(_created, ws=True, ro=objRot, p=False)
        if objRotAxis:
            mc.xform(_created, ws=True, ra=objRotAxis, p=False)

    elif _create == 'joint':
        mc.select(cl=True)
        _created = mc.joint()
        if not midPoint:
            mc.xform(_created, roo=mc.xform(obj, q=True,
                                            roo=True))  #...match rotateOrder
        mc.move(objTrans[0], objTrans[1], objTrans[2], [_created])
        mc.xform(_created, ws=True, ro=objRot, p=False)
        if objRotAxis:
            mc.xform(_created, ws=True, ra=objRotAxis, p=False)

    elif _create in ['curve', 'curveLinear', 'linearTrack', 'cubicTrack']:
        if not l_pos:
            l_pos = []
            #_sel = mc.ls(sl=True,flatten=True)
            for i, o in enumerate(obj):
                p = TRANS.position_get(o)
                log.debug("|{0}| >> {3}: {1} | pos: {2}".format(
                    _str_func, o, p, i))
                l_pos.append(p)

        if len(l_pos) <= 1:
            raise ValueError, "Must have more than one position to create curve"
        if _create in ['linearTrack', 'cubicTrack']:
            _d = 1
            if _create == 'cubicTrack':
                _d = 3
            _trackCurve = mc.curve(d=1, p=l_pos)
            _trackCurve = mc.rename(_trackCurve,
                                    "{0}_trackCurve".format(baseName))

            l_clusters = []
            #_l_clusterParents = [mStartHandle,mEndHandle]
            for i, cv in enumerate(
                    mc.ls(['{0}.cv[*]'.format(_trackCurve)], flatten=True)):
                _res = mc.cluster(cv, n='{0}_{1}_cluster'.format(baseName, i))
                TRANS.parent_set(_res[1], obj[i])
                ATTR.set(_res[1], 'visibility', 0)
                l_clusters.append(_res)
                ATTR.set(_res[1], 'visibility', False)

            return _trackCurve, l_clusters

        elif _create == 'curve':
            knot_len = len(l_pos) + 3 - 1
            _created = mc.curve(d=3,
                                ep=l_pos,
                                k=[i for i in range(0, knot_len)],
                                os=True)
        else:
            _created = mc.curve(d=1,
                                ep=l_pos,
                                k=[i for i in range(0, len(l_pos))],
                                os=True)

        log.debug("|{0}| >> created: {1}".format(_str_func, _created))

    elif _create == 'locator':
        raise NotImplementedError, "locators not done yet"
    else:
        raise NotImplementedError, "|{0}| >> unknown mode: {1}".format(
            _str_func, _create)

    mc.select(_created)
    return _created
Ejemplo n.º 4
0
def create_localAxisProxyBAK(obj=None):
    """
    Make a local axis box around a given object so that you can then 
    
    """
    try:
        _str_func = 'create_localAxisProxy'
        _dag = VALID.getTransform(obj)
        if not _dag:
            raise ValueError, "Must have a dag node"
        l_shapes = TRANS.shapes_get(_dag)

        _dup = mc.duplicate(l_shapes, po=False, rc=True)[0]
        #_dup = TRANS.parent_set(_dup,False)

        #Get some values...
        t = ATTR.get(_dup, 'translate')
        r = ATTR.get(_dup, 'rotate')
        s = ATTR.get(_dup, 'scale')
        o = TRANS.orient_get(_dup)
        shear = ATTR.get(_dup, 'shear')
        _scaleLossy = TRANS.scaleLossy_get(_dag)

        #Reset our stuff before we make our bb...
        TRANS.orient_set(_dup, (0, 0, 0))
        ATTR.set(_dup, 'scale', [1, 1, 1])
        _size = POS.get_bb_size(_dup, True)
        import cgm.core.lib.math_utils as COREMATH
        reload(COREMATH)
        #_proxy = create_proxyGeo('cube',COREMATH.list_div(_scaleLossy,_size))
        _proxy = create_proxyGeo('cube', _size)
        mc.makeIdentity(_proxy, apply=True, scale=True)
        return
        #mc.xform(_proxy, scale = _size, worldSpace = True, absolute = True)

        #Parent it to the dup...
        _proxy = TRANS.parent_set(_proxy, _dup)
        ATTR.reset(_proxy, ['t', 'r', 'shear'])

        #_dup = TRANS.parent_set(_dup, TRANS.parents_get(_dag))
        SNAP.go(_dup, _dag)
        ATTR.set(_dup, 'shear', shear)
        #TRANS.scaleLocal_set(_dup, s)

        #mc.delete(_dup)
        #_scaleLossy = TRANS.scaleLossy_get(_dag)
        #import cgm.core.lib.math_utils as COREMATH
        #TRANS.scaleLocal_set(_dup, COREMATH.list_mult([-1.0,-1.0,-1.0],_scaleLossy,))
        #proxy = TRANS.parent_set(_proxy, False)
        cgmGEN.func_snapShot(vars())

        #ATTR.set(_dup,'translate',t)
        #ATTR.set(_dup,'rotate',r)
        #SNAP.go(_proxy[0],_dag)
        #ATTR.set(_proxy[0],'scale',_scaleLossy)

        #TRANS.scaleLocal_set(_dup,[1,1,1])
        #ATTR.set(_dup,'shear',[0,0,0])

        #_proxy = TRANS.parent_set(_proxy, False)
        #TRANS.scaleLocal_set(_proxy,_scaleLossy)
        #ATTR.set(_dup,'scale',s)

        return mc.rename(_proxy,
                         "{0}_localAxisProxy".format(NAMES.get_base(_dag)))
    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err, msg=vars())
Ejemplo n.º 5
0
def create_axisProxy(obj=None):
    """
    Make a local axis box around a given object so that you can then 
    
    """
    try:
        _str_func = 'create_axisProxy'
        _dag = VALID.getTransform(obj)
        if not _dag:
            raise ValueError, "Must have a dag node. Obj: {0}".format(obj)
        if VALID.is_shape(obj):
            l_shapes = [obj]
        else:
            l_shapes = TRANS.shapes_get(_dag, True)

        _parent = TRANS.parent_get(_dag)
        _dup = mc.duplicate(l_shapes, po=False, rc=True)[0]
        #TRANS.pivots_recenter(_dup)
        _dup = TRANS.parent_set(_dup, False)
        ATTR.set_standardFlags(_dup, lock=False, keyable=True)
        #Get some values...
        l_reset = ['t', 'r', 's', 'shear', 'rotateAxis']
        t = ATTR.get(_dup, 'translate')
        r = ATTR.get(_dup, 'rotate')
        s = ATTR.get(_dup, 'scale')
        ra = ATTR.get(_dup, 'rotateAxis')
        if ATTR.has_attr(_dup, 'jointOrient'):
            l_reset.append('jointOrient')
            jo = ATTR.get(_dup, 'jointOrient')
        o = TRANS.orient_get(_dup)
        shear = ATTR.get(_dup, 'shear')
        _scaleLossy = TRANS.scaleLossy_get(_dag)

        #Reset our stuff before we make our bb...
        ATTR.reset(_dup, l_reset)
        _size = POS.get_bb_size(_dup, True)

        #_proxy = create_proxyGeo('cube',COREMATH.list_div(_scaleLossy,_size))
        _proxy = create_proxyGeo('cube', _size)
        mc.makeIdentity(_proxy, apply=True, scale=True)

        #Now Put it back
        _dup = TRANS.parent_set(_dup, TRANS.parent_get(_dag))
        _proxy = TRANS.parent_set(_proxy, _dup)

        #_dup = TRANS.parent_set(_dup, TRANS.parents_get(_dag))
        SNAP.go(_dup, _dag)
        #ATTR.set(_dup,'s',(0,0,0))
        ATTR.reset(_dup, ['s', 'shear'])

        ATTR.reset(_proxy, ['t', 'r', 's', 'shear', 'rotateAxis'])
        _proxy = TRANS.parent_set(_proxy, _dag)
        ATTR.reset(_proxy, ['t', 'r', 's', 'shear', 'rotateAxis'])
        #match_transform(_proxy,_dag)

        #SNAP.go(_proxy,_dag,pivot='bb')

        #cgmGEN.func_snapShot(vars())

        _proxy = TRANS.parent_set(_proxy, False)
        mc.delete(_dup)
        #match_transform(_proxy,_dag)
        return mc.rename(_proxy,
                         "{0}_localAxisProxy".format(NAMES.get_base(_dag)))
    except Exception, err:
        cgmGEN.cgmExceptCB(Exception, err, msg=vars())
from cgm.core.lib import transform_utils as TRANS
from cgm.core.lib import position_utils as POS

reload(TRANS)

reload(POS)


_root = 'node'
_euclid = False
#...gets...
TRANS.translate_get(_root,_euclid)
TRANS.position_get(_root,asEuclid = _euclid)
TRANS.rotate_get(_root,_euclid)
TRANS.eulerAngles_get(_root)
TRANS.orient_get(_root,_euclid)
TRANS.orient_get(_root,_euclid)
TRANS.orientObject_get(_root,_euclid)
TRANS.rotateAxis_get(_root,_euclid)
TRANS.worldMatrix_get(_root,_euclid)
TRANS.scaleLocal_get(_root,_euclid)
TRANS.scaleLossy_get(_root,_euclid)

#...sets...
_pos = [0,1,1]
_rot = [10,66,80]
_scale = [1,2,1]
_rot = TRANS.rotate_get('NotBatman_master_block1',True)
TRANS.translate_set(_root,_pos)
TRANS.position_set(_root,_pos)
TRANS.rotate_set(_root,_rot)