- 浏览: 205870 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
悲梦天下:
楼主,有些视频到一半就没声音了,怎么破!!!
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 5383两年多前我需要解决uv重叠的问题,当时觉得是一个挺有挑 ... -
dx11 Shaders for maya
2014-06-09 17:48 2178我准备花点时间来弄点d ... -
Maya plugin with OpenCL C++ example
2014-04-23 12:19 3206GPU, Python and Maya使用的是python和 ... -
cmdReporterHighlighter
2014-01-19 19:30 891A syntaxhighlighter I wrote ... -
那条线代表什么
2013-11-07 12:32 1261好几个月前我问了前同事一个问题:那条线代表什么? 同事在玩 ... -
Modern OpenGL with python (freeglut, glfw, PySide/PyQt)
2013-11-04 15:28 6556Base on this tutorial 基于这个教程 ht ... -
python视频教程 更新22(完)
2013-09-07 20:31 2286实际上最后的类实战的ood是不正确,虽然Point类和Vect ... -
Add MEL syntax highlighting for expression editor[给表达式编辑器添加mel的高光显示]
2013-08-30 18:16 1960I don't use mel for years. But ... -
GPU, Python and Maya
2013-06-27 17:32 3154Here an example how to use pyop ... -
mentalray cause maya2012 crash on standalone mode
2013-03-28 20:27 1097如果你想使用maya2012和python来做些批处理,你就要 ... -
python基础视频教程
2013-08-14 15:56 1725我打算做一系列的python基础视频教程。 目前的计划是从0基 ... -
convert color image to grayscale with pyopencl(example code)
2013-03-09 20:38 2274grayscale.py import pyopencl as ... -
sierpinski triangle 2d in maya(with python API 2.0)
2012-10-22 20:41 2037在国庆前我刚好完成手上的工作,有两三天的空闲,于是就去 ... -
mel,cmds,python API哪个更快?
2012-09-13 14:37 3963昨天偶然的跟同事谈论 ... -
Maya Python API 2.0 - MGlobal
2012-08-31 18:07 2317MGlobal是一个静态类,提供通用的API涵数. 包括获取m ... -
Get Reversed Normal Faces(获取反法线面)
2012-08-20 18:34 1765这不是一个教程,这是 ... -
Maya Python API 2.0 - MSelectionList
2012-07-09 14:03 2548从Maya2012开始我们迎来了新的Python API, ... -
我讨厌给UI起名字,也懒得起名字
2012-07-05 14:35 1368从我开始给Maya开发UI工具的时候起就觉得给窗口起名是件麻烦 ... -
算法(algorithm) 101
2012-07-02 23:01 1178在Maya中实现深度/广度优先搜索算法 Depth-First ... -
使用Visual C++ 2010 Express来开发Maya x64插件
2012-07-02 22:57 4990Visual C++ 2010 Express是微 ...
相关推荐
**塞尔皮斯基三角形(Sierpinski Triangle)** 塞尔皮斯基三角形,又称为谢尔宾斯基三角或谢尔宾斯基金字塔,是数学中一个经典的分形几何形状。这个图形是由波兰数学家瓦迪斯瓦夫·塞尔皮斯基在1915年提出的。它...
在实际编程中,`sierpinski_triangle-main`可能是一个包含上述代码的主程序文件,运行这个文件将在Python环境中展示塞尔平斯基三角形的绘制过程。通过调整迭代深度,你可以控制图形的复杂程度,深度越高,图形的细节...
ifs算法实现sierpinski三角形程序,Julia集
Sierpinski金字塔,也称为Sierpinski三角形,是一种经典的分形几何形状,它在数学、艺术和计算机科学中都有广泛的应用。分形是那些具有自相似性且细节无限重复的几何形状,无论放大多少倍,都会呈现出相同的结构模式...
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实现
在开源软件的背景下,"Sierpinski's Triangle-开源"项目可能是一个编程实现,允许用户在不同的编程语言中生成或展示谢尔宾斯基三角形。开源意味着源代码对公众开放,开发者可以自由地查看、修改和分享代码,这促进了...
请首先查看右侧的示例选项卡... 下载后,在 Matlab 控制台中输入“doc Sierpinski_octostar”或“help Sierpinski_octostar”以获得支持。 要从随附的文件文档中受益,请务必下载该文件,而不仅仅是复制和粘贴它。
在提供的`sierpinski_triangle.m`文件中,代码可能包含以下几个关键部分: 1. **参数设置**:定义初始三角形的顶点坐标,以及迭代次数(决定分形的精细程度)。 2. **绘图函数**:使用MATLAB的绘图命令如`plot`或`...
该函数提供了一种生成分形图像的可行算法,特别是谢尔宾斯基三角形。 该函数打开一个新图形并绘制给定迭代次数的结果,该迭代次数必须大于或等于 0。应该考虑到迭代次数越多,... 使用示例: sierpinski_triangle(6);
看的见的算法 7个经典应用诠释算法精髓(8)-分形图的绘制:计算机生成艺术 09-Fractal-Drawing ...9-5 Sierpinski 分形绘制.mp4 9-6 Sierpinski 三角形.mp4 9-7 编写Koch雪花分形.mp4 9-8 利用分形绘制树.mp4
function sierpinski_triangle_in_quadrants(n) % 画出四个子三角形 x = [0, 1, sqrt(3)/2, 0]; y = [0, 0, 1, 1]; for i = 1:4 % 平移每个子三角形到正确的位置 xq = x + [i/2 - 1/2, (i+1)/2 - 1/2, (i+1)/2...
- 使用矩阵绘制和转换2D和3D图形- 使用 复杂数字制作Mandelbrot和Julia集等彩色设计 - 使用递归创建分形,如Koch雪花和Sierpinski三角形 - 生成虚拟绵羊在草地上吃草并自主繁殖 - 使用遗传算法破解密码 当您完成本书...
Sierpinski Triangle 分形,具有以非整数维形式充填空间的形态特征。 通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后的形状”,即具有自相似的性质。
Sierpinski海绵,也称为Sierpinski海绵体或Sierpinski多孔体,是一种在数学和计算机科学领域常见的分形结构。它是由波兰数学家Wacław Sierpiński于1915年提出的,是Sierpinski三角形的三维扩展。这个算法在计算机...
克隆: git clone https://github.com/patrickstocklin/sierpinski-fractal-triangle 将Sierpinski.html的路径粘贴到您首选的Web浏览器中 分形! 您可以通过打开Sierpinski并在initVertexBuffers(gl)中编辑var ...
在这个项目中,`sierpinski_triangle`是MATLAB编写的函数,能够根据用户指定的迭代次数,计算、显示并保存2D或3D空间中的Sierpinski分形三角形。这表明该功能不仅限于平面图形,还可能扩展到了三维空间,为用户提供...
OpenGL是一个用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。它提供了一系列函数来绘制基本的几何图形,如点、线和多边形,并支持纹理映射、阴影效果等高级功能。OpenGL的核心思想是通过定义顶点...