UDN
Search public documentation:

PhATUserGuideJP
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

Unreal 物理資産ツール (PhAT) ユーザーガイド

ドキュメントの概要: Unreal Engine 3.0 の Physics Asset Tool (物理資産ツール) の使用方法を解説。

ドキュメントの概要: James Golding により作成。 Richard Nalezynski? により管理。

概要

Unreal 物理エディタ - PhAT (物理資産ツール) - は、骨格オブジェクトの物理設定を操作するために特に設計された、Unreal エディタの統合ツールの 1 つです。

PhAT の使用

PhAT を開く

UnrealEd の 汎用ブラウザ のフィルタで、 [Physical Assets] が選択されていることを確認します。パッケージを選択し (念のために完全にロードされていることを確認してください)、アセット (資産) をダブルククリックします。または、アセットを右クリックして [Physics Editor] (PhAT) を選択します。

注意: 一度に複数の PhAT ウィンドウを開くことは可能ですが (それが望ましい場合もありますが)、同時に複数のウィンドウでアクティブにシミュレーションを実行するとパフォーマンスが低下するため、この操作は推奨されていません。

物理資産の作成

Unreal Engine 3 での物理資産の作成は非常に簡単です。ブラウザで、物理的な設定をしたい骨格オブジェクトを決め、それを右クリックします。コンテキスト メニューの一番上には [物理資産を作成] するオプションがあります。これをクリックするとダイアログがオープンして、メッシュの骨格構造と頂点の計量に基づいた物理資産を作成するオプションを提供します。このダイアログは PhAT 内にいる間は、[Reset asset] (資産の再設定) オプションで何度でも表示できます。 物理アセットを作成するには、 汎用ブラウザ に移動し、物理設定を行う骨格オブジェクトを見つけます。右クリックし、コンテキストメニューから [Create Physics Asset] (物理アセットを作成) を選択します。開かれるダイアログには、メッシュの骨格構造や頂点ウェイト構成に基づいて物理アセットを作成するためのオプションが含まれています。このダイアログは、PhAT 内で [Reset asset] (アセットを再設定) オプションを使って再度開くことができます。

PhAT 概要

エディタレイアウト

メニューバー

編集メニュー

  • Undo(元に戻す)
  • Redo (やり直す)
  • Change Default Skeletal Mesh (デフォルトの骨格メッシュを変更する)

ツールメニュー

  • Reset Entire Asset (アセット全体をリセットする)
  • Reset Skeletal Bone Collision(骨格ボーン衝突をリセットする)
  • Apply Selected Physical Material to All Bodies(選択した物理マテリアルをすべてのボディに適用する)
  • Copy Joint Settings to All Joints(ジョイント設定をすべてのジョイントにコピーする)

ウィンドウメニュー

  • Properties(プロパティ)
  • Tree(ツリー)

ツールバー

以下は、ツールバーの左から右に登場する各ボタンの説明です。

アイコン 名前 説明
PhAT_BodyMode.jpg / PhAT_ConstraintMode.jpg Editing Mode (B)/(C) (編集モード) 物理ボディまたはコンストレイントの編集に切り替えます。
PhAT_WorldSpace.jpg / PhAT_LocalSpace.jpg Movement Space (W)/(L) (移動空間)  
PhAT_TransMode.jpg Translation Mode (W) (平行移動モード)  
PhAT_RotMode.jpg Rotation Mode (E) (回転モード)  
PhAT_ScaleMode.jpg Scaling Mode (R) (スケーリングモード)  
PhAT_Snap.jpg Snap (A) (スナップ)  
PhAT_CopyProps.jpg COPY PROPERTIES TO... (プロパティをコピー)  
PhAT_InstanceProps.jpg Instance Properties (I) (インスタンスのプロパティ)  
PhAT_StartSim.jpg / PhAT_StopSim.jpg Toggle Simulation (S) (シミュレーションをトグル)  
PhAT_ShowMesh.jpg / PhAT_WireMesh.jpg / PhAT_HideMesh.jpg Cycle Mesh Rendering Mode (H) (メッシュのレンダリングモードサイクル)  
PhAT_ShowColl.jpg / PhAT_WireColl.jpg / PhAT_HideColl.jpg Cycle Collision Rendering Mode (J) (衝突のレンダリングモードサイクル)  
PhAT_ConPos.jpg / PhAT_ConLimit.jpg / PhAT_ConHide.jpg Cycle Constraint Rendering Mode (K) (コンストレイントのレンダリングモードサイクル)  
Lock.jpg Show Fixed Bodies (固定されているボディを表示)  
PhAT_ShowFloor.jpg Draw Ground Box (背景ボックスを描画)  
PhAT_ShowSkel.jpg Toggle Graphics Hierarchy (グラフィック階層表示をトグル)  
PhAT_ShowContacts.jpg Toggle View Contacts (ビューの接点表示をトグル)  
PhAT_HighlightVert.jpg Show Selected Bone Influences (選択したボーン影響を表示)  
PhAT_ShowCOM.jpg Toggle Mass Properties (質量プロパティの表示をトグル)  
PhAT_DisablePair.jpg Disable Collision With... (衝突を無効にする)  
PhAT_EnablePair.jpg Enable Collision With... (衝突を有効にする)  
PhAT_Weld.jpg Weld to This Body... (D) (このボディに結合)  
PhAT_AddBone.jpg Add New Body (新しいボディを追加)  
PhAT_AddSphere.jpg Add Sphere (球を追加)  
PhAT_AddSphyl.jpg Add Sphyl (楕円球を追加)  
PhAT_AddBox.jpg Add Box (ボックスを追加)  
PhAT_DelPrim.jpg Delete Current Primitive (DEL) (現在のプリミティブを削除)  
PhAT_DupPrim.jpg Duplicate Current Primitive (現在のプリミティブを複製)  
PhAT_ConFrame.jpg Reset Constraint Reference (コンストレイントの参照をリセット)  
PhAT_BSJoint.jpg Convert to Ball-and-Socket (ボールアンドソケットに変換)  
PhAT_Hinge.jpg Convert to Hinge (ヒンジに変換)  
PhAT_Prismatic.jpg Convert to Prismatic (プリズマティックに変換)  
PhAT_Skel.jpg Convert to Skeletal (骨格に変換)  
PhAT_DelJoint.jpg Delete Current Constraint (現在のコンストレイントを削除)  
PhAT_ShowAnimSkel.jpg Show Animation Skeleton (アニメーション骨格を表示)  

Properties ペイン

Disabling

KMeshProps

AggGeom  
COMNudge PhysX で計算されたボディ重心の上に適用されるオフセット。

RB_BodySetup

bBlockNonZeroExtent  
bBlockZeroExtent  
bFixed  
bNoCollision  
bNoImpactEvents  
BoneName  
MassScale  
| PhysicalMaterial | 詳細は 物理マテリアル ページを参照してください。

ツリーウィンドウ

コントロール

マウス コントロール

LMB (左マウスボタン) Limb (リム)/Joint (ジョイント) またはウィジェットの軸を選択します
SHIFT-LMB 不均等な (1 つの軸方向のスケーリング) を実行します (可能な場合)
X 選択項目をロックします
CTRL-右マウスボタン 物理アセットの上をつかみます (ライブシミュレーションのみ)

キーボード コントロール

W 移動モード
E 回転モード
R スケールモード
スペースバー ウィジットモードをサイクル切り替え
B 剛体とコンストレイントモード間の切り替え
A スナップをオンにする
C プロパティのコピー
S シミュレーションを開始/停止
H アセットのレンダリングモードをサイクル切り替え
J 剛体のレンダリングモードをサイクル切り替え
K コンストレイントのレンダリングモードをサイクル切り替え
D ボディの結合 (親子ペアであること)
Q コンストレイントを X -> Y -> Z にサイクル切り替え
DEL コンストレイント/ボディを削除する
HOME 選択したボディまたはコンストレイントを画面中央に配置する
L + DRAG 平行ライトを周回させる
[ 選択した剛体と別の剛体間の衝突を有効にする
] 選択した剛体と別の剛体間の衝突 を無効にする

ホットキー

物理アセットに関する作業

物理アセットの変更

PhAT を開くと、デフォルトの フロア の上の空間にアセットが浮かんでいるのが見えます。 [Create physics asset] (物理アセットの作成) ダイアログの衝突プリミティブ セクションで選択したオプションに応じて、このオブジェクトが複数のボックスまたは球体/sphyls (楕円球) に包まれている場合もあります。これらの衝突プリミティブは、適切な位置に配置されていないことの方が多く、望ましくない方法で相互に貫通していることもあります。このような場合に備えて、PhAT にはプリミティブを操作するツールがいくつか用意されています。以下の例では、Packages フォルダの PhysicsObjects.upk に含まれる Phys_Capsule3_Physics を使用しています。

衝突プリミティブ / ボディ

PhAT で作成および変更可能な衝突プリミティブには、3 つのタイプがあり、それらは、ボックス (均等/不均等なスケールが可能)、カプセル (均等なスケール、または長さまたは幅のいずれかの方向のスケールが可能)、および球 (均等スケールのみ可能) の 3 タイプです。物理資産の衝突プリミティブは、PhAT を使って簡単に変更することができます。PhAT で Phys_Capsule3_Physics を開き、オブジェクトの周囲にワイヤーフレーム状の球とカプセルがあるのを確認します。これらのワイヤーフレーム オブジェクトは、このオブジェクトのボーンの衝突プリミティブです。これらがどのように使用されるかを確認するには、 [Simulate] (シミュレート) ボタンを押してオブジェクトの挙動を観察します。動作を確認したら [Simulate] をもう一度押して停止します。衝突プリミティブの 1 つを左クリックして選択すると、オレンジ色にハイライトされ、近隣のプリミティブは白くなります。これは、これらの衝突ボディ間の衝突が無効となり、ボディ間の相互作用がコンストレイントによって処理されることを示しています。 [X] キーを押して選択項目をロックします。誤ってプリミティブを選択解除したり、別のプリミティブを選択しないようにするためです。「*LOCK*」という文字が、ウィンドウの左下隅に現れます。

Fig1_1.jpg

このプリミティブの中央にある座業軸ギズモを使って、衝突ボディの移動、回転およびスケーリングを行うことができます。 [W] キーを押すか、または [Move] モードボタンをクリックして、 移動 モードにあることを確認します。左クリックしてブルーのギズモライン (Z 軸) をドラッグすると、ボディはその軸に沿って移動します。前述のとおり、ボディの回転やスケーリングにも同じコントロールを使用できます。ボディを回転するには、 [E] を押して回転モードに入るか、ツールバーの [Rotate] ボタンをクリックします。平行移動ギズモが、それぞれに座標軸を表す 3 つのワイヤーリングで構成される回転ギズモに変化します。画面でギズモがよく見えない場合は、骨格オブジェクトのレンダリングモードをトグルして (または [H] を押して) ワイヤーフレームまたは非表示モードに切り替えます。

Fig1_2.jpg

これらの各リングを左クリックしてドラッグすることで、移動モードの場合と同様に対応する軸まわりの回転を行います。球体の回転の場合には画面では回転の様子がはっきりしませんが、ボックスやカプセルの回転では非常に明確にわかります。

スケーリングも平行移動と同じですが、この場合には不均等のスケーリングもサポートしています。 [R] を押すかまたは [Scale] ボタンをクリックして、_スケール_ モードに切り替えます。 移動 モードのときと同じようなギズモが現れますが、左クリックするとドラッグの方向に従ってボディ全体がスケールアップまたはスケールダウンされます。Shift-左クリックすると、クリックした軸方向にのみスケーリングされます。球体に対して不均等なスケーリングを試みても、球は均等にスケーリングされるので注意してください。

ボディの追加や削除も簡単です。ボディを選択して [Add Primitive] (プリミティブの追加) のいずれかのボタンをクリックすると、そのボーンの元の位置にプリミティブが追加され、その後で適切な位置に移動、回転、スケーリングできます。1 つのボーンに対する衝突ボディの数に上限はありませんが、1 つの物理アセットに非常に多数のボーンとボディが存在する場合はパフォーマンス問題を招きます。

ボディに関してプロパティパネルで設定可能なオプションがいくつかあります。

SleepFamily 物理エンジンがオブジェクトをスリープ (非活動) 状態にする程度を制御します。
bNoCollision このオブジェクトの物理衝突を無効にしますが、物理は引き続き適用されます。
bAlwaysFullAnimWeight これが TRUE で SkeletalMeshComponent の bEnableFullAnimWeightBodies が TRUE の場合、PhysicsWeight の設定にかかわらず、グラフィックボーンの更新にこのボディの物理が常に適用されます。これは、ポニーテールや布のようにしなやかなボーンなど、緩いパーツへの影響を「常にオン」にしておくのに便利です。これらのボディは SkeletalMeshActor クラスが自動的に固定を解除 (unfix) するので、物理モードが PHYS_RigidBody でなくても「目が覚めていて」、つまり活動状態にあります。動き回るキャラクター上の緩いパーツ (例えばシネマティクス) にこれを利用することができます。ただし、その場合は SkeletalMeshComponent の bHasPhysicsAssetInstance を TRUE に設定する必要があります。

AggGeom 内部の個々の形状を開いて、追加のオプションを設定することができます。

bNoRBCollision TRUE の場合、この形状の物理は完全に無視されます。衝突もなければ、ボディの質量/慣性テンソルにも関与しません。ボディ内のすべての形状でこれを設定することは無効です。
bPerPolyShape TRUE の場合、PerPolyCollisionBones オプションでボーンが ポリゴン単位衝突を使用すると定義されていても、この形状は Unreal のライントレースの対象となります。

コンストレイント (制約)

[Body] モードボタンを押すと コンストレイント モードに切り替わり、物理アセットの画像が変化して、ボーンの位置にパープルのワイヤーフレームの十字が表示されます。コンストレイントとは、シミュレーションの実行時にボーンがどのようにつなぎ合わされているかを表すものです。

Constr_1.jpg

ボディと同じ方法でコンストレイントを選択すると、そのコンストレイントの限界が分かります。デフォルトでは、コンストレイントは無限であり、これは通常のギズモとして表されますが、限界を設定すると、ユーザーが入力した値が反映されコンストレイントが変化します。例えば、Twist (ねじり) の限界では twist 軸に沿って線が作成され、限界値が設定されていないうちはその端には X が現れます。値が設定されると線の端にはグリーンの弧、さらその弧を分割するイエローの線が描かれます。このイエローの線は、Twist 限界内部のボーンの現在の位置を示しています。Swing (旋回) 限界の場合、 Swing1LimitAngle または Swing2LimitAngle で値が設定されていないうちは、コンストレイントの軸に沿って両方向に同じ長さに伸びるグリーンの線が示されます。軸を変更する必要がある場合は、コンストレイントを選択して [Q] を押せば次の軸へとサイクル移動します。いずれかの SwingLimit に値を入力すると、グリーンの線がグリーンのコーンに変化し、その内側のイエローの線は、ここでも同様にボーンの現在の位置を示します。Swing と Twist の限界値を両方とも入力すると、グリーンのコーンの内側のイエローの線の端に twist 限界が現れます。

コンストレイントが選択されている状態で値を変更することで、限界の変更を視認できます。設定が終了したら、アセットのシミュレートを実行して調整結果を確認します。コンストレイント (選択した 1 つまたはすべてのコンストレイント) が画面にレンダリングされるようにするには、Cycle Constraint Rendering (コンストレイントのレンダリングサイクル) ボタンを押してモードをサイクル変更するか、かまたは [K] を押します。これが有効になると、コンストレイント内にイエローの線が動き回り、限界に達したところで停止する様子を確認できます。

コンストレイントはボディと同様に回転および移動させることができますが、操作上の違いとして、Shift キーを押しながらコンストレイントを移動すると、コンストレイントの位置から開始位置を切り離します (つまり、シミュレーションが始まるとコンストレイントは元の位置に戻ります)。コンストレイントを回転するとその限界は回転しますが、ジョイントの現在の回転には影響しません。これは、ひじなどの非対称的なジョイントを設定する場合に便利です。コンストレイントを回転し、その回転限界が現在のジョイントの位置を超えている場合、そのアセットのシミュレーションを実行すると、最初のフレームですべてのジョイントがその限界設定を満たすように移動し、したがってアセットのシミュレーションと同時に運動が発生します。

RotatedConstraint.jpg

コンストレイントの各種設定の詳細は、 物理制約の参照 ページに掲載されています。

その他

物理アセットを作成すると、隣接するプリミティブ間の衝突は自動的に無効になります。これは、プリミティブを別々に離しておくのに、衝突よりもコンストレイントに依存する方がよりしっかりしているためです。

特定のボーンの衝突ボディをすべて削除すると、そのボーンとコンストレイントがアセットから除外されるので、この場合には、Weld (結合) ボタンを使って (または [D] を押して) ボディを結合する方が良いでしょう。