Maya 的 duplicate face 工能雖然不錯用,但複製完模型面之後原本的模型不管是名稱或是 history 都會受影響。名稱會變成 polySurface* ,node history 也同樣會加上polyChipOff,polySeparate 這種 node, 對有rigging 過或 reference 進來的模型都是一種困擾。因此,我前陣子寫下了以下這個小程 (python) 式可以避免這種副作用,複製後遠本那個模型不會受任何影響 !
import pymel.core as pm
import re
def getComponentId(component):
"""get id number from a component (i.e. pCube.vtx[12]) , and return as int (i.e. 12 ) ."""
tokens = re.split('[\[\]]',str(component))
try:
return int(tokens[1])
except (ValueError,IndexError):
return -1
faces = pm.filterExpand(ex=True,sm=34)
meshNode = pm.ls(faces,o=1)[0]
dupNode = pm.duplicate(meshNode)[0]
idList = [getComponentId(fc) for fc in faces]
pm.select("%s.f[*]"%str(dupNode),r=1)
preStr = str(dupNode)+".f[%d]"
pm.select([preStr%eachId for eachId in idList],d=1)
pm.delete()
問一下 這要如何用><"
回覆刪除