[Maya API] 一、基本类型介绍
1、Maya API基本结构
1.1 API语言支持
C++ API(Application Programmer Interface) 比MEL和Python有更好的性能,你可以使用API创建你自己的新的节点,运算能力超过MEL大约10倍,你也可以使用API调用MEL脚本
Python API基于C++ API构建的可以使用python编程的API,现在Python API具有1.0和2.0两个版本
1.2 API 编译的插件后缀
Linux:.so
Window:.mll
Mac OS X: .bundle
通用型插件:.py
1.3 API内置库
OpenMaya 基本的操作工具类
OpenMayaUI 界面工具类
OpenMayaAnim 动画工具类
OpenMayaFX 特效工具类
OpenMayaRender 渲染工具类
1.4 API命名规则
M classes -基本的数据类型 类似python中的字符串这些基本类型
MFn - Function 函数工具类
MIt - Iterator 迭代器类型
MPx - 代理类型,扩展Maya功能需要继承的类
如果要使用API,则需要把节点或者物体初始化为以M开头的类型,API才能识别
MFn:我们可以通过这种方法,针对不同的物体进行各自的操作
MIt:对于一批物体需要逐个访问、要使用这种迭代器类型,使用循环挨个访问他们的元素
MPx:按照这种格式编写好插件,Maya就可以根据定义好的格式来加载这些插件,人工编写,Maya自动识别
2.DependencyNode 和 DagNode
DependencyNode Maya最基本的节点种类
在maya中,所有的节点都是一个DependcyNode(依赖节点),我们所有的数据都是依赖于节点来计算的,每个节点存储了我们所需要的数据,节点之间的相互计算,形成节点网络,也就形成了我们最终的文件。那么最基本的一个节点就是DependencyNody,类似我们的材质节点,独立的单个节点。
Maya DagNode就是带有层级关系的,也就是说在大纲里,我们就可以设置他的父子关系了。DagNode是从DenpendcyNode扩展而来的,DagNode拥有DependcyNode的所有方法,可以使用DependcyNode的方法来处理任何一个DagNode,但是类似于层级操作这种,比如获取物体的上下级关系
3.Mobject Maya最基本的对象指针
Maya API类型基础类型,所有类型继承于此。代表一个指向节点的指针
Mobject:Maya最基本的一个对象,如果使用API的话,Mobject是我们处理的最基本的一个数据,就像python编程中,一个变量,虽然时字符串或者整数,它都是一个python的基本对象。在Maya API中,它不能以字符串这种来处理节点,必须要转化程一个MObject才能处理,也就是说Maya中任何一个对象都是一个Object,当然处理类似于他的名字、属性值,这种字符串或者数值例外,也就是说这是一个最基本的索引。他指向了每一个节点,我们在处理某一个节点就认为他是一个MObject。
如何查询Maya API文档:
~MObject 析构函数:一般不会用到它,除非我们编写节点的时候,需要用到他来清理内存
如何创建一个MObject?
我们要使用Maya API就要先导入OpenMaya
import Maya.OpenMaya as OpenMaya
创建一个MObject
import Maya.OpenMaya as OpenMayaOpenMaya.MObject()
那么,他生成了一个MObject,但是这个Object是空的,因为我们没有给他指向任何一个物体。
我们需要给Object传入一个物体,所以我们可以借用pymel来生成一个物体
import maya.OpenMaya as OpenMaya
import pymel.core as pmball_pml_node = pm.PyNode('pSphere1') #ball_pml_node为pymel节点,
ball_api_node = ball_pml_node.__apimobject__() #生成了一个MDagPath,与OpenMaya.MObject相同, #但它指向的是一个物体
ball_api_node.isNull() #判断API节点是否为空
ball_api_node.apiType() #api节点类型
我们在处理任何一个节点时,都要转化为MObject。任何一个DagNode,也就是说大纲里的物体都是一个DenpendecyNode也都拥有MObject,那么他当然有自己的一种索引方式,就是DagPath。
DagPath
我们可以新定义一个DagPath,也可以从另一个DagPath来生成一个新的DagPath,这个他就会追踪我们大纲里的一个节点,方法要比刚才的MObject要多,它还有静态的方法,也就是说我们可以通过一个刚才的类似于那种MObject来抓取他的DagPath,或者是直接从PyMel来生成。
静态方法的意思是:我们没有实例化一个结点之前我们就可以调用他的这些通用的方法。
import maya.OpenMaya as OpenMaya
import pymel.core as pmball_pml_node = pm.PyNode('pSphere1') #ball_pml_node为pymel节点,
ball_api_node = ball_pml_node.__apimobject__() #生成了一个OpenMaya.MObject#但它指向的是一个物体ball_dag_path = OpenMaya.MDagPath() #创建一个空的DagPath对象OpenMaya.MDagPath.getAPathTo(ball_api_node,ball_dag_path)"""
执行逻辑就是抓取MObject的DagPath存储到一个DagPath中
"""ball_dag_path.fullPathName() #在大纲里的一个长名ball_dag_path.partitialPathName() #在大纲的短名
总结:
MObject:任何一个节点,都通过把它交给API来处理。
MDagPath:可以把大纲里的物体通过它来交给API进行处理
MObject与MDagPath也是有联系的,我们可以通过MDagPath找到物体对应的MObject,也可以通过传入MObject,给物体定义好一个DagPath来处理他的层级关系。
[Maya API] 一、基本类型介绍相关推荐
- MAYA API插件编程--入门篇
MAYA API插件编程--入门篇 作者:华文广 日期:2010.11.28 我们知道,MAYA是一个基于结点的插件式软件架构,这种开放式的软件架构是非常优秀的,它可以让用户非常方便 ...
- REST API 概念的简单介绍
REST API 概念的简单介绍 最近发现很多人不了解REST是什么,我综合了下网上的文章,摘录了一下. 首先要明确一点:REST(Representational State Transfer,表述 ...
- 如何理解和学习MAYA API
此文转载中国影视特效界水神梁潮坡先生的博客.http://blog.sina.com.cn/s/blog_60b3e1ab0100hf9m.html点击打开链接 有兴趣的朋友可以看看,觉得没什么需要的 ...
- oracle中的几大对象,oracle 4个大对象(lobs)类型介绍
oracle 4个大对象(lobs)类型介绍 在oracle中,有4个大对象(lobs)类型可用,分别是blob,clob,bfile,nclob. 下面是对lob数据类型的简单介绍. blob:二进 ...
- Maya API编程教学for TD:MEL加密技术
Maya API编程教学for TD:MEL加密技术 和AboutCG合作的Maya API(几个月前)上线,地址:http://www.aboutcg.org/course/tut_melapi_1 ...
- 什么是 PaaS? PaaS 类型介绍
" 一个互联网技术玩家,一个爱聊技术的家伙.在工作和学习中不断思考,把这些思考总结出来,并分享,和大家一起交流进步." | 本文 | 2300字 | 阅读大约需要5分钟 本文译自 ...
- 智能合约语言Solidity 类型介绍
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约语言Solidity 类型介绍11 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合 ...
- MySQL复制类型介绍
MySQL复制类型介绍: (1)同步复制:MASTER提交事务,直到事务在所有的Slave都已提交,此时,才会返回给客户端,事务执行完毕. 缺点:完成一个事务可能会有很大的延迟. slave1 MAs ...
- nginx虚拟主机概念和类型介绍
nginx虚拟主机配置实战 1,虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服 ...
最新文章
- android 绘画,Android绘图基础
- windows下mysql和linux下mysql主从配置
- linux为用户配置java环境变量
- NeurIPS 2019 开源论文 | 万能的GNN解释器
- debian linux 安装smb 配置
- 工业以太网交换机的专业术语
- [学习笔记]批次需求计划系统-简要
- mysql求和 子查询_MYSQL 查询方法 统计查询 链接查询 子查询
- Embedding技术在房产推荐中的应用(文末附PPT下载链接)
- python cx_oracle配置_用Python设置cx_Oracle环境变量
- CSDN没有C币如何下载文章?
- 人工智能导论(专家系统)
- 蓝色对比关系图表合集PPT模板
- 转:getParameter、getParameterValues、getParameterMap用法详解
- 买卖股票的最优时机含手续费(LeetCode-714)
- DateTime日期差
- java: You aren't using a compiler supported by lombok, so lombok will not work and has been disab...
- vm进入bios设置的方法
- 最全bazle中文教程(转载)
- 固态硬盘分为哪几种_通俗易懂 SSD固态硬盘接口有哪几种类型的图解
热门文章
- 转:Top 10 Strategic Technology Trends for 2019
- html中js控制分页,js控制分页打印、打印分页示例
- P5.js:改进创意动态绘板
- Unity使用EmmyLua打断点
- 用RAR做绿色软件安装-自己动手-
- Excel | App_WorkbookActive中存在错误不能设置类 Addin 的Installed属性
- Power Artist PA功耗仿真
- 导数求函数的单调性与极值
- 社区动力DISCUZ资料库
- 【英语】大学英语CET考试,翻译部分(修饰后置,定语从句,插入语,多动句,无主句)