スキン ウェイト プロファイル (SWP) システムでは、スケルタル メッシュ の一部として保存されている元のスキン ウェイト (SW) のサブセットを置き換えることができます。 このシステムのユースケースはさまざまですが、可能なユースケースの 1 つは、動的文字のパーツを無効にする状況または特定のプラットフォームにおける視覚的な忠実度を向上させることができます。
たとえば、下のビデオでは、ローエンド プラットフォームでのパフォーマンスを向上させるために、コートを着たキャラクターの動的パーツを無効にしています。 足を上げると、望ましくないクリッピングが発生します。スキン ウェイト プロファイルを使用すると、よりコストのかかるダイナミクスを使用する代わりに、クリッピングの量を軽減する適切な方法を実現できます。
以下に、動的クロスを使用する場合、スキン ウェイト プロファイルを使用せずにポーズをコピーする場合、およびスキン ウェイト プロファイルを使用して実行する場合の違いを示します。
![]() |
![]() |
![]() |
---|---|---|
クロス | ポーズをコピー | プロファイル |
設定
スキン ウェイト プロファイルを使用する場合、ランタイム時に使用できるようにするには、エディタ でスキン ウェイト プロファイルをインポートして設定する必要があります。
プロファイルをインポートする
スケルタル メッシュ エディタ 内のプロファイルをインポートすることができ、さまざまなスキン ウェイトを含む FBX ファイル、プロファイルの名前、およびオプションで LOD インデックスを指定する必要があります。
-
スケルタル メッシュ の [Asset Details (アセットの詳細)] パネル内にある [Skin Weights] の下の [Add (+)] ボタンをクリックし、[Import Skin Weight Profile] を選択します。
-
インポートするスキン ウェイト データを含む FBX ファイルを選択し、[Open] をクリックします。
-
[Profile Name] (およびオプションで [LODIndex]) を入力し、[Import] をクリックします。
新しいスキン ウェイト プロファイルは、[Asset Details (アセットの詳細)] パネル内に配列要素として追加されます。
特定の LOD データをインポートする
カスタム LOD を使用する スケルタル メッシュ LOD があり、エンジン内で生成されずに個別にインポートされた場合は、異なるスキン ウェイトを含む一致するファイルをインポートする必要があります。 これらのファイルは、次に示すように、既存の SWP の一部としてインポートすることもできます。
既存の SWP で、ウェイトをインポートする LOD を選択します。

スキン ウェイト データを含む FBX ファイルを選択すると、プロファイルの [Source Files] セクションに表示されます。

特定の LOD のプロファイルをインポートする
特定の LOD レベルでオリジナルのスキン ウェイトをオーバーライドしたい (またはその必要がある) 場合は、インポート処理中に、インポートしたファイルに含まれるデータの LOD インデックスを指定します。

プロファイルを再インポートする
スキン ウェイト プロファイルのソース データを更新した場合は、ファイルを再インポートできます。保存されたファイル パスが存在しない場合は、新しいファイルの場所を指定するよう求められます。
これを行うには、再インポートする SWP の [Reimport] アイコンをクリックします。

複数の LOD がある場合は、SWP を再インポートする LOD を再インポート メニューから選択できます。
別のファイルを再インポートする
スケルタル メッシュ エディタ 内で [楕円 (...)] アイコンをクリックして新しいファイルを選択すると、別のファイルからスキン ウェイトを再インポートできます。

プロファイルを削除する
スケルタル メッシュ エディタ 内のプロファイル、またはプロファイル内の LOD を削除するには、[Remove Profile] ボタンをクリックします。

削除オプションから、プロファイル内の SWP または LOD 全体を削除できます。
プロファイルをプレビューする
特定の SWP のスキン ウェイトが アニメーション エディタ 内でどのように表示されるかは、ビューポートまたは [Play in Editor] セッション中にプレビューできます。
スキンメッシュ コンポーネント (または子クラス) に対して特定の SWP を設定するには、ビューポートでそのコンポーネントを選択し、プレビューするプロファイルを選択します。
-
[Character] ボタンをクリックし、[Animation] の下の [Skin Weight Profile] セクションで目的の SWP を選択します。
プレビューする SWP を選択すると、ビューポートにデバッグ情報が表示されます。
[Details (詳細)] パネルと スキン ウェイト プロファイル 設定を使用して、メイン レベル エディタのビューポート内でスキン ウェイトをプレビューすることもできます。
ランタイム ブループリント エクスポーズ API
ランタイム時に、提供されている (公開されたブループリント) API を使用してスキンメッシュ コンポーネント (または任意の子クラス) の SWP を設定できます。
名前 | ブループリント ノード | 説明 |
---|---|---|
Set Skin Weight Profile | ![]() |
これにより、指定された名前 (存在する場合) に従って特定の SWP が設定されます。 |
Clear Skin Weight Profile | ![]() |
これにより、以前に設定されたすべての SWP がクリアされます。 |
Unload Skin Weight Profile | ![]() |
これにより、強制的にアンロードされ、指定された名前のスキン ウェイト バッファが削除されます。 |
Get Current Skin Weight Profile | ![]() |
現在設定されている SWP の名前を返します。それ以外の場合は 「None」 です。 |
Is Using Skin Weight Profile | ![]() |
プロファイルが設定されているかどうかを返します。 |
スケーラビリティ
システムには、デフォルト設定の SWP を実行時にロードする機能があります。これは、静的または動的パスの 2 つのパスを使用して実行できます。
静的パス
静的 パスを使用して、スケルタル メッシュ データのシリアル化中に、デフォルト プロファイルが設定されているかどうかがチェックされ、設定されている場合はロードされます。 オリジナルのスキン ウェイト バッファのデータをデフォルト プロファイルのデータで上書きします。 つまり、静的パスを使用してデフォルトの SWP がロードされると、それ以降は変更を適用できず、スケルタル メッシュがリロードされるまでオリジナルのデータは失われます。
ユーザーが動的パスに変更しようとしたり、SWP を手動で設定しようとすると、システムがエラーを発生します。
動的パス
動的 パスは、静的パスと同様に、シリアル化中にデフォルト プロファイルがロードされます。ただし、オリジナルのスキン ウェイト バッファをオーバーライドする代わりに、新しいスキン ウェイト バッファが作成されます。 サブシステムがバッファーを要求するたびに、オリジナルではなくオーバーライドされたものを返します。このシステムの利点は、ランタイム時に切り替えることができることです。これは、静的パスとは異なる点です。
デフォルト プロファイル
スケルタル メッシュ エディタ の [Details (詳細)] パネル内で既定値の SWP プロファイルを割り当てたり、プラットフォーム単位または LODIndex 単位でオリジナルのスキン ウェイトをオーバーライドしたりできます。

上の画像では、1 つの SWP が [Desktop] のオーバーライドとして割り当てられ、別の SWP が [Mobile] に設定されています。
SWP をデフォルト プロファイルとして割り当てる場合、追加のプロファイルをデフォルトとして割り当てることはできません。

デフォルトのプロファイルが割り当てられている場合、[Default Profile from LODIndex] で設定されている [LODIndex] の下にある [LOD] によって、スケルタル メッシュのスキン ウェイトがプロファイルのスキン ウェイトでオーバーライドされます。

ランタイム時のコンソール コマンド
次のコンソール コマンドは、SWP システムのプレビュー中のランタイム時に使用できます。
名前 | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
a.SkinWeightProfile.LoadByDefaultMode | ランタイム時の最適化を有効 / 無効にして、オリジナルのスキン ウェイトを置き換えるデフォルトのプロファイルでオーバーライドします。特定のプラットフォームまたはデバイスのメモリを最適化するために使用できます。
|
||||||||||
a.SkinWeightProfile.DefaultLODOverride | スケルタル メッシュのデフォルトのスキン ウェイトをオーバーライドするデフォルトのスキン ウェイト プロファイルの LOD インデックスをオーバーライドします。
|
||||||||||
a.SkinWeightProfile.AllowedFromLOD | スキン ウェイト プロファイルを適用できる LOD インデックスをオーバーライドします。
|