アバターの腕などを細くするためのシェイプキーを追加し、新しいメッシュとして保存するUnityエディタ拡張です。
Unity上でアバターに衣装を着せるとき、姿勢によって体の各部が衣装を貫通するのを防ぐなどの用途に有用です。
効果の例
Unity 2018.4 以降
Booth または Releasesページ より最新版の DietShaper-vX.X.X.unitypackage
をダウンロードし、Unityにインポートする
-
インポート先プロジェクトの
Packages/manifest.json
をテキストエディタ等で開く -
dependencies
オブジェクト内に以下の要素を追加"com.github.chigirits.dietshaper": "https://github.com/chigirits/DietShaper.git",
こちらの方法でインポートした場合、以下の説明文中で示される本パッケージのプレハブやプリセットは Assets/Chigiri/DietShaper/...
下ではなく Packages/DietShaper/Assets/Chigiri/DietShaper/...
下から選択してください。
-
シーンにアバターモデルを配置してください。可能な限りボーンの Transform を変更せず、TスタンスまたはAスタンスの状態であることが望ましいです。
-
「メニュー/Chigiri/DietShaper」を選択すると、ヒエラルキーのトップレベルに DietShaper が配置されます。
-
DietShaper の
Target
に、操作対象となる SkinnedMeshRenderer(アバターの体)を指定してください。 このとき、対象にアタッチされているメッシュがSource Mesh
に自動的にセットされます。 -
Add Shape Key From Preset
のプルダウンから、追加するシェイプキーのプリセットを選択してください。最初はAll
を選択して全プリセットを追加し、それぞれの効果を試してみることをおすすめします。 -
Process And Save As...
ボタンを押して、生成された新しいメッシュを保存してください。保存が完了すると、
Target
のSkinnedMeshRenderer
に新しいメッシュがアタッチされます。 この差し替えられたメッシュに追加されている新しいシェイプキーの値を変更してみて、期待どおりの効果がかかることを確認してください。
Avatar Root
: 処理対象となるアバターのルートオブジェクト。Target
: 処理対象の SkinnedMeshRenderer。Avatar Root
に含まれるボーンに関連付けられたオブジェクトを指定する必要があります。Source Mesh
: オリジナルのメッシュ。Target
を変更すると、Target
にアタッチされているメッシュがこのフィールドに自動的に指定されます。Generic Mode
: チェックすると、Generic アバター用にボーンを直接指定するモードになります(Humanoid でも使用できます)。Adjust Scale
: チェックすると、スケールを自動調整します。作成されたシェイプキーの変化量が大きすぎたり小さすぎる場合にお試しください(それでも直らない場合は注意事項 をお読みください)。Always Show Gizmo
: チェックすると、この DietShaper がヒエラルキーで非選択状態の間もギズモを表示し続けます。
Name
: 作成するシェイプキーの名前。Radius
: 処理対象に含める範囲を表す円筒の半径。大きすぎると無関係な頂点まで変形されてしまうため、適度な値を設定する必要があります。Start Margin
,End Margin
: 変形範囲を狭くするとき、それぞれ開始ボーン・終端ボーンからの距離を比率で指定します。
Is Leaf
: 手足の先など、終端点を超えてスキンの先端まですべての頂点を処理対象に含めるときにチェックします。通常のボーンに沿うような変形とは異なり、開始点に向かって均等に縮められます。Shape
: 変形の形状。開始点を time=0(左端)、終端点を time=1(右端)とし、縦軸にボーンへの吸着強度(0=最大、1=変形なし)を指定します。Add Normal
: 法線を元にした成分の影響力(単位:メートル)。通常は 0 にしてください。Shoulder プリセットで、わきの下をボーンとは垂直な方向に移動するために用います。Remove Threshold
: ポリゴンを削除するしきい値。Shape
がこの値未満になる範囲のポリゴンを削除します。通常は0
に設定してください(ポリゴンは一つも削除されません)。1
にした場合、シェイプキーは作成されません。Gizmo Color
: ギズモの表示色。処理内容への影響はありません。Body Lines[i]
: i番目の処理対象ボディライン。左右の腕など、複数のボーンを別々に処理した結果を1つのシェイプキーにするときは2つ以上のボディラインを持ちます。ボディラインの数は変更できません。通常はプリセットの設定を変更しないでください。Bones[j]
: j番目のボーン。これらのボーンをつないだ線分または折れ線(ボディライン)に向かって周囲の頂点が吸着するように変形されます。ボーンの数は変更できません。通常はプリセットの設定を変更しないでください。X Sign Range
: 処理対象に含める頂点のX座標の符号範囲。脚など、左右で円筒が重なりやすい部分の排他処理に用います。通常はプリセットの設定を変更しないでください。
-
Target
の Transform が本来の(FBXを配置した時点での)値から変更されていると、正常にシェイプキーを作成できません。既に変更してしまっている場合はAdjust Scale
をチェックするか、それでも直らない場合は以下の手順に従ってください。- 大元のFBXをシーンに配置する
Source Mesh
と同じメッシュがアタッチされている 1. 中のオブジェクトの Transform 値をコピー(Copy Component
)Target
の Transform に同じ値を上書き(Paste Component Values
)
-
アバターの Scale がXYZ各軸で不均等に設定されていると、正常にシェイプキーを作成できません。均等な状態で操作してください。
-
位置的に隣り合うシェイプキーをウェイト100で重ね掛けすると、重複部分が膨張することがあります。この場合、ウェイトを67程度に調整することでほぼ平均的に細くすることができます。ただし、節ができますので服に隠れることが前提となります。
MIT License
©2020 TSUTSUMI Chigiri
- このソフトウェアは商用・非商用問わず無償で利用できますが、無保証です。利用に際して発生する問題については、作者は一切の責任を負いません。
- コードを再利用する際は、著作権表示と上記リンク先のライセンス条文を同梱する必要があります。詳しくは条文(英語)をお読みください。
- v1.1.0
- メッシュの削除機能(
Remove Threshold
パラメータ追加) - 非Humanoidアバターに対応(
Generic Mode
パラメータ追加) - SkinnedMeshRenderer の Scale 自動調整(
Adjust Scale
パラメータ追加)
- メッシュの削除機能(
- v1.0.0
- 初回リリース