VRoidの髪を削らずにclusterに持っていく方法
やほほい。せぃが君です。(*´▽`*)
いわゆるVtuber活動をしています。
VRoid民がclusterセットアップにとても苦しんでいるという話を聞きました。こだわりにこだわりぬいた髪の毛を泣く泣く減らし、VReducerにかけ、それでもclusterのアバター制限を突破できない…。仮に突破できたとして、髪の毛が減っている時点で満足感は半減です。
というわけで、髪の毛を減らさずにclusterに持っていく方法を解説します。blenderとunityを使いますが、blenderとunityわからぬマンにもなるべくわかりやすく解説したいと思います。万一それでもわからぬ時用の救済措置も最後につけておきます。
ざっくりいうと、clusterに持っていく作戦はこうです。
・外から見えない素体部分のメッシュを消す
・ベイクしてテクスチャとマテリアルを統合する
ナルホド…?なひとは、とりあえず読み進めてください。
セットアップするモデル
今回セットアップするのは、こちらのお体です。
うん、かわいい。
せぃが君メイド服バージョンです。お洋服はふらふらっとさんのBOOTHより。みんな着ましょう。
まず、これをVRMに吐き出します。
この時点でのポリ数とかはこんなかんじです。そもそもポリ数少なめですが、3.7万くらいなら問題なく持っていけると思うので、ご安心。
試しに、このまま何もいじらず、clusterにアップロードしようとしてみます。
結構盛大に怒られました。
これらを今からblenderとunityのちからで解決していこうという寸法です。
Blender側作業
まず、blenderを立ち上げます。
blenderのDL方法とかは、このあたりを参考にしてください。
(ちなみに、お恥ずかしながらせぃが君はいまだにblenderの2.79を使ってるので、お使いのblenderが2.8系だと微妙にショートカットやUIの位置が違うかもしれません。その場合は、適宜2.8系に置き換えて読んでいただくか、2.79をインストールしてください。
こんなかんじの画面になっていたら、ひとまずOKです。
VRM IMPORTERでVRMをインポート
次に、このblenderにVRMをインポートしたいので、VRM IMPORTERをblenderに導入してください。導入方法は、こちらを参照です。
できたら、VRMをインポートしてください。
すると、こんなかんじになると思います。
この立方体は邪魔なので、右クリックで選択し、deleteキーで消しておきましょう。
紫で囲った丸いマークを押下すると、描画モードが選べます。マテリアルを選べば、着色された状態で表示されるので、作業中のテンションがちょっと上がるかと思います。状況によって、マテリアル、ソリッド、ワイヤーフレームあたりで描画モードを切り替えていきましょう。
重複頂点の削除
まずは、重複頂点を削除していきましょう。
右のツリーからBody.baked(赤枠)を選択し、下のオブジェクトモードと表示されているところ(青枠)を選択し、編集モードに切り替えます。編集モードになったらAキーを押してメッシュを全選択し(オレンジ色になります)、Wキーを押下。「重複頂点を削除」を選択します。
できたら、オブジェクトモードに戻り、Face.baked、Hair001.bakedに関しても同様の処理を繰り返します。
この作業が済んだら、いよいよポリ数を減らしていきます。
不要なメッシュ(外から見えないメッシュ)を消して、ポリ数を減らす
Body.bakedを選択した状態で編集モードに移行し、内側に隠れた手首付近、腰付近、首付近(下記赤枠)の素体メッシュをカットし、中のメッシュをdeleteしていきます。
まず、表層の服部分が邪魔なので、これを非表示にします。手首部分にアップして(視点移動はShift+ホイールクリック、拡縮はスクロール)、Bキーを押下。すると、範囲選択モードになるので、手首部分をこんなかんじで選択しましょう。
その状態でHキーを押下すると、選択頂点が非表示(Hide)されるはずです。これで中の素体部分を選択しやすくなりました。(ちなみに、非表示にした頂点は、Alt+Hで復活します)
そうしたら、Shift+右クリックで、こんなかんじに素体手首の頂点をぐるっと一周分選択してください。(服に隠れて、裏側の頂点が選択しにくい場合は、裏側の服もHキーで非表示にしましょう)
この状態でVキーを押すと、手首から先と手首から前でメッシュが分割されます。
これを反対側の手首、胴、首でも繰り返しましょう。
できたら、分割した胴部分の頂点を一か所選択した状態でLキーを押下。すると、つながっているメッシュが全選択されます。きちんとメッシュの分割ができていれば、手首から先、首から先、胴から下を残して、胴部分のみが全選択されているはずです。
この状態でdeleteキーを押下し、頂点を選択。これで見えない服の中の素体部分を消すことができました。Aキーでメッシュを全選択、Alt+Hで非表示にしていた服部分を復活させて、見た目がおかしくないか確認しましょう。(念のため、最後にもう一回Aキーで全選択⇒Wキーで「重複頂点の削除」もしておきましょう)
ついでにオブジェクトモードに戻り、右上の三角面の数字を確認しましょう。これがポリゴン数なので、cluster制限の32000ポリ以下になっているか確認しましょう。
まだオーバーしている場合は、更にポリ数を減らす必要があります。女性アバターなら、スカートで隠れている下腹部からふともも、それと靴で隠れている踵から下、男性アバターなら、下半身をまるっと消すのがオススメです。
ボーン数を減らす
さて、これでポリ数の問題は解決しました。
あとは、先ほどclusterにJoints(ボーン数)で怒られていたので、ボーン数を調整しておきます。幸い、1個オーバーで済んでいたので、後ろ髪のボーンを1個だけ減らします。今回は、揺れもの設定はしないつもりなので、髪のボーンは全部消しちゃっても大丈夫です。オブジェクトモードでボーンを選択した状態で編集モードへ⇒消したいボーンを選択して、delete。これでOK。
ベイクでマテリアルとテクスチャを統合する
さて、では、いよいよ次は、ベイクによってマテリアルとテクスチャの問題を解決していきましょう。
まず、下記画像赤枠部分を左クリックで選択して、ぐにっと左にひっぱってください。
すると、こんなかんじに画面がふたつに分割します。
そうしたら、右画面左下のキューブマークをクリックし、UV/画像エディターに表示を切り替えます。
切り替えたら、画像>新規画像で画像を作成します。名前は特にこだわりがなければ、オブジェクトと同名(body等)、サイズは2048x2048くらいにしときましょう。
すると、こんなかんじの真っ黒い画像が表示されます。
次にBody.bakedを選択した状態で、左下メニューで▽マークをクリックし、UVマップに新しいマップを追加し、新しいマップを選択状態にしておきます。名前はbakeなどにしておいてください。この作業をFace.baked、Hair001.bakedでも繰り返します。追加するマップの名前は、すべて同じ名前にしておいてください。
次に左画面でBody.bakedを選択した状態で編集モードに移行⇒Aキーで全選択した状態で、Uキーを押下します。メニューの中から「スマートUV投影」を選択し、角度制限を66、島の余白を0.005くらいにして、OK。
すると、bodyのUVが新しく展開され直されます。
先ほどつくったbody画像を適用し、
左下メニューのカメラマークを選び、ベイクモードをテクスチャにし、ベイクをクリック。
すると、こんなかんじに着色されます。ひゃっほい!(楽しい瞬間)
ここまで来たら、画像を別名保存で、ローカルの任意の場所に保存しましょう。名前は、同じbodyとかで大丈夫です。
さあ、次はマテリアルとテクスチャの適用です。
右下メニューでマテリアル(つやつやした球のやつ)を選択し、今存在するマテリアルをすべて「-」マークで消し、新しいマテリアルを作成します(名前はbodyなどにします)。シェーディングの放射を1にし、透過にチェックをつけ、アルファとスペキュラーを0にします。
そうしたら、次は隣のテクスチャタブ(赤白の市松模様みたいなやつ)です。
新しいテクスチャを作ります。名前はbodyなどで。画像の「開く」から上でローカルに保存したbodyテクスチャを選択し、アルファモードをストレートからプリマルチプライへ。影響のアルファにチェックを入れれば、これで左側の画面にテクスチャが反映されるはずです。
この時、メッシュに変なゴミが表示される場合があります。
その場合は、原因として、重複頂点の削除がうまくいっていないか、UV展開の島の余白が狭すぎる場合が考えられるので、適宜確認してください。
うまくテクスチャが適用できいることを確認できたら、あとは、これをFace.baked、Hair001.bakedで繰り返します。
それが完了したら、最初にあったUVマップ「TEXCOORD_0」を削除し、blenderでの作業は完了です。念のため、オブジェクトの表示モードを「マテリアル」から「レンダー」に変えて、正常にテクスチャが反映されているか確認してください。
完成したオブジェクトをfbx形式などでエクスポートします。
Unity側の作業
さて、いよいよUnity側の作業です。
まずはclusterが対応しているバージョンのUnityをインストールし、プロジェクトをつくり、clusterのSDKを適用してください。この辺は、公式の解説が詳しいので、そちらを参照です。
プロジェクトの用意ができたら、Assets下にfbxを放り込み、放り込んだfbxをHierarchyに放り込みます。
FBXにマテリアルを設定する
Assets下で右クリックし、Create>Folderで空の「Materials」フォルダと、空の「Texture」フォルダをつくっておきましょう。Textureフォルダ下には、blenderの時につくったbody.png、face.png、hair.pngを放り込んでおきます。
fbxモデルのRigタブのAnimation TypeをGenericからHumanoidにして、apply
MaterialsタブのLocationを「Use external Materials(Legacy)」にして、applyしましょう。
すると、Materialsフォルダ下に自動でマテリアルが生成されているはずです。
次にマテリアルにシェーダーを設定します。
InspecterのShaderから、VRM/MToonを選択し、Rendering ModeをCutout、Cull ModeをOffにします。Lit colorとShader colorにテクスチャを適用したうえで色は真っ黒を選択し、AlphaのCutoffの値を大体0.065くらいに。Emissionにテクスチャを適用したうえで、色を真っ白にします。
これをマテリアル分設定すれば、こんなかんじになるはずです。
いったんVRMにインポートする
ここまできたら、いったんこのモデルをVRM形式でエクスポートします。
Hierarcyでモデルを選択した状態で、メニューのVRMタブからExport hurmanoidしましょう。保存先はAssets直下です。
インポートされたVRMに表情差分を設定
すると、Assets下にprefabファイルができるので、これをHierarcyに放り込みます。(先ほどまで触っていたモデルはもう使わないので、Hierarcyから消しておきましょう)
右のInspectorをスクロールしていくと、VRM Blend Shape Proxyという項目があるので、「BlendShape(BlendShapeAvatar)」と表示されているところをダブルクリックします。
すると、表情差分の編集画面に入るので、適宜表情差分をつけていきましょう。どの表情差分にどのシェイプが結びついているかは、シェイプ名を見れば大体わかるかなと思います。
個人的に、clusterは、表情変化がモーションに紐づいているので、ほとんどの時間ずっとデフォルトのNEUTRAL表情になります。なので、少しだけFUNをブレンドして笑顔めにしておくといいかもしれません。VRoidのJOYはリップシンクも混ざると破綻しがちなので、口だけFUNにしておくといいかもしれません。LOOKUP、LOOKDOWN、LOOKLEFT、LOOKRIGHTは特に設定する必要はありません。
完成、そしてアップロード
ここまで来たら、再度VRMにエクスポートして完成です。この際のエクスポート先は、任意のローカルで構いません。
完成したVRMをclusterにアップしてみました。
うん、怒られることなくアップロードできましたね。よきよき。
これでclusterのセットアップ手順は完了です。
ややこしく感じるかもしれませんが、慣れると全部通して一時間もかからずにできると思います。髪を削減せずに持っていけるのは、かなりメリットですね。
ちなみに、今回はやりませんでしたが、揺れものの設定は、アバターのsecondaryから行うことができます。ただ、VRoidの揺れもの設定はかなり膨大なので、結構大変です。(もし自動で再設定するスクリプトとか知っているかたがいたら、ぜひぜひ教えてください)
できなかった/ナンノコッチャなひとへ
ここまで読んで「OH、僕/私には無理だね。HAHAHA」となったかたは、よかったら、一度僕に声かけてみてください。有償でよければ、かわりにcluster向けVRMのセットアップ代行請け負います。
VRoid民が得意な領域はもっと別にあると思うので、わからんところで格闘してぐんにゃりしちゃうよりは、blenderチョットワカルマンに協力要請した方が、色々楽かな~と思います。
有償にしてるのは、あんまり善意にフリーライドされると僕側の心が折れちゃうという事情なので、「うちでつくってるお洋服と交換で」とか何か交換できそうなものがあれば、それと交換でもよいです。協力しあってきましょう。(有償という言葉を聞くと死んでしまう病のかたは、がんばって自分でできるようになろう。やり方は書いた)
せぃが君でした。ではでは。(*´▽`*)
記事を良き!と思った時に、BOOTHのブーストみたいに投げ銭できるみたい。いただいたサポートは、VTuber活動資金として大切に使わせていただきます。