python运用maya_Maya中Python脚本的使用(一)
一、Maya中使用Python的基础知识。
Maya支持在任何使用MEL命令的地方使用Python样式的脚本。通过Python脚本可以访问所有的内置Maya命令(如sphere、Is等)。
在Maya程序里调用Python和调用MEL有很多不同之处,因为它们二者的语言编写方式存在着很大不同。下面就来介绍在Maya里使用Python的-些基础知识。
1.1在Maya里输入Phthon命令
以下是在Maya里调用Python命令的几种方法。
01脚本编辑器。
为了方便同时在Maya中使用MEL和Python脚本,脚本编辑器中有MEL和Python的不同编译器。只要进入MEL编译器,就直接把命令发送到MEL处理器;同样,进入Python编译器,就直接启用Python处理器执行命令。
在返回Python结果前面使用注释#字符来标识。在脚本编辑器中,可以使用自动拼写功能来帮助查找指令。
02命令框与工具架。
当希望执行一个指令的时候,可以通过单击命令框的后缀来选择进入MEL还是Python指令,如下图(左)所示。
如果要把命令放入工具架,那么可以使用鼠标中键拖动MEL脚本或Python脚本,将其移动至工具架上,此时系统会弹-一个对话框,提示保存脚本类型是MEL还是Python,如下图(右)所示。
03 Maya的Python模块。
Python的指令大部分已经绑定在本机的Maya命令中,比如Cmds模块。为了访问这些命令,
必须进入下面的Python编泽器进行脚本编辑:
import maya.cmds
这是允许用户使用的Maya命令。
例如:
maya.cmds.Is()
maya. cmds. sphere( radius=4)
当然也可以把模块用更简短的形式导入Maya,
例如:
import maya.cmds as cmd
cmad.sphere()
导入maya.cmds后,自动保存在userSetup.py文件中,用户可以按自己喜欢来修改它的名
字,例如下面的例子:
import maya.cmds as mc mc. sphere()
或者把Maya命令导入并作为顶层指令使用:
from maya.cmds import
之后就可以直接调用Maya命令:
Is() sphere( radius=4 )
把Maya命令导入并作为顶层指令使用会覆盖掉Python内置和其他模块。
1.2 后缀(命令格式)
Python后缀处理方式和在MEL后缀处理方式也有很大不同。MEL被设计成Shell命令方式的语法。在Python中 的Maya命令的格式语法已经完全符合了Python的执行方式。
01 简单的后缀。
MEL中创建球体命令如下:
sphere -radius 4;
在Python中,半径后缀被改写,而这更像是数据传递:
maya.cmds.sphere( radius=4 )
02 多组数据。
如果一个后缀多个数据的话,那么必须把数据转化成表或数组。下面是一个后缀中有3个数据的例子:
#元组:
maya.cmds.ambientLight( rgb=( 0.2, 0.3, 0.4))
#列表:
maya.cmds.ambientLight( rgb=[0.2, 0.3, 0.4])
03 判定格式(真/假)。
一般的命名后缀必须赋于相关的数值,但是Maya的后缀并不都需要数值,例如Is-sl, 为了保持相同的语法,在Maya中的Python规定要求给不带数值的后缀赋于布尔真假值( True/False )。如果布尔值为假,那么后缀就为空;如果其值为真,则后缀需要被执行。例如:
#列出选择 :
maya.cmds.Is( selection=True )
#不列出选择:
maya.cmds.Is( selection=False )
04 命名多个后缀。
有些后缀使用时需要多个后缀在同一条命令中。例如在MEL中的定义:
Is -type nurbsSurface -type transform;
Python需要使用已经定义过格式类型的后缀,并赋于其列表或数组变量:
maya.cmds.Is( type=["nurbsSurface' 'transform'] )
在上面例子中,后缀带有多个值,并且被多次使用,它的值是列表或数组。数组可以代替列表,这样可以使用由数组组成的列表、列表组成的数组或数组组成的数组。例如,在MEL中的curveOnSurface命令:
curveOnSurface -d3 -uv 00 -uv 0.30.5 -uv 0.5 0.6-uv 0.9 1.0 surface1;
在Python中:
maya cmds.curveOnSuriace( 'surface1',d=3,uv=[(0,0).(0.3,0.5),(0.5,0.6),(0.9, 1,0)])
如果过多地使用后缀,Python则会返回一个重复关键后缀的错误。
05 范围。
Maya命令中有3种类型的范围:时间、索引和浮点。在Python中必 须使用元组指定所有范围。任意元组都可能有一一个或两个值。具有一个值的元组指定为一个值(加括号并后跟逗号) ;多个单值元组使用集表示法指定。
时间范围也支持单位。若要指定单位,必须使用字符串。由于每个值是单独解析的,因此可以混合使用单位。
以下是有效的时间范围:
(1,)(1,10) ("1sec',' 10sec") ("1min:2min')
下表以cutKey命令为例来指定时间范围和索引范围。
06 对Maya某些命令标志的更改。
对Maya命令所做的某些标志更改是必需的,因为Python中的多用途标志的参数必须以列表传递给标志。对于其中必须混合并匹配多用途标志的命令而言,这将导致出现问题。由于Python每个多用途标志的参数均以单独的列表提供,因此无法将这些参数混合使用。已扩展依赖于此的几个命令,以便单个多用途标志可以处理各个多用途标志的作业。
这些命令包括:
●polyAppendVertex :可用于取代point、vertex和hole标志 的新append标志。
●polyAppend :可用于取代point、edge和hole标志 的新append标志。
●polySplit :可以用于取代facepoint和edgepoint标志的新insertpoint标志。
●polyCreateFacet:经过修改后可用于指定洞的现有point标志。
●roundConstantRadius :可替换使用应该混合使用的sidea和sid b的新side标志。
CommandsPython参考文档中记录了所有这些标志的使用。
在所有情况下,这些标志都是向后兼容的。所有旧标志仍保留在原位。
1.3 参数和对象
除了标志,Maya命令还使用参数和对象。参数是命令所需的固定类型的值。例如,move命令使用3个参数表示移动的X、Y和Z值。对象是命令在其上操作的实体(例如,场景中的某个对象或UI元素)。基于当前的选择列表,一个命令针对的对象数量是变化的,并且有时对象是隐式的。
对象和参数将如同在MEL中一样传递给命令,但传递的顺序必须如下所示:
command arguments object flags/named arguments
这不同于MEL, MEL中的排序要求对象显示在参数列表结尾处。但是,Python要求命名参数显示在所有其他参数之后。
1.4 后缀类型对照表
下表为在Maya Python模块中,后缀类型变化的简单对照。
1.5 标准输入( stdin )实现
Python支持从STDIN (标准输入)进行读取。在Python中, 这是通过从sys.stdin进行读取或调用raw_ input来实现的。
Maya会使用其自身的实现来覆盖sys stdin。如果要使用Python自身的标准输入对象,可通过引用sys._ stdin__ 来实现此目的。
示例:
在Script Editor (脚本编辑器)中输入以下内容之一来显示Python STDIN对话框:
●使用raw input
raw_ input()
●使用sys.stdin
import sys
inp = sys. stdin.eadline()
●自定义命令提示
import maya.cmds as cmds
inp = cmds.promptDialog(message= hello')
python运用maya_Maya中Python脚本的使用(一)相关推荐
- python和revit_Revit中Python脚本使用技术训练视频教程
本视频教程是由Lynda机构出品的Revit中Python脚本使用技术训练视频教程,时长:3小时08分,大小:500 MB,MP4高清视频格式,附工程源文件,教程使用软件:Python, Revit, ...
- 【Python】 linux中python命令的命令行参数
Python命令行参数 原文地址:http://blog.163.com/weak_time/blog/static/25852809120169333247925/ Python的命令行参数,提供了 ...
- maya python手册_Maya中Python普及教程.doc
Maya中Python普及教程 Maya中Python普及教程 MayaPython第一篇 - 介绍大家好,这是一个简易的MAYA PYTHON学习教程.简易教程的目的是可以让更多的人快速掌握这些知识 ...
- kali查看python版本-kali中python版本的切换方法
kali中python版本的切换方法 如下所示: update-alternatives --config python 一条简单的命令,如下图所示: 以上这篇kali中python版本的切换方法就是 ...
- anaconda怎么使用python包_Anaconda中python包的介绍与使用方法
Anaconda中python包的介绍与使用方法 目录: 1.包的定义 2.常用包管理器 3.包管理器的使用方法 4.数据科学常用的包 1.包的定义 由多个和同一功能相关的模块组成,通常为含有_ini ...
- maya python插件_Maya中Python代码插件编译技术视频教程
本教程是关于Maya中Python代码插件编译技术视频教程,时长:16分,大小:45 MB,MP4高清视频格式,教程使用软件:Maya,附源文件,共1个章节,作者:Chayan Vinayak,语言: ...
- pycharm中自带python环境_Pycharm中Python环境配置常见问题解析
本文实例讲述了Pycharm中Python环境配置常见问题.分享给大家供大家参考,具体如下: 1.问题的发现 最近在用Pycharm下的命令行工具安装.运行jupyter notebook时kerna ...
- python调用edge_Abaqus中Python通过findAt方法建立region区域
--还没找到组织? CAE仿真与数值模拟公众号已设立交流群, 赶快加入和小伙伴们聊聊吧!加群方法:先加CAE仿真与数值模拟小编为好友(微信号 yanstokis),发送消息"CAE群&quo ...
- maya python 开根号_maya python
胡泳滨MayaPython简易教程,如需转载,请标明出处地址: http://huyongbin.blogbus.com/c3363976/ 谢谢配合! MayaPython第一篇 - 介绍 大家好, ...
最新文章
- MaxCompute5个窗口函数限制
- SP-1CL3 陶瓷接收管 光电接收二极管 红外线接收管
- 宠物次元经济专题分析2020
- addeventlistener事件参数_从Chrome源码看浏览器的事件机制
- 移动端取消iphone ipad默认按钮
- mysql数据库从删库到跑路之mysq索引
- laravel 图片流_Laravel 之添加图片水印
- c语言猜字游戏中期报告,c语言小程序:编写猜字游戏
- DL-based 多模态医学图像配准
- 肖文吉mysql_疯狂软件教育中心肖文吉老师_MYSQL视频教程
- Some file crunching failed, see logs for details解决方案 以及.9patch点9图片的报错的详细修改方法
- 2015070610 - 看到很多所谓的大牛
- 【计算社会科学01】为何病菌屡屡将人类推向死神?人类该如何应对
- c++逆天改命进阶--多态
- QT5.6 安装 过程,实践经历……
- docker 安装node
- excel公式编写简化,Python生成公式
- layUIselect下拉菜单
- 搜索引擎高效使用技巧
- EasyNVR无插件直播流媒体服务器云端集中管控的EasyNVS云管理平台安装使用文档
热门文章
- Java Scala获取所有注解的类信息
- 【NOIP2013模拟】七夕祭
- MASM32使用教程
- codeforces 762E(cdq分治)
- 最小生成树,回忆复习篇。
- [原创]有关PHP 中 MVC的个人见解
- 面向对象的javascript-引用、作用域、闭包、上下文--(1)
- WPF and Silverlight 学习笔记(十九):WPF更换主题
- CStringArray 字符串数组的使用 以及调试时怎么Dump出其中的内容
- 大数据之-Hadoop3.x_Hadoop_HDFS_掉线时限参数设置---大数据之hadoop3.x工作笔记0079