流程中的截图功能是必不可少的,实现的方法也很多。但是原理都是将一个动态桌面生成静态页面,然后裁剪选择的区域.之前基于pyqt写过一个截图的功能。现在跟大家分享一下,你可以任意更改代码,也可以写个界面把截图功能嵌入进去,当然如果可以请保留作者的信息.请留意博客更新,会不定期分享更多的代码便于大家学习!
由于工作时间没时间更新代码,也没优化,把之前写的代码附上,运行以下代码需要事先安装好pyqt.如果没有安装可以试试从maya2014 以上的PySide里导入QtGui和QtCore,我没测试PySide,不过应该可以。如果有什么问题请留言。 »Read More
maya screenshot pyqt截屏
Maya API – Custom locator Node
如何通过maya api 创建自己的locator,可以通过OpenMayaMPx.MPxLocatorNode 来实现。也可以将现有的曲线转为custom locator ,或者反过来转为曲线都可以通过api实现,甚至可以实现重绘 polygon。
代码如下:
only one column of a QTreeView/QTreeWidget editable只让一列可以编辑
如果你不写gui,可能不会在意maya channelBox的ui是如何实现的。最近一个工具需要用属性栏来显示和设置参数,当然思路有很多种。我使用QTreeView and QStandardItemModel 来实现的。因为我需要选择设置参数时能同时选中它的标签,但是标签那一栏需要设置为不可编辑,只做显示用。
只要override flags 方法即可
1 2 3 4 5 | def flags(self,index): flags = QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsSelectable if index.isValid() and index.column()==1: flags|= QtCore.Qt.ItemIsEditable return flags |
如果使用的是QTreeWidget只有使用openPersistentEditor()和closePersistentEditor()来解决这一问题
1 2 3 4 5 6 7 8 9 10 11 | self._lastOpen = None self.itemDoubleClicked.connect(self.openEditStatus) self.itemSelectionChanged.connect(self.closeEditStatus) def closeEditStatus(self): if self._lastOpen: self.closePersistentEditor(self._lastOpen,1) self._lastOpen = None def openEditStatus(self): if self.currentColumn() == 1: self.openPersistentEditor(self.currentItem(),1) self._lastOpen = self.currentItem() |
Maya魔方绑定的原理 Rubik’sCube rigging
魔方的实现有很多种方法,但是实现的过程都大同小异。我采用的的表达式让时间帧来控制主程序,或者可以使用scriptJob直观的去控制旋转。魔方分别有右、左、前、后、上、下六个面,创建六个控制器并且标号(也可以用8个控制器,俩个中间的)以6个控制器为例:right - 0/left -1 /front -2 /back - 3/up -4/down - 5
一、控制器如何分别控制所对应区域的方块:所有的方块都被6个控制器父子约束,根据标号跟方块的位置参数做比较
二、如何得到旋转的控制器是哪个方向:
1、探测当前控制器在时间线上的度数,可以得到在旋转的方向的标记号
2、如果旋转度数等于0度或90度或者90度的倍数(包括负数) 返回 0
3、如果旋转度数不等于0度或90度或者90度的倍数(包括负数)返回 1
假如等到标记号是1,$index =1;
获取所有方块的$axis[$index]的位移值,如:block1.tx
核心原理如下: »Read More
py2exe的使用方法
py2exe能够把Python script转换成可以在windows上独立执行的(即不需安装)的exe程序。对于非计算机专业的可能对于文件的执行略有压力,导致在网上看了不少的步骤最后都没法转换成功。我总结了一下,就几个点:
1、创建一个py文件,如下打开D盘的命令:
1 2 | import os os.startfile("D:") |
2、创建一个setup脚本(setup.py)
1 2 3 | from distutils.core import setup import py2exe setup(console=['test.py']) |
把1、2俩步的test.py 和 setup.py文件放入c:\Python26 下或者你的安装目录
3、检查一下第一段脚本看能否运行(如果打开了D盘说明脚本无误):
a、在windows开始--运行 输入 cmd
b、改变一下路径,输入 cd c:\Python26
c、然后输入 python test.py
4、运行 python setup.py install (注意:确保路径是正确,如c:\Python26>python setup.py install)
5、执行:输入python setup.py py2exe (注意:确保路径是正确,如c:\Python26>python setup.py py2exe)
屏住呼气!!!赶紧去路径dist文件下找exe文件吧!
如何拥有我们自己的脚本编辑器
实现很简单,而且还会自动显示帮助,省去来回切换maya帮助的烦恼了。
1 2 3 4 5 6 7 8 9 10 11 12 | import maya.cmds as mc def myScriptEditor(): if mc.window('myPyScriptEditor', exists=True): mc.deleteUI('myPyScriptEditor') mc.window("myPyScriptEditor", title="My Python Script Editor") mc.columnLayout(adjustableColumn=True) mc.cmdScrollFieldReporter(height=200) mc.cmdScrollFieldExecuter(height=200, sourceType='python') mc.showWindow() myScriptEditor() |
把sourceType=’python’ 换成 sourceType=’mel’ 就可以成为mel的编辑器了。
Numpy Maya Python
我们知道在maya mel 中有Matrix,但是在python中怎么实现呢?
默认的python中只能用list保存一组值,当数组来使用。不过由于list中的元素可以是任何对象,因此list中所保存的对象是指针。这样为了保存一个简单[1,2,3],就需要三个指针和三个整数对象。这样的数值运算无疑是对内存的一种浪费。此外python本身还提供了一个array模块,array对象和list的不同,它直接保存数值,类似于C中的一维数组,但是由于它不支持多维数组,也没有各种运算函数,因为不适合做数值的运算。
当然我们可以用强大的list代替。如:
1 2 3 4 5 6 7 | rows=20 cols=10 matrix=[] for i in xrange(0,rows): matrix.append([]) for j in xrange(0.cols): matrix[i].append(0) |
可是这样的效率、内存都是不小的负担,Numpy的出现弥补了这些缺陷,numpy提供俩种基本的对象:ndarray(存储单一数据的多维数组),ufunc(对数组进行处理的函数)
»Read More
using eclipse with maya
关于 eclipse 配置问题
A . 需要的软件:
- Eclipse: http://www.eclips.org
- python: http://www.python.org
- Eclipse Maya-Editor: download
- Eclipse Mel-Editor: download
- jdk (注意选择的位数跟eclipse要一致): http://www.oracle.com (我用mac系统自带jdk,所以不需要另安装)
scale muscle in maya
我们以一个名为 Mus_Scale 肌肉物体和 global_ctl 的整体控制器为例子:
- global_ctl 的 Scale X / Y / Z 分别关联 cMuscleObject_cMuscleSurfaceMus_Scale1Shape1 的 User Scale X / Y / Z (muscleData下)
- global_ctl 的 Scale Y 关联 cMuscleCreatorMus_Scale1 的 User Scale (nurbsData下)
- global_ctl 的 Scale X / Y / Z 分别关联 linearMus_Scale1AUTO1 的 Scale X / Y / Z
install PyQt for maya
• Mac OS X:
Lion:
- 自动编译,直接安装: Maya 2012: MyQt4.8.6-maya2012-x64-osx-10.7.pkg
- 手动编译:PyQt for Maya 2012 (pdf – 411Kb) (包含Linux & Mac & Windows)
• windows:
MAYA 2011 & 2012 64bits »Read More