`
schi
  • 浏览: 206397 次
  • 性别: 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 总结 以上所述是...

    vn.py 2.0.7代码分析入门.docx

    vn.py 是一个基于Python语言构建的开源量化交易平台,专为金融市场的量化交易提供服务。它以其机构级的特性,如高效、稳定和可扩展性,成为国内量化交易者的重要工具。vn.py 2.0.7是其最新的版本,本文档旨在引导...

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

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

    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 ...

    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循环队列...

Global site tag (gtag.js) - Google Analytics