标签: maya

如果变量不存在,如何检查实例是否存在?

我有一个按钮,可以导入带有类的模块。类 (varClass) 创建一个窗口。

如果我再次单击该按钮,我会尝试以下操作:

if var:
    var.toggleUI()
else :
    var = varClass()
Run Code Online (Sandbox Code Playgroud)

但打开 Maya 后第一次创建窗口时 var 不存在。我怎样才能让它工作?

python maya mel

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

可调整大小的窗口命令 python-maya

自从我开始用Python编写脚本以来,我就一直遇到这个问题。

尽管我将“宽度”和“高度”标志添加到主“窗口”命令中,但大小始终根据最近的操作进行调整。。明白我的意思了吗?

难道它不应该总是给我在宽度和高度标志后输入的相同大小吗?

问题是什么?

我不想使用相当大的标志,因为我总是需要在使用窗口时调整它们。

这种奇怪行为背后的真正原因可能是什么?

我想打开我的窗口,无论我通过拖动窗口的一角调整其大小多少次......

如果需要的话,这是我的Python代码......

import maya.cmds as cmds



def createGUI():

    #If the window already exists, it will delete it.
    if cmds.window('myWindow',exists=True): 
        cmds.deleteUI('myWindow')

    #Creation window command
    winControl=cmds.window('myWindow',title='BookShelf Generator',resizeToFitChildren=True, sizeable=False) #s=False does not allow the user to change the size of the window

    #Windows Layout
    #Top Part
    #Header image
    cmds.rowColumnLayout(w=400)
    cmds.image( image='/home/s4915717/Stefano_Feltre_Scripting/artefacts/Images/UIheader02.png' )
    cmds.setParent("..")

    cmds.columnLayout(adjustableColumn=True,rowSpacing=0)
    cmds.frameLayout( label='BookShelf Options',collapsable=False, mw=5, mh=5 )
    cmds.text(label='Modify the value on the interace to create different aspect of the BookShelf.', align='center', height = 20) …
Run Code Online (Sandbox Code Playgroud)

python user-interface command window maya

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

如何在 Maya 的 ls 命令中获取所有类型的列表?

在 Maya 中,有一个 ls 命令可列出场景(或 DAG)中的所有对象。

pm.ls()
Run Code Online (Sandbox Code Playgroud)

这里是命令的参考ls

我们可以通过传递参数来列出特定类型的元素type

pm.ls(type="joint")
Run Code Online (Sandbox Code Playgroud)

一些可能的类型是camerameshjoint等。

我的问题是 ls() 命令可用的所有类型是什么?文档没有多大帮助。我在哪里可以找到它?

python maya mel pymel

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

如何获得 Maya '列表;命令以按照渲染层编辑器中显示的顺序列出渲染层?

在 Maya 中,当我列出场景中的渲染层时,Maya 返回这些层,但并不总是按照它们在其旧版渲染层编辑器中显示的顺序。在更改现有渲染层的名称或添加和减去渲染层后,情况会如此。有没有办法列出图层并让 Maya 遵守渲染图层编辑器中使用的顺序?

导入 maya.cmds 作为 cmds cmds.ls(type = "renderLayer")

python maya

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

如何制作RPG角色

如果能够改变盔甲和衣服的RPG,它是如何完成的?我的意思是3D方面

如果我制作正常的角色,那就是平整的衣服,那就很简单,只需更换纹理,但问题是关于盔甲,它们有完全不同的模型.

那么只有重建的盔甲模型或装甲的角色模型?它是如何导入游戏引擎的,只有盔甲或带有新装甲的角色模型?

如果人在游戏中更换护甲,游戏会更换洞模型还是只更换护甲部分?

如果只有装甲部分,那么运动动画是如何完成的,是在3D程序中对角色进行动画制作的装甲模型或者......:D

3d maya 3dsmax unity-game-engine

0
推荐指数
1
解决办法
3695
查看次数

创建Maya UI

我正在创建一个maya UI,但是当我在maya中运行一次replace_name按钮后尝试运行我的loadobject按钮命令时,我收到此错误:

cmds.textFieldButtonGrp(self.loadobject, e=True, text=select_objects[0])
RuntimeError:
Run Code Online (Sandbox Code Playgroud)

希望有人可以帮我解决这个问题.谢谢.

import maya.cmds as cmds


class MyUI:
    def __init__(self):
        self.title = "Test UI"
        self.window = cmds.window(self.title, widthHeight=(1000, 600),
                         resizeToFitChildren=1)

        cmds.rowLayout("button1, button2, button3", numberOfColumns=5)

        cmds.columnLayout(adjustableColumn=True, columnAlign="center",
                      rowSpacing=10)
        self.loadobject = cmds.textFieldButtonGrp(label="Load Object name",
                                                  buttonLabel="Load",
                                                  text="Select Object %s."
                                                  % "and Load name",
                                                  buttonCommand=self.load)
        self.basename = cmds.textFieldButtonGrp(label="Basename",
                                                buttonLabel="Rename",
                                                text="Enter basename.",
                                                buttonCommand=self.replace_name)
        cmds.setParent(menu=True)

        cmds.showWindow(self.window)

    def load(self, *args):
        select_objects = cmds.ls(selection=True)
        cmds.textFieldButtonGrp(self.loadobject, e=True, text=select_objects[0])


    def replace_name(self, *args):
        self.loadobject = cmds.textFieldButtonGrp(self.loadobject,
                                               q=True, text=True)
        self.basename = cmds.textFieldButtonGrp(self.basename,
                                             q=True, text=True)
        name = cmds.rename(self.loadobject, …
Run Code Online (Sandbox Code Playgroud)

python maya

0
推荐指数
1
解决办法
4783
查看次数

Maya Python:cmds.button(),UI传递变量并调用函数?

首先,这似乎是一个学习更多编程的好地方.我编写了一个maya python脚本,其中两个函数都有效,但我无法通过UI按钮来调用superExtrude()函数.第一个函数执行几何网格操作,第二个函数应该为用户输入生成UI:

import maya.cmds as cmds

def superExtrude(extrScale, extrDist):
    """Loops through a list of selected meshes and extrudes all of the mesh faces to produce a polygon frame, based on existing mesh tesselations"""
    myObjectLt = cmds.ls(selection=True)

    for i in range(len(myObjectLt)):
        numFaces = cmds.polyEvaluate(face=True)
        item = myObjectLt[i] + ".f[:]"
        cmds.select(clear=True)
        cmds.select(item, replace=True)

        #extrude by scale
        cmds.polyExtrudeFacet(constructionHistory=True, keepFacesTogether=False, localScaleX=extrScale, localScaleY=extrScale, localScaleZ=extrScale)
        selFaces = cmds.ls(selection=True)
        cmds.delete(selFaces)

        #extrude by height
        cmds.select(item, replace=True)
        cmds.polyExtrudeFacet(constructionHistory=True, keepFacesTogether=True, localTranslateZ=extrDist)

def extrWindow():
    """Creates the user interface UI for the …
Run Code Online (Sandbox Code Playgroud)

python maya pymel

0
推荐指数
2
解决办法
2万
查看次数

"全局名称未定义" - 在maya python中

我正在为Maya编写一个简单的工具,我尝试在另一个中调用基本函数.但我总是得到:global name "baseShape" is not defined.

以下是我的代码片段,其中包含错误:

class correctiveShaper():
    def __init__(self):
        #class variable
         self.app = {}

        #call on the build UI
         self.buildUI()

    def buildUI(self, *args):
        cmds.separator(h=30)
        cmds.button(label="Create Shape", w=295, h=30, al="right", c= baseShape)

    def baseShape (self, *args) : 
        self.app["sel"]=cmds.ls(sl=True)[0]
Run Code Online (Sandbox Code Playgroud)

Python不会让我执行c = baseShape命令def buildUI,我不知道为什么.

python maya

0
推荐指数
1
解决办法
1311
查看次数

如何从Maya事件中获取更改突出显示场景中的对象?

我正在使用:Maya2014 + pyqt4.8 + python2.7

我正在做一个应用程序,它允许您加速和简化Maya中项目的选择.是一个选择器,用户可以将其附加到场景中的对象.在窗口中选择对象会导致场景中的对象分离.但相反我找不到怎么做.

在此输入图像描述

如何捕获更改场景中对象选择并进一步处理其程序时发生的事件?

python events maya pyqt4

0
推荐指数
1
解决办法
3474
查看次数

pyQt按钮在循环内连接创建

我是 pyqt 的新手(Maya 中的 pyside),请对我好一点:)

所以关键是我想通过循环语句生成许多按钮,类似于下面的东西:

(窗口中的 5 个按钮 - 完整代码 - 玛雅)

import PySide.QtCore as qc
import PySide.QtGui as qg
class simpleUI(qg.QDialog):
    def __init__(self):
        qg.QDialog.__init__(self)
        self.setWindowTitle('Simple UI')
        self.btn=[]
        for x in range(5) :
           self.btn.append(x)
           self.btn[x]= qg.QPushButton(self)
           self.btn[x].setText('this is btn number{0}'.format(x))
           self.btn[x].setGeometry(qc.QRect(0,100+(x*20), 100,20))
           self.btn[x].clicked.connect(lambda : self.notifyMe(x))
    def notifyMe(self,index):
        print index
dialog = simpleUI()
dialog.show()
Run Code Online (Sandbox Code Playgroud)

如您所见,我将按钮对象存储在数组中,但问题是当我想将 btn 信号与notifyMe 函数连接时,每个按钮总是给出 x 相同的值 (x=4),同时在button.setText x 成功给出唯一的增量值,我不明白为什么..

python qt pyqt maya

0
推荐指数
1
解决办法
2798
查看次数

从Maya python脚本获取纹理文件名?

我正在写一个python脚本输出一个场景一个简单的,可读的文件。

我已经成功输出了位置,旋转,比例和网格名称,但是如何获取应用于网格的纹理的文件名?

import maya.cmds as cmds
meshesWithoutShape = []
meshes = cmds.ls("mesh_*")
for mesh in meshes:
    if("Shape" not in mesh):
        meshesWithoutShape.append(mesh)

shapesInSel = cmds.ls(dag=1,o=1,s=1)
shadingGrps = cmds.listConnections(shapesInSel,type='shadingEngine')
shaders = cmds.ls(cmds.listConnections(shadingGrps),materials=1)
fileNode = cmds.listConnections('%s.color' % (shaders[0]), type='file')
currentFile = cmds.getAttr("%s.fileTextureName" % fileNode[0])

for mesh in meshesWithoutShape:
    print("\n" + mesh.rstrip('1234567890'))

    print round(cmds.getAttr("%s.translateX" % mesh), 2), round(cmds.getAttr("%s.translateY" % mesh), 2), round(cmds.getAttr("%s.translateZ" % mesh), 2)

    print cmds.getAttr("%s.rotateX" % mesh), cmds.getAttr("%s.rotateY" % mesh), cmds.getAttr("%s.rotateZ" % mesh)

    print cmds.getAttr("%s.scaleX" % mesh), cmds.getAttr("%s.scaleY" % mesh), cmds.getAttr("%s.scaleZ" % …
Run Code Online (Sandbox Code Playgroud)

python maya

0
推荐指数
1
解决办法
2548
查看次数

无法使用 QTableView/自定义表格模型设置标题数据

我在 Maya / PySide2 / Python 2.7

我无法使用自定义表模型设置标题数据。

我试过这个:

from PySide2 import QtCore, QtGui, QtWidgets
from PySide2.QtCore import Qt


class TableModel(QtCore.QAbstractTableModel):
    def __init__(self, data):
        super(TableModel, self).__init__()
        
        self.setHeaderData(0, Qt.Horizontal, "Driver")
        self.setHeaderData(1, Qt.Horizontal, "Range")
        self.setHeaderData(2, Qt.Horizontal, "Driven")
        self.setHeaderData(3, Qt.Horizontal, "Range")
        
        self._data = data

    def data(self, index, role):
        if role == Qt.DisplayRole:
            return self._data[index.row()][index.column()]

    def rowCount(self, index):
        return len(self._data)

    def columnCount(self, index):
        return 4
        
    def addRow(self, row):
        self._data.append(row)
        self.layoutChanged.emit()  

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.table = QtWidgets.QTableView()

        data = [
        [
            "firstData", …
Run Code Online (Sandbox Code Playgroud)

python maya qtableview pyside2

0
推荐指数
1
解决办法
3224
查看次数

在Python中导入条件模块

我只是尝试了Maya 2017并看到他们已经过去了PySide2,这很棒,但我的所有工具都有import PySide或者from PySide import ...在其中.

显而易见的解决办法是查找/替换import PySideimport PySide2,希望一切后,目前仍然可以工作,但我还是希望能够支持老版本的玛雅.

我的想法是有一个单行解决方案来查找/替换,如:

import (PySide2 if "PySide2" in sys.modules else PySide)
Run Code Online (Sandbox Code Playgroud)

但这回归: Error: invalid syntax

有没有人有任何替代方案的想法?我想尝试将它保持在单行上,这样当我有条件时,它就很容易替代:

from PySide import QtCore, QtGui
Run Code Online (Sandbox Code Playgroud)

谢谢!

python maya pyside python-2.7

-1
推荐指数
1
解决办法
956
查看次数