- 浏览: 200956 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
悲梦天下:
楼主,有些视频到一半就没声音了,怎么破!!!
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(完)
sierpinski triangle 2d maya plug-in(with python API 2.0)
因为python API 2.0可用的类很少,OpenMayaMpx模块里的类被整合到OpenMaya里面了,这个模块不再存在,里面的一些方法也被丢弃了,所以使用python API 2.0来写插件和1.0是有区别的,我这里就以sierpinski triangle 2d为例来看看怎么使用python API 2.0来写插件.
首先,我们的插件是一个命令插件,就是创建一mel命令,命令只有一个-times(-t)参数可使用,接受的数据类型是int,和一个以上的三角形节点,使用方法
或是
sierpinskiTriangleCmd.py
要让maya知道你的插件是使用python API 2.0来写,必须要定义这个函数,不知道以后会不会有所改变
然后其它的基本一样,因为OpenMayaMpx模块被丢弃了,所以你只需要返回你命令类的实例就行了
对的,python写的插件有时候会出现这种情况的,我没做太多的测试
首先,我们的插件是一个命令插件,就是创建一mel命令,命令只有一个-times(-t)参数可使用,接受的数据类型是int,和一个以上的三角形节点,使用方法
sierpinskiTriangle -t 5 objects;
或是
from maya import cmds cmds.sierpinskiTriangle(objects, t=5)
sierpinskiTriangleCmd.py
import sys import maya.api.OpenMaya as om from maya import cmds def maya_useNewAPI(): pass class STCmd(om.MPxCommand): cmdName = "sierpinskiTriangle" timeFlag = "-t" timeLongFlag = "-times" def __init__(self): super(STCmd, self).__init__() def doIt(self, args): times = 1 timeFlagIndex = args.flagIndex(STCmd.timeFlag, STCmd.timeLongFlag) if timeFlagIndex != om.MArgList.kInvalidArgIndex: times = args.asInt(timeFlagIndex+1) argData = om.MArgDatabase(self.syntax(), args) objList = argData.getObjectList() if objList.isEmpty(): self.displayError("No objects pass to the command or nothing is selected.") for i in range(objList.length()): objPath = objList.getDagPath(i) if objPath.apiType() == om.MFn.kMesh: obj = objPath else: obj = objPath.child(0) if obj.apiType() != om.MFn.kMesh: continue meshFn = om.MFnMesh(obj) if meshFn.numEdges == 3: name = meshFn.name() for j in range(times): for k in range(meshFn.numPolygons): cmds.select("%s.f[%d]" % (name, k), r=1) edges = cmds.polyInfo(fe=1)[0].split()[-3:] meshFn.syncObject() meshFn.split(((meshFn.kOnEdge, int(edges[2]), 0.5), (meshFn.kOnEdge, int(edges[1]), 0.5), (meshFn.kOnEdge, int(edges[0]), 0.5), (meshFn.kOnEdge, int(edges[2]), 0.5))) meshFn.deleteFace(meshFn.numPolygons - 1) meshFn.updateSurface() cmds.select(cl=1) def cmdCreator(): return STCmd() def syntaxCreator(): syntax = om.MSyntax() syntax.addFlag(STCmd.timeFlag, STCmd.timeLongFlag, syntax.kUnsigned) syntax.setObjectType(syntax.kSelectionList) syntax.useSelectionAsDefault(True) return syntax def initializePlugin(mobject): mplugin = om.MFnPlugin(mobject, "mack stone", "0.1") try: mplugin.registerCommand(STCmd.cmdName, cmdCreator, syntaxCreator) except: sys.stderr.write("Failed to register command: %s\n" % STCmd.cmdName) raise def uninitializePlugin(mobject): mplugin = om.MFnPlugin(mobject) try: mplugin.deregisterCommand(STCmd.cmdName) except: sys.stderr.write("Failed to unregister command: %s\n" % STCmd.cmdName) raise
要让maya知道你的插件是使用python API 2.0来写,必须要定义这个函数,不知道以后会不会有所改变
def maya_useNewAPI(): pass
然后其它的基本一样,因为OpenMayaMpx模块被丢弃了,所以你只需要返回你命令类的实例就行了
def cmdCreator(): return STCmd()
评论
8 楼
schi
2013-06-17
很多人都觉得python慢,其实不管你用什么语言,运行速率都跟硬件和算法有关,但大部分情况下都会假设硬件已经足够快,所以只需要更快的算法就能达到我们的目的,算法可以是很简单也可以是很复杂。
例如:
哪个更快
或是我们要反转一个列表
和
哪个更快?
例如:
哪个更快
1 + 1 1 - 1 1 + -1
或是我们要反转一个列表
mylist = [] for i in xrange(1000): mylist.insert(0, i)
和
mylist = [] for i in xrange(1000): mylist.append(i) mylist.revers()
哪个更快?
7 楼
376832814
2013-06-16
最近写的
几个脚本
都比较崩溃于速度上。。。
前几天 有写一个 后台导入 massive 导出的骨骼的脚本
本以为 Standalone
打开maya 导入骨骼
会快
但是 也并不明显
不知道 怎样能 提高 运行的速度
几个脚本
都比较崩溃于速度上。。。
前几天 有写一个 后台导入 massive 导出的骨骼的脚本
本以为 Standalone
打开maya 导入骨骼
会快
但是 也并不明显
不知道 怎样能 提高 运行的速度
6 楼
376832814
2013-06-16
嘿嘿
想请教下
前几天 写一个
获取流体盒子
dencity
写出文件
的脚本
使用 是getFluidAttr命令获取的每个voxel的dencity
发现 真正使用起来
速度有点。。
想请教下有什么方法 加快运行速度?
其实一直有疑惑的是
写的maya脚本
cpu使用率都不高?
想请教下
前几天 写一个
获取流体盒子
dencity
写出文件
的脚本
使用 是getFluidAttr命令获取的每个voxel的dencity
发现 真正使用起来
速度有点。。
想请教下有什么方法 加快运行速度?
其实一直有疑惑的是
写的maya脚本
cpu使用率都不高?
5 楼
schi
2013-06-13
- 不是,看你的需求
- 应该是一样的,某些情况下直接用更快
- 对的,使用MDGModifier,它会帮你记录所有(可以undo和redo)的操作,不用的话需要自己实现undo和redo
4 楼
376832814
2013-06-12
嘿嘿
非常感谢你上次的回答
这次
还想请教下
1
因为很多资料都是c++的 而我并不是很了解c++
在c++Api中实现mel 那些普通命令必须要
OpenMaya.MDGModifier().commandToExecute(mel)对么
2
就像你说的 pyApi强大在于
我可以所以使用普通命令
这样会不会影响速度呢?
我也想
OpenMaya.MDGModifier().commandToExecute(mel) 会更快么?
3
还想请教下
OpenMaya.MDGModifier().commandToExecute(mel)
OpenMaya.MGlobal().executeCommand(mel)
这两个不同
这是与 undo 有关么?
非常感谢你上次的回答
这次
还想请教下
1
因为很多资料都是c++的 而我并不是很了解c++
在c++Api中实现mel 那些普通命令必须要
OpenMaya.MDGModifier().commandToExecute(mel)对么
2
就像你说的 pyApi强大在于
我可以所以使用普通命令
这样会不会影响速度呢?
我也想
OpenMaya.MDGModifier().commandToExecute(mel) 会更快么?
3
还想请教下
OpenMaya.MDGModifier().commandToExecute(mel)
OpenMaya.MGlobal().executeCommand(mel)
这两个不同
这是与 undo 有关么?
3 楼
schi
2013-06-07
376832814 写道
嘿嘿
想请教
发现 如果
使用 python 调用的话
输入的参数 会无用
不知道。。。
想请教
发现 如果
使用 python 调用的话
输入的参数 会无用
不知道。。。
对的,python写的插件有时候会出现这种情况的,我没做太多的测试
376832814 写道
再请教下
自己
参照你这个写了下
完成的是
《Complete Maya Programing》
里面的 第一个例子
就是 post 那个沿曲线创建圆柱的例子
有两个问题
1.发现好像2.0没有OpenMaya.MFnNurbsCurve()
这就是你所说的缺少很多类对么? 那这样的话
就必须要别的办法来实现里面的方法对么?
2 不知道为什么 脚本中
只要加入argData = om.MArgDatabase(self.syntax(), args)
这一句 一运行命令 maya 就会崩溃。。。
自己
参照你这个写了下
完成的是
《Complete Maya Programing》
里面的 第一个例子
就是 post 那个沿曲线创建圆柱的例子
有两个问题
1.发现好像2.0没有OpenMaya.MFnNurbsCurve()
这就是你所说的缺少很多类对么? 那这样的话
就必须要别的办法来实现里面的方法对么?
2 不知道为什么 脚本中
只要加入argData = om.MArgDatabase(self.syntax(), args)
这一句 一运行命令 maya 就会崩溃。。。
- 是的,你可以使用1.0的API来实现曲线的创建,或是用普通命令,pyhton for maya的强大之处就是可以将你需要的任何模块整合在一起
- 你用错了吧
2 楼
376832814
2013-06-02
再请教下
自己
参照你这个写了下
完成的是
《Complete Maya Programing》
里面的 第一个例子
就是 post 那个沿曲线创建圆柱的例子
有两个问题
1.发现好像2.0没有OpenMaya.MFnNurbsCurve()
这就是你所说的缺少很多类对么? 那这样的话
就必须要别的办法来实现里面的方法对么?
2 不知道为什么 脚本中
只要加入argData = om.MArgDatabase(self.syntax(), args)
这一句 一运行命令 maya 就会崩溃。。。
自己
参照你这个写了下
完成的是
《Complete Maya Programing》
里面的 第一个例子
就是 post 那个沿曲线创建圆柱的例子
有两个问题
1.发现好像2.0没有OpenMaya.MFnNurbsCurve()
这就是你所说的缺少很多类对么? 那这样的话
就必须要别的办法来实现里面的方法对么?
2 不知道为什么 脚本中
只要加入argData = om.MArgDatabase(self.syntax(), args)
这一句 一运行命令 maya 就会崩溃。。。
1 楼
376832814
2013-06-02
嘿嘿
想请教
发现 如果
使用 python 调用的话
输入的参数 会无用
不知道。。。
想请教
发现 如果
使用 python 调用的话
输入的参数 会无用
不知道。。。
发表评论
-
uv重叠(uv overlap)
2014-06-28 22:28 5205两年多前我需要解决uv重叠的问题,当时觉得是一个挺有挑 ... -
dx11 Shaders for maya
2014-06-09 17:48 2111我准备花点时间来弄点d ... -
Maya plugin with OpenCL C++ example
2014-04-23 12:19 3139GPU, Python and Maya使用的是python和 ... -
cmdReporterHighlighter
2014-01-19 19:30 833A syntaxhighlighter I wrote ... -
那条线代表什么
2013-11-07 12:32 1204好几个月前我问了前同事一个问题:那条线代表什么? 同事在玩 ... -
Modern OpenGL with python (freeglut, glfw, PySide/PyQt)
2013-11-04 15:28 6488Base on this tutorial 基于这个教程 ht ... -
python视频教程 更新22(完)
2013-09-07 20:31 2198实际上最后的类实战的ood是不正确,虽然Point类和Vect ... -
Add MEL syntax highlighting for expression editor[给表达式编辑器添加mel的高光显示]
2013-08-30 18:16 1893I don't use mel for years. But ... -
GPU, Python and Maya
2013-06-27 17:32 3034Here an example how to use pyop ... -
mentalray cause maya2012 crash on standalone mode
2013-03-28 20:27 1026如果你想使用maya2012和python来做些批处理,你就要 ... -
python基础视频教程
2013-08-14 15:56 1676我打算做一系列的python基础视频教程。 目前的计划是从0基 ... -
convert color image to grayscale with pyopencl(example code)
2013-03-09 20:38 2209grayscale.py import pyopencl as ... -
sierpinski triangle 2d in maya(with python API 2.0)
2012-10-22 20:41 1967在国庆前我刚好完成手上的工作,有两三天的空闲,于是就去 ... -
mel,cmds,python API哪个更快?
2012-09-13 14:37 3888昨天偶然的跟同事谈论 ... -
Maya Python API 2.0 - MGlobal
2012-08-31 18:07 2280MGlobal是一个静态类,提供通用的API涵数. 包括获取m ... -
Get Reversed Normal Faces(获取反法线面)
2012-08-20 18:34 1717这不是一个教程,这是 ... -
Maya Python API 2.0 - MSelectionList
2012-07-09 14:03 2496从Maya2012开始我们迎来了新的Python API, ... -
我讨厌给UI起名字,也懒得起名字
2012-07-05 14:35 1325从我开始给Maya开发UI工具的时候起就觉得给窗口起名是件麻烦 ... -
算法(algorithm) 101
2012-07-02 23:01 1125在Maya中实现深度/广度优先搜索算法 Depth-First ... -
使用Visual C++ 2010 Express来开发Maya x64插件
2012-07-02 22:57 4880Visual C++ 2010 Express是微 ...
相关推荐
sierpinski triangle MATLAB Code
ifs算法实现sierpinski三角形程序,Julia集
Sierpinski金字塔-分形-计算机图形学课程程序,使用了画家算法进行消隐,可控制递归深度和旋转速度。
塞尔平斯基三角形python代码那绘制了一个三角形它绘制了一堆三角形,就像这样:
Use recursion to create fractals like the Koch snowflake and the Sierpinski triangle Generate virtual sheep that graze on grass and multiply autonomously Crack secret codes using genetic algorithms
sierpinski三角形--OpengL实现
Draw geometric shapes and explore fractals like the Barnsley fern, the Sierpinski triangle, and the Mandelbrot set Write programs to find derivatives and integrate functions Creative coding challenges...
Sierpinski_Triangle WebGL Sierpinski三角形
请首先查看右侧的示例选项卡... 下载后,在 Matlab 控制台中输入“doc Sierpinski_octostar”或“help Sierpinski_octostar”以获得支持。 要从随附的文件文档中受益,请务必下载该文件,而不仅仅是复制和粘贴它。
该函数提供了一种生成分形图像的可行算法,特别是谢尔宾斯基三角形。 该函数打开一个新图形并绘制给定迭代次数的结果,该迭代次数必须大于或等于 0。应该考虑到迭代次数越多,... 使用示例: sierpinski_triangle(6);
matlab开发-SierpinskiFractalTriangle。提供一个Sierpinski分形三角形图像的可承受算法。
- 使用矩阵绘制和转换2D和3D图形- 使用 复杂数字制作Mandelbrot和Julia集等彩色设计 - 使用递归创建分形,如Koch雪花和Sierpinski三角形 - 生成虚拟绵羊在草地上吃草并自主繁殖 - 使用遗传算法破解密码 当您完成本书...
各种形式和语言的谢尔宾斯基三角形。
Sierpinski Triangle 分形,具有以非整数维形式充填空间的形态特征。 通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。
克隆: git clone https://github.com/patrickstocklin/sierpinski-fractal-triangle 将Sierpinski.html的路径粘贴到您首选的Web浏览器中 分形! 您可以通过打开Sierpinski并在initVertexBuffers(gl)中编辑var ...
实心Sierpinski三角形演示 由React Fiber演示程序普及。 运行 我强烈建议在运行这些演示时打开Chrome调试器的“性能”选项卡并限制CPU。 这与FPS无关,因为这些天在大多数计算机上都可以60fps的速度运行。 关于它们...
Sierpinski与C-Turtle作者:Jan Pearce撰写的Python版本杰西·W·沃克(Jesse W.Walker)转换为C ++参考: 此仓库使用Jesse W.Walker的
in : Metis Description : ' Sierpinski plots the Sierpinski triangle ' Keywords : scaling, topology, self-similar, mandelbrot, triangle, Sierpinski See also : Stable_Kelly_Rescaling, Stable_Kelly_...
windows环境下用visual C++实现计算机图形学中Sierpinski地毯算法的编码
sierpinski_triangle:用于以任意迭代次数计算,显示和保存由2D或3D空间的三个给定点定义的Sierpinski分形三角形的功能