Maya应用之双倍位移节点的创建
白羽 2018-06-22 来源 :网络 阅读 2645 评论 0

摘要:本文将带你了解Maya应用之双倍位移节点的创建,希望本文对大家学Maya有所帮助。




maya的节点就像一个黑箱子,里面做什么操作不用过问,只需要给它输入值和然后给你计算出输出值,里面具体的算我我们自己按照需要来实现,其中最重要的两个,一个是MDataBlock,一个是MDataHandle,我们的输入,输出,属性值都是通过datablock来计算的,那么要想访问datablock内部的数据,我们的需要datahandle来实现,具体实现大概有五步:

1、根据data block的指定属性来获取data handle

2、通过data handle获取数据

3、执行我们设计的运算

4、获取一个output handle可以将我们的数值储存在data block中

5、将我们计算的数值通过output handle储存在data block中

比如下面这个节点,我们定义了两个属性,一个是input,另一个是output,中间的计算就是将input乘以2在输出,算法很简单了,下面是具体的代码,基本按照套路就可以写出来。

[python] view plain copy
1. <pre name="code" class="python">  
[python] view plain copy
1. import maya.OpenMayaMPx as ommp  
2. import maya.OpenMaya as om  
3.   
4. class DoubleNode(ommp.MPxNode):  
5.     kPluginNodeId = om.MTypeId(0x00000001)  
6.   
7.     aInput = om.MObject()  
8.     aOutput = om.MObject()  
9.   
10.     def __init__(self):  
11.         ommp.MPxNode.__init__(self)  
12.   
13.     def compute(self, plug, data):  
14.         if plug != DoubleNode.aOutput:  
15.             return om.MStatus.kUnknownParameter  
16.   
17.         inputValue = data.inputValue(DoubleNode.aInput).asFloat()  
18.         inputValue *= 2.0  
19.         hOutput = data.outputValue(DoubleNode.aOutput)  
20.         hOutput.setFloat(inputValue)  
21.         data.setClean(plug)  
22.   
23. def creator():  
24.         return ommp.asMPxPtr(DoubleNode())  
25.   
26. def initialize():  
27.     nAttr = om.MFnNumericAttribute()  
28.   
29.     DoubleNode.aOutput = nAttr.create('output', 'out', om.MFnNumericData.kFloat)  
30.     nAttr.setWritable(False)  
31.     nAttr.setStorable(False)  
32.     DoubleNode.addAttribute(DoubleNode.aOutput)  
33.   
34.     DoubleNode.aInput = nAttr.create('input', 'in', om.MFnNumericData.kFloat)  
35.     nAttr.setKeyable(True)  
36.     DoubleNode.addAttribute(DoubleNode.aInput)  
37.     DoubleNode.attributeAffects(DoubleNode.aInput, DoubleNode.aOutput)  
38.   
39. def initializePlugin(obj):  
40.     plugin = ommp.MFnPlugin(obj, 'Lulongfei', '1.0', 'Any')  
41.     try:  
42.         plugin.registerNode('doublerNode', DoubleNode.kPluginNodeId, creator, initialize)  
43.     except:  
44.         raise RuntimeError, 'Failed to register node'  
45.   
46. def uninitializePlugin(obj):  
47.     plugin = ommp.MFnPlugin(obj)  
48.     try:  
49.         plugin.deregisterNode(DoubleNode.kPluginNodeId)  
50.     except:  
51.         raise RuntimeError, 'Failed to register node'  
 
[python] view plain copy


 

下面是实现的效果图:

 

 Maya应用之双倍位移节点的创建


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标常用软件之Maya频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程