Create Your Tab and LayerTabMenu In Katana
感谢 http://tool.lu/pyc/ 这个牛逼的网站能反编译pyc...他妈的Katana太他妈无耻了,竟然不让自定义加Node Tab Content....只能反编译他的东西了。。。
研究了下Katana的开发文档,做几个比较帅的事情。。。。
自定义Content

def registerMesser():
"""
Registers a new Messer node type using the NodeTypeBuilder utility class.
""" from Katana import Nodes3DAPI,NodegraphAPI
from Katana import FnAttribute def buildMesserOpChain(node, interface):
"""
Defines the callback function used to define the Ops chain for the
node type being registered. @type node: C{Nodes3DAPI.NodeTypeBuilder.Messer}
@type interface: C{Nodes3DAPI.NodeTypeBuilder.BuildChainInterface}
@param node: The node for which to define the Ops chain
@param interface: The interface providing the functions needed to set
up the Ops chain for the given node.
"""
# Get the current frame time
frameTime = interface.getGraphState().getTime() # Set the minimum number of input ports
interface.setMinRequiredInputs(1) argsGb = FnAttribute.GroupBuilder() # Parse the CEL parameter
celParam = node.getParameter('CEL')
if celParam:
argsGb.set('CEL', celParam.getValue(frameTime)) # Parse the displacement parameter
dispParam = node.getParameter('displacement')
if dispParam:
argsGb.set('displacement', dispParam.getValue(frameTime)) # Add the Messer Op to the Ops chain
interface.appendOp('Messer', argsGb.build()) # Create a NodeTypeBuilder to register the new type
nodeTypeBuilder = Nodes3DAPI.NodeTypeBuilder('Messer')
#NodegraphAPI.RegisterPythonNodeType('Messer', Messer)
NodegraphAPI.AddNodeFlavor('Messer', '3d')
NodegraphAPI.AddNodeFlavor('Messer', 'HoudiniFX')
# Add an input port
nodeTypeBuilder.setInputPortNames(('in',)) # Build the node's parameters
gb = FnAttribute.GroupBuilder()
gb.set('CEL', FnAttribute.StringAttribute(''))
gb.set('displacement', FnAttribute.FloatAttribute(0.0)) # Set the parameters template
nodeTypeBuilder.setParametersTemplateAttr(gb.build())
# Set parameter hints
nodeTypeBuilder.setHintsForParameter('CEL', {'widget':'cel'})
# Set the callback responsible to build the Ops chain
nodeTypeBuilder.setBuildOpChainFnc(buildMesserOpChain) # Build the new node type
nodeTypeBuilder.build() # Register the node
registerMesser()
自定义LayerTabMenu,记得放到环境变量里的UIPlugins文件夹

def registerMesser():
"""
Registers a new Messer node type using the NodeTypeBuilder utility class.
""" from Katana import Nodes3DAPI,NodegraphAPI
from Katana import FnAttribute def buildMesserOpChain(node, interface):
"""
Defines the callback function used to define the Ops chain for the
node type being registered. @type node: C{Nodes3DAPI.NodeTypeBuilder.Messer}
@type interface: C{Nodes3DAPI.NodeTypeBuilder.BuildChainInterface}
@param node: The node for which to define the Ops chain
@param interface: The interface providing the functions needed to set
up the Ops chain for the given node.
"""
# Get the current frame time
frameTime = interface.getGraphState().getTime() # Set the minimum number of input ports
interface.setMinRequiredInputs(1) argsGb = FnAttribute.GroupBuilder() # Parse the CEL parameter
celParam = node.getParameter('CEL')
if celParam:
argsGb.set('CEL', celParam.getValue(frameTime)) # Parse the displacement parameter
dispParam = node.getParameter('displacement')
if dispParam:
argsGb.set('displacement', dispParam.getValue(frameTime)) # Add the Messer Op to the Ops chain
interface.appendOp('Messer', argsGb.build()) # Create a NodeTypeBuilder to register the new type
nodeTypeBuilder = Nodes3DAPI.NodeTypeBuilder('Messer')
#NodegraphAPI.RegisterPythonNodeType('Messer', Messer)
NodegraphAPI.AddNodeFlavor('Messer', '3d')
NodegraphAPI.AddNodeFlavor('Messer', 'HoudiniFX')
# Add an input port
nodeTypeBuilder.setInputPortNames(('in',)) # Build the node's parameters
gb = FnAttribute.GroupBuilder()
gb.set('CEL', FnAttribute.StringAttribute(''))
gb.set('displacement', FnAttribute.FloatAttribute(0.0)) # Set the parameters template
nodeTypeBuilder.setParametersTemplateAttr(gb.build())
# Set parameter hints
nodeTypeBuilder.setHintsForParameter('CEL', {'widget':'cel'})
# Set the callback responsible to build the Ops chain
nodeTypeBuilder.setBuildOpChainFnc(buildMesserOpChain) # Build the new node type
nodeTypeBuilder.build() # Register the node
registerMesser()
Create Your Tab and LayerTabMenu In Katana的更多相关文章
- [Ext JS 4] 布局之实战一 - 中间区块不会自动伸展 (tab)
前言 [Ext JS 4] 布局之实战一 - 中间区块不会自动伸展 (tab) 在上一篇中,中间的tab 区块无法自动伸展的原因一句话说就是: 使用contentEL的方式,相关HTML元素不会参与组 ...
- [20190130]删除tab$记录的恢复.txt
[20190130]删除tab$记录的恢复.txt --//网上提到许多删除tab$的案例,主要原因在于没有从官方正规渠道下载oracle版本,还有一些来自工具里面带有一些脚本删除tab$记录. -- ...
- [20190227]简单探究tab$的bojb#字段.txt
[20190227]简单探究tab$的bojb#字段.txt --//上午做了删除tab$表,其对应索引i_tab1的恢复,我一直以为这个索引会很大,没有想到在我的测试环境仅仅139个键值.--//查 ...
- ExtJS4中设置tabpanel的tab高度问题
最近碰到个问题,在ExtJS中应该如何设置tabpanel的tab的高度?因为默认情况下,tab的高度太矮了,以至于tab的标题底部字都被截掉.设置了个tabpanel.minHeight = ‘50 ...
- Android TabHost设置setCurrentTab(index),当index!=0时,默认加载第一个tab问题解决方法。
最近在用TabHost,默认希望显示第2个tab,发现总是加载第三个tab的同时加载第一个,解决方法如下: 1.首先查看addTab(TabSpec tabSpec)源代码: /** * Add a ...
- ExtJS 4.2 组件介绍
目录 1. 介绍 1.1 说明 1.2 组件分类 1.3 组件名称 1.4 组件结构 2. 组件的创建方式 2.1 Ext.create()创建 2.2 xtype创建 1. 介绍 1.1 说明 Ex ...
- ExtJS 4.2 业务开发(一)主页搭建
本篇开始搭建一个ExtJS 4.2单页面应用, 这里先介绍主页的搭建,内容包括:主页结构说明.扩展功能等方面. 目录 1. 主页结构说明 2. 扩展功能 3. 在线演示 1. 主页结构说明 1.1 主 ...
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- 【转】一千行MySQL学习笔记
/* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录MySQL */ ...
随机推荐
- .net 文件下载【转】
方式一:TransmitFile实现下载.将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件. protected void Button1_Click(object send ...
- javascript事件有哪些?javascript的监听事件
事件类型: 1.界面事件 onload:描述文档,图片,css已经frame,object加载完毕时触发,window.onload window.onload = function(){ //代表图 ...
- php图片转为资源数据
$file='C:\Users\feng\Desktop\images\banner.png'; //图片路径 $type=getimagesize($file); ...
- JSTL 核心标签库 使用(C标签)
JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...
- html第二天CSS
- 增强for循环
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Li ...
- ultraedit正则使用
下面是从UltraEdit文档中摘录的语法说明: 正则表达式 (UltraEdit 语法): 符号 功能 % 匹配行首 – 表示搜索字符串必须在行首,但不包括任何选定的结果字符中的行终止字符. $ 匹 ...
- angularJs实现信息数据提交功能
如下简单的报名提交的实现 1.数据绑定 2.$http.post()提交数据 一.数据绑定 <!--报名部分--> <div class="attend_box" ...
- 怎样将BigDecimal转换成Int
BigDecimal a=new BigDecimal(12.88); int b=a.intValue(); System.out.println(b);//b=12;
- Python开发【第四章】:Python函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...