2013年9月11日水曜日

Nuke Python Knob

Nuke PythonでKnob。
一覧はこちら
 ----------------------------
Array_Knob
Axis_Knob
BBox_Knob
BeginTabGroup_Knob
Bitmask_Knob
Boolean_Knob
Box3_Knob
ChannelMask_Knob
Channel_Knob
ColorChip_Knob
Color_Knob
Double_Knob
EndTabGroup_Knob
Enumeration_Knob
EvalString_Knob
Eyedropper_Knob
File_Knob
Font_Knob
Format_Knob
Help_Knob
Histogram_Knob
IArray_Knob
Int_Knob
Keyer_Knob
Link_Knob
LookupCurves_Knob
MultiView_Knob
Multiline_Eval_String_Knob
Obsolete_Knob
OneView_Knob
Pulldown_Knob
PyCustom_Knob
PyScript_Knob
Range_Knob
Scale_Knob
Script_Knob
String_Knob
Tab_Knob
Text_Knob
Transform2d_Knob
UV_Knob
Unsigned_Knob
ViewView_Knob
WH_Knob
XYZ_Knob
XY_Knob
--------------------------------
全部ではないのですが、NoOpになんとなく表示するスクリプトがこちら。本当にざっくりなので書式が足りていないものなどあるかも。
やりたいことが「Pulldow_Knob」 ではなくて「Enumeration_Knob」だと気付くのに2時間ほどかかった・・・。UIから追加するときには「Pulldown Choice」って表示じゃないですか・・・。Knobのクラス調べる関数とかあるんですかね?
--------------------------------
n=nuke.createNode('NoOp')

n.addKnob(nuke.Tab_Knob('Knobs'))

n.addKnob(nuke.Enumeration_Knob('EnumKvalue','Enumeration_Knob',['a','b','c']))

n.addKnob(nuke.PyScript_Knob('PSK_Value','PyScript_Knob'))
n.addKnob(nuke.Boolean_Knob('bk_value', 'Boolean_Knob'))
n.addKnob(nuke.Array_Knob('AK_value','Array_Knob'))
n.addKnob(nuke.Color_Knob('CK_value','Color_Knob'))
n.addKnob(nuke.BBox_Knob('BB_value','BBox_Knob'))
n.addKnob(nuke.Unsigned_Knob('UK_value','Unsigned_Knob'))
n.addKnob(nuke.Box3_Knob('B3K_value','Box3_Knob'))
n.addKnob(nuke.Double_Knob('DB_value','Double_Knob'))
n.addKnob(nuke.IArray_Knob('IAK_value','IArray_Knob'))
n.addKnob(nuke.Int_Knob('IK_value','Int_Knob'))
n.addKnob(nuke.Keyer_Knob('KK_value','Keyer_Knob'))
n.addKnob(nuke.Range_Knob('RK_value','Range_Knob'))
n.addKnob(nuke.Scale_Knob('SK_value','Scale_Knob'))
n.addKnob(nuke.UV_Knob('UV_value','UV_Knob'))
n.addKnob(nuke.WH_Knob('WH_value','WH_Knob'))
n.addKnob(nuke.XYZ_Knob('XYZ_value','XYZ_Knob'))
n.addKnob(nuke.XY_Knob('XY_value','XY_Knob'))
n.addKnob(nuke.Axis_Knob('AxisK_value','Axis_Knob'))
n.addKnob(nuke.Channel_Knob('CnK_value','Channel_Knob'))
n.addKnob(nuke.String_Knob('StrK_value','String_Knob'))
n.addKnob(nuke.Font_Knob('FontK_value','Font_Knob'))
n.addKnob(nuke.Format_Knob('FK_value','Format_Knob'))
n.addKnob(nuke.Help_Knob('HelpK_value','Help_Knob'))
n.addKnob(nuke.Histogram_Knob('HistK_value','Histogram_Knob'))
n.addKnob(nuke.Link_Knob('LinkK_value','Link_Knob'))
n.addKnob(nuke.LookupCurves_Knob('LCK_value','LookupCurves_Knob'))
n.addKnob(nuke.MultiView_Knob('MVK_value','MultiView_Knob'))
#n.addKnob(nuke.Obsolete_Knob('OsK_value','Obsolete_Knob'))
#n.addKnob(nuke.GeoSelect_Knob('GSK_value','GeoSelect_Knob'))
n.addKnob(nuke.Password_Knob('Passvalue','Password_Knob'))
n.addKnob(nuke.Text_Knob('TextKvalue','Text_Knob'))
#n.addKnob(nuke.Transform2d_Knob('T2dvalue','Transform2d_Knob'))
n.addKnob(nuke.ViewView_Knob('VVKvalue','ViewView_Knob'))
n.addKnob(nuke.BeginTabGroup_Knob('BTGK_value','BeginTabGroup_Knob'))
#n.addKnob(nuke.EndTabGroup_Knob('ETGK_value','EndTabGroup_Knob'))
--------------------------------
Nukeのスクリプトエディタは行数どこかで表示出来るのですかね?
エラー教えてくれても分かりづらいっす。 
あと分からなかったのが 「Start New Line」これどうやって指定するのでしょうか?


ViewView_Knobがなんか可愛くて好きです。でも、これどのような使い方するんですかね? 

追記1:こんなサイトがありました。http://shining-lucy.com/wiki/page.php?id=appwiki:nuke

追記2:Start New Lineは「nuke.STARTLINE」で 指定出来るようですね。
具体的には
--------------------------------
n = createNode('NoOp')

k = nuke.String_Knob('Str_value','String')
k.clearFlag(nuke.STARTLINE) #setFlag

n.addKnob(k)
--------------------------------
 

5 件のコメント:

  1. すいません質問させてください。
    tifやjpgを選べる filetype knobはどう記述すればよろしいのでしょうか、、

    返信削除
  2. 僕はあまり詳しくないのであれなのですが、こちらを見る限りだとそのようなPython Knobは用意されていないように見えます。
    http://docs.thefoundry.co.uk/nuke/63/ndkdevguide/knobs-and-handles/knobtypes.html

    ですので、既存のwriteノードのfile_typeとEnumeration_Knobを連携させるのが楽ではないかと思いますがどうでしょうか?
    もしくは、PythonPanel等で各Knobを組み合わせて自前で作成準備するとかなんですかね?

    返信削除
    返信
    1. 遅れましてすみません。
      迅速なお答えありがとうございます。

      >既存のwriteノードのfile_typeとEnumeration_Knobを連携させるのが楽ではないかと思いますがどうでしょうか?
      これだとwriteノードにしか新たにknobを追加することしかできないのでは、、?
      私の知識不足かも知れませんが。手軽に連携させる方法があるのでしょうか。

      >もしくは、PythonPanel等で各Knobを組み合わせて自前で作成準備するとかなんですかね?
      これは理解できますが、相当面倒ですよね、、
      それにプルダウンを変えたとき、writeノードのようにUIが若干スイッチされるそのやり方がわからないです。

      削除
  3. おっしゃるように、確かに簡単ではないかもですね・・・。なんかいい方法があるといいですが、ちょっと思いつかないです。

    返信削除
  4. 参考になりました。
    ありがとうございます!

    返信削除