一、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脚本的使用(一)相关推荐

  1. python和revit_Revit中Python脚本使用技术训练视频教程

    本视频教程是由Lynda机构出品的Revit中Python脚本使用技术训练视频教程,时长:3小时08分,大小:500 MB,MP4高清视频格式,附工程源文件,教程使用软件:Python, Revit, ...

  2. 【Python】 linux中python命令的命令行参数

    Python命令行参数 原文地址:http://blog.163.com/weak_time/blog/static/25852809120169333247925/ Python的命令行参数,提供了 ...

  3. maya python手册_Maya中Python普及教程.doc

    Maya中Python普及教程 Maya中Python普及教程 MayaPython第一篇 - 介绍大家好,这是一个简易的MAYA PYTHON学习教程.简易教程的目的是可以让更多的人快速掌握这些知识 ...

  4. kali查看python版本-kali中python版本的切换方法

    kali中python版本的切换方法 如下所示: update-alternatives --config python 一条简单的命令,如下图所示: 以上这篇kali中python版本的切换方法就是 ...

  5. anaconda怎么使用python包_Anaconda中python包的介绍与使用方法

    Anaconda中python包的介绍与使用方法 目录: 1.包的定义 2.常用包管理器 3.包管理器的使用方法 4.数据科学常用的包 1.包的定义 由多个和同一功能相关的模块组成,通常为含有_ini ...

  6. maya python插件_Maya中Python代码插件编译技术视频教程

    本教程是关于Maya中Python代码插件编译技术视频教程,时长:16分,大小:45 MB,MP4高清视频格式,教程使用软件:Maya,附源文件,共1个章节,作者:Chayan Vinayak,语言: ...

  7. pycharm中自带python环境_Pycharm中Python环境配置常见问题解析

    本文实例讲述了Pycharm中Python环境配置常见问题.分享给大家供大家参考,具体如下: 1.问题的发现 最近在用Pycharm下的命令行工具安装.运行jupyter notebook时kerna ...

  8. python调用edge_Abaqus中Python通过findAt方法建立region区域

    --还没找到组织? CAE仿真与数值模拟公众号已设立交流群, 赶快加入和小伙伴们聊聊吧!加群方法:先加CAE仿真与数值模拟小编为好友(微信号 yanstokis),发送消息"CAE群&quo ...

  9. maya python 开根号_maya python

    胡泳滨MayaPython简易教程,如需转载,请标明出处地址: http://huyongbin.blogbus.com/c3363976/ 谢谢配合! MayaPython第一篇 - 介绍 大家好, ...

最新文章

  1. MaxCompute5个窗口函数限制
  2. SP-1CL3 陶瓷接收管 光电接收二极管 红外线接收管
  3. 宠物次元经济专题分析2020
  4. addeventlistener事件参数_从Chrome源码看浏览器的事件机制
  5. 移动端取消iphone ipad默认按钮
  6. mysql数据库从删库到跑路之mysq索引
  7. laravel 图片流_Laravel 之添加图片水印
  8. c语言猜字游戏中期报告,c语言小程序:编写猜字游戏
  9. DL-based 多模态医学图像配准
  10. 肖文吉mysql_疯狂软件教育中心肖文吉老师_MYSQL视频教程
  11. Some file crunching failed, see logs for details解决方案 以及.9patch点9图片的报错的详细修改方法
  12. 2015070610 - 看到很多所谓的大牛
  13. 【计算社会科学01】为何病菌屡屡将人类推向死神?人类该如何应对
  14. c++逆天改命进阶--多态
  15. QT5.6 安装 过程,实践经历……
  16. docker 安装node
  17. excel公式编写简化,Python生成公式
  18. layUIselect下拉菜单
  19. 搜索引擎高效使用技巧
  20. EasyNVR无插件直播流媒体服务器云端集中管控的EasyNVS云管理平台安装使用文档

热门文章

  1. Java Scala获取所有注解的类信息
  2. 【NOIP2013模拟】七夕祭
  3. MASM32使用教程
  4. codeforces 762E(cdq分治)
  5. 最小生成树,回忆复习篇。
  6. [原创]有关PHP 中 MVC的个人见解
  7. 面向对象的javascript-引用、作用域、闭包、上下文--(1)
  8. WPF and Silverlight 学习笔记(十九):WPF更换主题
  9. CStringArray 字符串数组的使用 以及调试时怎么Dump出其中的内容
  10. 大数据之-Hadoop3.x_Hadoop_HDFS_掉线时限参数设置---大数据之hadoop3.x工作笔记0079