On this page

新規リグのセットアップの開始

To...Do this

新しくセットアップを作成する

でキャラクタを選択して、キャラクタリグをシーンに設定します。

または、キャラクタテキストフィールドにノード名を入力するか、Network Editorからドラッグすることもできます。 選択したキャラクタの履歴は、キャラクタテキストフィールドの隣にあるドロップダウンメニューに残ります。

Editモードを有効にする

メニューバーの Editボタンをクリックします。

Tip

Eを押すことでEditモードを有効/無効にすることができます。

新しいビューを追加する

  1. Editモードが有効になっていることを確認します。

  2. 既存タブの横にあるボタンをクリックして、 New Tab Type を選択し、 Single View または Multi View のどれかを選択します。 Single View は1個のキャラクタビューアペインを含むのに対して、 Multi View はサイズ変更可能な4個のペインを含みます。

コントロールボタンをセットアップする方法

To...Do this

新しいコントロールボタンを追加する

  1. Editモードが有効になっていることを確認します。

  2. 現行ビューでをクリックします。

  3. Character Pickerペイン内で新しくボタンを配置したい箇所をクリックします。

ペインの中心に新しいコントロールボタンを追加する

  1. 現行ビューでをクリックします。

  2. Enterを押します。

別の方法としては、Character Pickerペイン内で⌃ Ctrlを押しながらをクリックします。

新しいボタンの追加をキャンセルする

ボタンをクリックして新しいボタンを追加した時に、この処理をキャンセルしたいのであれば、 ⎋ Escを押します。

コントロールボタンの位置を変更する

Editモードが有効になっている時は、そのコントロールをクリックしてドラッグします。

選択したコントロールボタンのグループを整列させる

  1. Editモードが有効になっていることを確認します。

  2. 選択したコントロールのどれかを右クリックして、マウスを Layout 上に移動させます。

  3. Layout サブメニューから、 Align selected buttons vertically または Align selected buttons horizontally をクリックします。

選択したコントロールボタンのグループの間隔を空ける

  1. Editモードが有効になっていることを確認します。

  2. 選択したコントロールのどれかを右クリックして、マウスを Layout 上に移動させます。

  3. Layout サブメニューから、 Distribute selected buttons vertically または Distribute selected buttons horizontally をクリックします。

Note

選択したコントロールの間隔が既に十分に空いていれば、これらのオプションは何もしません。

ボタンをコントロールにリンクさせる

  1. Editモードが有効になっていることを確認します。

  2. コントロールを右クリックして、 Edit Target Nodes を選択します。

  3. リンクしたいコントロールを選択して、 Accept をクリックします。

ボタンのターゲットノードを設定/リセットする

  1. ビューア内で目的のノードを選択します。

  2. Character Pickerペイン内でコントロールを右クリックして、 Set from Viewport Selection を選択します。

他のターゲットノードをボタンに追加する

  1. ビューポート内で目的のノードを選択します。

  2. Character Pickerペイン内でコントロールを右クリックして、 Add from Viewport Selection を選択します。

複数のコントロールを一度に選択する

  1. Character Pickerペインの上部にある Select メニューを選択します。

  2. Box Picking または Lasso Picking のどちらかを選択します。

  3. 選択したいボタン周辺でクリックしてドラッグします。

個々のコントロールを選択する

選択したいコントロールをクリックします。

選択したコントロールに追加する

⇧ Shiftを押したまま、追加したいボタンをクリックします。

選択からボタンを除去する

⌃ Ctrlを押したまま、削除したいボタンを選択します。

すべてのコントロールを一度に選択する

⇧ Shiftを押したまま、背景をクリックします。

ミラーされたコントロールボタンを選択する

を有効にして、⇧ Shift + Altを押しながらクリックします。

Note

対称のボタンをペアにするには、それらのボタンが同じノードの内容でなければなりません。つまり、ボタンに含まれているノードの名前の接尾辞がleftrightで違うだけで、同じ数のノードがなければなりません。

コントロールのカラーを変更する

  1. Editモードが有効になっていることを確認します。

  2. カラーを変更したいコントロールを右クリックして、 Edit Color を選択します。

  3. 新しいカラーを選択して、 OK をクリックします。

コントロールのラベルを変更する

  1. Editモードが有効になっていることを確認します。

  2. ラベルを変更したいコントロールを右クリックして、 Edit Label を選択します。

  3. テキストフィールドに新しいラベルを入力して、 OK をクリックします。

コントロールを削除する

  1. Editモードが有効になっていることを確認します。

  2. 削除したいコントロールを右クリックして、 Delete を選択します。

他のコントロールボタンが現在選択されているボタンとノードを共有している場合、そのコントロールがハイライトされますが、選択されません。

背景画像を追加する方法

現行ビューポート、外部ファイル、URLリンク指定による画像から背景画像を設定することができます。

  1. Editモードが有効になっていることを確認します。

  2. ギアメニューをクリックして、 Set Background を選択します。

  3. From Viewport, From File, From URL のどれかを選択します。

画像はCharacter Picker内に保存されるので、画像ファイルを保持する必要もなければ、ディレクトリも保持する必要はありません。

Note

ビューポート画像を使って背景を設定するには、 Scene View タブを可視にしなければなりません。 さらに、.hipを保存して$HIPディレクトリと関連付けられていなければなりません。

Character Pickerペインの扱い方

To...Do this

グリッドを表示/非表示する

  1. Editモードが有効になっていることを確認します。

  2. ギアメニュー > Show Grid をクリックします。

Tip

⇧ Shift + Gを押すことで、グリッドの表示/非表示を切り替えることができます。

グリッドにスナップさせる

  1. Editモードが有効になっていることを確認します。

  2. ギアメニュー > Grid Snap ▸ Snap to Grid をクリックします。

Tip

⇧ Shift + Sを押すことで、グリッドのスナップを有効/無効に切り替えることができます。

グリッドセルのサイズを調整する

  1. Editモードが有効になっていることを確認します。

  2. ギアメニュー > Grid Snap ▸ Grid Snapping Options をクリックして、 Snap Options ダイアログを開きます。

  3. Cell Size パラメータで、スライダをドラッグするか、40-100の範囲で値を入力します。

グリッドのスナップ重力を調整する

  1. Editモードが有効になっていることを確認します。

  2. ギアメニュー > Grid Snap ▸ Grid Snapping Options をクリックして、 Snap Options ダイアログを開きます。

パラメータで、スライダをドラッグするか、1-100の範囲で値を入力します。

ペインをズームイン/アウトする

を使って、上に回転させるとズームイン、下に回転させるとズームアウトします。

他にも、右クリックで右にドラッグまたは上にドラッグするとズームイン、左にドラッグまたは下にドラッグするとズームアウトします。

ペインをパンさせる

クリックでドラッグ、または、Spaceを押したままクリックでドラッグするとパンします。

ビュー全体が表示されるように自動ズームさせる

Space + Hを押します。

選択したボタンが表示されるように自動でパンしてズームさせる

Space + Gを押します。

シーン内の複数のキャラクタの扱い方

シーン内に同一のリグを持った複数のキャラクタがあり、同じレイアウトコントロールを使って両方とも操作したい場合、ノード選択を使って、他のキャラクタを選択します。 ドロップダウンメニューを使用することで、キャラクタ間を切り替えることができます。 Characters フィールドに表示されているものがどれもキャラクタなら、それらのコントロールがそのキャラクタに適用されます。

読み込みと保存

ビューは、.jsonファイルかリグのデジタルアセットに直接保存することができます。 例えば、Simple Bipedキャラクタは、既にキャラクタピッカーリグを含んでいます。 ビューの状態は、 File ▸ Save Layout メニューから保存します。 ビューは、 File ▸ Load Layout を選択したり、ノードをNetwork EditorからCharacter Pickerパネルまたは Character テキストフィールドにドラッグアンドドロップしたり、をクリックしてノードを選択することで、デジタルアセットまたは外部ファイルから読み込むことができます。

Tip

⌃ Ctrl + Sを押すことで、最後に保存したレイアウトの場所または元の読み込み場所に変更をすぐに保存することができます。

Note

HDAオブジェクトノードしか読み込むことができません。

Registering an Event Callback

def eventCallback(event_type, kwargs):
    if event_type == mainwidget.EventType.ButtonSelected:
        targetPaths = kwargs["targetpaths"]
        # do something
        return True
    elif event_type == mainwidget.EventType.ButtonDeselected:
        targetPaths = kwargs["targetpaths"]
        # do something
        return True
    return False

# Open a character picker
pane_tab = hou.ui.curDesktop().createFloatingPaneTab(
    hou.paneTabType.PythonPanel,
    python_panel_interface="sesi_character_picker")
char_picker = pane_tab.activeInterfaceRootWidget()

# Register the callback 
char_picker.registerEventCallback(eventCallback)

# Now, any events will be routed to eventCallback first.

Users can customize the behavior of certain events by registering a callback with the CharacterPicker. Each event is associated with some EventType. The following EventTypes are available:

  • ButtonSelected

    Signaled whenever a button is selected. Default behavior is to select the nodes targeted by the button.

    Key-word arguments:

    • "targetpaths": full paths to the nodes targeted by the button.

    • "buttondefaultbehavior": one of cpglobals._PYS_DEF_BEH_* constants. This is called whenever a control button is selected.

  • ButtonDeselected

    Signaled whenever a button is deselected. Default behavior is to deselect the nodes targeted by the button.

    Key-word arguments:

    • "targetpaths": full paths to the nodes targeted by the button.

Callback Function

def eventCallback(event_type, kwargs):
    if event_type == mainwidget.EventType.ButtonSelected:
        targetPaths = kwargs["targetpaths"]
        # do something
        return True
    elif event_type == mainwidget.EventType.ButtonDeselected:
        targetPaths = kwargs["targetpaths"]
        # do something
        return True
    return False

When an event happens, the registered callback is passed 2 arguments: the type of the event, and a dictionary of arguments corresponding to the event.

If the callback returns True, then the default behavior won’t be executed. If the callback returns False, then the default behavior will be executed after the callback returns. It may be helpful to think of True as indicating that the event has finished being processed, and False indicating that the event hasn’t been fully processed and should be processed further.

If no callback is registered, the default behavior is performed.

For example: the default behavior for a button selection event is that the nodes assigned to the button are selected. If the registered callback returns False for the EventType.ButtonSelected event, then the buttons will be selected after the callback returns. If it returns True, then it’s up to the writer of the callback to select the nodes if they so choose.

Pythonパネル