标签: maya

使用外部GUI库在Autodesk Maya中创建用户界面

我在Autodesk Maya中开发工具.我构建的许多工具都有简单的窗口GUI,供动画师和建模人员使用.这些GUI通常包含您通常希望在任何基本窗口中看到的内容; 标签,列表,菜单,按钮,文本字段等.但是,您可以使用可用工具构建的UI的复杂性存在限制,特别是在可用小部件的类型中.

我有兴趣使用一些更高级的wxPython小部件,如ListView(网格),树等.这将涉及使用完整的wxFrame(窗口)来显示整个UI,这实际上意味着窗口将不再被绑在玛雅身上.不是交易破坏者,但这意味着当Maya被最小化时,窗口将不会跟随.

我之前尝试使用tkinter作为测试,但发现它需要MainLoop才能在自己的线程中运行.这是合乎逻辑的,但在我的情况下,它与Maya自己的线程冲突,基本上使Maya挂起,直到窗口关闭.这是因为Maya在主Maya GUI共享的单个线程中运行所有脚本,无论是MEL还是Python.这是为了防止一个脚本在另一个脚本尝试对同一个对象进行操作时删除一个对象.

wxPython具有相同的"mainloop"方法.我想知道它是否有任何解决方法,以便它可以在Maya中工作?

python scripting wxwidgets wxpython maya

7
推荐指数
1
解决办法
3276
查看次数

需要从其成员可能连接的集合列表中创建集合列表

我在这里实时处理多边形数据,但问题很简单.我有一个包含数千套多边形Indecies(整数)的庞大列表,我需要将列表尽可能"快速"简化为"连接"Indecies集合列表.即包含也在另一个集合中的整数的任何集合将成为结果中的一个集合.我已经阅读了几个涉及集合和图形等的可能解决方案.我所追求的是具有任何程度共性的最终集合列表.

我在这里处理大量数据,但为了简单起见,这里有一些示例数据:

setA = set([0,1,2])
setB = set([6,7,8,9])
setC = set([4,5,6])
setD = set([3,4,5,0])
setE = set([10,11,12])
setF = set([11,13,14,15])
setG = set([16,17,18,19])

listOfSets = [setA,setB,setC,setD,setE,setF,setG]
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我在一个包含这样结果的列表之后,尽管排序是无关紧要的:

connectedFacesListOfSets = [set([0,1,2,3,4,5,6,7,8,9]),set([10,11,12,13,14,15]),set([16, 17,18,19])]

我已经找到了类似的解决方案,但是投票率最高的解决方案在我的大型测试数据上给出了错误的结果.

合并共享共同元素的列表

python api maya

7
推荐指数
1
解决办法
9028
查看次数

在Web浏览器中显示3dsmax模型

我有一些用3dmax/maya/cad/4dcinema编写的3d模型,我可以在我的网站上显示它们,这样用户就可以旋转模型并检查它.

我在互联网上找到了这个http://replimat.com/thingiview/examples/client_side_ajax.html我认为如果我能以某种方式将这些模型从3dmax/maya/cad/3dcinema转换为OBJ/STL,它将起作用.

有什么转换器可用于Linux?或任何其他方法在Web浏览器中显示这些模型而无需在浏览器上安装任何东西?谢谢 .

javascript maya 3ds

7
推荐指数
1
解决办法
1万
查看次数

在Autodesk Maya等Python环境中使用Nose运行单元测试?

我想开始为我的Maya脚本创建单元测试.这些脚本必须在Maya环境中运行,并依赖于maya.cmds模块命名空间.

如何从运行环境(如Maya)中运行Nose测试?

python environment unit-testing nose maya

6
推荐指数
1
解决办法
4907
查看次数

在Python中一次迭代三个列表?

这可能是一个相当复杂的问题,因为很多人可能不知道我正在为它编写的软件:Autodesk Maya 2011.我正在尝试加快一个繁琐的缓慢过程(操纵:赋予3d角色能力)通过编写自动执行的脚本来移动.

我会尽力解释这种情况.

我有一个脚本,它接受一个对象,遍历该对象的子节点,将它们存储在列表中,然后将初始对象放在列表的末尾,反转列表,因为它是错误的方法,然后放置初始对象在前面.

问题:有三个不同的列表,所有相同的对象TYPE但具有不同的名称,它们实际上是不同的对象.我的目标是通过生成称为"blendcolors"的节点将它们连接在一起.但是,如果我有一个循环为列表A中的每个对象生成它们,那么我需要循环也将它们连接到其他列表中的对象,我无法弄清楚这一点.

这是我的代码,它已被播放,因此就实际循环而言,比以前更加不完整.

    import maya.cmds as cmds

    def crBC(IKJoint, FKJoint, bindJoint, xQuan, switch):

        # gets children joints of the selected joint
        chHipIK = cmds.listRelatives(IKJoint, ad = True, type = 'joint')
        chHipFK = cmds.listRelatives(FKJoint, ad = True, type = 'joint')
        chHipBind = cmds.listRelatives(bindJoint, ad = True, type = 'joint')
        # list is built backwards, this reverses the list
        chHipIK.reverse()
        chHipFK.reverse()
        chHipBind.reverse()
        # appends the initial joint to the list
        chHipIK.append(IKJoint)
        chHipFK.append(FKJoint)
        chHipBind.append(bindJoint)
        # puts the last joint …
Run Code Online (Sandbox Code Playgroud)

python maya

6
推荐指数
1
解决办法
8746
查看次数

在列表中一次迭代两个项目的方法?

我想知道是否有更好的方法在列表中一次迭代两个项目.我经常使用Maya,其中一个命令(listConnections)返回一个交替值列表.该列表将类似于[connectionDestination,connectionSource,connectionDestination,connectionSource].要对此列表执行任何操作,我最好还是要做类似的事情:

for destination, source in cmds.listConnections():
    print source, destination
Run Code Online (Sandbox Code Playgroud)

你当然可以使用[:: 2]迭代列表中的每个其他项目,枚举和source将是索引+ 1,但是你必须为奇数列表和东西添加额外的检查.

到目前为止,我最接近的是:

from itertools import izip
connections = cmds.listConnections()
for destination, source in izip(connections[::2], connections[1::2]):
    print source, destination
Run Code Online (Sandbox Code Playgroud)

这并不是非常重要,因为我已经有办法做我想做的事情.这似乎就是应该有更好的方法之一.

python maya

6
推荐指数
1
解决办法
4248
查看次数

不同的OpenGL行为取决于Maya的视口使用

我有cpp代码,在Maya中显示简单的OpenGL形状.如果使用遗留视口,那么我正是我想要的:沿x轴的箭头:

在此输入图像描述

但是,如果我在ViewPort 2.0中使用相同的代码,则箭头会跟随相机移动:

在此输入图像描述

在此输入图像描述

只有当我应用glTranslatef(我将需要使用)时才会发生这种情况.

这是一段代码:

 for (int i=0;i<10;i++)
 {
    glPushMatrix();
    glTranslatef(i,0,0);
    glBegin(GL_LINES);
    // Arrow
    glVertex3f(0,  y,  z); 
    glVertex3f(1,  y,  z);

    glVertex3f(1,  y,  z);
    glVertex3f(0.5,  y,  z+0.5);

    glVertex3f(1,  y,  z);
    glVertex3f(0.5,  y,  z-0.5);

    glEnd();
    glPopMatrix();
}
Run Code Online (Sandbox Code Playgroud)

如何在"新"Maya视口中具有正确的行为?

c++ opengl maya

6
推荐指数
1
解决办法
217
查看次数

Maya 中的可停靠窗口与 PySide 清理

我创建了一个可以停靠在 Maya 主用户界面中的工具,但是我无法在它关闭后找到清理它的方法。问题是,如果我创建了该工具的多个实例,然后将其拖动到位以停靠它,当我右键单击 Maya 的窗口时,它们都会显示出来。工具关闭时如何正确清理这些?

我已经尝试过了cmds.deleteUIQObject.deleteLater()充其量只能清除工具的内容,但它仍然存在于 Maya 中。这是我到目前为止所拥有的一个例子:

from shiboken import wrapInstance
from PySide import QtGui, QtCore
from maya import OpenMayaUI as OpenMayaUI
from maya.app.general.mayaMixin import MayaQWidgetDockableMixin

class Window(MayaQWidgetDockableMixin, QtGui.QWidget):
    def __init__(self, parent = None):
        super(self.__class__, self).__init__(parent = parent)
        mayaMainWindowPtr = OpenMayaUI.MQtUtil.mainWindow() 
        self.mayaMainWindow = wrapInstance(long(mayaMainWindowPtr), QtGui.QWidget) 
        self.setWindowFlags(QtCore.Qt.Window)

        if cmds.window('myTool', q = True, ex = True):
            cmds.deleteUI('myTool')

        self.setObjectName('myTool')

        self.setWindowTitle('My tool')
        self.resize(200, 200)

        self.myButton = QtGui.QPushButton('TEMP')

        self.mainLayout = QtGui.QVBoxLayout()
        self.mainLayout.addWidget(self.myButton)
        self.setLayout(self.mainLayout)

    def dockCloseEventTriggered(self):
        self.deleteLater()

    def run(self):
        self.show(dockable = …
Run Code Online (Sandbox Code Playgroud)

python maya pyside

6
推荐指数
1
解决办法
6494
查看次数

Python &gt; 将 help() 输出保存到格式化的 html 文件?

我有一个来自 help() 函数的很长的输出,发现在脚本编辑器中找到我要找的东西有点困难。是否可以将 help() 输出保存为格式化的 html 文件?

python maya python-2.7

6
推荐指数
1
解决办法
1628
查看次数

如何编辑已包含在 AR 项目中的 USDZ 网格?

如何编辑usdz文件并维护其中设置的装备?例如,我正在尝试编辑此示例项目中包含的 robots.usdz 网格 -

https://developer.apple.com/documentation/arkit/capturing_body_motion_in_3d

robots.usdz 文件包含在字符文件夹中。

我尝试了以下方法:

  1. 使用 scntool 转换 usdz > scn > dae。但是 scntool 无法成功转换文件
  2. 使用 ModelIO 转换 usdz > stl 文件。STL 文件丢失所有关节并且不包括几何体
  3. 尝试将节点添加到 SCN 文件 > 转换回 usdz。机器人角色无法通过 RealityKit 加载
  4. 尝试使用 Unity usdz 包管理器。在这里没有取得多大成功,无法编辑实际几何图形

您是否有推荐的管道来编辑 usdz 文件的实际网格?我没有原始的 dae 或 fbx 或 gtlf 文件。

maya scenekit arkit usdz realitykit

6
推荐指数
1
解决办法
722
查看次数