スケルタル メッシュ上のボーンにオブジェクトをアタッチする場合は、このアタッチメントをオフセットする必要がある場合があります。数学演算を使用してオフセット トランスフォームを推定する代わりに、ソケット を作成することができます。ソケットはスケルトンの階層内にある専用のアタッチ ポイントで、親であるボーンを基準として変形させることができます。設定すると、オブジェクト、武器、およびその他のアクタをソケットにアタッチすることができます。
このドキュメントでは、ソケットの作成および使用方法の概要を説明します。
前提条件
- プロジェクトに スケルタル メッシュ が含まれている。
ソケットを作成する
ソケットは スケルトン ツリー から作成され、主要なあらゆる アニメーション エディタ からアクセスすることができます。スケルトン ツリー のボーンを右クリックし、[Add Socket (ソケットを追加)] を選択します。

これで、新しいソケットが、前に選択したボーンの親として、スケルトン ツリーで表示されます。

ソケットを削除するには、ソケットを右クリックして、[Delete (削除)] を選択するか、キーボードの Delete キーを押します。

デフォルトでは、ソケットを作成して操作すると、スケルタル メッシュの スケルトン アセット が編集されます。そのため、ソケットの変更を行う際は、スケルトン アセットを必ず保存してください。
ソケットを移行および編集する
ソケットを作成すると、以下の方法でソケットを操作することができます。
ソケットの表示/非表示
デフォルトでは、ソケットは、 アニメーション エディタのビューポート には表示されません。表示するには、[Viewport (ビューポート)] メニューで [Character (キャラクター)] > [Bones (ボーン)] を選択し、[Sockets (ソケット)] を有効にします。

選択と移動
ソケットは、スケルトン ツリーでクリックするか、ビューポートで表示されている場合は、ビューポートでクリックすると、選択できます。その後、ビューポートのトランスフォーム マニピュレータでドラッグすると、移動できます。ソケットは、平行移動、回転、およびスケーリングすることができます。

コピーおよび貼り付け
ソケットは、要件に応じてさまざまな方法でコピーして貼り付けることができます。
ソケットをコピーするには、スケルトン ツリーでソケットを右クリックし、[Copy Selected Sockets (選択したソケットをコピー)] を選択するか、Ctrl+C を押します。

次に、以下のどちらかを選択します
-
ソケットを同じボーンに貼り付ける。これには、スケルトン ツリーの任意のボーンを右クリックして、[Paste Sockets (ソケットを貼り付け)] を選択します。この操作により、基本的に、ソケットが複製されます。
-
ソケットを他のボーンに貼り付ける。これには、スケルトン ツリーの他のボーンを右クリックし、[Paste Sockets To Selected Bone (ソケットを選択したボーンに貼り付け)] を選択します。この操作により、同じオフセット情報を持つソケットのコピーが、新しいボーンの親として貼り付けられます。
メッシュ ソケット
異なるスケルタル メッシュ間で スケルトンを共有する 場合、スケルタル メッシュうちの 1 つの専用のソケットを作成する必要がある場合があります。専用のソケットは、メッシュ ソケット を使用して作成します。メッシュ ソケットにより、ソケットは スケルトン ではなく、スケルタル メッシュ 上に存在するようになります。

メッシュ ソケットを作成するには、既存のソケットを右クリックし、[Create Mesh Socket (メッシュ ソケットを作成)] を選択します。これでソケットがメッシュ ソケットに変換されます。メッシュ ソケットを作成したいスケルタル メッシュで、現在 スケルタル メッシュ エディタ を使用していることを確認してください。

スケルトン アセットに存在するソケットと同様に、メッシュ ソケットもスケルタル メッシュに存在するため、メッシュ ソケットを作成または変更する場合は、そのアセットを保存する必要があります。
ソケットの詳細
ソケットが選択されている場合、[Details (詳細)] パネルに次のプロパティが表示されます。

名称 | 説明 |
---|---|
Relative Location / Rotation / Scale | 位置、回転、スケールのいずれかでの親ボーンに対する相対座標でのソケットの現在のトランスフォーム座標。 |
Force Always Animated | これを有効にすると、このソケットのすべての親ボーンが、現在の LOD 設定によって削除されているかどうかに関係なく、常に評価されます。 |
Socket Name | ソケットの名前。 |
Bone Name | ソケットをアタッチするボーンの名前。この値を別のボーンに変更すると、ソケットがそのボーンの親になります。 |
ソケットを使用してアタッチする
ソケットを作成して配置したら、オブジェクト、エフェクト、およびその他のアクタをソケットにアタッチすることができます。次の種類のアタッチを行うことができます。
基本レベルのアタッチ
レベル内で基本的なアタッチメントを設定することができ、デフォルトでオブジェクトがソケットにアタッチされます。これを実行するにはいくつかの方法があります。

ドラッグアンドドロップ
レベルのアウトライナーで、オブジェクトをスケルタル メッシュ アクタにドラッグします。ウィンドウが表示され、そのウィンドウで任意のボーンまたはソケットを選択し、アタッチすることができます。ソケットを選択すると、アタッチメント プロセスが実行されます。

レベル内でアタッチする場合、オブジェクトは以前のワールド トランスフォームを保持します。これは、他のオブジェクトの一意のオフセットを作成する場合に役立つ可能性があります。オブジェクトをソケットのトランスフォームと一致させたい場合は、オブジェクトのトランスフォーム値をデフォルトに設定します。

コンテキスト メニュー
オブジェクトを右クリックし、[Attach To (アタッチ先)] を選択し、スケルタル メッシュ アクタをクリックします。ウィンドウが表示され、そのウィンドウで任意のボーンまたはソケットを選択し、アタッチすることができます。ソケットを選択すると、アタッチメント プロセスが実行されます。

ソケットのスナップ
レベル エディタで [Settings (設定)] ドロップダウン メニューをクリックし、[Enable Socket Snapping (ソケットスナップを有効にする)] を選択します。これで、すべての ソケットがビューポートで表示されます。

次に、表示されている任意のソケットにオブジェクトをすばやくアタッチすることができます。これには、まずオブジェクトを選択してから、ソケットを選択します。

基本的なブループリントのアタッチ
また、 ブループリント の Skeletal Mesh コンポーネント への基本的なデフォルトのアタッチを設定することができます。
まず、[Components (コンポーネント)] パネルのスケルタル メッシュ上でオブジェクトをドラッグして Skeletal Mesh コンポーネントをオブジェクトの親にします。

次に、子オブジェクトを選択し、[Details] パネルで Parent Socket プロパティを特定します。検索ボタン をクリックして、アタッチ先のソケットを選択します。

動的アタッチ
オブジェクトがソケットにアタッチおよびデタッチするタイミングを制御したい場合は、各種 Attach および Detach ブループリント関数を使用することができます。
アタッチでは、次の関数を使用できます。
- Attach Actor To Actor.
- Attach Actor To Component.
- Attach Component To Component.

アタッチ関数には、次のプロパティがあります。
名称 | 説明 |
---|---|
Target | アタッチされる子アクタまたはコンポーネント。 |
Parent | ターゲット がアタッチされている親アクタまたはコンポーネント。 |
Socket | アタッチするときに使用するソケット。 |
Location / Rotation / Scale Rule | ターゲット がアタッチされた後の最終的な位置を制御するトランスフォーム ルール。次のオプションから選択できます。
|
Weld Simulated Bodies | ターゲットを親に 結合 するかどうか。 |
デタッチでは、次の関数を使用できます。
- Detach From Actor
- Detach From Component
