CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender 3.5】「ウェイト転送」を使ってモデルに服を着せよう!
こんにちは!
コチラの記事では、フリーの3DCGソフト「Blender」を使う上でヒントとなる情報を紹介しています。
今回は、「ウェイト転送」のやり方を紹介します。
VRC(VR Chat)などのモデルに、Blenderで作った洋服を着せたいときなどに必須のテクニックなので、ぜひ参考にしてください。
Blenderで服を作る方法については、以前コチラの記事で紹介したので、あわせて参考にしてみてください。
ウェイト転送とは?
ウェイト転送とは、「他のオブジェクトのウェイト情報を、アクティブオブジェクトの頂点グループに転送する」機能です。
この機能を活用するには、まずは「ウェイトペイント」について理解する必要があるので、こちらの記事を読んでみてみてください。
「ウェイト転送」を使うことで、他オブジェクトの頂点グループに格納されたウェイト情報(ボーンとの関連付けの情報)を、アクティブオブジェクトに転送することができます。
ウェイト転送を行った状態でアーマチュアを動かすと、こちらのようにウェイト転送を行ったオブジェクトを転送元のオブジェクトに追従して動かすことができます。
ウェイトペイントを使うことで、たとえば自作した衣装を人物モデルに着せて、モデルの動きに合わせて服が動くようにすることができます。
ウェイト転送には、大きく分けて2つの方法があります。
- ウェイトペイントモードの「ウェイト転送」を使う
- 「データ転送モディファイアー」を使う
どちらの方法でも最終的には同じ結果になりますが、それぞれのやり方と設定方法を紹介します。
ウェイトペイントモードの「ウェイト転送」について
ウェイトペイントモードの「ウェイト転送」を使って、体のウェイト情報を服に転送する方法を紹介します。
また、ウェイト転送の設定項目についても説明します。
基本的なやり方
ウェイト転送の基本的なやり方を紹介します。
まず、リギングした人体モデルと、洋服のメッシュオブジェクトを用意します。
今回は、有料アドオン「Auto Rig Pro」を使ってリギングしたモデルを使用しますが、もちろんBlender標準機能でアーマチュアを追加しウェイトペイントを設定したモデルでもOKです。
簡単にリギング出来る便利なアドオン「Auto Rig Pro」については、こちらの記事で紹介しているので、あわせて参考にしてみてください。
モデルにポーズやアニメーションを付けるための骨格となる「アーマチュア」については、こちらの記事で紹介しているので、あわせて参考にしてください。
洋服のオブジェクトは、ミラーやサブディビジョンなどのモディファイアーを事前に適用しておいてください。
オブジェクトの準備が出来たら、以下の手順でウェイト転送を行っていきます。
後から選択した服のオブジェクトがオレンジ色(アクティブ)に表示されます。
すべてのボーンのウェイト情報を転送したいので、左下に表示される「メッシュデータを転送」メニューで、「転送元レイヤーの選択」を「アクティブレイヤー」から「名前」に変更してください。
(設定について次の項で説明します。)
このとき、服のメッシュにウェイト情報を含む頂点グループが追加されます。
オブジェクトモードに切り替えて、Shiftキーを押しながら、「服のオブジェクト」→「アーマチュア(リグ)」の順に選択します。
「Ctrl+P」→「アーマチュア変形→空のグループで」を選択します。
このときに、服のメッシュに「アーマチュアモディファイアー」が追加されて、アーマチュアと関連付けされます。
動かない場合は、Step1~3をもう一度やり直してみてください。
「メッシュデータを転送」の設定項目について
「ウェイト転送」を選択すると表示される、「メッシュデータを転送」の設定項目を紹介します。]
以下の設定があります。
- オペレーターを凍結:設定の変更を凍結します。(OFFのままでOK)
- データタイプ:転送するデータのタイプを設定します。(デフォルトの「頂点グループ」のままでOK)
- データ作成:必要であればデータレイヤー(頂点グループ)を追加します。
- 頂点マッピング:ウェイトのマッピング方法を選択します。
- 自動トランスフォーム:自動でトランスフォームを計算します。
- 形状が似ているメッシュでは有効ですが、基本的にOFFのままでOKです。
- オブジェクトトランスフォーム:グローバル空間で、転送元メッシュと転送先メッシュを評価します。(デフォルトのONのままでOK)
- 近くの形状のみ:「最大距離」の範囲内のメッシュ間でデータ転送を行います。
- レイ範囲:「レイキャスト」(光線(レイ)を放ってマッピングを行う方法)を使う場合のレイ半径(デフォルトの「0」のままでOK)
- 転送元レイヤーの選択:転送元の頂点データを、「全て」か「選択したものだけ」にするかを設定します。
- 対象レイヤーとのマッチ方法:転送先の頂点データを、「全て」か「選択したものだけ」にするかを設定します。
- ミックスモード:転送元の値が、転送先の要素に影響を与える方法を選択します。
- ミックス係数:ミックスに使用する係数を選択します(デフォルトの「1」のままでOKです)
太字にした項目について詳しく説明します。
頂点マッピング
ウェイトのマッピングの補間方法(転送先のウェイトを、転送元のウェイトからコピーする方法)を選択します。
以下から選択できます。
トポロジーが異なる場合は、「最近接面の補間」に設定するのが最も自然な結果になります。
- 最近接頂点:最も近い頂点のウェイトをコピーします。
- 最近接辺の頂点:最も近い転送元辺の最も近い頂点のウェイトをコピーします。
- 最近接辺の補間:転送元辺のデータを補完し、最も近いポイントのウェイトをコピーします。
- 最近接面の頂点:最も近い転送元面の最も近い頂点のウェイトをコピーします。
- 最近接面の補間:転送元面のデータを補完し、最も近いポイントのウェイトをコピーします。
- トポロジー:同一トポロジーの頂点間で、ウェイトをコピーします。
トポロジーが異なる場合は使えません。
転送元レイヤーの選択
以下の3つから選択できます。
基本的には「名前」を選ぶのがおすすめです。
- 名前:名前が適合するターゲットデータレイヤー(頂点グループ)にデータを転送します。
- 順番:インデックス番号が適合するターゲットデータレイヤー(頂点グループ)にデータを転送します。
- アクティブレイヤー:アクティブなデータレイヤー(頂点グループ)のデータを転送します。
「転送元レイヤーの選択」で「名前」を選択すると、元オブジェクトのすべての頂点グループのウェイト情報が転送されます。
「順番」を選択すると、新しい頂点グループ名が追加されて、ウェイト情報が転送されます。
「アクティブレイヤー」を選択すると、転送元オブジェクトの「オブジェクトデータプロパティ→頂点グループ」でアクティブになっている頂点グループのみ転送されます。
一部のウェイト情報だけを転送したい場合に使います。
ただし、「対称レイヤーとのマッチ方法」を「全レイヤー」から「アクティブレイヤー」に変更しておかないと転送されないので注意してください。
ミックスモード
転送元の値が、転送先の要素に影響を与える方法を選択します。
以下から選択できます。
特に結果に問題なければデフォルトの「置き換え」のままで良いかと思います。
- 置き換え:対象のすべてを置き換えます
- しきい値未満:指定されたミックス係数を下回っている場合にのみ、転送先の値を置き換えます。
- しきい値超過:指定されたミックス係数を超えている場合にのみ、転送先の値を置き換えます。
- 乗算:転送元と転送先の値をかけあわせます。
- 減算:転送先から転送元の値を引き算します。
- 追加:転送先に転送元の値を足し算します。
- ミックス:転送元と転送先の値をブレンドします。
データ転送モディファイアーについて
「データ転送モディファイアー」を使って、体のウェイト情報を服に転送する方法を紹介します。
また、モディファイアーの設定項目についても説明します。
基本的なやり方
ウェイトペイントモードの「ウェイト転送」と同様に、まずはリギングした人体モデルと、洋服のメッシュオブジェクトを用意してください。
以下の順番でウェイト転送を行います。
Shiftキーを押しながら、「服のオブジェクト」→「アーマチュア(リグ)」の順に選択します。
「Ctrl+P」→「アーマチュア変形→空のグループで」を選択します。
動かない場合は、Step1~3の設定を見直してみてください。
アーマチュアモディファイアーを適用しないとメッシュが暴れて体が服を貫通するので、最後に適用しましょう。
データ転送モディファイアーの設定について
「データ転送モディファイアー」の設定項目を紹介します。
以下の設定があります。
- ソース:転送元オブジェクトを選択します。
- ミックスモード:転送元の値が、転送先の要素に影響を与える方法を選択します。
- ミックス係数:ミックスに使用する係数を選択します(デフォルトの「1」のままでOKです)
- 頂点グループ:ミックス係数を、頂点グループによって定義します。
- データレイヤーを作成:クリックすると頂点グループを追加します(ペアレント設定時に頂点グループが追加されるので、不要です)
- 頂点データ:頂点データの転送を有効にします。
- 辺データ:シャープ辺やクリースなどの辺データの転送を有効にします(頂点ペイントの転送には使いません)
- 形状が似ているメッシュでは有効ですが、基本的にOFFのままでOKです。
- 面コーナーデータ:カスタム法線やUVなどの面コーナーデータの転送を有効にします(頂点ペイントの転送には使いません)
- 面データ:スムーズなどの面データの転送を有効にします(頂点ペイントの転送には使いません)
- トポロジーマッピング:ウェイト転送時の「最大距離」「レイ範囲」を設定します(デフォルトのままでOKです)
太字にした項目について詳しく説明します。
頂点データ
頂点データの転送を有効にします。
「頂点グループ」「ベベルウェイト」「色(頂点カラー)」を転送できますが、ウェイト転送に使用する際は「頂点グループ」を選択します。
頂点グループを選択した場合は、以下の設定項目があります。
- マッピング:ウェイトの転送方法を選択します。
- 頂点グループ:転送元の頂点グループ・転送先の頂点グループを設定します。
「マッピング」は、「メッシュデータを転送」の設定項目と同じです。
「最近接面の補間」に設定するのがおすすめです。
「頂点グループ」についても、基本的に「メッシュデータを転送」の設定項目と同じで、「レイヤー選択:全レイヤー」「レイヤーマッピング:名前」のままで問題ありません。
ウェイト転送ができない・うまくいかない場合の対処法
ウェイト転送でつまづく原因と対処法をまとめてみました。
動かない
ウェイト転送を行っても、転送先のオブジェクトが動いてくれないことがよくあるかと思います。
動かない場合は、以下を確認してみてください。
- 転送元オブジェクトのウェイトペイントが塗ってあるか
- 転送元レイヤーを「アクティブレイヤー」「順番」に設定していないか
- 転送先オブジェクトにアーマチュアモディファイアーが追加されているか
- データ転送モディファイアーの「ソース」「頂点グループ」を選択しているか
転送元オブジェクトにウェイトペイントが塗っていないと、そもそもウェイト転送しても転送先オブジェクトが動かないので、まずは転送元のウェイトが塗られているか確認してください。
転送元レイヤーを「アクティブレイヤー」に設定し、対称レイヤーとのマッチ方法が「全レイヤー」になっていると頂点ウェイトが転送されません。
転送元レイヤーを「順番」に設定してしまうと、グループ名が変わってしまい、アーマチュアとの関連付けがうまくいきません。
転送元レイヤーは「名前」に設定しておきましょう。
ウェイト転送しただけでは、アーマチュアと転送先オブジェクトが関連づいていないので、アーマチュアを動かしても転送先オブジェクトを動かすことはできません。
必ず、転送先オブジェクトとアーマチュアを選択し、「ペアレント設定」(Ctrl+P→「空のウェイトで」)を行ってください。
ペアレント設定が行われている場合は、アーマチュアモディファイアーが追加されています。
一方、データ転送モディファイアーを使う場合は、先ほど説明した通り「ソース」の設定と「頂点データ→頂点グループ」を選択する必要がありますので、確認してください。
体が貫通する・メッシュが暴れる
ボーンを動かすと体が服を貫通したり、メッシュが暴れてしまう場合は、以下の設定を見直してみてください。
- マッピングを「最近接面の補間」に設定する
- データ転送モディファイアーを適用したか
- 服の頂点を移動する
まずは、マッピングを「最近接面の補間」に設定してみてください。
データ転送モディファイアーを使っている場合は、適用前はメッシュが暴れますが、適用後はおとなしくなります。
それでもメッシュが貫通してしまう場合は、服の頂点位置を微調整しましょう。
ウェイトペイントで便利なアドオン
最後にウェイトペイント作業で使うと便利なアドオンをいくつかご紹介していきます。
Voxel Heat Diffuse Skinning – ウェイトを自動で簡単追加!
ワンクリックで自動ウェイトを付けてくれるアドオン。
標準機能の「自動ウェイト」よりも精度が高く、複雑なデザインの服でも綺麗にウェイトを塗ってくれます。
詳細は以下の記事で書いているので、参考にしてみてください。
Armature Tools – 髪の毛の自動リギング!
髪の毛のリギング・ウェイト付けをしてくれるアドオン。
メッシュを選択するだけで自動的に形状を認識し、リグが追加されます。ウェイトも付いているため簡単に髪の毛のリギングを行うことができます。
詳細は以下の記事で書いているので、参考にしてみてください。
Auto Rig Pro
言わずと知れたリギングの王道アドオン。
マーカーを置くことでリグが自動的に生成されます。IK・FKも使えるようにコントーラーが生成されるので、自由自在にキャラクターを操作できます。
他にも表情コントローラー等、多種多様な機能が含まれております。
詳細は以下の記事で書いているので、参考にしてみてください。
まとめ
今回は「ウェイト転送」のやり方・設定方法について紹介してみました。
ウェイト転送をマスターすれば、モデルに好きな衣装を着せて遊べるようになるので、ぜひこちらの記事の内容を参考に実践していただければと思います!