[英]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.