问题标签 [maya-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
257 浏览

maya - Pymel OpenMaya 依赖?

我在哪里可以获得 pymel 的 Open 依赖项?我在文档中没有看到任何说明这一点的地方

[ImportError:没有名为 OpenMaya 的模块]

0 投票
1 回答
659 浏览

python - 使用 Maya 2016 SP6 Python 2.0 API 处理斜坡节点的正确方法是什么?

我是使用 Python 2.0 API 编程的新手(已经使用了 Python Maya.cmds)。据我了解,我应该能够使用相应的斜坡节点函数集来操作通过 MObject 引用的斜坡节点。不幸的是,我还没有找到任何关于如何正确执行此操作的示例,甚至没有找到关于调用函数集的任何真正清晰的信息。在 API 文档中,有一个“MRampAttribute”类,描述中说它实际上是“用于创建和使用渐变属性的函数集”。不幸的是,我没有任何运气让它工作......

我确实在这里找到了另一条可能相关的信息,它是斜坡节点的兼容函数集的简短列表,包括以下内容:kBase、kNamedObject、kDependencyNode、kTexture2d 和 kRamp。不幸的是,除了它们出现在 MFn 类下的常量列表中之外,我还没有真正找到关于这些函数集的文档。

理想情况下,最好有一个非常简单的示例来显示以下内容:

  1. 将场景中已经存在的渐变节点(渐变纹理节点?)正确存储在 MObject 中
  2. 创建适当斜坡节点函数集的实例,并将其设置为作用于斜坡节点参考
  3. 使用函数集做一些简单的事情,比如更改或添加颜色条目

我想最后要注意的一件事是我正在尝试使用颜色渐变(渐变渐变),而不是曲线(?)渐变,因为它们似乎密切相关。

谢谢!

更新:看起来越来越像问题可能是 Python 2.0 API 非常不完整,特别是因为这个没有扩展的直接 Maya 2016 SP6。正在调查其他一些问题,似乎 MItDag 之类的基本内容已添加到扩展 2 中,并且在基本版本中不可用...

TL;DR - 我似乎找不到应该使用 Python 2.0 API 在 Maya 2016 SP6 中的斜坡节点上运行的函数集。一个简单的工作示例代码片段将不胜感激作为一个开始的地方。

0 投票
1 回答
358 浏览

python - 尝试从传递给自定义节点中的辅助函数的 MDataHandle 获取数据时出现空指针错误(Maya 2016 SP6,Python API)

我遇到一个问题,当从辅助函数中调用时,由 MDataHandle.data() 返回的 MObject 是空指针。

我有一个带有几个通用属性(支持 kDouble、k3Double 和 k3Float)的自定义节点,需要根据它们是简单的数字数据还是数组数据来进行不同的处理。我在自定义节点类中创建了一个定义为 @classmethod 的辅助函数,用于根据需要从通用属性中提取数据。将适当属性的 MDataHandle 传递给函数(传递 MDataBlock 会更好吗?),并使用 isGeneric() 检查属性。如果发现它是非数字的(在本例中为数组),则调用 MDataHandle.data() 函数以获取 MObject 以附加到 MFnNumericData 对象,这就是问题出现的地方。

当我尝试通过从 MDataHandle.data() 传递 MObject 来创建函数集时,我得到一个空指针错误......

我想知道是否存在某种范围问题,因为文档中提到 MDataBlock 仅在节点的计算功能期间有效,但我认为在计算功能中运行的辅助函数是可以的。

任何帮助将非常感激。谢谢!

更新:看起来我的问题可能是通用属性尚未初始化为默认值,因此,该属性的数据句柄是一个空指针。如果是这样,为通用属性设置默认值的最佳方法是什么?

0 投票
0 回答
125 浏览

python - Maya 自定义依赖节点计算函数调试语句以相反顺序打印(Maya 2016 SP6,Python API)

我有一个奇怪的问题,我的节点的计算功能以相反的顺序打印出调试信息。

我正在尝试制作一个自定义同步节点,它允许我同步两个输入节点的属性而不锁定这些属性。我的节点有四个通用输入属性,它们将两个属性的原始输入同步,以及每个属性的转换版本,以允许同步不同类型的属性(rawInputA、rawInputB、convertedInputA、convertedInputB)。该节点有两个输出,受每个相应输入的影响:

outputA 受:rawInputA、convertedInputA 影响 outputB 受:rawInputB、convertedInputB

输出连接到虚拟定位器,因为它们实际上仅用于触发节点的计算功能,然后设置输入节点本身的正确属性值(这样做是为了避免循环依赖和属性被锁定)。

如果改变了 inputA 属性,这会导致同步节点计算并设置另一个 inputB 节点的属性值,这会导致同步节点再次计算(尽管这次它不会设置任何值,因为它们已经正确)。我在开始和结束以及中间添加了调试打印语句到计算函数。在第一次计算调用时,它们以正确的顺序打印,但在第二次调用时,它们以相反的顺序打印,这真的很奇怪......

我认为可能相关的一个可能问题是,在同步节点计算之后,rawInput 属性插件之一是脏的(不是每次,它似乎与哪个输入属性 A 或 B 是有关改变)。

我应该注意到属性已正确更新,因此节点似乎可以按预期工作,但我正在尝试通过更新视口预览和同步属性的属性编辑器来解决其他一些错误,这就是我遇到的方式奇怪的问题。

更新 - 这是连接渐变节点颜色条目的位置和一块几何图形的节点设置示例。

测试节点设置

通过在属性编辑器中设置值来更改颜色输入位置会在脚本编辑器中产生以下输出:

TL;DR - 是否有任何东西会导致依赖节点的计算函数中的调试语句在脚本编辑器输出中以相反的顺序打印?

0 投票
1 回答
283 浏览

python - 有没有办法以编程方式将几何对象表示为 Maya 中的值?

我正在尝试以编程方式通过它们的顶点对 Maya 项目中的相似对象(具有变换的模型)进行分组,并想知道是否有一个值可以计算来检查相似对象?我正在使用的模型是来自 3D 房屋的家具。 示例家具

我想将茶杯归为一个组。它们的名称在层次结构中完全不同,所以我认为通过一些几何相似性对它们进行分组(创建字典)会有所帮助。

0 投票
0 回答
58 浏览

import - Can someone explain why Maya is renaming my models on import?

I am working with a large 3D modeled house dataset. Some of the prefabs in the house are conjoined for example all doors in house are a single prefab. When importing to Maya the prefabs are being broken up and renamed. I just need to keep the names the same or indexed. Help?

0 投票
0 回答
635 浏览

python - 在 mac 上运行 mayapy

我正在尝试使用 maya 的 python 解释器运行 python 脚本。我正在编写此脚本以放置在管道中,以便 Maya 以批处理模式运行。当我运行这个命令时什么都没有发生:

运行此命令后,我收到以下消息:
链接在这里

我还尝试将 python 解释器直接与测试文件一起使用

/Applications/Autodesk/maya2017/Maya.app/Contents/bin/mayapy test.py

test.py 看起来像这样

我收到此错误ImportError: No module named cmds

我看过这篇文章,但它对我没有帮助。我究竟做错了什么?

0 投票
0 回答
226 浏览

python - 在自定义节点的计算函数中使用 maya.cmds(Maya 2016 SP6,Python API)

我有一个自定义节点,它在其计算函数中使用 cmds.setAttr() 来更新连接到它的两个节点的属性(节点的目的是同步两个属性而不锁定它们)。该节点按预期工作,同步单个渐变节点颜色输入位置和 pCube 的平移之间的值(渐变位置是单个双精度,转换为三个双精度以进行平移,反之亦然)。

渐变节点映射到视口中的平面。当我在属性编辑器中更改渐变颜色条目的位置时,视口着色按预期更新,并且 pCube 移动到适当的位置。但是,当我移动立方体时,渐变位置和缩略图预览会在 AE 中正确更新,但平面上的视口着色不会更新。

我知道发生这种情况是因为当使用命令设置颜色条目的位置时,渐变的 outColor 不会改变,所以我假设我应该能够将 outColor 插头设置为脏或设置渐变入口位置插头脏,因为 outColor 应该依赖于它。问题是,当我尝试使用 maya.dgdirty() 命令从计算函数中执行此操作时,视口仍然没有更新(而且据我所知,该属性没有重新评估)。

奇怪的是,当我在脚本编辑器中使用相同的 maya.dgdirty() 命令时,它会导致视口按预期更新。本质上,我的问题是:在我的同步节点的计算功能中设置斜坡入口位置后,如何让斜坡节点的 outColor 正确更新(从而导致视口着色更新)?

0 投票
1 回答
62 浏览

python-3.x - 我有一个网格的文本文件,它具有 xyz 坐标和不同长度的单元格边(sx、sy 和 sz)

我有一个网格的文本文件,它具有 xyz 坐标(单元格中心并且在 UTM 中)和单元格边的不同长度(sx、sy 和 sz)。点是随机点。我想用 Python 绘制它。任何人都可以提供任何建议吗?

0 投票
1 回答
454 浏览

python - Maya Python 镜像问题

我想在maya“object1”中镜像一个对象并在镜像后删除它的原始版本

但是除了我认为我已经停用了 mergeMode=0 的合并这一事实之外,polyMirrorFace 给了我一个合并对象。

当我通过 UI 在 Maya 中镜像时,它工作正常。

我希望,有人可以提供帮助。