maya检查模型重合点脚本

在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/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sort_1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值