Unreal Engine のスケルトン編集ツールを使用すると、既存のスケルトンの編集および修正、ボーンの名前の変更、ボーンの配置位置の編集、ボーンの階層の変更などを行うことができます。
また、Bone Creation や Skin Weight Painting などのツールを使用して、FBX ファイルをインポートすることなく任意のスタティックメッシュ用に新しいスケルトン アセットを作成することもできます。 コントロールリグやシーケンサーなどのツールと組み合わせると、キャラクターのスキン作成やアニメートをすべて Unreal Engine のエディタ内で済ませることができます。
前提条件
Skeletal Mesh Editing Tools プラグインを有効にします。 メニュー バーで [Edit (編集)] > [Plugins (プラグイン)] の順に移動して [Animation (アニメーション)] セクションにある Skeletal Mesh Editing Tools を見つけるか、検索バー を使って検索します。 これらのプラグインを有効にして、エディタを再起動します。
プロジェクトに、スケルトンを作成できるスタティックメッシュ オブジェクト、またはスケルトン アセットを編集するスケルタルメッシュ キャラクターが含まれている必要があります。
スケルタルメッシュを作成する
コンテンツ ブラウザ内でスタティックメッシュ オブジェクトを右クリックし、コンテキスト メニューの [Convert to Skeletal Mesh (スケルタルメッシュに変換)] オプションを選択します。
[Convert to Skeletal Mesh] オプションを選択すると表示されるメニューから、スタティックメッシュにバインドする既存のスケルトン アセットを選択するか、[Create New (新規作成)] を選択して新しいスケルトン アセットを作成します。
新しいスケルトン アセットを作成すると、スタティックメッシュの原点にルート
ボーンが 1 つ作成されます。
スケルトン アセットを編集する
新しいスケルトン アセットを作成するか、編集する既存のアセットを選択し、スケルトン エディタでスケルトンを開きます。 エディタが開いたら、ツールバーにある [Editing Tools (編集ツール)] ボタンを選択して、スケルトンの編集を開始します。
次の図では、スケルトン エディタのツールとパネルの概要を参照できます。
[Tools (ツール)] パネル
スケルトンツリー
詳細/アセット詳細/プレビュー
ボーンを作成および編集する
ボーンの作成を開始するには、[Tools] パネルで [Skeleton (スケルトン)] モードを選択します。
スケルトン編集ツールを使用すると、ビューポートのメッシュ内にボーンを配置できます。
[Add (追加)] モード (N) をアクティブ化してからビューポート内のボーンを選択し、ドラッグして新しいボーンの長さと位置をキャラクターに合わせて調整します。 最初に選択したボーンが、新しいボーンの親として機能します。
任意の数の新しいボーンを作成したら、[Accept (決定)] を選択して新しいボーンとその位置を確定します。
[Axis Length (軸の長さ)] と [Axis Thickness (軸の太さ)] を使用して、新しいボーンの向きを視覚化します。
Update Children プロパティを有効にすると、編集時に選択したボーンを親とするボーンが動くようになります。 これは、チェーン全体を調整するのに便利です。
ボーンをペアレント化する
[Skeleton Tree (スケルトン ツリー)] パネルでボーンを選択し、新しい親のところまでドラッグしてドロップすると、スケルトン階層でボーンを再ペアレント化することができます。
ボーンの名前を変更する
ボーンは、右クリックしてコンテキスト メニューから [Rename Bone (ボーン名を変更)] オプションを選択すると、名前を変更 (F2) することができます。
また、チェーンを複数選択して、一括でボーンの名前を変更することもできます さらに、ハッシュタグ (#) 演算子を名前の末尾に使用すると、連続した番号で複数のボーンの名前を変更することができます。 たとえば、チェーンを複数選択して最初のボーンの名前を「tail_##1
」とします。この変更により、最初のボーンが「tail_001
」になり、次のボーンから名前は「tail_002
」、「tail_003
」と続きます。
編集モード
[Edit (編集)] モードを選択してボーンの向き設定やボーンのミラーリングを行うツールなどを使用すると、スケルトンにある既存のボーンを編集することができます。
ボーンの向きを設定する
ボーンを期待どおりに回転させるには、正しい方向に設定する必要があります。 これを「Bone Orientation (ボーンの向き)」と言います。 ボーンの向きを設定するには、方向を設定したいチェーンを選択して [Orient (向き)] セクションを展開します。
次の表では、ボーンの向きに関する各プロパティとそれらの機能について説明します。
プロパティ | 説明 |
---|---|
Primary | ボーンが向く方向を設定します。通常は、X 軸です。 |
Secondary | ボーンの上方向を表す軸を設定します。 |
Use Plane as Secondary | このプロパティを有効にすると、方向の設定がしやすいようにボーンを通る平面が作成されます。 |
Secondary Target | 副軸に使用する位置を設定します。 |
Orient Children | このプロパティを有効にすると、選択したボーンの下にあるすべての子の方向を設定します。 |
また、ボーンを選択して回転ギズモ (R) を使用したり、各軸 (X、Y、Z) の変換値を明示的に指定したりして、手動でボーンの向きを変更することもできます。
ボーンをミラーリングする
スケルトンの作成プロセスを迅速化するには、ボーンのミラーリング ツールを使用してボーン チェーンをミラーリングし、手足やその他のミラーリングされているボーン構造をコピーすることができます。 ボーン チェーンをミラーリングするには、ミラーリングするチェーンやボーンを選択し、[Edit] モードの [Mirror (ミラーリング)] ボタンを使用します。
次の表では、ボーンのミラーリングに関する各プロパティとそれらの機能について説明します。
プロパティ | 説明 |
---|---|
Mirror Axis | 軸平面を基準にしてミラーリングするように設定します。 |
Mirror Rotation | 有効にすると、平面を基準にした回転方向が逆になります。 これは通常、アニメーションに必要です。 |
Left String | 左側の検索で使用される命名規則を定義します。 |
Right String | 右側の検索で使用される命名規則を定義します。 |
Mirror Children | 有効にすると、ミラーリングされたボーンは、選択したボーン チェーン内にあるすべての子もミラーリングします。 |
Skin Weights (スキン ウェイト)
スケルタルメッシュに新しいボーンを追加する場合、Bind Skin (スキンのバインド) ツールを使用すると、それらのボーンにスキン ウェイトが追加され、ボーンがメッシュのジオメトリに影響を与えるようになります。スキン ウェイトはスケルタルメッシュのジオメトリにある各頂点に割り当てられる値です。これは、ボーンが移動することによって頂点が変形する影響を表します。 各頂点は、スケルトン内にある複数のボーンによる影響を受ける可能性があります。 ユーザーは、ボーンごとに各頂点へウェイトを割り当て、どのボーンにアタッチするのかを指定する必要があります。 各頂点には、ボーンごとに 0.0
から 1.0 の値を設定します。値を「0
」にすると、頂点はそのボーンによる影響をまったく受けず、値を「1
」にすると、頂点は完全にそのボーンと連動して動作します。 0
から 1
の間で値を指定すると、頂点は部分的にボーンの影響を受けるようになります。 各頂点のスキン ウェイトを個別に設定することは実用的ではありません。代わりに、スキン ウェイト マップをペイントすることで、キャラクター全体をより滑らかで美しく変形させることができるようになります。
各頂点のスキン ウェイト値は正規化されます。これは、頂点ごとにウェイトの合計を「1
」にする必要があるためです。 これにより、スケルトン全体が移動すると、メッシュの頂点も一緒に動くようになります。 頂点のウェイトの合計が 1 未満の場合、頂点の動きはスケルトンの動きから遅れて見えることがあります。 反対に、合計値が 1 を超える場合、頂点はスケルトンより大きく動くようになります。 このことから、Unreal Engine では、メッシュの各頂点のスキン ウェイト値が正規化され、合計値が必ず「1」になります。
たとえば、肘の頂点に対して前腕のボーンのウェイトを「0.7
」にした場合、残りの「0.3
」のウェイトが他の 1 つ以上のボーンに割り当てられます。 この例の場合は、上腕に割り当てられる可能性が高くなります。
頂点のウェイトを編集すると、Unreal では合計値が常に「1」になるように、他のウェイトが自動的に正規化されます。そのため、Unreal Engine ではスキン ウェイトの値が自動的に調整される可能性があります。
頂点に影響を及ぼすものが 1 つのみの場合、つまり 0 より大きなウェイトを持つボーンが 1 つだけの場合は、そのボーンのウェイトを意図的に変更することができません。 1.0
以外の値を設定すると正規化の処理がトリガーされ、割り当てた値に関係なく、値は「1.0
」に戻されます。 頂点のウェイトを複数のボーンに 0 以外の値で割り当てると、ユーザーが設定したウェイトの割合を達成するために、正規化によって余分なウェイトが他の影響を持つボーンにダンプされます。
先ほど例に挙げた前腕に「0.7」、上腕に「0.3」のウェイトを割り当てた頂点について考えてみます。 前腕のウェイトを減らして「0.6」にすると、正規化によって自動的に上腕の値が「0.3」から「0.4」に変更され、合計値は「1」のままになります。
頂点のウェイトは明示的に追加するだけにして、正規化によって必要に応じてウェイトが調整され、目的の値が達成されるようにするのが最善の方法です。
ボーンの影響を少なくしたい場合は、別のボーンにウェイトを追加することをお勧めします。 これにより、正規化によって他の影響を持つボーン間でウェイトが均等に分配されるのではなく、どのボーンの影響を大きくするかを明示的に指定することができます。
スキン ウェイトをバインドする
スキン ウェイトのペインティングを開始するには、[Tools] パネルで [Skin (スキン)] モードを選択してから [Bind Skin] ツールを選択し、アセットのベースラインを設定します。
次の表では、Bind Skin ツールの各プロパティとそれらの機能について説明します。
プロパティ | 説明 |
---|---|
Binding Type | バインディングに使用するメソッドを選択します。 次のメソッドから選択することができます。
|
Stiffness | バインドの剛性を設定します。 値が低いほど、より遠くにあるボーンのバインドへの貢献度が高くなります。 |
Max Influences | 各頂点に影響するボーンの最大数を設定します。 |
Voxel Resolution | Binding Type を Geodesic Voxel に設定している場合、このプロパティを使用してボクセル化されたグリッドの解像度を設定できます。 値を高くするとパフォーマンスに影響を及ぼす可能性がありますが、より詳細に表示することができます。 |
ウェイトをペイント
ベース ウェイトを設定したら、スキン ウェイト マップをペイントして、各ボーンが影響を与えるメッシュの領域を設定することができます。 スキン ウェイト マップのペイントを開始するには、[Skin] モードで [Edit Weights (ウェイトを編集)] ボタンを選択します。
次に、メッシュのスキン ウェイト マップをペイントするのに使用するツールを選択します。 [Weight Editing Mode (ウェイト編集モード)] には 2 つのモードがあります。
Brush (ブラシ):ペイント ブラシ ツールを使用してメッシュ全体でウェイトをペイントします。 このモードは、主に広い領域や単純な構造体でウェイトをペイントする場合に使用します。
Vertices (頂点):選択ツールを使用し、頂点を個別に選択してスキン ウェイトを編集することができます。 このモードは、主にウェイトを詳細に編集したり、マスキングしたりする場合に使用します。
ブラシモード
ブラシ モードを使用してウェイトのペイントを開始するには、[Skeleton Tree] パネルの階層からボーンを選択します。 これにより、メッシュのそのボーンに割り当てられているウェイトが表示されます。
ブラシ モードには、ウェイトの編集に役立つブラシ機能のセットが含まれています。
オペレーション | 説明 |
---|---|
Add (追加) | このモードは、最大値である |
Replace (置換) | このモードは、現在のウェイトから強度値を減算して置き換えます。 |
Multiply (乗算) | このモードは、現在のウェイトに強度値を乗算します。 |
Relax (緩和) | このモードは、エッジでつながった頂点のウェイトの平均を現在のウェイトに適用します。 このモードは、スムージングと同様に動作します。 |
また、ブラシの種類も 2 つから選択できます。
ブラシ | 説明 |
---|---|
Surface (サーフェス) | サーフェス ブラシは、「測地距離」と呼ばれるメッシュのサーフェスに沿った距離に比例して、頂点に影響を及ぼします。 これは、唇のように曲率が高く、狭い部分をペイントする場合に役立ちます。 サーフェス ブラシで下唇をペイントした場合、上唇には影響せず、上唇をペイントした場合は下唇に影響することはありません。 |
Volume (ボリューム) | ボリュメトリック ブラシは、ブラシの中心から頂点までの直線距離に比例して、頂点に影響を及ぼします。 その際、メッシュとの接続性や距離は考慮されません。 |
また、次の設定を使用して各ブラシを調整することもできます。
設定 | 説明 |
---|---|
Radius (半径) | ブラシのサイズを設定します。 |
Strength (強度) | ブラシの強さを設定して、ブラシ操作の結果を調整します。 |
Falloff (フォールオフ) | ブラシの指数関数的なフォールオフ、つまりブラシがその中心を囲むポイントにどのように影響するかを設定します。 |
ブラシとモードを選択したら、ビューポートのメッシュ上でブラシ ツールをクリックしてドラッグすると、選択したボーンのスキン ウェイト マップをペイントできます。
B ホットキーを使用して、ブラシのサイズやブラシの強度を視覚的に変更することができます。
B キーを押しながら左右にドラッグすると、ブラシの半径を調整することができます。
B キーを押しながら上下にドラッグすると、ブラシの強度を調整することができます。
ウェイトの編集が完了したら、[Accept (承諾)] をクリックして新しいウェイトを確定し、ツールを終了します。
結果に満足できない場合は、ウェイトを確定した後であっても、ctrl+z キーを使用して修正を元に戻すことができます。
頂点モード
頂点モードでは、マーキー選択ツールを使用してウェイトを編集する特定の頂点を選択することができます。
次の表では、頂点モードの操作とその機能を説明しています。
オペレーション | 説明 |
---|---|
Mirroring (ミラーリング) | 現在選択されているボーンと頂点ウェイトを、ミラー平面の方向に基づいて反対側にミラーリングします。 |
Flood Weights (フラッドウェイト) | ブラシ操作を使用して選択したウェイトを一括適用します。 頂点とボーンを選択し、Add 操作を使用してウェイトを一括適用できます。 適用されたボーンのウェイトが |
Prune Weights (ウェイトをプルーニング) | 指定したしきい値を下回るウェイトは削除されます。 これは特にパフォーマンスの向上に役立ちます。 |
ウェイト マップの角ばった境界を滑らかにするには、頂点やボーンを選択して緩和操作を使用します。
ウェイトをミラーリングする
スキン ウェイトのペイント ワークフローを効率化するには、[Mirror] ボタンを使用して、手足や他のミラーリングされた構造体などの対称構造をミラーリングできます。 構造体をミラーリングするには、ミラーリングしたいボーン、ボーンのチェーン、または頂点を選択してから、[Edit Weights] タブの [Tools] パネルにある [Mirror] ボタンを選択します。
頂点モードを使用する場合、頂点が選択されていないと、操作は選択したボーンの影響を受けるすべての頂点に対して実行されます。 これは、キャラクターの左側に設定されたウェイトを右側にミラーリングする際に役立ちます
属性マップをペイント
属性マップは頂点ごとのウェイト マップで、ペイントしてデフォーマー グラフなどの Unreal Engine の別の場所にデータとして送信できます。 新しい属性マップを作成してペイントするには、[Edit Attributes (属性を編集)] タブに移動してマップに新しい名前を付け、[Add Weight Map Layer (ウェイトマップレイヤーを追加)] を実行します。
この新しいマップが [Attributes Inspector (属性インスペクター)] の [Vertex Attributes (頂点属性)] セクションに表示されるようになります。
新しい属性マップを作成したら、[Tool] パネルの [Paint Maps (マップをペイント)] タブを選択してマップをペイントすることができます。 ペイントするマップの種類を選択した属性の下で選択し、ビューポートでクリックしてドラッグし、メッシュのペイントを開始します。
ホットキー リファレンス
次の表では、スケルトンの各作成モードで使用可能なホットキーを説明しています。
ウェイトを編集する
ホットキー | 説明 |
---|---|
B (長押し) (左右にドラッグ) | ブラシの半径サイズを変更します |
B (長押し) (上下にドラッグ) | ブラシの強度を変更します |
Shift | 緩和ブラシ |
Ctrl | 現在のブラシの効果を反転します |
マウスの中ボタン クリック (ボーン上) | 視覚的にペイントする影響範囲を選択します |
F | 選択した頂点またはボーンを中心にカメラを配置します |
ボーン編集
ホットキー | 説明 |
---|---|
N | 新規ボーンを作成 |
ESC | ボーンを編集します |
B | 再ペアレント化 |
Shift + P | 接続を解除 (親から解除) します |
Delete | ボーンを削除します |
Python API
次の表では、スケルトンの編集ツールの Python API について説明しています。Python API を使用して、ワークフローを自動化するスクリプトを作成できます。
ボーンとウェイトにアクセスする
mesh_path = "/Game/Characters/Mannequins/Meshes/SKM_Quinn_Simple"
asset_editor = unreal.EditorAssetLibrary()
skel_mesh = asset_editor.load_asset(mesh_path)
モディファイア ライブラリをロードする
# load the weight modifier
weight_modifier = unreal.SkinWeightModifier()
# load the skeleton modifier
skeleton_modifier = unreal.SkeletonModifier()
新しいボーンを作成する
# Create two bones, a and b
skeleton_modifier.set_skeletal_mesh(skel_mesh)
skeleton_modifier.add_bones(["a", "b"],["root", "root"], [unreal.Transform(), unreal.Transform()])
ボーンをペアレント化する
# Parent bone b to bone a
skeleton_modifier.parent_bone("b", "a")
変更をコミット
# Commit the changes
skeleton_modifier.commit_skeleton_to_skeletal_mesh()