ヘア コンストレインのセットアップ
 
 
 

コンストレインを使用して、ヘア カーブをスタイリングします。たとえば、コンストレインはヘアを後ろにまとめたりポニーテイルにするときの髪留めの役割を果たします。作成できるコンストレインには、輪ゴム(Rubber Band)スティック(Stick)トランスフォーム(Transform)ヘア対ヘア(Hair to Hair)毛束(Hair Bunch)衝突球体(Collide Sphere)そして衝突立方体(Collide Cube)などさまざまな種類があります。コンストレインの種類については、 ヘアのコンストレインの種類を参照してください。最後の 2 つは黙示的なコリジョン コンストレインで、他の種類のコンストレインとは違った効果をもたらします。詳細については、 コリジョン ヘア コンストレインの扱いを参照してください。

コンストレインを作成すると、選択したヘア カーブに影響を与えるようにコンストレインが設定されます。これらのヘア カーブの ID は、hairConstraint ノードのカーブのインデックス(Curve Indices)アトリビュートに保存されます。ID は、ヘア システム上のヘアのインデックス(UV グリッドのロケーション)を示します。

開始フレームでは、シミュレーションによって、コンストレイン ノードの位置にニアレストなコンストレイン対象カーブ上のポイントが定義されます。カレント フレームがこの開始フレーム以前の場合は、コンストレイン ノードと接続点をニアレスト ポイントの更新に移動できます。シミュレーションを再生するときには、コンストレインはカーブ全体ではなく、このポイントの最初の集合に対して作用します。コンストレインの種類によって、このポイントの集合をシミュレートする方法が決まります。

これにより、シミュレーションの開始時にはコンストレインによってヘアにフォースがまったく適用されず、シミュレーションが進むにつれてコンストレインされるようになります。一般的に、コンストレインは、ヘアの開始位置とシェイプをモデリングおよび定義した後に適用します。シミュレーション開始フレームのモデルの位置を編集したり、異なるシーン向けに設定する場合は、開始フレームのヘアに対する相対的な位置が変わらないように、あるヘアの毛根ノードまたはオブジェクト トランスフォームのコンストレインをグループ化した方がよい場合があります(コンストレインは、毛束コンストレインを除いて、常に開始位置との相対関係で定義されるため)。

コンストレインは、ポイントの集合にフォースを適用することで機能します。適用されるフォースの量は、コンストレインの固さアトリビュートによってスケールされます。下回るとポイントへのコンストレインの関連付けが失われるしきい値を定義する粘着の強さ(Glue Strength)アトリビュートもあります。ポイントは、開始フレームでコンストレインに接着されます。コンストレインによって適用されるフォースがこの粘着の強さを超えると、コンストレインが失われ、そのポイントはシミュレーションの残りの部分ではコンストレインされなくなります。粘着の強さが 1 の場合、粘着力が無限に強く、コンストレインが失われることはありません。シミュレーションの半ばでコンストレインをスナップするのに必要な強さは加減が難しく、適切なポイントでコンストレインが失われるように(0 と 1 の間の)粘着値をいくつか試してみる必要がある場合があります(必要に応じて、1 から 0 までの間で粘着の強さをアニメートすることもできます)。

コンストレインは、選択した各カーブの 1 つのポイントだけに作用するため、同一のカーブ集合の異なる位置に複数のコンストレインを適用し、カーブの複数のポイントをコンストレインした方がいい場合もあります。

ヘアのコンストレインを設定するには

  1. 目的のヘアカーブを選択します。
  2. ヘア > コンストレインの作成(Hair > Create Constraint)から、目的のコンストレイン タイプを選択します。詳細については、 ヘアのコンストレインの種類を参照してください。
  3. hairConstraintShape ノードのコンストレイン アトリビュートを設定します。コンストレイン アトリビュートについては、 hairConstraintShapeを参照してください。

ヘアのコンストレインの種類

ここでは、コンストレインの種類について説明します。

輪ゴム(Rubber Band)

コンストレインから設定ポイントにゴムを取り付けるようなものです。各ラバー バンドの長さは、開始フレームのコンストレインからポイントまでの距離になります。ポイントとコンストレイン間の距離がラバーバンドの長さより長くなった場合、コンストレインに向かって引っ張るフォースが作用します。

スティック(Stick)

コンストレインから設定ポイントに棒を取り付けるようなもので、この棒はコンストレインの中心を軸にして自由に回転することができます。これは、距離が長くなった場合の引力に加えて、コンストレインとポイント間の距離が開始距離より短くなった場合には反発力が働くことを除いて、輪ゴム(Rubber Band) コンストレインと同じです。このため、すべてのコンストレイン対象ポイントは、コンストレインの中心から固定距離に保たれる傾向があります(開始フレームでの距離)。

トランスフォーム(Transform)

開始フレームでゼリーの固まりにポイントをコンストレインしているようなものです。スティック(Stick)コンストレインと違い、回転されたり、スケールされたりすると、コンストレイン ノードがコンストレイン対象のポイントに沿って引っ張られます。コンストレイン ノードの変形は、事実上このゼリーの固まりのトランスフォームというわけです。これは、肩のような接触点に沿ってヘアが流れ落ちるようにコンストレインする際に便利です。またこれを利用して、手でつかんだり、ねじったときのヘアをシミュレートすることもできます。コンストレインのスケールをアニメートすると、ヘアをまとめたり、分けたりすることができます。

ヘア対ヘア(Hair to Hair)

これを使用すると、(リボンを使った場合のように)ヘアを束ねて、コンストレイン位置に対してそのヘアのグループを自由に動かすことができます。実際のコンストレインはヘアと自由に動かせるスティック コンストレインのようなものです。コンストレイン位置は開始フレームでのみ参照され、その後内部で使用されるコンストレインがダイナミックに更新されます。

毛束(Hair Bunch)

少ない計算量でセルフ コリジョンと同じようにアニメートするときに、ヘアに対するボディを作成するのに便利です。コンストレインにニアレストの最初のポイント集合は、(集合体の幅に従って)オーバーラップしているところで互いに反発します。接触するとポイントがわずかにくっついてしまう、静電気現象のような状態もあります。ヘアのまとまりが開始フレームでオーバーラップしている場合、突然分かれてしまうこともあります(シミュレーション開始時にフォースがない他の手法とは異なります)。この問題は、状態が落ち着くまでシミュレーションを実行してから、開始位置(Start Position)を設定することによって解決できます。

衝突球体(Collide Sphere)、衝突立方体(Collide Cube)

黙示的なコリジョン オブジェクトとして動作する球体または立方体を挿入します。必要に応じて球体または立方体をトランスフォームします。詳細については、 コリジョン ヘア コンストレインの扱いを参照してください。

注:ヘアが衝突球体衝突立方体コンストレイン上で落ち着かない場合や、弾んでしまう場合は、コンストレインの固さを下げます。特に、動きの速いコンストレインやヘアでは、ヘアが速いスピードでコンストレインから飛び出すことがあります。多くの場合、固さの値を下げることでこの問題は解決できます。

コリジョン ヘア コンストレインの扱い

他のヘアのコンストレインとは異なり、衝突球体(Collide Sphere)衝突立方体(Collide Cube)は、ヘアの特定の CV だけではなくヘア全体に作用します。ジオメトリとの衝突に比べて、このようなオブジェクトにはいくつかの利点があります。

一般的には、トランスフォーム ジオメトリでグループ化されたこれらのコンストレインをいくつか使用して、頭部や肩などの衝突部分のジオメトリ シェイプに近づけます。有機オブジェクトの場合は、複数の球体を使用してそのうちのいくつかを楕円にスケールすることもあるでしょう。鋭角なエッジの場合は球体では起こり得ない安定性の問題が発生することもありますが、壁や平坦なサーフェスには衝突立方体が最適です。ただし、衝突立方体(Collide Cube)コンストレインの固さ(Stiffness)の値を低くすると、立方体のエッジがスムースになる傾向にあります。

また、非常に不均等にスケールされた球体では、ポイントがエッジに向かってスライドしてしまう問題(ほとんどの湾曲部分)が起きる可能性があります。これは、不均等にスケールされた立方体では発生しません。