在Maya的模型制作过程当中,会出现一些点的重合带来不必要的麻烦,下面将用maya command和python实现检查模型中的重合点并删除。

整体思路:

检查是否存在重合点:我们可以获取模型中点的坐标并将其存入列表中,用count方法判断坐标出现的次数,若返回值大于1则有重点。

 def check(self):
    self.dict = {}
    self.mynewvertex = []
    self.lastvertex = []
    self.mylistvertex = mc.ls(selection=True, fl=True)
    #print (self.mylistvertex)
    for item in self.mylistvertex:
        verlocation = mc.xform(item, q=True, ws=True, t=True)
        self.dict[item] = verlocation
        self.mynewvertex.append(verlocation)
    for item in self.mynewvertex:
        a = self.mynewvertex.count(item)
        if a >= 2:
            self.lastvertex.append(item)
    #pprint.pprint(self.lastvertex)
    if len(self.lastvertex)>0:
        print 'have coincident point'
    else:
        print 'not have coincident point'

选中重合点:我们先将模型中的点全部选中并返回点的名称列表,然后将列表遍历,并将点的名称和坐标存入到字典中,通过获取重合点的坐标而确定点的名称,从而选中点。

其中因为我们用count方法来判断是否将点选全,所以我们每选中一个点就要将该点的信息删除

    def select(self):
        mc.select(clear=True)
        value_dict = []
        key_dict = []
        for item in self.dict.values():
            value_dict.append(item)
        # pprint.pprint (value_dict)

        for item in self.dict.keys():
            key_dict.append(item)
        # print key_dict

        for item in self.lastvertex:
            print'yes'
            if item in value_dict:
                print'if'
                while value_dict.count(item) > 1:
                    get_value_index = value_dict.index(item)
                    name = key_dict[get_value_index]
                    print name
                    mc.select(name, add=True)
                    value_dict.pop(get_value_index)
                    key_dict.pop(get_value_index)

        print (mc.ls(selection=True))

删除重合点:我们可以将多余的点选中之后deiete删除,这样并不会删掉构造模型的点,只会删除多余的点。

    def fix(self):
        mc.Delete(mc.ls(sl=True))
        print('Deleting completed')

注意:在将点的名称和坐标存入字典时要注意,为了简便要将坐标存为键、名称存为值。因为通过键获取值只需用get方法即可,而通过键获取值则相对麻烦。

maya帮助文档:Maya Help | Autodeskhttps://help.autodesk.com/view/MAYAUL/2019/ENU/

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐