[Blender 2.8] オブジェクトを頂点や制御点で引っ張って変形をするのに便利な、フックモディファイアーの機能と使い方のご紹介
今回の記事は、Blenderの『フックモディファイアー』についてです。
『フックモディファイアー』は、別のオブジェクト(通常、使用されるのはエンプティかボーンですが、どのオブジェクトでも可能です)を使用してメッシュ、カーブ、またはラティスを変形するために使用されます。
「フック」として指定されたオブジェクトが移動すると、それによってジオメトリから頂点、または制御点が引っぱられます。


設定によっては、『プロポーショナル編集』のような変形が出来ます。
『プロポーショナル編集』について、詳しくは下記記事をご覧ください。
『フックモディファイアー』では、『シェイプキー』のように頂点の動きを細かく制御することはできませんが、頂点を直接選択して操作できるという利点があります。
『シェイプキー』について、詳しくは下記記事をご覧ください。
目次
まず最初に

『フックモディファイアー』を追加したいオブジェクトを選択しておき、[プロパティエディタ]>[モディファイアー]>[モディファイアーを追加]ボタンをクリックすると表示される一覧から、[フック]という項目を選びます。
追加されると↓のように表示されます([オブジェクトモード]、[編集モード]で表示されるボタンが変化します)。


『フックモディファイアー』は、元のメッシュの頂点インデックスを保存して、何に影響を与えるかを決定します。つまり、『サブディビジョンサーフェスモディファイアー』などのジオメトリを生成するモディファイアーは、モディファイアースタックの[フック]の後に常に配置しておく必要があります。それ以外の場合、生成されたジオメトリはフックの影響を受けません。
ちなみに、『サブディビジョンサーフェスモディファイアー』について、詳しくは下記記事をご覧ください。
基本的な使い方
フック用の『エンプティ』と『アーマチュア』を割り当てる方法の中で、私が知る中でそれぞれ一番簡単だと思う方法をご紹介します。
エンプティを使用する方法
- まずは適当なメッシュオブジェクトを用意しておきます。

- メッシュオブジェクトを選択した状態で[編集モード]へ移り、フックを割り当てたい頂点を選択して、[頂点]>[フック]メニューか、[Ctrl]+[H]で表示される[フック]メニューから、[新規オブジェクトにフック]を選択します(この方法で設定する場合は、事前にモディファイアースタックに、『フックモディファイアー』をセットしておく必要はありません)。すると、自動的にフックが割り当てられたエンプティオブジェクトが新規作成されます。

- [オブジェクトモード]へ移り、エンプティオブジェクトを動かすと、メッシュオブジェクトがその動きに合わせて変形します。

アーマチュアを使用する方法
- まずは適当なメッシュオブジェクトと、アーマチュアを用意します。この時のボーンの位置は、変形させたい頂点の位置にセットしておきます。

- アーマチュアを選択した状態で、[ポーズモード]へ移り、変形に使用したいボーンを選択します。

- [オブジェクトモード]へ移り、「アーマチュア→メッシュオブジェクト」の順で選択し、[編集モード]へ移ります。

- フックを割り当てたい頂点を選択し、[頂点]>[フック]メニューか、[Ctrl]+[H]で表示される[フック]メニューから、[選択オブジェクトボーンにフック]を選択します(この方法で設定する場合は、事前にモディファイアースタックに、『フックモディファイアー』をセットしておく必要はありません)。

- [オブジェクトモード]へ移って、アーマチュアを選択し、[ポーズモード]へ移り、フックを割り当てたボーンを選択して動かします。すると、ボーンと一緒にメッシュも変形します。

[フック]の詳細設定項目一覧
- [オブジェクト(Object)]
- [頂点グループ(Vertex Group)]
- [半径(Radius)]
- [強さ(Strength)]
- [減衰タイプ(Falloff Type)]
- [フォールオフの均一化(Uniform Falloff)]
- [リセット(Reset)]
- [中心を再設定(Recenter)]
- [選択(Select)]
- [割り当て(Assign)]
[オブジェクト(Object)]
頂点をフックするオブジェクトの名前。
[ボーン(Bone)]
サブターゲット。
(該当する場合)フックに使う親ボーンの名前で、再計算やオフセットのクリアにも使用します。
[オブジェクト]にアーマチュアが設定されている場合に表示される項目。

[頂点グループ(Vertex Group)]
頂点毎の影響を定義する頂点グループ。
球状に形成する影響フィールド以外の部分にも影響を及ぼしたい場合に役立ちます。
ちなみに、『頂点グループ』そのものについてや、基本的な扱い方については下記記事で詳しく取り扱っておりますので、そちらをご覧ください。
例えばこんな頂点グループを用意します。

その頂点グループをセットして、[半径: 4m]、[減衰タイプ: スムーズ]で設定してみましたら↓のようになりました。

[半径(Radius)]
フックの影響のサイズ。
まずは、分かりやすくするためにある程度細分化し、頂点を全てフック用のエンプティに割り当てたメッシュオブジェクトを用意しておきます。

その上で、エンプティをZ軸上で少し上に動かした状態で[半径]の値を変化させてみると↓のようになります。

この[半径]は、ワールド空間でのスケールの値が係数となるため、ローカル空間(編集モード)での拡大縮小なら問題ありませんが、ワールド空間(オブジェクトモード)での拡大縮小がされていた場合、実際に影響を及ぼす範囲が違ってきますのでご注意ください。

もし、ワールド空間で拡大縮小した場合、この[半径]の値通りに影響を及ぼしたい時には、後述の[フォールオフの均一化]を有効化して下さい。

[強さ(Strength)]
頂点に対するこのフックの影響を”0.0″~”1.0″の範囲で調整します(フックに完全に追従させるための変更はありません)。
複数のフックを同じ頂点で機能させる事が出来るため、そういった場合に、このプロパティを使用してフックの影響に重みを付けることが出来ます。

[減衰タイプ(Falloff Type)]
この項目は、フックがメッシュに及ぼす影響カーブの種類を調整するために使用します。

まず、[減衰なし(No Falloff)]だと、[半径]の表示がなくなり、[半径: 0m]の時と同様の影響の仕方になります。

次に、[カーブ(Curve)]です。これも少し他のものと違って特殊で、カスタムカーブを定義して、より高いレベルの制御が出来ます。

他のものは、特筆すべき事はありませんので、どんな感じになるのかだけざっとご紹介しておきます。こうして見ると、本当に『プロポーショナル編集』そのものですね。







[フォールオフの均一化(Uniform Falloff)]
この設定は、スケーリングされたオブジェクトでフックを使用する場合、特に、不均一(non-uniform)なスケールがフックの結果を広げる場合に役立ちます。
これは、不均一なスケーリングを使用する事が一般的であるラティスで特に役立ちます。
この項目については、[半径]をご参考ください。
[リセット(Reset)]
フックのオフセットトランスフォームを再計算してクリアします。
[編集モード]でのみ使用できます。

[中心を再設定(Recenter)]
フックの中心を3Dカーソル位置に設定します。

[選択(Select)]
このフックの影響を受ける頂点、つまり、割り当てられている頂点を選択します。
[編集モード]でのみ使用できます。

[割り当て(Assign)]
選択した頂点をこのフックに割り当てます。
[編集モード]でのみ使用できます。

おまけ: 作ってみたもの

使用素材: HDRI: Autumn Park | HDRI Haven、kitchen_wood | Texture Haven
「フック」と聞いて思い浮かんだのが「カーテン」だったのですが、きっと誰か他に作ってる人居そう…と思って探してみたら、案の定いらっしゃいましたので、今回は、こちら↓の動画を参考に作成しました。
動画を見てしまえば本当に分かりやすくてすぐ出来るかとは思うのですが、一応、やり方を載せておきます。
- まずは、X軸周りで90°回転させた平面メッシュを用意して、ループカット([Ctrl]+[R])で、縦に35くらい分割します。(分割数は5の倍数がオススメ)

- [辺選択モード]に変更して、円形選択などを使って、縦の辺だけ全て選択します。

- [選択]>[チェッカー選択解除]で交互に選択を解除した状態にします。

- 移動軸をY軸に限定して([G]→[Y])、選択中の辺をY軸方向にズラします。

- 今度は横にもループカットします。ここの数はある程度分割されていれば適当で良いです。

- 山(?)を一つ飛ばしでフックを掛けていきます。

- お好みの細かさになるまで、[細分化]します。

- 細かくて分かりづらいかもしれませんが、フックのかかっている頂点だけを全て選択しています。

- 8で選択した頂点を新しく作成した頂点グループでウェイト”1.0″を割り当てます。

- メッシュに『クロスシミュレーション』を付与します。その際、[品質のステップ数: 12]に設定、[シェイプ]>[固定グループ]に先ほど作成した頂点グループをセットし、[セルフコリジョン]を有効にして[距離: 0.005]に設定します。


ちなみに、『クロスシミュレーション』について、詳しくは下記記事をご覧ください。
- アニメーション再生([スペースキー])すると、良い感じのカーテンになってくれます。

- 後は、もう一組カーテンを作ったり、フック用のエンプティの位置をアニメーションで移動させたり、おまけで窓やら床やら壁やら付けたりしたら、完成です。


参考にさせて頂いたサイト・ページ一覧
- Hook Modifier — Blender Manual
- Vertex Tools > Add Hook — Blender Manual
- Eye rigging with hook and lattice Blender 2 8 – YouTube
- Blender Tutorial I Hook Modifier – YouTube
- How to make REALISTIC CURTAIN in 3 ways – Blender Tutorial – YouTube
お借りした素材
モディファイアー関連の記事のご紹介
この記事の他にも、Blenderの様々なモディファイアーについて、機能や使い方を私自身も試しながらではありますが、ご紹介させていただいております。よろしければ、こちらも併せてご覧ください。
変更
- データ転送
- メッシュキャッシュ
- メッシュ連番キャッシュ