`
schi
  • 浏览: 205974 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

sineNode.py

阅读更多
前面的helloWorldCmd.py和helixCmd.py展示了自定义命令及带参数命令的写法,我们接下来看看自定义节点的写法。

这个节点和表达式中的sin方法是同样的功能。

sin及表达式的使用
http://download.autodesk.com/us/maya/2010help/index.html?url=Useful_functions_sin.htm,topicNumber=d0e175415

sineNode.py
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
# python:
# import maya
# maya.cmds.loadPlugin("sineNode.py")
# maya.cmds.createNode("spSineNode")
# maya.cmds.getAttr("spSineNode1.output")
#
# Mel:
# loadPlugin sineNode;
# createNode spSineNode;
# getAttr spSineNode1.output;

import math, sys
import maya.OpenMaya as om
import maya.OpenMayaMPx as ompx

# 定义节点名称以及ID
kPluginNodeTypeName = 'spSineNode'
sineNodeId = om.MTypeId( 0x8700 )

# node definition
# 定义节点
class sineNode( ompx.MPxNode ):
    '''
    sine node
    '''

    # class variables
    input = om.MObject()
    output = om.MObject()
    
    def __init__( self ):
        super( sineNode, self ).__init__()
    
    # 节点的计算函数
    # plug是MPlug的实例
    # dataBlock是MDataBlock的实例
    def compute( self, plug, dataBlock ):
        # 需要更新的属性sineNode.output
        if ( plug == sineNode.output ):
            # 想要接收的属性sineNode.input
            # 用它来创建数据区段,返回数据柄
            dataHandle = dataBlock.inputValue( sineNode.input )
            
            # 将数据柄的数据转为浮点数
            # 需MDataHandle来处理
            inputFloat = dataHandle.asFloat()
            # 通过计算,得出我们需要的结果
            result = math.sin( inputFloat ) * 10.0
            # 用sineNode.output来创建数据区段,用来写入数据
            outputHandle = dataBlock.outputValue( sineNode.output )
            # 将result写入数据区段
            outputHandle.setFloat( result )
            # 更新节点
            dataBlock.setClean( plug )
            
# creator
# 创建节点
def nodeCreator():
    return ompx.asMPxPtr( sineNode() )

# initializer
# 初始化节点
def nodeInitializer():
    # input
    # 输入
    nAttr = om.MFnNumericAttribute()
    # 创建input属性
    sineNode.input = nAttr.create( 'input', 'in',
                                  om.MFnNumericData.kFloat, 0.0 )
    nAttr.setStorable( 1 )
    
    # output
    # 输出
    nAttr = om.MFnNumericAttribute()
    # 创建output属性
    sineNode.output = nAttr.create( 'output', 'out',
                                   om.MFnNumericData.kFloat, 0.0 )
    nAttr.setStorable( 1 )
    nAttr.setWritable( 1 )
    # add attributes
    # 将创建的属性添加给节点
    sineNode.addAttribute( sineNode.input )
    sineNode.addAttribute( sineNode.output )
    # input属性会影响output属性
    sineNode.attributeAffects( sineNode.input, sineNode.output )
    
# initialize the script plug-in
def initializePlugin( mobject ):
    mplugin = ompx.MFnPlugin( mobject )
    try:
        mplugin.registerNode( kPluginNodeTypeName,
                             sineNodeId,
                             nodeCreator,
                             nodeInitializer )
    except :
        sys.stderr.write( "Failed to register node: %s" % 
                         kPluginNodeTypeName )
        raise
# uninitialize the script plug-in
def uninitializePlugin( mobject ):
    mplugin = ompx.MFnPlugin( mobject )
    try:
        mplugin.deregisterNode( sineNodeId )
    except :
        sys.stderr.write( 'Failed to register node: %s' % 
                         kPluginNodeTypeName )
        raise

你可以在maya安装目录下的devkit/plug-ins/scripted找到sineNode.py。
在线版
http://download.autodesk.com/us/maya/2010help/API/sine_node_8py-example.html
0
0
分享到:
评论

相关推荐

    科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器

    科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法模拟器.py科学计数法...

    google_auth-1.23.0-py2.py3-none-any.whl____python 包

    google_auth-1.23.0-py2.py3-none-any.whl python 包 google_auth-1.23.0-py2.py3-none-any.whl python 包 google_auth-1.23.0-py2.py3-none-any.whl python 包google_auth-1.23.0-py2.py3-none-any.whl python 包 ...

    python安装模块如何通过setup.py安装(超简单)

    有些时候我们发现一些模块没有提供pip install 命令和安装教程 , 只提供了一个setup.py文件 , 这个时候如何安装呢? 步骤 打开cmd 到达安装目录 python setup.py build python setup.py install 总结 以上所述是...

    get-platformio.py

    get-platformio.py get-platformio.py get-platformio.py get-platformio.py

    web.py 中文手册

    web.py 中文手册 webpy coobookweb.py 中文手册 webpy coobookweb.py 中文手册 webpy coobookweb.py 中文手册 webpy coobookweb.py 中文手册 webpy coobookweb.py 中文手册 webpy coobookweb.py 中文手册 webpy ...

    pyinstxtractor.py 反编译pyinstaller打包的程序

    pyinstxtractor.py 反编译pyinstaller打包的程序 使用方法 python pyinstxtractor.py 示例:python pyinstxtractor.py main.exe

    python2.7中所用的get-pip.py文件+安装方法

    `get-pip.py`是一个Python脚本,它的主要作用是为没有预装`pip`的Python环境安装`pip`。在Python 2.7中,由于某些系统可能没有默认提供`pip`,或者`pip`版本过低,`get-pip.py`就显得非常有用。这个脚本可以下载并...

    web.py中文版用户手册

    web.py 是一个轻量级Python web框架,它简单而且功能强大。web.py是一个开源项目。该框架由美国作家、Reddit联合创始人、RSS规格合作创造者、著名计算机黑客Aaron Swartz开发。web.py目前已被很多家大型网站所使用。

    python3.6 get-pip.py

    curl https://bootstrap.pypa.io/pip/3.6/get-pip.py -o get-pip.py python get-pip.py

    有理数模拟器.py有理数模拟器.py

    有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py有理数模拟器.py...

    实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py

    实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数模拟器.py实数...

    python_docx-0.8.10-py2.py3-none-any.whl

    估计这个安装包还只兼容python 2(python2 和python3差别还是挺大的,虽然现在python 3出来很久了,但是不少三方库还没有更新),因此需要自己找一个兼容的包:python_docx-0.8.6-py2.py3-none-any.whl。然后在...

    二叉树模拟器.py二叉树模拟器.py

    二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py二叉树模拟器.py...

    Python3 py转exe.py

    py转exe.py py转exe.py py转exe.py py转exe.pypy转exe.py py转exe.py py转exe.py py转exe.pypy转exe.py py转exe.py py转exe.py py转exe.pypy转exe.py py转exe.py py转exe.py py转exe.pypy转exe.py py转exe.py py转...

    PyPI 官网下载 | yolov5-5.0.0-py36.py37.py38-none-any.whl

    资源来自pypi官网。 资源全名:yolov5-5.0.0-py36.py37.py38-none-any.whl

    pip-20.3.4-py2.py3-none-any.whl

    pip-20.3.4-py2.py3-none-any.whl

    绩点计算器.py绩点计算器.py

    绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点计算器.py绩点...

    随机点名器.py随机点名器.py

    随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机点名器.py随机...

    循环队列模拟器.py循环队列模拟器.py

    循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列模拟器.py循环队列...

    web.py中文教程_脚本之家.docx

    Web.py Cookbook 简体中文版手册 欢迎来到web.py 0.3的Cookbook。提醒您注意:某些特性在之前的版本中并不可用。当前开发版本是0.3。 web.py 是一个轻量级Python web框架,它简单而且功能强大。web.py是一个开源项目...

Global site tag (gtag.js) - Google Analytics