Houdini 21.0 キャラクタ KineFX

グラフインターフェースを作成する

On this page

APEX Scriptを使用して、グラフ入力(パラメータ)のインターフェースを作成/カスタマイズすることができます。 APEX Scriptの活用により、パラメータをマルチパラメータやフォルダに整理したり、非表示にしたり無効にするパラメータを指定したり、 タグ、アトリビュート、コントロールシェイプを含んだドロップダウンメニューを追加することができます。

APEX Scriptによって作成されたグラフインターフェース

グラフ入力用のインターフェースを作成する

BindInput()関数を使用することで、グラフの入力を定義することができます。 これらの入力は、ユーザ側で値を調整できるようにパラメータエディタに表示させることができます:

  1. APEX Script SOPSnippet パラメータに、以下のコードを入力します:

    # 異なる型の入力
    a: Int = BindInput(2)
    b: Vector4 = BindInput((1, 2, 3, 4))
    c: String = BindInput('hello')
    
    # カラーランプ
    Colorful: ColorRamp = BindInput(
        ColorRamp(basis=["Bezier", "Linear", "Bezier"], 
                  keys=[0.2, 0.5, 1.0], 
                  values=Vector3Array((1,0,0), (0,1,0), (0,0,1))))
    

    FloatRampとColorRampの値の設定方法は、ランプを参照してください。

  2. 入力をパラメータエディタに表示させるには、 Reload Setup Parmsボタンをクリックします:

パラメータを設定する

BindInput()関数では、preset_kwargsキーワード引数を使用して、以下のようなパラメータのインターフェースプロパティを設定できます:

preset_kwargs

説明

disable_when

String

他のパラメータの値に基づいて、パラメータを無効にします。

hide_when

String

他のパラメータの値に基づいて、パラメータを非表示にします。

joins_with_next

Int

1に設定した場合、パラメータを次のパラメータと同じ行に配置します。

label

String

パラメータのラベルを作成します。

prompt_text

String

文字列パラメータのフィールドに、入力内容のヒントとなるテキストを追加します。

この例では、preset_kwargs引数を使用して様々なパラメータを設定しています:

  1. APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

    # 文字列パラメータのラベル名を変更し
    # 文字列フィールドにプロンプトテキストを追加します
    a: String = BindInput(
        '', preset_kwargs={'label':'Favorite sport', 
                           'prompt_text':'on ice'})
    
    # 同じ行に2つのパラメータを配置します 
    x: Int = BindInput(1, preset_kwargs={'joins_with_next':1})
    y: Float = BindInput(3.5)
    
  2. Reload Setup Parmsボタンをクリックします。パラメータエディタに入力が表示されます:

  3. パラメータを非表示および無効にします:

    g: Bool = BindInput(False)
    
    # 'g'がオフの時、このパラメータを非表示にします
    h: Int = BindInput(1, preset_kwargs={'hide_when':'{g == 0}'})
    
    # 'h'が'1'に設定されている時、このパラメータを無効にします
    i: Int = BindInput(1, preset_kwargs={'disable_when':'{h == 1}'})
    

プリセット

BindInput()関数では、presetキーワード引数を使用して、作成したいパラメータのタイプを指定できます。一部のプリセットには、preset_kwargsキーワードを使用して設定できる追加オプションが用意されています。利用可能なプリセットは以下の通りです:

カラー

colorプリセットは、ベクトル(Vector3またはVector4)に対してカラーパラメータを作成します。Vector3の場合、カラーはRGBです。Vector4の場合、カラーはRGBAです。

このプリセットには、preset_kwargsはありません。

APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

a: Vector3 = BindInput((0, 0.3, 1), preset='color')

Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します。

VEX

vexプリセットは、複数行のVEX文字列を作成します。文字列パラメータで利用可能です。

このプリセットには、preset_kwargsはありません。

APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

teststring: String = BindInput('@P = @N;', preset='vex')

Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:

Python

pythonプリセットは、複数行のPython文字列を作成します。文字列パラメータで利用可能です。

このプリセットには、preset_kwargsはありません。

APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

pythonstring: String = BindInput(
    'n = hou.node("/obj/geo1/attribwrangle1")', 
    preset='python')

Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:

コントロールシェイプ

controlshapesプリセットは、アンパックキャラクタで利用可能なコントロールシェイプのドロップダウンメニューを作成します。コントロールシェイププリセットは、文字列パラメータで使用できます。

このプリセットには、preset_kwargsはありません。

Electra Test Geometryにコントロールシェイプのドロップダウンメニューを追加するには:

  1. Electra Test Geometry SOPで、 OutputAPEX Character に設定します。

  2. Electra SOPの1番目の出力をAPEX Script SOPに接続します。

  3. APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

    a: String = BindInput('', preset='controlshapes')
    
  4. Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します。

タグ

tagsプリセットは、ジオメトリで利用可能なタグのドロップダウンメニューを作成します。このプリセットは文字列パラメータで利用可能です。タグは、スケルトングラフの両方に見られます。

tagsプリセットには、以下のpreset_kwargsが用意されています:

preset_kwargs

説明

path

String

ジオメトリのパス。pathに空っぽの文字列('')を指定すると、ジオメトリはアンパックジオメトリとして扱われます。それ以外の場合、ジオメトリはパックジオメトリとして扱われます。path preset_kwargsを使用しない場合、ジオメトリはデフォルトでパックジオメトリの/Base.rigに設定されます。

usepattern

Bool

Trueに設定されている場合、タグ名の前に“#”を追加します。usepatternが指定されていない場合、デフォルトはTrueです。

この例では、まずAttribute Adjust Array SOPを使用して、Electra Test Geometryタグを追加します:

Electraのタグ

APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

t1: String = BindInput(
    '', 
    preset='tags', 
    preset_kwargs={'path':'', 'prompt_text':'side'})

t2: String = BindInput(
    '', 
    preset='tags', 
    preset_kwargs={'path':'', 'usepattern':False})

Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:

アトリビュート

attribプリセットは、特定の型(文字列など)やクラス(プリミティブなど)のアトリビュートをリストしたドロップダウンメニューを作成します。このアトリビュートプリセットは、文字列パラメータで利用可能です。

attribプリセットには、以下のpreset_kwargsが用意されています:

preset_kwargs

説明

path

String

ジオメトリのパス。pathに空っぽの文字列('')を指定すると、ジオメトリはアンパックジオメトリとして扱われます。それ以外の場合、ジオメトリはパックジオメトリとして扱われます。path preset_kwargsを使用しない場合、ジオメトリはデフォルトでパックジオメトリの/Base.shpに設定されます。

attrib_type

String

アトリビュートの型(StringFloatなど)。attrib_typeが指定されていない場合、デフォルトはFloatです。

attrib_class

String

アトリビュートのクラス。有効なオプションはdetailpointprimitivevertexです。attrib_classが指定されていない場合、デフォルトはpointです。

この例では、Electra Test Geometryに文字列アトリビュート(タグ)と整数アトリビュートを追加します:

  1. Attribute Adjust Array SOPを使用してタグを追加します。

  2. Attribute Adjust Integer SOPを使用して整数Detailアトリビュートを追加します:

    • Attribute Namehelloに設定します。

    • Attribute ClassDetail に設定します。

  3. APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

    string_attrib: String = BindInput(
        '*', 
        preset='attrib', 
        preset_kwargs={'path': '', 
                       'attrib_type': 'String'})
    
    int_detail_attrib: String = BindInput(
        '*', 
        preset='attrib', 
        preset_kwargs={'path': '', 
                       'attrib_type': 'Int', 
                       'attrib_class': 'detail'})
    
  4. Reload Setup Parmsボタンをクリックします。更新されたパラメータインターフェースには、以下のメニューアイテムが含まれます:

    パラメータ

    メニューアイテム

    アトリビュート取得元

    string_attrib

    name, tags

    nameアトリビュートはElectra SOPから取得され、tagsアトリビュートはAttribute Adjust Array SOPによって作成されます。

    int_detail_attrib

    hello

    helloアトリビュートはAttribute Adjust Integer SOPによって作成されます。

パラメータをフォルダに追加する

addToFolder()関数を使用して、パラメータをフォルダに整理することができます。addToFolder()の構文は以下の通りです:

addToFolder(<folder_name>, <list_of_inputs>, [foldertype=<folder_type>, parent=<parent_folder>])

引数

説明

folder_name

String

フォルダの名前。

Note

フォルダ名にスペースを使用することはできません。

list_of_inputs

List of variables

フォルダに追加したいバインド変数(BindInput()関数で宣言された変数)のリスト。

folder_type

String

(オプション)作成するフォルダのタイプ。有効なオプションはfolder_tabsfolder_simplefolder_collapsiblefolder_radioです。デフォルトはfolder_tabsです。

parent_folder

String

(オプション)folder_nameを配置したいフォルダ階層のパス。パスにフォルダが存在しない場合、フォルダが作成されます。

APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

a: Int = BindInput(2)

b: String = BindInput('hello')

c: Float = BindInput(3.5)

d: Vector3 = BindInput((1,3,5))

e: Bool = BindInput(True)

addToFolder('Folder1', [a, b])

addToFolder('Folder2', [c])

addToFolder('Nested', [d], parent='Folder1')

addToFolder('Simple', [e], foldertype='folder_simple')

Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:

parent引数にフォルダが存在しない場合、フォルダが作成されます:

good: Bool = BindInput(True)

addToFolder('Bottom', [good], parent='Top/Mid')

マルチパラメータ

パラメータインターフェースにマルチパラメータを追加するには:

  1. bindMultiparm()関数を使用して、新しいマルチパラメータを作成します。bindMultiparm()に引数は必要ありません。

  2. addToMultiparm()関数を使用して、マルチパラメータに要素を追加します。addToMultiparm()の構文は以下の通りです:

    addToMultiparm(<multiparm>, <variable_name>, <default_value>, [preset=<preset>, preset_kwargs=<preset_kwargs>])

引数

説明

multiparm

Variable

bindMultiparm()で作成されたマルチパラメータ変数。

variable_name

String

マルチパラメータに追加する変数の名前。

default_value

Any

追加した要素に設定するデフォルト値。

preset

String

(オプション)変数のプリセット

preset_kwargs

Dictionary

(オプション)preset_kwargsのいずれかをプリセットやパラメータの設定に使用することができます。

APEX Script SOPで、 Snippet パラメータに以下のコードを追加します:

a = bindMultiparm()
b = bindMultiparm()

addToMultiparm(a, 'hello', 'jello')

addToMultiparm(a, 'again', (2,4,6))

addToMultiparm(b, 'xyz', 1, 
    preset='menu', 
    preset_kwargs={'menu_items':['x','y','z']})

Reload Setup Parmsボタンをクリックして、パラメータインターフェースを更新します:

Note

マルチパラメータは辞書配列です。前述のマルチパラメータからベクトルのagainを取得するには:

v: Vector3 = a[0]['again#']

KineFX

概要

キャラクタ要素の準備

APEXグラフを使用したリギング

APEXスクリプトを使用したリググラフの構築

リグコンポーネントを使用したリギング

ビューポート内でアニメーションを付ける

SOPベースのアニメーション

変形

アニメーションのリターゲット

H20以前

ペイン

別表