问题标签 [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 投票
1 回答
724 浏览

python - PYMEL Maya UI 疯狂

我在使用我认为简单的脚本时遇到问题,但我在这里!问题是我对 ACTUAL 脚本没有真正的问题,但在 Maya UI 上。

看来我无法避免创建多个窗口,也无法使用 deleteUI("nemeOfUI") 将其删除。那让我发疯。我在网上查了一下,似乎我做得很好,但我找不到答案。

这里是整个代码。

注意第 15 16 17 18、110、208 行。

我知道代码不是最干净的,但它的版本是 1.2。一旦它工作,我会做清洁!谢谢!

0 投票
1 回答
917 浏览

python - Maya Python - 如何创建shaderOverride?

在 Maya 2017 中使用 python,我能够重现我的 render_setup 的结构(层、集合和覆盖),除了 shaderOverride。

对于经典覆盖,我使用实例函数:maya.app.renderSetup.model.collection.Collection.createOverride()

是否有类似的命令来创建着色器覆盖,或者您是否添加了一些特定属性?

谢谢

0 投票
1 回答
312 浏览

maya - Maya c++ API,一个对象到另一个对象?

我正在学习 Maya C++ API,并且被困在最简单的任务上。

我有一个对象(定位器):

另一个:

我想把第二个放在第一个下面。我努力了:

但是当我运行它时 Maya 崩溃了。我在这里使用正确MFnDagNode吗?我也试过:

但我也遇到了崩溃。我哪里错了?谢谢你。

0 投票
1 回答
256 浏览

c++ - Maya c++ API,在线程中为对象设置动画

我正在尝试使用 c++ Maya API 移动对象。

我创建了一个关节,使用:

然后我启动一个移动这个关节的线程:

线程函数在哪里:

MVector currentCamPos;

我运行这个函数,关节在视口中创建,并开始移动。然后,几秒钟后,它在视口中停止移动,但属性编辑器中的平移值不断更新。

线程不断分配数据,但视口停止更新。我也尝试过这种方法:

但我看到了同样的行为。移动对象后是否需要以某种方式刷新视图?如何保持视口更新?

谢谢你。

0 投票
1 回答
426 浏览

python - How to add an material to the maya scene?

Hi everyone I am trying to write some script to automate my work in Maya.

Right now I am looking for the way to add materials to the hypershade.

I can't see anything on console (Script editor) so I can't se what python api I should use.

I know that maya treat materials as sets, and to assign a material to polygon I need to put it in this set, but I don't know how to create a new set.

So my question is: How I add a material to the scene using python maya-api?

0 投票
0 回答
55 浏览

maya - 使用 Maya API 创建直线运动路径

我正在做一个项目,为此我需要能够创建一条直线运动路径并将相机连接到它。一旦相机完全沿着该路径移动,我还需要从相机的视图中渲染它,所有这些都使用 Maya API。

谁能帮我解决这个问题?

0 投票
2 回答
961 浏览

python - 如何在 python 中通过 cmds.file 中止 Maya 中文件的加载

我有在 Maya 中对文件运行批处理操作的代码。实际的实现并不重要,只要知道它得到一个文件路径列表,maya 打开文件,然后依次对每个文件执行操作。

如果由于某种原因引用无效(例如路径无效),我想中止加载整个场景并跳到批处理列表中的下一个。

查看此站点和其他地方的其他问题,我只能看到用户询问如何查询参考。我已经有一个合理的函数来执行此操作,这是在该函数返回一个让我难过的无效引用路径之后要做的事情。

过去一直通过弹出窗口手动解决无效的参考路径,但是大批量不断地照看 Maya 实例是不可行的。也不会抑制弹出窗口本身,因为我相信它仍然会打开文件,并在它处于无效状态时在现场运行批处理操作。

我已经通过maya cmdspython模块尝试不加载引用,但是当使用loadReferenceDepth标志时cmds.file我仍然得到一个弹出窗口:

第二种方法是查看maya open api并在 before open 事件上注册一个回调。下面的代码在功能上与批处理的设置方式相同:

但是,即使addCheckFileCallback表明如果回调函数返回False操作是 aborted,文件还是会被加载。

同样,替换return Falsefor araise RuntimeError不会让我捕捉到异常。相反,cmds.file完成并且只在日志中打印出一条小消息,说“python回调失败”。python open api 文档说绑定更喜欢异常而不是 MStatus 返回代码,所以我希望它可以工作。

我们删除了 MStatus 类。必须使用 Python 异常而不是 MStatus。

我在这里错过了什么吗?必须有办法做到这一点。构建一个非常粗糙的 .ma 解析器是另一种选择,但这意味着放弃对 .mb 文件的支持,我不想这样做。

谢谢你的时间!

0 投票
2 回答
265 浏览

python - 将点投影到相机深度的平行网格上(maya)

我正在尝试创建一个定位器网格,这些定位器用作从 Maya 中的相机在指定深度的平行有限平面上的投影点。网格应与指定的分辨率对齐,以匹配渲染输出。

目前我的计算已经关闭,我正在寻找一些帮助来确定我用于确定投影点的公式是如何不正确的。

我有一个自包含的 python 脚本和图像,显示了作为示例生成的定位器的当前位置。

显示当前生成的定位器在 y 和 z 轴上关闭的图像

0 投票
1 回答
1140 浏览

python - Maya MPxNode 多个输出

我正在尝试创建一个MPxNode具有多个输出的,但我只能让一个正常工作。连接节点后和撤消期间,其他输出未正确设置。

compute是否可以像我尝试的那样同时设置两个输出?如果我将 compute 中的第一行更改为 ,它确实有效if plug != self.output1 and plug != self.output2,但这意味着它会计算两次,这会浪费内存。你可以想象如果有更多的输出,这将是多么糟糕。

我设法将代码最小化为这个简单的例子。我在 Maya 2018 上用 Python 编写脚本:

0 投票
1 回答
491 浏览

maya - 如何连接节点以同时获取和设置它们的信息?

我需要获取变换节点的位置。使用其他输入进行一些计算。并在同一个变换节点上再次设置。

这会产生一个 Maya 不喜欢的循环。

如果我想在同一个节点查询和设置信息怎么办?

我希望它像一个约束。您将一个对象与一组对象相关联,并根据第一个对象移动它们。