为了账号安全,请及时绑定邮箱和手机立即绑定

Maya Python:“选择 y = 0 以下的所有顶点”

Maya Python:“选择 y = 0 以下的所有顶点”

largeQ 2021-06-21 13:08:43
使用 maya.cmds,我想选择 y = 0 以下的所有顶点,以便我可以删除它们。我将如何实现这一点?此外,我正在处理大量 .obj 网格,因此我需要遍历每个网格并执行相同的操作。要遍历每个文件,我应该使用什么技术?import maya.cmds as cmdsimport maya.api.OpenMaya as om2# Select all objectsselection = cmds.select(all = True)# Rotate -90 degrees on the x axis# cmds.rotate(-90)def vertexOm2():    """    Using Maya Python API 2.0    """    #___________Selection___________    # 1 # Query the selection list    selectionLs = om2.MGlobal.getActiveSelectionList()        # 2 # Get the dag path of the first item in the selection list    selObj = selectionLs.getDagPath(0)        #___________Query vertex position ___________    # create a Mesh functionset from our dag object    mfnObject = om2.MFnMesh(selObj)        return mfnObject.getPoints()    vertexOm2()这将返回“类型错误:项目不是 DAG 路径”或者使用 cmds:def vertexCmds(): """ Using Maya Cmds """ #___________Selection___________ # query the currently selected object selTemp = str(cmds.ls(selection=True)) # edit retrieved string so we can feed it into commands sel = selTemp.split("'")[1]   #___________Query vertex position ___________ # use the xform command with the ".vtx[*]" to retrieve all vertex positions at once vertPosTemp = cmds.xform(sel + '.vtx[*]', q=True, ws=True, t=True)  # split the resulting list into sets of 3 vertPos = zip(*[iter(vertPosTemp)]*3)  return vertPos我从这里得到了这两个。
查看完整描述

2 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

我会得出一个低于 y == 0 的网格列表,这样我就可以对它们打折扣。您可以通过查询每个网格的边界框来解决这个问题。1 索引表示最小 y 值:

pm.exactWorldBoundingBox(node)[1]

然后处理它们,我可以列出每个网格中的所有顶点以构建删除列表。

def get_vertex_positions(node):
    return [pm.xform(node.vtx[vid], q=True, ws=True, translation=True) for vid in range(pm.polyEvaluate(node, v=True))]

一旦有了这些,您就可以删除相应的顶点。


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号