- 浏览: 205263 次
- 性别:
- 来自: 上海
最新评论
-
悲梦天下:
楼主,有些视频到一半就没声音了,怎么破!!!
python视频教程 更新22(完) -
schi:
啊,我太傻了,都想到使用uv了,可以有更简单的方法,只要把uv ...
Get Reversed Normal Faces(获取反法线面) [原理] -
schi:
相对Pillow和PySide而言,显示图片opengl就显得 ...
display an image with pyopengl and Pillow -
schi:
我也是今天才偶然想到的,我以后可能用不着了,所有分享给有需要的 ...
Get Reversed Normal Faces(获取反法线面) [原理] -
baiyanbin:
支持楼主原创,关注楼主博客有一阵子了,国内认真认真搞技术的太少 ...
python视频教程 更新22(完)
文章列表
我们都知道Maya的主窗口保存在mel的全局变量$gMainWindow里。
We all know that wen can get the main Maya window with $gMainWindow.
print $gMainWindow;
//MayaWindow
因为Maya2011 和 Maya2012是使用Qt编写的界面,所以我们可十分轻松的获取Maya的主窗口。
Because the UI of Maya2011 and Maya2012 was based on Qt, os we can super easy to get the main window.
#f ...
我开通了新的博客,地址是http://cgcoding.appspot.com,但被墙了所以你可能无法访问,我正在申请二级域名,好了就可以通过二级域名访问了。
也许你会问,为什么不继续使用这个博客,其实我挺喜欢iteye的博客的,无广告也很整洁,也有代码高亮之类的功能,完全符合我的需求,但很遗憾的是我无法自定义代码高亮,我很希望我的博客能支持我使用的语言或者更多,所以我只能使用其它博客了。虽然使用新博客了,但不意味着不再使用这个博客了,只是不再更新了,也许某一天我又用它了。
二级域名http://cgcoding.b3log.org/申请好了,被墙了的可以通过它来访问。
很久没用过PyQt了,以前也没怎么学,现在我打算从新学习Qt。
PyQt有不少模块,使用比较频繁的就是QtCore和QtGui了
QtCore: 是包含了非GUI的核心类,包括qt的信号和槽事件循环,共享内存,用户设置等等。
QtGui: 包含了绝大部分的GUI类。
让我们来看看如何来编写一个GUI程序吧
# 导入QtGui模块
import PyQt4.QtGui as QtGui
if __name__ == "__main__":
# 导入sys模块,你也可以在一开始就导入
import sys
# 创建一个QApp ...
lukeiamyourfather在http://resources.realflow.com上面共享了他的Multithreaded Mesh Proces脚本,这个脚本是用来实现realflow的多线程输出mesh,虽然realflow的nogui模式有"-threads"这个参数,但你会发现即使你指定了"n"个线程,也是没什么不同的,不管是版4还是版本5,lukeiamyourfather的这个脚本很好的解决了这个问题,他把真正的多线程引入到了realflow的mesh输出。
但是他这个脚本是基于python 3.x来写的,你必须使用python 3 ...
在realflow里有个Open Project Folder ...命令用来打开工程项目的目录窗口,我在使用maya的时候我也经常打开maya的工程项目,为什么不把这个简单的功能移植过来呢?
so let's do it.
我google了一下,发现在python中有几种方法来打开指定路径的文件夹
1.使用os.system方法
import os
os.system('explorer "c:\myMayaProject"')
这时会弹出一个cmd.exe窗口来执行我们的命令,然后我们的窗口在所有的窗口的最前面
2.使用os.startfile方法
import os
...
在maya中有个normalize命令用来normalize一个大小为3的浮点数组,而没有python版的normalize命令,python本身也没有处理Vector的内建函数,所以只有自己去实现。
在maya中可以有以下方法来实现normalize。
为了对比mel版本的normalize命令,我先给出mel版本的样例。
在maya中创建一个locator(其它也行),随便移动一下然后执行下面的代码
float $locPos[] = `getAttr locator1.translate`;
// Result: -6.743036 3.618447 2.797823 / ...
createDynamicCache是我的第二个maya standalone script,就是cache from command line的API版本。这个script是使用maya python API来写的,除了cache的命令是mel命令。我粗略看了一下maya中的cache命令,发现很复杂,需要很多时间来分析,而且就算我重新使用python来编写也可能达不到我想要的结果,就是我前面所说的在cache时输出进度信息,所以要重写cache命令的话可能会用API写,maya倒是提供了一个XmlGeometryCache.cpp例子,但这个例子太长了还是C++的,有时间再研究研究。
...
使用命令行来计算cache,这个脚本我已经不记得是什么时候写好的了,太忙了,很多事都不记得了。可惜我还是没足够的时间来进行更多的测试,这个脚本有pymel、mrv、API等版本,功能还不健全(仅40行左右的代码),因为没足够的时间来进行时间测试,所以这里就单展示mrv的版本,现在在进行计算时是完全不知道进度的,如果有时间我会不断的完善它们,让它们类似realflow的nogui模式类似输出进度很时间等等,很可能需要自己编写整个cache过程。
使用命令行来计算cache比maya在gui模式快不少,具体快多少我还不清楚,时间总是我最需要的东西。
(youku看不清楚的话)视频可以 ...
我已经将博客里的文章做成了电子书,大家可以到这里下载
http://schi.iteye.com/blog/pdf
以后可能也没什么时间来写博客了,实在是太忙了。
如果有时间,我会做个速度测试,测试Maya在standalone下用pymel、mrv(刚开始学)、API来给nCloth、nParticle计算cache的速度,我很好奇哪个会快点。
在maya中使用nDynamic模块时,场景中的nDynamics节点越多就越难分辨哪个是哪个,而且默认都是清一色的碰撞颜色,给它们分别赋予一个随机颜色是一个不错的想法。
要实现这个,方法很简单
获取场景中所有的nRigid, nCloth, nParticle节点
对它们进行迭代,并设置一个随机碰撞颜色
下面展示了各个不同模块的实现方法
#------------ maya python -----------------
from random import uniform
import maya.cmds as mc
# 获取场景中所有的nRigid, n ...
geomShader
- 博客分类:
- Maya Python API
geomShader.py是使用API编写maya材质的简单的例子,是的API也可以用来写自定义材质。
为了方便我就直接复制帮助文档里的geomShader.py内容过来,加入适当的注释,要试用的话可以直接加载devkit\plug-ins\scripted中的geomShader.py,你会在Hypershade的utility栏下的color中找到"spGeomShader"
import sys
import maya.OpenMaya as OpenMaya
import maya.OpenMayaMPx as OpenMayaMPx
# 材质的名称
...
纯粹记录刚开始学习mel和python的时间。
真正开始学习mel是2009年2月,就在过年的时候决定学习mel的,在这之前只用过网上的脚本,只能看懂最简单的
ls -sl;
学习python是2009年4月入手python核心编程一书开始的。
到现在,回想起来能学到这个地步也不容易,因为学习mel和python的大部分时间都是上班的时间,很少用自己的空余时间来学习。
嗯。不想再多说,只是纯粹记录刚开始学习mel和python的时间,因为我会忘记。
如果我想说明什么,那就是,我能做得到,你们也能。就想我相信,别人能做得到,我也能。
大概一个月前我就写好了,但一直没时间整理,这个节点和我以前写的real time dynamic setup tool
工具功能类似,因为是写来玩的,所以没什么新功能,也不打算发布源代码。
scanDag命令以depth first(深度优先)或breadth first(广度优先)来迭代整个DAG,输出每个节点的名称和深度等信息,这个命令插件例子中只对相机、灯光、NURBS surfaces进行支持。
在maya的Plug-in Manager中加载scanDagCmd.py,然后你可以随便创建一些相机、灯光、NURBS surfaces,并对它们进行位移等属性调整,然后分别执行
// -d 为深度优先,-b 为广度优先
// 相机
scanDag -d 1 -c 1;
// 灯光
scanDag -d 1 -l 1;
// NURBS surfaces
scan ...
不知道大家还记不记得之前的helixCmd,这个helix2Cmd是从C++转成python的版本,与helixCmd不同的是它不是创建曲线,而是更改曲线,使给定的曲线变成helix曲线,并且支持返回和重做。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
This example takes a curve and changes it into a helix.
"""
import sys
import math
import maya.OpenM ...