まだ死んでない

なんか作ったり作らなかったりしたいです。

VRMの着せ替え


© Unity Technologies Japan/UCL

余談
 いきなり余談かよ。という感じだと思うので、なんでもいいからやり方教えろ、という人は飛ばして大丈夫です。所謂ハードル下げとか、予防線というやつです。
 国内の3Dモデルの着せ替え文化は、私が知る限りMMD(PMX)→FBX→VRMです。PMXは時代的なものだったり、権利的なグレーゾーンが生まれやすい文化なのもあり、着せ替えのような改変行為はあまり語られていないように思います。無いとは言いませんが、情報の古さや独自型式故のしがらみに加えて若干のアングラ感があり、VRMからすると異世界的に映ります。また、FBXはVRChatで着せ替えがあったと思われます。「思われます。」というのは私がVRChat文化圏にあまり身を置いていないための予想です。よってここから先も予想ですが、VRChatにおけるモデル改変等の情報伝達はコミュニケーションの一環として口伝によるものが多い傾向にあり、インターネット上に情報としてあまり残らない形で伝わっているように感じます。(シェーダーについてはプログラム故に3Dモデルとは文化が若干異なり、この傾向はそこまで色濃くないように感じます。)
 これらの経緯から意外とVRMの着せ替えに相当する情報は、FBX含めなかなか無いように思われましたので、今回の記事の投稿に至りました。私はてっきりこうした情報は多種多様に出回っており、記事にするような必要はないものと思っていました。また、記事にするにあたり思い返してみると、意外と大まかなツールの種類を跨ぐために要素が多様で、需要に対しては確かに畑違いの人には辛い作業であると思われました。ただし、私も3Dモデルについては見様見真似の世界ですので、この記事の内容はあくまで一例としてご覧頂くようお願いします。前述したとおり、要素が多様であらゆる手段があり、ケースバイケース感の強い内容になると思われます。また、私は面倒が嫌いなので質より簡単さ重視です。以降の内容は悪く聞こえる言い方をすると「首のすげ替え」(首切り)であり、良く思わない人も居ますので、その点もご注意をお願いします。

概要
 VRMの着せ替え方法を記載します。頭と体を分けた簡易的な着せ替えです。今回の例ではVRMとしますが、両方または片方がFBXの場合であっても、基本は同様です。応用が利けば小物の追加なども同様にできます。

対象
 読者対象はVRMを作成したことがあり、Blenderの基本的な操作が分かる方とします。Blenderについては、最初に表示されている立方体を移動、回転、変形、削除できる程度で良いです。

注意
 この記事では方法の記載に注力しますが、使用する3Dモデルの利用に関する許諾および規約、ライセンスはよく確認してから作業に入るようにお願いします。

準備
必要なソフトウェアをインストールします。
Blender(https://www.blender.org/)
VRM importer(https://icyp.github.io/)
・UniVRM(https://github.com/vrm-c/UniVRM)
・Unity(https://unity.com/ja)
VRM importerの利用方法は以下が参考になると思います。
 https://www.cg-method.com/entry/blender-import-vrm/
  VRM_IMPORTERの導入
   アドオン(VRM_IMPORTER)のインポート

環境
念のため私の環境を記載しておきます。
Blender(2.79)
VRM importer(0.5)
・UniVRM(0.51)
・Unity(2018.4.0f1)
BlenderのバージョンによりVRM importerのバージョンが決まります。
VRM importerのバージョンによりUniVRMのバージョンがある程度決まります。
※よって、最新のUniVRMを使いたい場合、Blenderは2.80以上が必要かもしれません。
※頭と体の双方がFBXの場合、VRM importerは不要です。

方法
VRMBlenderにインポート
こちらもVRM importerの利用方法と同様に、以下のページにて丁寧にご説明頂いておりますので、引用させて頂きます。詳細はあちらのページをご確認願います。
https://www.cg-method.com/entry/blender-import-vrm/
 VRM_IMPORTERの導入
  データ(.vrm)のインポート
 データ(.vrm)の確認
 ブレンドシェイプの確認
 ボーン、ウェイトの確認
※FBXの場合はBlenderの標準機能でインポートできます。

Blender設定
まず赤枠内のアイコンをクリックして、陰面処理を無効にします。こうすることで、見えている方から反対側の頂点も選択できるようになります。


③頭を消す
モデル次第で作業の内容が全勢違いますが、今回は例としてVRoidを使用します。


目のアイコンをクリックして切り替えながら不要な部分を探します。


不要な部分が分かったら、そこは丸ごと右クリックで削除します。
ボーン構造は消さないように注意します。


モデルによっては、この時点である程度は消せます。
残った部分は、頂点などを選択して消していきます。


このモデルの場合、頭髪の面が繋がっているため、頂点付近で「Lキー」を押すと、繋がっている面が一度に選択できます。選択したら削除します。


「Bキー」で大雑把に選択します。


「Cキー」で細かい所を選択します。


だいたい消せればOKです。


頭を繋げるために首を伸ばします。


頭を傾げた時にはみ出ないよう、広がっている部分は狭めます。
一番端の辺を全て選択して「Sキー」で縮小すると簡単に狭められます。


不要なアーマチュア(ボーン)を削除します。(必須ではありません。)


BlenderからFBX出力すると、Unityで表示できるようになります。


③体を消す
こちらも②同様、モデル次第で作業の内容が全勢違いますが、今回はVRM化したユニティちゃんを使用します。ユニティちゃんをBlenderで読み込む場合は色々問題があるので、別途記事を書きました。
https://ch.nicovideo.jp/xelloss120/blomaga/ar1762869


基本的に同じで、目のアイコンで不要メッシュを探して削除します。


大雑把に選択して削除します。


残った細かい所を削除します。首は閉じたいので1行?残します。


頂点結合をして顎のラインで合わせます。


不要なアーマチュア(ボーン)を削除します。(必須ではありません。)
※ルート(Character1_Reference)から必要部分までは残す必要があります。


BlenderからFBX出力すると、Unityで表示できるようになります。


④Unityで着せ替え
体のRigをHumanoidに変更します。


頭と体をシーンに配置します。


体の大きさを調整します。
Yで首と顎を見ながら高さを合わせて、XとZに同じ値を設定するのが楽だと思います。


体側の頭の子を作成した頭にします。(作成した頭の親を体側の頭にします。)


VRMを作成
あとは普通にVRMを作成するだけです。
メタデータ、マテリアル、揺れ物、表情、目線を設定します。


備考
・体の方の首をまっすぐ長めにして残す方が無難です。(はみ出しや隙間の対策)
・頭の方を丁寧に作り、単体のまま揺れ物設定等をしておくと便利です。(流用が利く)
・同じ頭なら、VRM用の表情設定ファイルは上書きで使いまわせます。
・VRoidの体だと、テクスチャ差し替えによるお手軽着せ替えにも対応できて便利です。
・肌の色が合わない時は、テクスチャのカラーバランス等を画像処理ソフトで変更します。
 下はGimpでVRoidの肌テクスチャを極端な褐色風に変更した例


参考
https://twitter.com/120byte/status/1089459383208050688
https://toylabo.tech/blog/skills/52/
https://www.cg-method.com/entry/blender-import-vrm/

https://icyp.github.io/