アクタのアタッチ
概要
UE3 では、レベル中のオブジェクト同士をアタッチした方が望ましい場合があります。例えば、移動するリフトにライトをアタッチしたり、クレーンにパーティクル エミッタをアタッチしたり、アニメーション化されたキャラクターのボーンにメッシュをアタッチしたりすることがあります。ここでは、Unreal Editor を使ってこの設定を行う方法を説明をします。
動的なアクタ
「静的」なアクタは、ゲーム中で動かすことが出来ないので、他の何かとアタッチしないほうが懸命です。例えば、StaticMeshActor (静的メッシュ アクタ) を何かとアタッチしたい場合には、Mover (別名InterpActor) を使います。ライトについても同様で、PointLight (ポイントライト)ではなく PointLightMovable (可動性ポイントライト) を使います。
ベース ポインタ
アクタの "Attachment" (アタッチメント) セクションには、「Base」というプロパティがあります。このプロパティは、アクタの「ベース」になるアクタ、または「アタッチ先」になるアクタを指しています。アクタ A をアクタ B にアタッチしたい場合に、最も簡単な方法は下のとおりです。
- A を選択します。
- プロパティ ウィンドウの [Lock] (ロック) ボタンを押し、別のアクタを選択した際にも、A のプロパティがそのウィンドウに表示されたままになるようにします。
- B を選択します。
- 「Attachment」のセクションを開いて、A の「Base」プロパティを選択します。
- 緑の矢印をクリックして、「Base」プロパティに現在選択中のアクタ (B) を割り当てます。
ベースの指定されたアクタを選択すると、そのアクタからベースに向かって伸びる緑の線と、ベースを囲む緑のボックスが表示されます。これにより、すべての設定が適切かどうかを簡単に確認することができます。
剛体
ベース ポインタは、PHYS_RigidBody を使っているアクタに対しては機能しません。物理シミュレーションを使っているアクタをアタッチするには、ジョイント(制約とも呼ばれる)を使います。詳細については、 物理抑制のビデオ トレーニング モジュール のページをご覧ください。
アクタをボーンにアタッチする
アクタのアタッチは、他のアクタの SkeletalMesh (骨格メッシュ) の特定のボーンに対して行うことも出来ます。これは特に、カットシーンの中で、アニメーション化されたキャラクターの手に武器を持たせるような場合に便利です。これをするには、まず上で説明した手順でベース ポインタを設定します。次に、同じく「Attachment」のセクションの BaseBoneName (ベース ボーン名) プロパティに、アタッチ先のボーンの名前を入力します。接続後のアクタを選択すると、先ほどと同様に緑の線とボックスが表示されますが、今回は特定のボーンの周囲にのみ表示されます。これにより、入力したボーンの名前が正しいかを簡単に確認できます。特定の SkeletalMesh に含まれるボーンの名前は、AnimSet Viewer を使って探すことができます。AnimSet Viewer を起動するには、ブラウザ中の該当する骨格メッシュをダブルクリックしてください。
bShadowParented
2008年7月QA承認ビルド以前では、bShadowParented は BaseSkelComponentにはシャドウペアレントでした。
2008年7月QA承認ビルド以来、フラグは有効な場合は、 に対してシャドウペアレントですが、そうでない場合は、これにより、前に述べたコンポーネントすべてが同じシャドウを投射します。これはレンダリングにはさらに効果的でオブジェクトシャドウがオーバーラップする2重のシャドウイングを回避します。
アタッチメカニズム
UE3では2つのアタッチメカニズムがあります。
SoftAttach
1つめは、オブジェクト上に立っている時のプレイヤーのPawn 用です。これはデフォルト設定になっている SoftAttach です。基本的な移動において、各フレームのアタッチしたアクタの直線モーションを演算し、そのモーションを適用することで、同じく関連した位置になるように移動しようとします。これはあらゆるプレイヤーの移動に追加されるため、プレイヤーは動いているオブジェクト上でも走ったりすることができるのです。また、その動いている物が突起物の下にいってしまった場合は、プレイヤーが最終的に落ちるまでその動いている物はスライドし続けます。ただし、これはゆっくりですがエラーの原因となり(特にアクタの回転では)、アタッチしたオブジェクトは徐々にその基になっている物から押される形となります。
HardAttach
UE3 には、2 種類のアタッチメカニズムがあります。ひとつは、オブジェクトの上に立っているプレーヤ Pawn 向けのメカニズムで、これがデフォルトの「ソフト」アタッチメントです。SoftAttachでは、ベースが移動すると、アタッチされたアクタの直線移動がフレームごとに計算され、それをアクタに適用することによって、ベースに対するアクタの相対位置が維持されます。この移動は、プレーヤの移動にも加算されるので、プレーヤは移動するオブジェクトの上でも走り回ることが出来ます。また、移動するベースが天井の低い障害物の下を通過すると、プレーヤーは、ベースから転げ落ちるまで後ろに押されます。SoftAttachでは、(特に回転するアクタの場合)時間がたつにつれて誤差が蓄積して、アタッチされたアクタが徐々にベースから「ずれていく」可能性があります。
もうひとつのアタッチメカニズムは、HardAttach と呼ばれ、アタッチされたアクタとベースとの、相対的な位置/回転が維持されることを保証します。強いアタッチでは、アタッチされたアクタと環境との間の衝突を正しく処理できないので、非衝突のアタッチメント (bBlockActors が FALSE) に対してのみ利用できます。
注意していただきたい点は、アタッチされたアクタが徐々にベースからデタッチされていく場合には、bHardAttach フラグが TRUE であることを確認するということです。アタッチされたアクタ (Emitter, PointLightMovable など) のほとんどで TRUE に設定されています。
Matinee
Matinee では、他のオブジェクトをベースにしたオブジェクトを適切に処理できます。他の何かをベースにしたアクタをキーフレーム化する際には、移動情報はベースに対する相対移動であるとみなされます。これにより、他のアクタから相対的に移動するアクタ(列車のドアなど)の設定が容易になります。また、Matinee の中で移動やアニメーションをスクラブすると、アタッチされたアクタもリアルタイムで更新されます。重要な点は、Matinee を使ってキーフレーム化を行う 前に 、アタッチの設定を行うことです。Movement トラックを設定した後でアタッチの設定を行うと、結果は思わしいものになりません。
Important!
You are viewing documentation for the Unreal Development Kit (UDK).
If you are looking for the Unreal Engine 4 documentation, please visit the Unreal Engine 4 Documentation site.