You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maya Python问题:遍历选择列表创建定位器时位置异常

问题原因

你的代码核心问题是循环中查询位置时传入了整个选择列表selection,而非当前迭代的单个项each:

  • 选择多个对象(如球体)时,mc.xform(selection, ...)会返回所有对象的位置值(格式为[x1,y1,z1,x2,y2,z2,...]),但你只取了前三个值,若第一个对象在原点,所有定位器都会被放到原点;
  • 选择多个顶点时,同样只会获取第一个顶点的位置,导致所有定位器重复放在该位置。
修正后的代码
import maya.cmds as mc
selection = mc.ls(sl=True, long=True)  # 使用long=True避免重名对象问题

for each in selection:
    newLoc = mc.spaceLocator()
    # 针对当前迭代的项查询世界空间位置
    mySelPosition = mc.xform(each, q=True, ws=True, t=True)
    mc.move(mySelPosition[0], mySelPosition[1], mySelPosition[2], newLoc, ws=True)
额外优化说明
  • 添加long=True到mc.ls中:避免场景中存在重名对象时,Maya无法准确定位目标项;
  • 给mc.move添加ws=True:明确指定在世界空间中移动定位器,避免因当前空间设置导致位置偏差。

内容的提问来源于stack exchange,提问作者Nico Corrao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:36:23