見出し画像

【VRMをもっと素敵に改造しよう#04】

『#04:BlenderからエクスポートしたFBXをUnityでVRMにしよう』
※この記事は2022年4月に作成しました

~序~

VRoidStudioで作成したキャラクターアバターVRMをもっと素敵に改造しようということで記事を作成しております
VRoidStudioというエディタ外でVRMの改造となるとアクセサリ取り付けに特化したツールやUnityで便利なアセットもたくさんあります
本記事群ではそれらよりもUnityを基軸にBlenderを使用してもっと構造的に自由に改造できるような記事を目指しています
Unityではマテリアルの見た目や仕上げエクスポートするために特化させて、Blenderではアクセサリや衣装オブジェクトの追加だけではなく形の編集やボーンの調整等構造的なところを自由に改造編集調整ができる様に構成しています
今回の記事で一区切りというか、これから改造していくための基礎がやっとできあがるという感じです
あとはBlenderを仲介したVRMが作成できる様になればUnityでの編集もBlenderでの改造も自由自在になります
そのためにあと少しお付き合いよしなにお願いします

~UnityにキャラクターアバターFBXをインポートしよう~

UnityにインポートするキャラクターアバターFBXは前回記事のBlender作業を済ませて『FBX』をエクスポートした前提として作業を行います

#02の記事までに使用したUnityプロジェクトを立ち上げましょう

Unityプロジェクトが起動すれば、まず下部『Project』のキャラクターアバターのフォルダを選択しておいて下さい

7つのフォルダとキャラクターアバターVRMの入っているフォルダです

キャラクターアバターFBXを下部『Project』フォルダ内にドラッグアンドドロップしましょう

左側『Hierarchy』のキャラクターアバターVRMを選択します

右側『Inspector』のオブジェクトアイコン右のチェックボックスをクリックしてチェックを外します

『Scene』に表示されていたキャラクターアバターVRMが非表示になります
右側『Inspector』のオブジェクトチェックボックスは『使用する』『使用しない』の切替です
左側『Hierarchy』に何かしらオブジェクトが配置されていてもチェックを外しておけばそれは使用しない様なるので取り扱うキャラクターアバターが増えたりすれば上手く切り替えて管理するようにして下さい
それではインポートしたキャラクターアバターFBXを左側『Hierarchy』にドラッグアンドドロップして下さい

グレーだったり真っ黒だったりの状態でキャラクターアバターが『Scene』に表示されます
これはFBXというファイル形式が『マテリアル』情報を持たないオブジェクトデータなのでオブジェクトだけが無垢の状態で表示されているからです

~マテリアルって何?~

ざっくり言えばテクスチャ(画像)とシェーダー(表示方法)がまとめられた物です
3Dオブジェクトには直接色を付けたりも出来ますが、テクスチャとシェーダーという形式で見た目を構成することができるので、キャラクターアバターVRMではこのマテリアル方式になります
テクスチャは言わずもがな画像です
3Dオブジェクトの画像をUVマップという図面を元に決めていく機能があったりします
シェーダーは透明や表現や光の反射や影の設定、ノーマルマップという機能を使った光の反射を画像で表現でや、エミッションという機能を使った発光表現やマットキャップという機能を使ったテカテカ表現等見た目の表現をいろいろできるアセットです
VRMではMtoonというシェーダーが採用されています
標準的なことは一通りいろいろできるシェーダーです

~無垢になったキャラクターアバターにマテリアルを付け直そう~

マテリアルの付け直しはインポートしたキャラクターアバターFBXに直接設定していきます
『Project』のキャラクターアバターFBXを選択しましょう

右側『Inspector』に設定内容の項目がいろいろでてきます
上部の『Materials』のタブを選択しましょう

マテリアルを設定する項目がずらっと並んでいます
マテリアルはキャラクターアバターVRMの物を使って設定していきます
下部『Project』のキャラクターアバターフォルダの中に『キャラクター名.Materials』のフォルダがあるので左下のエクスプローラーで選択して下さい

フォルダの中にはマテリアルがいっぱい入っています
下部『Project』のマテリアルから右側『Inspector』のマテリアルの体操する箇所にドラッグアンドドロップして設定していきます

いくつかマテリアルをドラッグアンドドロップして設定したら一度確認のために『Inspector』マテリアルの下に『Apply』のボタンがあるのでクリックしてみましょう

『Scene』でキャラクターアバターオブジェクトに表示が反映されます

続けて下部『Project』のマテリアルフォルダから右側『Inspector』のマテリアル項目にドラッグアンドドロップして設定していきましょう

一度に全てドラッグアンドドロップで設定しても良いのですが、慣れていないうちは少しずつ設定して行く方が良いです
『Inspector』マテリアルの下に『Apply』のボタンをクリックしましょう

特に顔や目の周りのパーツは名称も似ていてわかりにくいです
『Project』のマテリアルフォルダから右側『Inspector』のマテリアル項目にドラッグアンドドロップして設定していきましょう

失敗していたらまた別のマテリアルをドラッグアンドドロップして設定していけば大丈夫です
『Inspector』マテリアルの下に『Apply』のボタンをクリックしましょう

『Project』のマテリアルフォルダから右側『Inspector』のマテリアル項目にドラッグアンドドロップして設定していきましょう

『Inspector』マテリアルの下に『Apply』のボタンをクリックしましょう

右側『Inspector』で全てのマテリアルの項目を設定できればこの作業は完了です

『Scene』の見た目がちゃんと表示されていることを確認して下さい

~オブジェクトを標準人型アバターに設定しよう~

FBXをキャラクターアバターとして成立させるにはマテリアルの再設定ともうひとつ設定しておかなければならないことがあります
それが標準人型アバター設定です
別に難しくはありませんマウスでちょっとポチポチするだけで済ませることが出来ます
さっそくやってみましょう
右側『Inspector』で上部の『Rig』のタブを選択しましょう

『Animation Type』の右のプルダウンメニューをクリックして下さい

メニューの一番下にある『Humanoid』を選択しましょう

『Apply』ボタンをクリックします

これでキャラクターアバターFBXも標準人型アバターになりました
ですがあともうちょっと設定が残っています
『Configure』のボタンをクリックしましょう

保存の確認のポップアップウィンドウが開くので『Save』をクリックして保存して次の作業に移行しましょう

人型アバターのコンフィグモードに移行します
右側『Inspector』の人型表示の中に『Head』の項目があるのでクリックしましょう

右側『Inspector』がヘッドのボーン設定詳細に切り替わります
項目の一番下に顎の項目の『Jaw』がありますので右側に設定されている箇所をクリックして選択して下さい

キーボードの『Delete』キーを押して選択を削除して『None』にします

右側『Inspector』で下にスクロールして『Done』のボタンがあるのでクリックしましょう

設定変更した確認のポップアップウィンドウが開くので『Apply』をクリックすると変更を反映して人型アバターコンフィグモードが終了します

コンフィグモードか終了してUnityエディタに戻ればこの作業は終了です
これでキャラクターアバターFBXはマテリアルが設定されて標準人型アバターになりました
コンフィグモードを終了した直後は『Scene』の表示は初期位置に戻り『Hierarchy』も閉じてしまっています
左側『Hierarchy』の『SampleScene』左の三角ををクリックしてオブジェクトの構成を展開しましょう

左側『Hierarchy』のキャラクターアバターFBXをダブルクリックすると近くまで表示が移動します

【補足】
コンフィグモードでUnityを終了したりするとUnityプロジェクトがぶっ壊れたりするので、何か間違えたり失敗したりわけがわからなくなってもUnityを終了したりせずに『Done』をクリックしてコンフィグモードを一度終了させるようにしましょう
『Animation Type』の項目をいったん別のタイプを選択し『Apply』で決定して、その後にまら『Humanoid』を選択するところからやり直して下さい

~CopyComponentsByRegexのインポート~

オブジェクトから設定をコピーする機能はコンポーネントコピーツールの『CopyComponentsByRegex』というのを使用します

GitHubから『CopyComponentsByRegex』をダウンロードしましょう

GitHubの配布ページにある『Code▼』をクリックします

メニューが開くので『Download ZIP』をクリックすれば必要なファイルがZIPファイルに纏めらてダウンロードできます

ダウンロードした『CopyComponentsByRegex』を解凍しておきましょう

下部『Project』の左側のエクスプローラーで一番上層の階層である『Asset』を選択しておいて下さい

先ほどダウンロードして解凍した『CopyComponentsByRegex』をUnity下部『Project』の『Asset』フォルダにドラッグアンドドロップします

これでコンポーネントコピーツール『CopyComponentsByRegex』のインポートができました

『CopyComponentsByRegex』は軽くて便利なコンポーネントコピーツールです

~VRMの設定をコピーしてFBXにペーストしよう~

インポートしたキャラクターアバターFBXをVRMとしてエクスポートするためにはまだいろいろコンポーネントを取り付けて設定する必要があります
それらをひとつひとつ手作業で行ったり解説するとまた膨大な量になっちゃうわけですが、最小限でいいように設定コンポネートをキャラクターアバターVRMからコピペします
①左側『Hierarchy』の非表示になっているキャラクターアバターVRMを右クリックしてメニューを開きます
②メニューの一番下に『CopyComponentsByRegex』の項目が追加されているのでクリックして選択しましょう

コンポーネントコピーツール『CopyComponentsByRegex』のウィンドウが開きます

コピーしたいコンポーネントはVRMの設定なので『正規表現』の項目に『VRM』と入力しましょう

コピーする詳細の4つのチェックボックス項目があります
『Transformがマッチした場合値をコピー』
『コピー先におなじコンポ年とがあったら削除』
『コピー先にオブジェクトがなかったらオブジェクトをコピー』
『ClothコンポーネントのConstraintsを一番近い頂点からコピー』
4つの項目全てのチェックボックスをチェックしておいて下さい

①左側『Hierarchy』の非表示にしたキャラクターアバターVRMを選択しておきます
②『Copy』ボタンをクリックしてコピーします

①左側『Hierarchy』のキャラクターアバターFBXを選択して
②『Paste』ボタンをクリックしてペーストします

これでVRMとして必要な設定は全てコピペできました
ウィンドウ右上の『×』をクリックして『CopyComponentsByRegex』を閉じましょう

本来なら左側『Hierarchy』のオブジェクトを選択して右側『Inspector』で『Add』ボタンからVRMに必要な設定や機能をコンポネートしていくのですが、コンポーネントコピーツールを使えばあっという間です

~コピペしたVRMスプリングボーンコライダーの修正しよう~

コピペが出来れば黄色い揺れ判定の球体はキャラクターアバターVRMのときと同じようになっているのですが、濃いピンク色の球体が肩や腕から飛び出したり腰の中に埋没していたりします
これはBlenderとUnityで制御しているY軸とZ軸の考え方が違うから発生してしまっている現象です
手間ではありますがこれを手動で修正していきます
左側『Hierarchy』でキャラクターアバターを展開して構成オブジェクトの『Root』をさらに展開します
『J_Bip_C_Hips』の下層に『j_Bip_L_UpperLeg』があるので選択しましょう

根元の濃いピンク色の球体は動かしません
上にある2つの球体の緑の矢印を順次下にドラッグして位置を動かしましょう

膝ぐらいより少し上ぐらいの位置を目指して並べます
大体均等な位置に移動させておけば大丈夫です

右側『Inspector』の『VRM Spring Bone Collider Group』を右クリックします

メニューから『Copy Component』をクリックして選択しコンポーネントの内容をコピーましょう

左側『Hierarchy』で『Root』から『j_Bip_R_UpperLeg』を選択します

①右側『Inspector』の『VRM Spring Bone Collider Group』を右クリックして
②メニューから『Paste Component Values』をクリックして選択しコンポーネントの内容をペーストします

『UpperLeg』左右のコライダーが左右対称になりました

次に左側『Hierarchy』で『Root』をさらに展開していきます
『J_Bip_C_Hips』から左側の三角をクリックして『J_Bip_C_Spine』『J_Bip_C_Chest』『J_Bip_C_UpperChest』と階層を展開していきます『J_Bip_L_Shoulder』の下の階層に『J_Bip_L_UpperArm』があるのでクリックして選択しましょう

『Scene』の表示を上からに調整して下さい
『UpperLeg』で濃いピンクの球体を移動させたのと同様に前に飛び出している球体の根元以外の2つを移動させます
2つの球体を順次緑の矢印を右にドラッグして移動させてから赤い矢印を上にドラッグして移動させましょう

肘ぐらいより少し手前ぐらいの位置を目指して並べます
大体均等な位置に移動させておけば大丈夫です

①右側『Inspector』の『VRM Spring Bone Collider Group』を右クリックして
②メニューから『Copy Component』をクリックして選択しコンポーネントの内容をコピーましょう

左側『Hierarchy』で『Root』の『J_Bip_R_Shoulder』の下の階層に『J_Bip_R_UpperArm』があるのでクリックして選択しましょう

①右側『Inspector』の『VRM Spring Bone Collider Group』を右クリックして
②メニューから『Paste Component Values』をクリックして選択しコンポーネントの内容をペーストします

『UpperArm』左右のコライダーが左右対称になりました

次に左側『Hierarchy』で『Root』をさらに展開していきます
『J_Bip_L_UpperArm』の下の階層に『J_Bip_L_LowerArm』があるのでクリックして選択しましょう

『UpperArm』で濃いピンクの球体を移動させたのと同様に前に飛び出している球体の根元以外の2つを移動させます
3つの球体を順次緑の矢印を右にドラッグして移動させてから赤い矢印を上にドラッグして移動させましょう

①右側『Inspector』の『VRM Spring Bone Collider Group』を右クリックして
②メニューから『Copy Component』をクリックして選択しコンポーネントの内容をコピーましょう

左側『Hierarchy』で『Root』の『J_Bip_R_UpperArm』の下の階層に『J_Bip_R_LowerArm』があるのでクリックして選択しましょう

①右側『Inspector』の『VRM Spring Bone Collider Group』を右クリックして
②メニューから『Paste Component Values』をクリックして選択しコンポーネントの内容をペーストします

『LowerArm』左右のコライダーが左右対称になりました

左側『Hierarchy』で『Root』の『J_Bip_L_LowerArm』の下の階層に『J_Bip_L_Hand』があるのでクリックして選択しましょう

右側『Inspector』の『VRM Spring Bone Collider Group』の項目の中に『Colliders』の項目があるので左の三角をクリックしてコンポーネントの構成を展開しましょう

『Element 0』も展開すると『Offset』の項目があるので『X』の値を『0』にします

右側の手のコライダーも同様にします
①左側『Hierarchy』で『Root』の『J_Bip_R_LowerArm』の下の階層に『J_Bip_R_Hand』があるのでクリックして選択しましょう
②右側『Inspector』の『VRM Spring Bone Collider Group』で『Element 0』『Offset』『X』の値を『0』にします

これでコライダーの修正作業は完了です
コライダーの修正と揺れ物の確認をしておきましょう
上部にある三角のプレイボタンを押してプレイモードに切り替えます

『Scene』のタブから『Game』のタブに切り替わりカメラアングルも後ろから見たものになるのでタブをクリックして『Scene』に戻します

左側『Hierarchy』のアバターオブジェクトを選択して下さい

『Scene』の同アバターオブジェクトに赤青緑XYZの矢印が表示されます
この矢印のどれでも良いのでマウスで左クリックして掴んで振り回してみましょう

コライダーと揺れ物の確認が出来ればもう一度上部にある三角のプレイボタンを押すとプレイモードを終了し手下さい


~FBXだったオブジェクトをキャラクターアバターVRMとしてエクスポート~

インポートしたFBXオブジェクトにVRMとしてエクスポートするための構成要素はこれで全てコンポネートして修正や設定できたのでエクスポートしましょう
上部のメニューバー『VRMo』から『Export to VRM 0x』を選択します

VRMエクスポートウィンドウが開きます
何も表示されていない場合は左側『Hierarchy』から対象のキャラクターアバターオブジェクトをウィンドウの上部『ExportRoot』直下の『None』にドラッグアンドドロップして下さい

アバターの名称や人格権等のメタデータはVRoidStudioからエクスポートの時にも設定しますがUnityからエクスポートの時にも設定や変更が可能です
VRMの設定にエラーがない状態で必要な項目を満たしていればウィンドウ右下の『Export』のボタンが使用可能になります
これからエクスポートするVRMアバターはこれまでのVRMと区別するために、UnityでHANAToolを使ってBlenderの作業したので『uhb』と付けておきます

『Export』ボタンを押すとエクスポートするVRMの保存先を何処にするのかのエクスプローラーが開きます
バージョンと同様に区別するためにファイル名にも末尾に『uhb』を付けて区別します
ファイル名が入力できれば『保存』をクリックしてキャラクターアバターをVRMにエクスポートしましょう

【補足】
VRMエクスポートウィンドウにキャラクターアバターがセットされているときにエラーが表示されていることがあります
『resetVRMFirstPerson.Renderers』のボタンがあるときはボタンをクリックしてエラーを解除すればエクスポートが可能になります

エクスポートされたキャラクターアバターVRMを確認しましょう
確認にVワールドというPCソフトを使います

VワールドはVRMをゲーム的に動かせて表情等の機能を一通り確認できてモーションも多数あり表示の具合もいじれたりできるのでエクスポートしたVRMの確認には便利です
Vワールドが起動できたらエクスポートできたキャラクターアバターVRM選択してインポートして動かして確認しましょう

VRoidStudioで作成したキャラクターアバターVRMをUnityにインポートしてで舌出し追加したVRMをBlenderにインポートして修正と編集しエクスポートしたFBXをUnityにインポートしてまたキャラクターアバターVRMにすることができました

~了~

前回の記事がBlenderの作業内容をギュッとまとめてしまって大変だったと思います
今回の記事も結構なボリュームになってしまいました…
ですがここまでの作業が出来ていればこれまでの記事以上の大変ことはなくなると思います
Unityでアクセサリーの取り付けだけをするとか、コライダーの追加や編集だけとか、BlenderでVRoidStudioの髪の毛エディタで作った尻尾の付け替えや調整だけをするとか、衣装の追加のしていきかたとか、ヘアースタイルの追加のみとか、瞳をドールアイのように加工する等、記事もやることを1つ1つに絞った物になっていく予定です
UnityとBlenderを行ったり来たりしながらになると思いますが、両方のツールのやれることやれないことや得意なこととか特性をしって理解を深めながら、キャラクターアバターVRMでもできることできないことを知ったり表現を増やしていけると思います


この記事が気に入ったらサポートをしてみませんか?