def relaxVerts(cls, verts, mesh, progBar='', *args, **kwargs): ''' ''' if verts: pm.polyAverageVertex(verts, i=1) cls.shrinkWrap(verts, mesh, progBar) else: pm.warning('No verts selected')
def relax(): # check the selection selection = pm.ls(sl=1) if not selection: return # convert the selection to vertices verts = pm.ls(pm.polyListComponentConversion(tv=1)) if not verts: return shape = verts[0].node() # duplicate the geometry dup = shape.duplicate()[0] dup_shape = dup.getShape() # now relax the selected vertices of the original shape pm.polyAverageVertex(verts, i=1, ch=0) # now transfer point positions using transferAttributes ta_node = pm.transferAttributes( dup, verts, transferPositions=True, transferNormals=False, transferUVs=False, transferColors=False, sampleSpace=0, searchMethod=0, flipUVs=False, colorBorders=1, ) # delete history pm.delete(shape, ch=1) # delete the duplicate surface pm.delete(dup) # reselect selection pm.select(selection)