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] 一、基本类型介绍相关推荐

  1. MAYA API插件编程--入门篇

    MAYA API插件编程--入门篇 作者:华文广          日期:2010.11.28 我们知道,MAYA是一个基于结点的插件式软件架构,这种开放式的软件架构是非常优秀的,它可以让用户非常方便 ...

  2. REST API 概念的简单介绍

    REST API 概念的简单介绍 最近发现很多人不了解REST是什么,我综合了下网上的文章,摘录了一下. 首先要明确一点:REST(Representational State Transfer,表述 ...

  3. 如何理解和学习MAYA API

    此文转载中国影视特效界水神梁潮坡先生的博客.http://blog.sina.com.cn/s/blog_60b3e1ab0100hf9m.html点击打开链接 有兴趣的朋友可以看看,觉得没什么需要的 ...

  4. oracle中的几大对象,oracle 4个大对象(lobs)类型介绍

    oracle 4个大对象(lobs)类型介绍 在oracle中,有4个大对象(lobs)类型可用,分别是blob,clob,bfile,nclob. 下面是对lob数据类型的简单介绍. blob:二进 ...

  5. Maya API编程教学for TD:MEL加密技术

    Maya API编程教学for TD:MEL加密技术 和AboutCG合作的Maya API(几个月前)上线,地址:http://www.aboutcg.org/course/tut_melapi_1 ...

  6. 什么是 PaaS? PaaS 类型介绍

    " 一个互联网技术玩家,一个爱聊技术的家伙.在工作和学习中不断思考,把这些思考总结出来,并分享,和大家一起交流进步." | 本文 | 2300字 | 阅读大约需要5分钟 本文译自  ...

  7. 智能合约语言Solidity 类型介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约语言Solidity 类型介绍11 Solidity是以太坊智能合约编程语言,阅读本文前,你应该对以太坊.智能合 ...

  8. MySQL复制类型介绍

    MySQL复制类型介绍: (1)同步复制:MASTER提交事务,直到事务在所有的Slave都已提交,此时,才会返回给客户端,事务执行完毕. 缺点:完成一个事务可能会有很大的延迟. slave1 MAs ...

  9. nginx虚拟主机概念和类型介绍

    nginx虚拟主机配置实战 1,虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服 ...

最新文章

  1. android 绘画,Android绘图基础
  2. windows下mysql和linux下mysql主从配置
  3. linux为用户配置java环境变量
  4. NeurIPS 2019 开源论文 | 万能的GNN解释器
  5. debian linux 安装smb 配置
  6. 工业以太网交换机的专业术语
  7. [学习笔记]批次需求计划系统-简要
  8. mysql求和 子查询_MYSQL 查询方法 统计查询 链接查询 子查询
  9. Embedding技术在房产推荐中的应用(文末附PPT下载链接)
  10. python cx_oracle配置_用Python设置cx_Oracle环境变量
  11. CSDN没有C币如何下载文章?
  12. 人工智能导论(专家系统)
  13. 蓝色对比关系图表合集PPT模板
  14. 转:getParameter、getParameterValues、getParameterMap用法详解
  15. 买卖股票的最优时机含手续费(LeetCode-714)
  16. DateTime日期差
  17. java: You aren't using a compiler supported by lombok, so lombok will not work and has been disab...
  18. vm进入bios设置的方法
  19. 最全bazle中文教程(转载)
  20. 固态硬盘分为哪几种_通俗易懂 SSD固态硬盘接口有哪几种类型的图解

热门文章

  1. 转:Top 10 Strategic Technology Trends for 2019
  2. html中js控制分页,js控制分页打印、打印分页示例
  3. P5.js:改进创意动态绘板
  4. Unity使用EmmyLua打断点
  5. 用RAR做绿色软件安装-自己动手-
  6. Excel | App_WorkbookActive中存在错误不能设置类 Addin 的Installed属性
  7. Power Artist PA功耗仿真
  8. 导数求函数的单调性与极值
  9. 社区动力DISCUZ资料库
  10. 【英语】大学英语CET考试,翻译部分(修饰后置,定语从句,插入语,多动句,无主句)