def snapBaseToScalp(curves, scalp, mult=[.7, .4, .1]): import cgm.lib.distance as bbDistanceLib for obj in curves: currentPos = mc.pointPosition(obj + '.cv[0]') newPos = bbDistanceLib.returnClosestPointOnMeshInfoFromPos( currentPos, scalp)['position'] relPos = [ newPos[0] - currentPos[0], newPos[1] - currentPos[1], newPos[2] - currentPos[2] ] mc.move(newPos[0], newPos[1], newPos[2], obj + '.cv[0]', a=True) mc.move(relPos[0] * mult[0], relPos[1] * mult[0], relPos[2] * mult[0], obj + '.cv[1]', r=True) mc.move(relPos[0] * mult[1], relPos[1] * mult[1], relPos[2] * mult[1], obj + '.cv[2]', r=True) mc.move(relPos[0] * mult[2], relPos[1] * mult[2], relPos[2] * mult[2], obj + '.cv[3]', r=True)
def pushCVOutFromScalp(cvs, scalp, pushMult = 1.5): import cgm.lib.distance as bbDistanceLib sel = mc.ls(sl=True) for obj in cvs: currentPos = mc.pointPosition(obj) newPos = bbDistanceLib.returnClosestPointOnMeshInfoFromPos(currentPos, scalp)['position'] relPos = [newPos[0]-currentPos[0], newPos[1]-currentPos[1], newPos[2]-currentPos[2]] mc.move(relPos[0]*pushMult, relPos[1]*pushMult, relPos[2]*pushMult, obj, r=True) mc.select(sel)
def snapBaseToScalp(curves, scalp, mult=[.7, .4, .1]): import cgm.lib.distance as bbDistanceLib for obj in curves: currentPos = mc.pointPosition(obj+'.cv[0]') newPos = bbDistanceLib.returnClosestPointOnMeshInfoFromPos(currentPos, scalp)['position'] relPos = [newPos[0]-currentPos[0], newPos[1]-currentPos[1], newPos[2]-currentPos[2]] mc.move(newPos[0], newPos[1], newPos[2], obj+'.cv[0]', a=True) mc.move(relPos[0]*mult[0], relPos[1]*mult[0], relPos[2]*mult[0], obj+'.cv[1]', r=True) mc.move(relPos[0]*mult[1], relPos[1]*mult[1], relPos[2]*mult[1], obj+'.cv[2]', r=True) mc.move(relPos[0]*mult[2], relPos[1]*mult[2], relPos[2]*mult[2], obj+'.cv[3]', r=True)
def pushCurveOutFromScalp(curves, scalp, pushMult = 1.5): import cgm.lib.distance as bbDistanceLib sel = mc.ls(sl=True) for obj in curves: for shape in mc.listRelatives(obj,shapes=True,fullPath=True): cvList = (mc.ls([shape+'.cv[*]'],flatten=True)) for cv in cvList: currentPos = mc.pointPosition(cv) newPos = bbDistanceLib.returnClosestPointOnMeshInfoFromPos(currentPos, scalp)['position'] relPos = [newPos[0]-currentPos[0], newPos[1]-currentPos[1], newPos[2]-currentPos[2]] mc.move(relPos[0]*pushMult, relPos[1]*pushMult, relPos[2]*pushMult, cv, r=True) mc.select(sel)