MassFX のコンストレイント ヘルパーを使用すると、2 つのリジット ボディを連動させることができます。たとえば、ヒンジ コンストレイントを使用するとドアとフレームが連動します。または、コンストレイントを使用して、単一のリジット ボディをスペース内のポイントにリンクすることもできます。コンストレイントの概要については、「物理オブジェクトの制限」を参照してください。
コンストレイント ヘルパーのインタフェースは、[修正](Modify)パネル上の複数のロールアウトと 2 つのモディファイヤ スタック サブオブジェクト レベルで構成されます。 これらのコントロールは一度に 1 つのコンストレイントでのみ使用できます。複数のコンストレイントが選択されている場合は、ロールアウトは表示されません。 ただし、[MassFX ツール](MassFX Tools)ダイアログ ボックスの[マルチオブジェクト エディタ](Multi-Object Editor)パネルでは、複数のコンストレイントを選択して編集できます。 [マルチオブジェクト エディタ](Multi-Object Editor)パネルのコントロールの大部分は、[修正](Modify)パネルのコントロールと同じです。
手順
MassFX コンストレイントを使用するには:
MassFX コンストレイントを適用する最も簡単な方法は、MassFX ツールバーを使うものです。
- 制限する 1 つまたは複数のオブジェクトを作成します。[階層](Hierarchy)パネル 基点コントロールを使用して、コンストレイントをアタッチする基点を配置します。
たとえば、1 つのオブジェクトがドアの場合は、現実にヒンジを取り付ける垂直のエッジに沿って基点を配置します。
- スペース内のポイントまたは別のリジット ボディのどちらに対してリジット ボディを制限するかにより、1 つまたは 2 つのオブジェクトを選択します。
2 つのオブジェクトのうち、最初に親オブジェクトを選択した後、子オブジェクトを選択します。子オブジェクトは、主としてコンストレイントの影響を受けるオブジェクトです。たとえば、ヒンジで取り付けられたドアの場合は、ドアが子でドア フレームが親です。
ヒント: 作業をオブジェクト自身ではなく
リジッド ボディによってコンストレイントしますが、モディファイヤを最初に適用する必要はありません。モディファイヤが存在しない場合、コンストレイントを適用するときにモディファイヤの追加を求められます。追加を認めると、MassFX によって自動的にモディファイヤが追加されます。
- MassFX ツールバーで、アクティブなコンストレイント プリセットをクリックするか、[コンストレイント](Constraints)フライアウトから別のコンストレイントを選択します。
MassFX リジット ボディ モディファイヤの適用を求められたら、[はい](Yes)をクリックして続行します。
注: すべての場合に、同じヘルパー オブジェクト UConstraint が追加されます。異なるプリセットは、単に、適用する制限アクションのタイプに基づいて各種の設定を適用します。ヘルパーを適用した後、必要に応じて設定を調整して任意の種類のコンストレイントを作成できます。
- ビューポート内でマウスを水平に前後に動かしてコンストレイントの表示サイズを調整した後、クリックしてサイズを設定します。
コマンド パネルが[修正](Modify)パネルに切り替わり、UConstraint の設定が表示されます。
- 必要に応じて設定を調整し、オブジェクトとコンストレイントをシミュレーションでの開始位置に配置します。
インタフェース
コンストレイントを移動および回転して、許容されるモーションの範囲を指定することができます。たとえば、ヒンジ コンストレイントを回転し、蝶番で固定された子の回転の範囲を示します。
モディファイヤ スタック - サブオブジェクト レベル
MassFX コンストレイントのモディファイヤ スタックでは、シミュレーションに影響を与える設定にアクセスできます。 サブオブジェクト レベルがアクティブな場合は、それぞれのギズモを変換することによってコンストレイントの動作を変更できます。
- 子のアタッチ点
- コンストレイントが子のリジッド ボディに接続されている場所は、ワイヤフレームの立方体として表されます。
このサブオブジェクト レベルにアクセスすると、MassFX によって[子のアタッチ点](Child Attach Point)のギズモが自動的に選択され、[移動](Move)ツールがアクティブになります。
[子のアタッチ点](Child Attach Point)サブオブジェクトがアクティブなユニバーサル コンストレイント。 赤色の矢印(説明のために追加されたもの)は、アタッチ点を示しています。
- 子の初期ツイスト
- コンストレイントの制限内における角度モーションの既定の中心点は、ワイヤフレームの矢印のように描画されます。
このサブオブジェクト レベルにアクセスすると、MassFX によって[子の初期ツイスト](Child Initial Twist)のギズモが自動的に選択され、[回転](Rotate)ツールがアクティブになります。
[子の初期ツイスト](Child Initial Twist)サブオブジェクト(白色の矢印)がアクティブなユニバーサル コンストレイント。 赤色の矢印(説明のために追加されたもの)は、初期ツイスト サブオブジェクトを示しています。
[一般](General)ロールアウト
[接続](Connection)領域
これらのコントロールを使用して、リジッド ボディをコンストレイントに割り当てます。 親オブジェクト、子オブジェクトの両方をコンストレイントに割り当てることも、子オブジェクトのみを割り当てることもできます。 任意のリジッド ボディ タイプを親にすることができますが、子はダイナミックでなければなりません。
親オブジェクトと子オブジェクトの両方を割り当てた場合は、親(ダイナミックの場合)のモーションはシミュレーションの影響を受け、子のモーションは親のモーション、コンストレイント、およびシミュレーションの影響を受けます。 子オブジェクトのみを割り当てた場合は、その子はコンストレイントとシミュレーションの影響を受けます。
これらのコントロールを使用してコンストレイントからオブジェクトを除去したり、コンストレイントされたオブジェクトとコンストレイントの間のアタッチ ポイントを変更したり、親と子の関係を反転できます。
- 親
- コンストレイントの親として使用するリジット ボディを設定します。関連付けられたオブジェクトの名前のボタンをクリックし、ビューポートで新しい親として使用するリジット ボディを選択します。コンストレイントが親オブジェクトにリンクされて、一緒に回転や移動するようになります。親オブジェクトにはダイナミックまたはキネマティックを使用できますが、静止は使用できません。
親オブジェクトを削除するには、[X]ボタンをクリックします。親を設定解除(どのリジット ボディにもリンクされていない状態)すると([なし](None)ラベルで示されます)、コンストレイントはグローバル スペース(つまり現在の位置)にアンカーされます。単一のリジット ボディを選択してコンストレイントを作成すると、そのリジット ボディは子として設定され、親はなく、リジット ボディはグローバル スペースに対して制限されます。
- [親の基点に移動](Move to Parent's Pivot)
- コンストレイントの位置を、親オブジェクトの基点に設定します。このオプションは、クレーンの先端に対して制限されている建物解体用の鉄球のように、子オブジェクトが親の基点を中心に回転する必要のあるコンストレイントに便利です。
- [親と子の切り替え](Switch Parent/Child)
- 親と子の関係を反転します。そのため、それまでの親が子になり、子が親になります。
- 子
- コンストレイントの子として使用するリジット ボディを設定します。関連付けられたオブジェクトの名前のラボタンをクリックし、ビューポートで新しい子として使用するリジット ボディを選択します。子オブジェクトとして使用できるのはダイナミック リジット ボディだけであり、キネマティックまたは静止は使用できません。
[X]ボタンを使用して子オブジェクトを削除できますが、結果は無効なコンストレイントになります。
- [子の基点に移動](Move to Child's Pivot)
- コンストレイントの位置を、子オブジェクトの基点になるように調整します。このオプションは、たとえば 2 つのボーンの間のコンストレイントに便利です。
[動作](Behavior)領域
- コンストレイント動作
- コンストレイントで動作を決定するために、コンストレイントされたボディのアクセラレーションを使用するか、フォースを使用するかを選択します。
- アクセラレーションを使用スプリング動作およびダンピング動作を実行する際は、アクセラレーションを検討します。 コンストレイントされたリジッド ボディの質量は、このオプションによる動作に影響しません。
[アクセラレーションを使用](Use Acceleration)オプションは、関節の固さ全体にメリットをもたらしますが、関節全体の質量のバランス調整が完全に動作しないことがあります。
- フォースを使用このモードをアクティブにすると、スプリング動作およびダンピング動作のすべての式に質量が含まれ、その結果アクセラレーションではなくフォースになります。 結果のコントロールが難しくなりますが、物理的により正確な動作を実現できます。
注: (上級ユーザ向け)このモードを使用する際は、スプリング定数およびダンピング定数がコンストレイントに関連する質量および重心フレームの中心を考慮することに留意してください。 [フォースを使用](Use Force)モードは、[アクセラレーションを使用](Use Acceleration)モードと同じ動作を維持することは意図されていないため、同じ動作を維持するための自動変換計算は行われません。 [アクセラレーションを使用](Use Acceleration)モードの動作と一致させるには、[ソフト制限](Soft Limits)オプション(次を参照)を使用する際にこれらの値を手動で大きくします。 MassFX 内の基本的なソルバ計算が異なるため、このモードへの正確に一致する変換は不可能です。 実用的な開始地点としては、親および子の質量を乗算します。
- コンストレイント制限
- 子のボディが[トランスレーション制限](Translation Limits)ロールアウトおよび[スイングとツイスト制限](Swing & Twist Limits)ロールアウト(次を参照)の設定で定義された制限に達したときのコンストレイントの動作を選択します。
- ハード制限子のリジッド ボディがモーション範囲のエッジに達した場合、ボディは[バウンド係数](Bounce)値に基づいて制限からバウンドします。
[ハード制限](Hard Limits)をアクティブにした場合は、[制限](Limit)コントロールと[バウンド係数](Bounce)コントロールのみを使用できます。 [スプリング](Spring)設定および[ダンピング](Damping)設定はソフト制限にのみ適用されます。
-
ソフト制限
この制限タイプは、子が制限を超えることができることから「ソフト」と言われます。 子のリジッド ボディがモーション範囲のエッジ(制限)に達した場合、スプリング動作およびダンピング動作がアクティブになり、その子を低速にするか、制限内に戻すためにフォースを適用します。
注: フォースが十分に強い場合(または同様に、[スプリング](Spring)の値が小さすぎる場合)は、子はいつまでも制限の外側に留まることができます。これは、制限が単にスプリング動作およびダンピング動作がアクティブになる範囲であるためです。
[ソフト制限](Soft Limits)をアクティブにした場合は、[制限](Limit)、[スプリング](Spring)、および[ダンピング](Damping)コントロールのみを使用できます。 [バウンド係数](Bounce)設定は、ハード制限にのみ適用されます。
- アイコン サイズ
- ビューポートでコンストレイント ヘルパーを描画するサイズ。このプロパティはシミュレーションに影響を与えません。単に、コンストレイントが制限対象のオブジェクトの内部に隠れて見えなくならないように十分大きく、ただし大きすぎないようにするためのものです。
[トランスレーション制限](Translation Limits)ロールアウト
コンストレイントされた子の線形移動の許容範囲を指定するには、これらの設定を使用します。
注: 数値設定は、少なくとも 1 つの軸が[制限付き](Limited)に設定されている場合にのみ、使用できます。
- [X]/[Y]/[Z]
- 各軸について、その軸に沿ったモーションを制限する方法を選択します。
- [ロック](Locked)リジット ボディがそのローカル軸に沿って動かないようにします。
- [制限](Limited)オブジェクトがそのローカル軸に沿って[制限半径](Limit Radius)の大きさ(親と子の初期オフセットから離れる大きさ)だけ移動できるようにします。複数の軸を[制限](Limited)に設定すると、モーションは正方形またはボックスではなく円または球の内部の半径方向に制限されます。[制限半径](Limit Radius)の距離は、ビューポートにおいて、制限される各軸について視覚的に表されます。
- [フリー](Free)その軸に沿ったリジット ボディのモーションは制限されません。
- 制限半径
- 制限付きの軸に沿って、親および子が初期オフセットから離れることができる距離。
- バウンド係数
- 制限付きの軸について、ヒットしたときにオブジェクトが制限から跳ね返る大きさ。値 0.0 はバウンドしないことを示し、値 1.0 は完全にバウンドすることを示します。[コンストレイント制限](Constraint Limits)が[ハード制限](Hard Limits)に設定されている場合にのみ使用できます。
- Spring
- 制限付きの軸について、オブジェクトが制限を超えたときに、オブジェクトを制限に引き戻す「スプリング」の力。小さい値はスプリングの力が弱いことを示し、値を大きくするほどオブジェクトを制限に引き戻す力が強くなります。値 0.0 はハード制限を示す特別な値で、オブジェクトが平行移動の制限を超えないようにします。[コンストレイント制限](Constraint Limits)が[ソフト制限](Soft Limits)に設定されている場合にのみ使用できます。
- ダンピング
- 制限付きの軸について、平行移動が制限を超えた場合に、オブジェクトが制限を超えて移動する「抵抗」の大きさ。[コンストレイント制限](Constraint Limits)が[ソフト制限](Soft Limits)に設定されている場合にのみ使用できます。
[スイングとツイスト制限](Swing & Twist Limits)ロールアウト
コンストレイントされた子の角度移動の許容範囲を指定するには、これらの設定を使用します。
注: 数値設定は、[制限付き](Limited)オプションがオンなっている場合にのみ使用できます。
[スイング Y](Swing Y)領域および[スイング Z](Swing Z)領域
[スイング Y](Swing Y)および[スイング Z](Swing Z)は、それぞれ、ローカルな Y 軸および Z 軸を中心とするコンストレイントの回転を示します。それぞれについて次のいずれかを選択します。
- 角度制限
- スイングを制限に設定するときの、回転を許可する中心からの角度の大きさ。この値は両側に対して適用されるので、モーションの全体の範囲はこの値の 2 倍になります。たとえば、[角度制限](Angle Limit)を 45 度に制限した場合は、最大 90 度まで回転できます。
- バウンド係数
- スイングを制限に設定した場合の、オブジェクトが制限にヒットしたときに跳ね返る大きさ。値 0.0 はバウンドしないことを示し、値 1.0 は完全にバウンドすることを示します。[コンストレイント制限](Constraint Limits)が[ハード制限](Hard Limits)に設定されている場合にのみ使用できます。
- Spring
- スイングを制限に設定した場合の、オブジェクトが制限を超えたときに、オブジェクトを制限に引き戻すスプリングの力。小さい値はスプリングの力が弱いことを示し、値を大きくするほどオブジェクトを制限に引き戻す力が強くなります。値 0.0 はハード制限を示す特別な値で、オブジェクトがスイングの制限を超えないようにします。[コンストレイント制限](Constraint Limits)が[ソフト制限](Soft Limits)に設定されている場合にのみ使用できます。
- ダンピング
- スイングを制限に設定し、制限を超えた場合に、オブジェクトが制限を超えて回転する「抵抗」の大きさ。[コンストレイント制限](Constraint Limits)が[ソフト制限](Soft Limits)に設定されている場合にのみ使用できます。
[ツイスト](Twist)領域
ツイストは、コンストレイントのローカル X 軸を中心とする回転のことです。
- [ロック](Locked)親オブジェクトおよび子オブジェクトがコンストレイントのローカル X 軸を中心にして回転しないようにします。
- [制限](Limited)親および子が一定の角度の範囲内でローカル X 軸を中心に回転できるようにします。
- [フリー](Free)親および子がコンストレイントのローカル X 軸を中心に無制限に回転できるようにします。
- リミット
- ツイストを制限に設定した場合、[左](Left)および[右](Right)の値は制限の各端の絶対角度です。(ビューポートでのこれらの制限の表示を参考にして、必要に応じて調整できます。)
- バウンド係数
- ツイストを制限に設定した場合、オブジェクトが制限にヒットしたときに跳ね返る大きさ。制限ごとに固有の値を指定できます。値 0.0 はバウンドしないことを示し、値 1.0 は完全にバウンドすることを示します。[コンストレイント制限](Constraint Limits)が[ハード制限](Hard Limits)に設定されている場合にのみ使用できます。
- Spring
- ツイストを制限に設定した場合の、オブジェクトが制限を超えたときに、オブジェクトを制限に引き戻すスプリングの力。制限ごとに固有の値を指定できます。小さい値はスプリングの力が弱いことを示し、値を大きくするほどオブジェクトを制限に引き戻す力が強くなります。値 0.0 はハード制限を示す特別な値で、オブジェクトがスイングの制限を超えないようにします。[コンストレイント制限](Constraint Limits)が[ソフト制限](Soft Limits)に設定されている場合にのみ使用できます。
- ダンピング
- ツイストを制限に設定し、制限を超えた場合に、オブジェクトが制限を超えて回転する「抵抗」の量。制限ごとに固有の値を指定できます。[コンストレイント制限](Constraint Limits)が[ソフト制限](Soft Limits)に設定されている場合にのみ使用できます。
[スプリング](Spring)ロールアウト
コンストレイントの制限(前述を参照)に対する[バウンド](Bounce)と[スプリング](Spring)の設定はコンストレイントが制限の端に達したときの動作をコントロールしますが、[スプリング](Spring)ロールアウトの設定は常に適用されます。これらの設定は、現実での「バネ」にいっそう似ています。
[位置静止スプリング](Spring to Resting Position)領域
- 張り
- 親および子オブジェクトの移動を初期オフセット位置に常に引き戻そうとする力の大きさ。小さい値はスプリングの力が弱いことを示し、値を大きくするほどオブジェクトを初期オフセットに引き戻す力が強くなります。値 0.0 はスプリング力がないことを示します。
- ダンピング
- [張り](Springiness)がゼロ以外の場合、スプリング力を制限する「抵抗」の大きさ。 抵抗によってオブジェクト自体が動くように見えることはありませんが、スプリングの効果が弱くなります。
[スイング静止スプリング](Spring to Resting Swing)領域
位置静止スプリングと似ていますが、位置オフセットではなく、ローカル Y および Z 軸を中心とする初期回転オフセットにオブジェクトを引き戻します。
[ツイスト静止スプリング](Spring to Resting Twist)領域
スイング静止スプリングと似ていますが、ローカル X 軸を中心とする初期回転オフセットにオブジェクトを引き戻します。
[拡張設定](Advanced)ロールアウト
- 親/子衝突
- オフ(既定値)の場合、コンストレイントによって接続されている親子のリジッド ボディが相互に衝突することはありません。これにより、たとえば、大腿と脚のリジット ボディが膝で問題なくオーバーラップします。このオプションをオンにすると、2 つのリジット ボディが他のものと同じように相互に反応できるようになります。
[分裂コンストレイント](Breakable Constraint)領域
- 分裂要因
- オンの場合、シミュレーション中にコンストレイントが分裂することがあります。[最大フォース](Max Force)を超える線形フォースまたは[最大トルク](Max Torque)(後述を参照)を超えるねじりフォースが親オブジェクトと子オブジェクトの間にかかると、コンストレイントは「分裂」します。つまり、オフになり適用されなくなります。
- 最大フォース
- [分裂要因](Breakable)がオンの場合、線形フォースの大きさがこの値を超えると、コンストレイントが分裂します。コンストレイントを分裂しにくくするには、この値を大きくします。
注: [マルチオブジェクト エディタ](Multi-Object Editor)パネルでは、この設定には「分裂フォース」というラベルが付けられます。
- 最大トルク
- [分裂要因](Breakable)がオンの場合、ねじりフォースの大きさがこの値を超えると、コンストレイントが分裂します。コンストレイントを分裂しにくくするには、この値を大きくします。
注: [マルチオブジェクト エディタ](Multi-Object Editor)パネルでは、この設定には「分裂トルク」というラベルが付けられます。
[投影](Projection)領域
- 投影タイプ
- 親オブジェクトと子オブジェクトがコンストレイントの制限に違反したとき、投影はオブジェクトに制限を強制することで状況を修正します。
結合投影は「鈍器」のようなものに似ています。他の場合には干渉する可能性のある衝突に関係なく、1 つのアクターを単純に動かします。これにより衝突ジオメトリの貫通が発生するので、結合違反に関して現実の問題がない場合は、結合投影を使用することを避け、必要な場合は慎重に使用することをお勧めします。
投影方法を選択し、対応する値を設定します。
- 距離(D)
- それを超えると投影を適用する、コンストレイント違反の最小距離。これ以下の距離のエラーには、投影を使用しません。この値の設定が小さすぎると、意図しない揺らぎがシミュレーションに発生します。
- 角度
- それを超えると投影を適用する、コンストレイント違反の最小角度(単位は度)。これ以下の角度のエラーには、投影を使用しません。
[相対ノード](Relative Nodes)ロールアウト
このロールアウトは、コンストレイントがラグドール オブジェクトの一部である場合にのみ使用できます。