〈Blender〉モデリング初心者が女の子を作って動かすまでの備忘録 #16【完成:UnityでVRM化】
今回はBlenderで作成したモデルをFBXで書き出して、Unity上でモデルのセットアップをしVRM形式で書き出します。遂に完成です。
VRM化の手順
Unity上では以下の手順を踏みます。
1.Unity上でモデルに対してテクスチャ、マテリアル割り当てを行う
↓
2.1回目のVRM出力。出力することでVRM専用のメタデータやシェイプ、揺れ物スクリプト情報がモデルに追加されます。
↓
3.2のVRMをUnityに読み込みブレンドシェイプ、揺れ物設定を行う。
↓
4.2回目のVRM出力を行う。完成。
1度目のVRM出力はVRM専用データを追加させるための出力です。2度目の出力で完成といった流れになります。
Unity上での下準備
Unityをインストールしたら新規プロジェクトを作成します。
Unityに以下の物を読み込みこんでいきます。
・テクスチャ画像
・FBX
・Uni_VRM Asset package
以下公式Githubから、「UniVRM***.unitypackage」をDLしてください。
テクスチャ、FBXはAssets上にD&Dするか、New Assets Importで取り込みます。
VRMアセットはPackageという別枠なので、Asset枠の上で右クリック>Import Packageから読み込みます。
パッケージを読み込むと、パッケージ内の何をUnityに取り込むかを問われるので、初期状態のままImportを押下します。
読み込んだFBXをHierarchyにドラッグ。するとシーンビューにモデルが配置されます。
同時にInspectorがこのようになるのでSelectを選択。
Rigタブに切り替え、Animation typeをHumanoidに変更し、右下のApplyを実行。
Configure...が選択できるようになるので選択。
humanoidに最低限必要なボーンが組み込まれているかの確認画面が表示されます。グリーンはOK、もしレッド表示があればそのボーンを認識できていないためBlenderで修正の必要があります。
問題なければ右下のDoneを実行。
マテリアル設定
Assets上で右クリック>Create>Materialを作成します。
AssetにできたMaterialを選択するとInspector欄に詳細設定が表示されるので、Shaderの種類を「MToon」にします。(VRM専用のマテリアルシェーダー)
テクスチャ画像をtexture欄の矢印の部分にD&Dします。するとテクスチャがマテリアルに紐づけられます。
Rendering Typeは通常OpaqueでOK。もしテクスチャ画像に透過情報がある場合はCutoutか、Transparentにします。
後はアウトライン等を設定します。アウトラインなどの設定はVRMデータに格納され、外部ソフト上でもこの設定値はある程度反映されます。
マテリアル設定を終えたら、Sceneのモデルに直接マテリアルをD&Dします。テクスチャが反映されます。
顔やボディも同様、マテリアルの作成と割り当てを行います。歯や特殊表情のメッシュにマテリアルを設定し忘れないように!
Hierarchyから各パーツを選べばInspector欄にそのパーツのマテリアル等が設定できる画面に切り替わるので、見えないパーツはここから行うと良いです。
マテリアル設定はとっても大事です。例えるなら「完成した絵画をどれだけ綺麗に写真に写せるか」みたいな作業です。マテリアルの具合はこだわっていきましょう。
ちなみにMToonのシャドウはシーン上のライトに影響されています。
但し、MToonでシャドウの色や質感を決められることを考えると、ライトのカラーは白、Intensityも1のままでよい気がします。あくまでモデルを明るくするもので今回の場合はいいかもしれません。
ちなみに、「Blenderのマテリアル表示・ディフューズ色」と「Unityのディレクショナルライト・カラー白、強度1」は見た目がほぼ一緒です。
VRM書き出し
一通りマテリアルの設定を終えたら一旦Unityで行う作業は終了です。
Hierarchyでモデルを選択状態にしたら、以下画像の項目を選択します。
メタデータを設定する画面が出るので、設定します。Author項目は入力必須です。
設定出来たらExportを行います。VRMが完成です。
3teneでアニメーションさせミスがないか確認
一度この時点で3teneに読み込んでみます。
ダンスを実行します。
踊り始めます…!!(感動)
おかしな場所がないかチェックします。良さそうなら次のステップへ。
表情の設定
先述しましたが、一度VRM形式に書き出すことで初めて表情や揺れ物設定を行う項目がモデルに追加されます。
書き出したVRMモデルをUnityのAssetに読み込み、HIerarchyに配置します。
VRMの読み込みはここから!
画像のような手順を踏むと、Inspectorに以下の項目ができています。
すると、ブレンドシェイプ設定画面が現れます。
楽しい楽しい表情設定の時間がやってきました。ここで表情を設定しま…
歯にマテリアル設定するの忘れたあ。。。
…設定してきました。
気を取り直して、まずは瞬き(Blink)を作ります。
≪瞬きを設定する時≫
①これから設定したい表情(Blink)を選択
②シェイプキーが設定されているパーツの一覧
③シェイプキーの値を設定。瞬きなので顔のBlink値を100に。
※Unityの中央画面ではなく右下の画面が動きます。
特に決定ボタン等はなく、設定したい表情ボタンとスライダーを動かした時点で決定されます。
Is Binaryはシェイプの値補完を無効にし、0から一気に100に飛ぶように変化させたいときに使います。(目をハートに変えるなど)
オリジナルの表情項目を作りたいときはAdd BlandShapeClipで作成します。
ここで追加したオリジナル表情は外部ソフトでも選択可能です。
(※第15回記事内で追加したオリジナル表情はここで行いました)
【気を付けたいこととか】
リップシンクする前提なら、喜怒哀楽のブレンドシェイプに口の変形を与えない方が無難です。リップシンクが有効だと、「表情に追加された口の変形+リップシンクの変形」になるためです。
表情「悲しみ」に口の変形を与え、更にリップシンク「お」をさせた状態
ブレンドシェイプってとても難しいと痛感されました。3DCGの表情が豊かでない理由はこれかぁ…。試行錯誤が必要そうです。
(この表情の時は「あ」の口しかならない、みたいに設定出来たらな…)
---
ちょっとこれは余談ですが笑顔+瞬きは当たり前ですがまつげが破綻します。
3teneでは、ブレンドシェイプごとには選べないもののこういう項目があるのでこれで回避しようと思っています。
良い方法…ないかなぁ。
【BlandShapeの引継ぎ】
VRM設定を編集している間、具体的に何をしたのか忘れてしまったのですが、AddしたBlandShapeが設定画面からだけ全部消えてしまいました。
※画像は初期化を解消させた後です。
その状態に陥ったらRestoreを行えば戻ってきます。
こちらの記事を参考にさせていただきました。
揺れ物設定
読み込んだモデルの階層に「Secondary」が新たに追加されています。
この項目を選択すると、インスペクター欄にVRM Spring Boneが設定されています。
この項目が揺れ物を設定するためのものです。
Root Bonesで揺らしたいボーンを指定します。Size数を増やせば設定できるBone数枠が増えます。
また、Add CompornetからVRM Spring Boneを増やすことで、設定値の違った揺れ物設定を複数かけ合わせ可能です。
例えば髪ボーンで髪1本に3ボーン使っていたとしたら根元の1本だけ指定すればOKです。
Stiffness Force:剛性力
Gravity Power:重力
Drag Force:揺れ具合(柔らかいか硬いか)
ちなみに、ここから選んでもいいのですが
まあ見にくいです。
対してHierarchyはボーンだけでツリー表示してくれます。ここからD&Dの方が楽な気がします。
Unity上で揺れ方の確認方法
揺れ具合を確認するにはUnity上でのアニメーションが必要ですので、サンプルアニメーションをUnityに読み込みます。
Unityちゃんの3Dモデルパッケージ内にアニメーションが同梱されているのでそれを使います。
DL後、Import Packageで読み込みます。
読み込んだら、VRMモデルにIdle Changerを追加します。
※Unityちゃんパッケージをインポート後表示されます。
VRM内のAnimator「Controller」から複数アニメーションサンプルが選択できるので好きなのを選択。
Playを押します。するとアニメーションが再生されます。右上に表示されるChange Motionで次のアニメーションへ移ります。
(※右上のが表示されない場合はInde Changeが上手く追加されていません)
Play状態でSceneタブを押すと、アニメーションされたまま作業時のアングルに戻ります。
この状態で揺れ物設定のパラメータも弄れるのですが、適用されません。変更する場合は必ずPlayを停止してからにしてください。
この方法を活用しながら揺れ物を設定していきます。
これは個人的な感想ですが、このサンプルアニメーションは揺れが優しいので、このサンプルでよく揺れるようにするとトラッキングした時揺れが激しく感じられます。
当たり判定の設定
手などが髪に当たった時、貫通しないよう当たり判定を設定します。
今回は例で顔に当たり判定の関係を持たせます。
アーマチュアのHeadボーンを選択し、インスペクター欄のAdd Componentから「VRM Spring Bone Collider Group」を追加します。
すると紫の球体が追加されます。この球体が当たり判定主です。
先ほどのVRM Spring Bone Collider Group項目から数(Size)、位置、サイズ(Radius)を設定できるので、顔全体が埋まるように置きます。
これで判定主の設定は終了。
先ほどのSecondary「VRM Spring Bone」に戻り、Collider Groupsを開きます。
当たり判定を設定したHeadボーンを選びます。
これで当たり判定が設定できました。
Playすると動作が確認できます。
髪側の当たり判定の状態を可視化します。
Draw Gizmoを有効にしたら、再生>Sceneの順に選択すると、範囲が球体で表示されます。
以上が揺れ物設定と当たり判定の設定です。
メタデータ設定
VRMは外部ソフトに読み込んだ時、利用規格を細かく表示する仕組みがあります。
こんな感じのやつです。
今回は自分で使うだけなので必要ないのですが、せっかくなので設定します。Inspectorのこの部分で設定可能です。
日本語メタデータも結構見かけられるので、日本語対応なようです。
Title:名前
Version:バージョン
Author:作者
Contact Information:連絡先
Reference:親作品
Licenseタブ
A person who can ...(他者がこのモデルに対して人格を与えてよいか)
Only Author:作者のみ
Explictly Licensed Person:許可された人のみ
Everyone:誰でも
※この項目をEveryone以外にするとBlender等でこのVRMモデルを開けないようロックが掛かります。
それ以降の項目(Disallow:不許可 Allow:許可)
Violent acts using...:暴力表現を演じてよいか
Sexuality acts using...:性的表現を演じてよいか
For commercial use:商用利用をしてよいか
Other License Url
ここにURLを貼り付けると、外部ソフトではウェブブラウザを開くボタンとして変換されます。
License Type
クリエイティブコモンズラインセンスの表記を設定します。詳細は非営利組織HPより。
メタデータのサムネイルは1:1です。VRM公式Aliciaちゃんは、512x512のPNG画像でした。
私はBlenderのポーズモードでポーズを取らせ、Ctrl+Spaceでマテリアルビューを全画面表示し、スクショしました。
それを512x512のクリスタキャンパスに読み込み適当にリサイズさせました。
再度VRM出力
念のためですが書き出しはここから。
【書き出しが無反応な時】
ここをONにすれば多分行けます。
外部ソフトへ読み込んで最終チェック
さあ、遂に完成です。3teneで最終動作チェックします。
3teneのメタデータ表示はあまりうまく動作しないようです。
(VMagicMirrorではきちんと表示されました。)
いざトラッキング
動いたああ!!!これにて完成です!
[追記]最後に是非。モデリングについて少し語ります。
この項は2021.9.25に追記しています。
記事を公開して1年、沢山のアクセスを頂いております。少しでもお役に立ていればと思うと嬉しい限りです。
1年経った今、項目を増やしてまで何を追記したかったかというと「これからしっかりとモデリングをやっていきたい方、初めてのモデリングではない方は特に、この記事だけでなく色々なサイトから情報を得てほしいな」と感じたからです。初心者の方はそこまでまずは意識しなくてもいいかなと私は個人的に思いました。なので第一回には書かず、敢えてすべての記事の最後にこの項を書かせていただきました。理由は後述します。
この記事を書いてからの1年間、色々と私も自主制作と勉強を進めていくうちに3DCGにおける手法ややってはマズいことなど、多くの知識をクリエイターさんやネットから得ました。
そして思ったのは、”この世には沢山の手法で溢れている”でした。
どういう意味かというと、今日、日が進むごとに3DCGは手軽さを増し浸透しています。つまり3DCGの人口がどんどん増えているわけです。そうなると賢いクリエイターさんがどんどん賢い手法を公開していたり、「ここはこうである」と特定のワークフローを事細かに解説してくれている記事がどんどん公開され、より多くの便利なツール(Blenderでいうアドオン)が配布されたりします。私がモデリングを始めたころよりきめ細かく、そして数多くの情報が毎日のように発信されるようになったわけです。
ですから是非、完成し遂げた皆さんには今後、髪のモデリングだったらTwitterやYouTube、時には英単語で検索を掛けたりなど色んな所から情報を得てほしいです。
ですが初めてのモデリングからそれはハードであると私は思います。私も実際、初めてのモデリングで何が一番自分の中で不明瞭だったかと言うと「スタートから完成までの一連の手順が明確ではない」ことでした。
おそらく皆さんもここにぶち当たっているかと思います。何していいか分からないですよね。
なので、最初から2つ以上の記事から手法を得るなんて情報が錯綜して難しいはずです。というか私がそうでした。今手元にある手順で必死なのに、そこに違う手法を混ぜるなんて到底無理でした。
なので、初心者の方は無理に情報を得て織り交ぜる必要はないと私は思います。最初に大事なのは「一連の手順を理解する」ことだと私は思っています。
もしこの記事を読んでいただき、3DCG楽しくなってもう少しやっていきたいってなられたのなら、是非少しずつでもいいので、情報集めを意識して欲しいなと思いました。
きっと賢い情報やすげーってなる情報を得ればもっと「3DCGって面白い!」ってなるはずです。
長々と失礼しました。今3DCGはマシンの向上と特にBlenderの急速な進化でユーザーを増やし続けています。きっとこれからもっと楽しくなってくるはずです。
一連の手順を理解した今、やっと楽しくなってきた私がいます。ぜひVRChatとかで会いましょう!(?)
まとめ
モデリング初心者が女の子を作って動かすまでの備忘録はこれにて完結です。
これは終わりじゃなく始まりです。例えるなら、教習所を無事合格して車で行動範囲を一気に広げられるようになった…みたいな感じでしょうか。どこへでも行けちゃいます。なんでもできちゃいます。
一緒に3DCGライフ、楽しんでいきましょう!
最後に
そして私の世界を広げてくれた「ひいらぎP様のIn MMD Life」に感謝します。
以上です。お疲れさまでした。
最後に!ぜひ記事の共有やいいね、待ってま~す!