Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## this part is for repairing meshes detached from it original transform into a forsterparent ##
- #list out all the meshes with foster parent naming scheme
- orphaned_meshes = cmds.ls('*fosterParent*',type='mesh')
- mesh_handles_to_delete = [] # this is to record the foster parent handles so we can delete later
- for o in orphaned_meshes: #with a list of bad meshed to repair we loop through them and perform fix below
- print 'performing fix on:',o
- mesh_handle = cmds.listRelatives(o,p=1)[0]
- orphan_refNode = cmds.listConnections(mesh_handle)[0]
- for r in cmds.file(q=1,r=1):
- if cmds.referenceQuery(r,referenceNode=1) == orphan_refNode:
- belonged_ns = cmds.referenceQuery(r,ns=1)[1:]
- if not cmds.referenceQuery(r,il=1):
- cmds.file(r,lr=1)
- original_mesh_name = o.replace(mesh_handle+'_','').replace('ShapeDeformedDeformed','')
- renamed_orphan = cmds.rename(o,belonged_ns+':'+original_mesh_name+'ShapeDeformedDeformed')
- cmds.parent(renamed_orphan,belonged_ns+':'+original_mesh_name,shape=1)
- new_orphan_handle = cmds.listRelatives(renamed_orphan,p=1)
- cmds.rename(new_orphan_handle,belonged_ns+':'+original_mesh_name+'_reattached')
- mesh_handles_to_delete.append(mesh_handle)
- print 'mesh_handle',mesh_handle
- print 'orphan_refNode',orphan_refNode
- print 'original_mesh_name',original_mesh_name
- print 'renamed_orphan',renamed_orphan
- print 'renamed_orphan',renamed_orphan
- ## deal with missing ids:
- rigged_deform_node = belonged_ns+':'+original_mesh_name+'ShapeDeformed'
- mesh_node_obj_id = cmds.getAttr(rigged_deform_node+'.objectID')
- mesh_node_ass_id = cmds.getAttr(rigged_deform_node+'.assetID')
- if 'objectID' not in cmds.listAttr(renamed_orphan):
- cmds.addAttr(renamed_orphan,longName='objectID',k=1,at='long')
- cmds.setAttr(renamed_orphan+'.objectID',mesh_node_obj_id)
- if 'assetID' not in cmds.listAttr(renamed_orphan):
- cmds.addAttr(renamed_orphan,longName='assetID',k=1,at='long')
- cmds.setAttr(renamed_orphan+'.assetID',mesh_node_ass_id)
- print 'rigged_deform_node',rigged_deform_node
- print 'mesh_node_obj_id',mesh_node_obj_id
- print 'mesh_node_ass_id',mesh_node_ass_id
- print
- cmds.delete(list(set(mesh_handles_to_delete)))
- ####
- ####
- #### the below part is for fixing all the deform deform nodes in the scene without asset and object id
- geo_transforms = cmds.listRelatives('*:Geo_Grp',ad=1,type='transform')
- for g_transform in geo_transforms:
- if g_transform.endswith('_Geo'):
- is_deformed = False
- for c in cmds.listRelatives(g_transform,c=1):
- if 'DeformedDeformed' in c:
- is_deformed = True
- deformed_deformed = c
- supposed_ns = g_transform.split(':')[0]
- if supposed_ns not in deformed_deformed and not cmds.objExists(deformed_deformed):
- cmds.rename(deformed_deformed,supposed_ns+':'+deformed_deformed)
- nsed_deformed_deformed = deformed_deformed
- elif 'DeformedDeformed' not in c and 'Deformed' in c:
- rigged_deform_node = c
- if is_deformed:
- print g_transform
- ## deal with missing ids:
- rigged_deform_node = belonged_ns+':'+original_mesh_name+'ShapeDeformed'
- mesh_node_obj_id = cmds.getAttr(rigged_deform_node+'.objectID')
- mesh_node_ass_id = cmds.getAttr(rigged_deform_node+'.assetID')
- if 'objectID' not in cmds.listAttr(nsed_deformed_deformed):
- cmds.addAttr(nsed_deformed_deformed,longName='objectID',k=1,at='long')
- cmds.setAttr(nsed_deformed_deformed+'.objectID',mesh_node_obj_id)
- if 'assetID' not in cmds.listAttr(nsed_deformed_deformed):
- cmds.addAttr(nsed_deformed_deformed,longName='assetID',k=1,at='long')
- cmds.setAttr(nsed_deformed_deformed+'.assetID',mesh_node_ass_id)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement