chigirits / DietShaper

アバターの腕などを細くするためのシェイプキーを追加し、新しいメッシュとして保存するUnityエディタ拡張です。Boothでも配布中👇

Home Page:https://chigiri.booth.pm/items/2442610

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DietShaper v1.1.0

アバターの腕などを細くするためのシェイプキーを追加し、新しいメッシュとして保存するUnityエディタ拡張です。

Unity上でアバターに衣装を着せるとき、姿勢によって体の各部が衣装を貫通するのを防ぐなどの用途に有用です。

Banner

効果の例

demo01-001demo01-033

動作環境

Unity 2018.4 以降

インポート手順

unitypackageをインポートする方法

Booth または Releasesページ より最新版の DietShaper-vX.X.X.unitypackage をダウンロードし、Unityにインポートする

パッケージマネージャを用いる方法

  1. インポート先プロジェクトの Packages/manifest.json をテキストエディタ等で開く

  2. dependencies オブジェクト内に以下の要素を追加

    "com.github.chigirits.dietshaper": "https://github.com/chigirits/DietShaper.git",
    

こちらの方法でインポートした場合、以下の説明文中で示される本パッケージのプレハブやプリセットは Assets/Chigiri/DietShaper/... 下ではなく Packages/DietShaper/Assets/Chigiri/DietShaper/... 下から選択してください。

使い方

  1. シーンにアバターモデルを配置してください。可能な限りボーンの Transform を変更せず、TスタンスまたはAスタンスの状態であることが望ましいです。

  2. 「メニュー/Chigiri/DietShaper」を選択すると、ヒエラルキーのトップレベルに DietShaper が配置されます。

  3. DietShaper の Target に、操作対象となる SkinnedMeshRenderer(アバターの体)を指定してください。 このとき、対象にアタッチされているメッシュが Source Mesh に自動的にセットされます。

    usage-01

  4. Add Shape Key From Preset のプルダウンから、追加するシェイプキーのプリセットを選択してください。最初は All を選択して全プリセットを追加し、それぞれの効果を試してみることをおすすめします。

    usage-02
    usage-03

  5. Process And Save As... ボタンを押して、生成された新しいメッシュを保存してください。

    usage-04

    保存が完了すると、TargetSkinnedMeshRenderer に新しいメッシュがアタッチされます。 この差し替えられたメッシュに追加されている新しいシェイプキーの値を変更してみて、期待どおりの効果がかかることを確認してください。

    usage-05

パラメータ

DietShaper全体に影響するパラメータ

  • 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 : 変形範囲を狭くするとき、それぞれ開始ボーン・終端ボーンからの距離を比率で指定します。
    • 例1 : Start Margin = 0 / End Margin = 0
      margin-000-000
    • 例2 : Start Margin = 0.35 / End Margin = 0
      margin-350-000
    • 例3 : Start Margin = 0 / End Margin = 0.499
      margin-000-499
  • Is Leaf : 手足の先など、終端点を超えてスキンの先端まですべての頂点を処理対象に含めるときにチェックします。通常のボーンに沿うような変形とは異なり、開始点に向かって均等に縮められます。
    • 例1 : チェックなし
      demo01-001demo01-033
    • 例2 : チェックあり
      demo02-001demo02-028
  • Shape : 変形の形状。開始点を time=0(左端)、終端点を time=1(右端)とし、縦軸にボーンへの吸着強度(0=最大、1=変形なし)を指定します。
    • 例1
      curve-01c
      curve-01r
    • 例2
      curve-02c
      curve-02r
    • 例3
      curve-03c
      curve-03r
  • Add Normal : 法線を元にした成分の影響力(単位:メートル)。通常は 0 にしてください。Shoulder プリセットで、わきの下をボーンとは垂直な方向に移動するために用います。
    • 例1 : Add Normal = 0
      normal-off
    • 例2 : Add Normal = 0.05
      normal-on
  • 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 をチェックするか、それでも直らない場合は以下の手順に従ってください。

    1. 大元のFBXをシーンに配置する
    2. Source Mesh と同じメッシュがアタッチされている 1. 中のオブジェクトの Transform 値をコピー(Copy Component
    3. 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
    • 初回リリース

About

アバターの腕などを細くするためのシェイプキーを追加し、新しいメッシュとして保存するUnityエディタ拡張です。Boothでも配布中👇

https://chigiri.booth.pm/items/2442610

License:MIT License


Languages

Language:C# 100.0%