繁体   English   中英

Maya Python:通过列表运行polyReduce吗?

[英]Maya Python: Run polyReduce through a list?

新手在这里。 因此,老师要求我不使用选择代码来修复我的摇滚生成脚本。 我正在尝试通过列表运行Maya Python polyReduce命令。

import maya.cmds as MC
import random as RN

def rockGen():
    rockNumber = input()
    for i in range(rockNumber):
        rockCreation = MC.polyPlatonicSolid(name="rock", r=5)[0]
        MC.displaySmoothness( polygonObject= 0)
        obj=MC.ls(sl=True)
        MC.polySmooth(rockCreation, divisions = 2)

        face_count = MC.polyEvaluate(rockCreation, v=True) 

        # Loop through the items below with the range of a

        for i in range(20):
            # Select faces
            random_face = RN.randint(0, face_count)    
            random_face2 = RN.randint(0, face_count)   
            if random_face2 < random_face:       
                targetFace = [rockCreation +'.f[' + str(random_face2)+':' + str(random_face)+ ']']
            else:
                targetFace = [rockCreation +'.f[' + str(random_face)+':' + str(random_face2)+ ']']            

            # Reduce faces
            MC.polyReduce(p=50, kb=True, t=False, targetFace)
            MC.polyQuad(rockCreation, a=20)
        #Quad up
        MC.polySmooth(rockCreation, ch=1, ost=0, khe=0, ps=0.1, kmb=1, bnr=1, mth=0, suv=1, peh=0, ksb=1, ro=1, sdt=2, ofc=0, kt=1, ovb=1, dv=1, ofb=3, kb=1, c=1, ocr=0, dpe=1, sl=1)

所以最后一点:

# Reduce faces
MC.polyReduce(p=50, kb=True, t=False, targetFace)

targetFace在关键字arg#之后给了我非关键字arg。 您能告诉我这样做的正确方法是什么吗?

谢谢

首先,对您诉诸SO感到羞耻,您几乎已经做到了:)

Maya的命令通常可以正常工作,以便您可以将要操作的对象粘贴为第一个参数,这没有什么不同。 因此只需将targetFace在其他所有内容上: MC.polyReduce(targetFace, p=50, kb=True, t=False)

还有其他一些问题。

有时,脚本会生成具有非歧管几何形状的岩石,从而减少了抱怨并导致崩溃。 可能值得使用cmds.polyInfo(nonManifoldVertices=True)来查看是否可以运行reduce。 或者,您可以尝试运行mesh clean up命令来尝试解决它。

您还应该运行cmds.bakePartialHistory(prePostDeformers=True)来烘焙对象的历史记录,因为不需要使所有这些额外的节点都在场景中漂浮。

我还注意到,如果执行10或20次迭代,Maya会导致崩溃,因此该功能可能需要更多的错误检查。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM