UDN
Search public documentation:

PhysicsConstraintReferenceJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > 物理 > PhysX 制約のリファレンス
UE3 ホーム > レベルデザイナー > PhysX 制約のリファレンス

PhysX 制約のリファレンス


概要


制約は基本的にはジョイントの別名です。制約は 2 つの剛体を 1 つに接続し、力を制限することができます。UnrealEngine 3 は非常に柔軟なデータドリブン制約システムを備えています、これにより、デザイナーはオプションを変更するだけで様々なタイプのジョイントを簡単に作成することができます。エンジンにはデフォルトのジョイントタイプがいくつかあります (ボールアンドソケット、ヒンジ、プリズマティック) がこれは設定が違うだけです。どのジョイントタイプからスタートしてもかまいません、ご自分の構成を試してみましょう。

共有およびインスタンスごとの設定

設定は 2 つの部分に分かれます - 特定のジョイントにおいて、すべてのインスタンスで共有する設定と、各インスタンスだけに有効な設定です。たとえばジョイント制限などはジョイントのすべてのインスタンスで同じですが、さまざまなモーターの設定は各インスタンスで異なる可能性があります。共有プロパティは RB_ConstraintSetup オブジェクトに保存されます、これに対してインスタンスごとのプロパティは RB_ConstraintInstance オブジェクトに保存されます。PhAT では、キーボードの 'I' キー (またはツールバーの 'i' ボタン) で選択したジョイントで、これらを切り替えることができます。

剛性とダンピング

制約のいくつかの部分では、stiffness (剛性) および damping (ダンピング) パラメータを設定して、弾力の挙動を制御できます。この設定は、スプリングと油圧ピストンで構成されたクルマのサスペンションを設定するようなものと考えることができます。スプリングはオブジェクトをデフォルトの位置、または、釣り合の取れる位置へ戻す力の強さを制御し、ダンピングはあらゆる動作を沈静化するオイルのようなものです。剛性だけでダンピングがないと、動作は細かい振動を繰り返し永久に止まりません。ダンピングを高く設定すると、平行に戻るまでに長い時間が掛かります。

RB_ConstraintSetup


標準設定

  • ConstraintBone1 - PhysicsAsset (物理資産) 内にある、ジョイントが接続する第 1 ボーンの名前。
  • ConstraintBone2 - PhysicsAsset (物理資産) 内にある、ジョイントが接続する第 2 ボーンの名前。

直線設定

3 つの LinearSetup (直線設定) 構造があります - X、Y、Z 方向に 1 つずつ。それぞれに以下の設定があります。

  • bLimited - この自由度に制限がある場合。FALSE の場合、直線的な動きにはまったく制限はありません。
  • LimitSize - bLimited が TRUE の場合、その方向にどの程度動きが許されるか。これを 0 にセットすると自由度を完全に ロック します。

直線の制限は実際には球形ですので注意してください - このため、ある方向の制限が 0 ではない (「ロックされている」) 場合、最大 3 つの LimitSize 値を使用します。したがって X が 0、Y が 10、Z が 20 のときは、YZ 平面上の半径 20 の円に制限されます。X が 0、Y が 0、Z が 20 の場合は、+20 から -20 までの Z に沿った直線に制限されます。

  • bLinearLimitSoft - デフォルトの直線制限は [hard] です。これを true にセットすると弾力性があるものとして扱われ「押し込む」ことができます。
  • LinearLimitStiffness - bLinearLimitSoft が true の場合、これは限界時の弾力の剛性を制御します。
  • LinearLimitDamping - bLinearLimitSoft が true の場合、これは限界時の弾力ダンピングを制御します。
  • bLinearBreakable - true の場合、このジョイントは直線的な力を加えると壊れる (基本的にはジョイントを引き裂く)。
  • LinearBreakThreshold - bLinearBreakable が true の場合、これはジョイントを壊すのに必要な力です。

角設定

ジョイントの角度のある部分は「swing (揺れ)」や「twist (ねじれ)」と言う用語で指定します。「揺れ」は X 軸の回りの円錐と考えることができます、また「ねじれ」はその軸を回る回転と考えられます。UE3 では円錐の限界を 2 つの角で指定するので、楕円形の円錐も指定できます。

  • bSwingLimited - trueの場合、2 つのボディの角度は円錐に制限されます。
  • bTwistLimited - true の場合、2 つのボディの間のねじれは制限されています。
  • bSwingLimitSoft - デフォルトでは揺れ限界の円錐は [hard] です。これが true の場合、弾力性があるものとして扱われ「押し込む」ことができます。
  • bTwistLimitSoft - デフォルトではねじれの制限は [hard] です。これが true の場合、弾力性があるものとして扱われ「押し込む」ことができます。
  • Swing1LimitAngle - 揺れ限界の円錐の次元の一方を、角度で定義します。
  • Swing2LimitAngle - 揺れ限界の円錐のもう一方の次元を角度で定義します。
  • TwistLimitAngle - 2 つの制約されたボディの間のねじれの許容量を定義します。
  • SwingLimitStiffness - bSwingLimitSoft が true の場合、これは円錐の剛性を制御します。
  • SwingLimitDamping - bSwingLimitSoft が true の場合、これは円錐のダンピングを制御します。
  • TwistLimitStiffness - bTwistLimitSoft が true の場合、これはねじれ限界の剛性を制御します。
  • TwistLimitDamping - bTwistLimitSoft が true の場合、これはねじれ限界のダンピングを制御します。
  • bAngularBreakable - true の場合、このジョイントにトルクを加えると壊れます (基本的にはジョイントをねじって離す)。
  • AngularBreakThreshold - bAngularBreakable が true の場合、これはジョイントを壊すために必要なトルクです。

Pulley 設定

pulley は特殊なジョイントで、あるボディの 1 点ともう 1 つのボディの 1 点をロープで接続し、そのロープが空間の 2 点を通っているものです。この種のジョイントを使用する場合、他のジョイント設定にはほとんど影響はありません。

  • bIsPulley - true の場合、このジョイントをプーリータイプとして扱います。
  • bMaintainMinDistance - true の場合、「ロープ」に「たるみ」が許されず、棒のように扱われますので、片方のオブジェクトを押し上げるともう片方は押し下げられます。
  • PulleyRatio - プーリーのギア レシオ。これが 1.0 ではない場合、片方を引っ張るともう一方の動きは小さい動きになりますが、より強い力がでます。

RB_ConstraintInstance


速度とポジション ドライブ

UnrealEngine 3 にはジョイントのドライブが 2 通りあります - ポジション ドライブと速度ドライブです。ポジション ドライブはスプリングのように動作し、ジョイントは指定された剛性プロパティとダンピング プロパティを使用して与えられた位置へ到達しようとします。速度ドライブはモーターのように、希望する速度指定して、ジョイントに最大の力を適用します。

直線設定

  • bLinearXPositionDrive - 直線 X 軸のポジション ドライブを有効にします。
  • bLinearXVelocityDrive - 直線 X 軸の速度ドライブを有効にします。
  • bLinearYPositionDrive - 直線 Y 軸のポジション ドライブを有効にします。
  • bLinearYVelocityDrive - 直線 Y 軸の速度ドライブを有効にします。
  • bLinearZPositionDrive - 直線 Z 軸のポジション ドライブを有効にします。
  • bLinearZVelocityDrive - 直線 Z 軸の速度ドライブを有効にします。
  • LinearPositionTarget - 直線ポジション ドライブが有効な場合、これはジョイントが到達すべき目標相対位置です。
  • LinearVelocityTarget - 直線速度ドライブが有効な場合、これはジョイントが到達すべき目標相対直線速度です。
  • LinearDriveSpring - 直線ポジション ドライブが有効な場合、これはドライブ弾力の剛性です。
  • LinearDriveDamping - 直線ポジション ドライブが有効な場合、これはドライブ弾力のダンピングです。
  • LinearDriveForceLimit - 直線速度ドライブが有効な場合、これは LinearVelocityTarget を得るためにかけられる最大の力です。

角設定

  • bSwingPositionDrive - 揺れ軸のポジション ドライブを有効にします。
  • bSwingVelocityDrive - 揺れ軸の速度ドライブを有効にします。
  • bTwistPositionDrive - ねじれ軸まわりのポジション ドライブを有効にします。
  • bTwistVelocityDrive - ねじれ軸まわりの速度 ドライブを有効にします。
  • bAngularSlerpDrive - 高度なオプション。ドライブ をジョイントに適用するときに使用する方法を指定します。
  • AngularPositionTarget - 角度ポジション ドライブが有効な場合、これはジョイントが到達すべき目標相対四元数です。
  • AngularVelocityTarget - 角度速度ドライブが有効な場合、これはジョイントが到達すべき目標相対角速度です。
  • AngularDriveSpring - 角度ポジション ドライブが有効な場合、これはドライブ 弾力の剛性です。
  • AngularDriveDamping - 角度ポジション ドライブが有効な場合、これはドライブ 弾力のダンピングです。
  • AngularDriveForceLimit - 角度速度ドライブが有効な場合、これは AngularVelocityTarget を得るために適用する最大トルクです。

サンプル


ボールとソケット

ボール アンド ソケット ジョイントとは、すべての直線パーツをロックしたものと、すべての直線パーツをロックしていないものが繋がったジョイントです。

ヒンジ

ヒンジはボールアンドソケットのようにその中の直線パーツがすべてロックしているものですが、その揺れパーツもロックされており、ねじれ軸に沿ってのみ回転できるものです。

プリズマティック

プリズマティック ジョイントは 3 つの直線自由度のうち 2 つをロックして、すべての角の自由度をロックしたものを言います。これは軌道に沿ってスライドすることが可能ですが、まったく回転できません。

ジョイント フリクション

ドライブ設定を使用してジョイント フリクションをシミュレートできます。目標速度 0 で速度ドライブをオンにし、 LinearDriveForceLimit および AngularDriveForceLimit の設定で、ジョイントが動作に抵抗する強さ制御します。

「パンチバッグ」

ジョイントでパンチバッグ (垂直の棒の上にボールが付いて、それが四方八方に揺れる) のようなものをシミュレーションできます。まずボールアンドソケット ジョイントを作成し、揺れポジション ドライブをオンにし、ボールを押したときに上手い具合に垂直の位置に戻ってくるようになるまで AngularDriveSpring と AngularDriveDamping を調節します。揺れの限界を有効にして必要以上に曲がらないようにもできます。

ダウンロード


  • PhysX 制約のサンプルは、 ここ からダウンロードできます。