【VRChat】PC専用アバターをなるべく手軽にMediumでQuest対応したかったけど無理
さきに結論だけ。『「PC向けアバター 5000ポリまでダイエット - Quest Excellent を目指す本 -」を読んでください。』
Quest対応が15,000ポリまでMedium判定になるというアナウンスがあったので「△15kも使えるならデシメートだけで楽々達成できるやんけ!Medium対応布教したろ!」という思いでやり方を書いていたのですが。無理でした。
何が無理かというと、結局かるい気持ちでぱぱっとできるほど作業が単純化できなかった。「慣れれば1時間」くらいを目指したかったけど無理。
「PC向けアバター 5000ポリまでダイエット - Quest Excellent を目指す本 -」という本がありますので、こちらをご覧いただくのが現時点でも最適解かと思います。Exellentを目指さないにしても、ポリ数削減の手法はだいたい一緒です。あえて言うなら、髪の削減は自動削減(デシメート)だけでも結構それっぽくなります。髪を手動で削減するのは形状的にかなり大変なので、そういう意味でも髪だけデシメートを使うのはアリかと思います。
以下、元々書こうとしていた記事。
先日、VRChat公式(正確にはVRChatのCommunity Manager)から、Questのパフォーマンスランク判定基準を見直すという話が出ました。
今まで、QuestユーザからShow Avatarなしで表示してもらうための「Medium」ランクにするには7,500ポリゴン以下まで減らす必要がありましたが、15,000ポリゴンでMedium判定になるようです。
7500ポリ時代に何度かMedium対応しましたが、なかなかに地獄でした。今回ポリゴン数が倍になったので、地獄のかなりの部分を省略できるのでは?と考え手順を残すことにしました。
また、今回の手順は「手軽に・短時間で・試行錯誤なしで」Medium以上になることを目指しますが、より丁寧にやりたい場合は「PC向けアバター 5000ポリまでダイエット - Quest Excellent を目指す本 -」という本があります。大変参考になるので、おすすめの本です。
予行演習なしで執筆しながら削減作業をするので、意外と地獄が残る可能性もありますが、そのときはご容赦ください。
あと、前提知識として、ある程度Blenderが使えることとさせてください。Zenさんのかぼちゃが作れればOKです。フルスクラッチアバターを作る気がなくても1回やっておくと改変手法の幅が広がるのでよいですよ。
今回の手法が使える条件(および、あきらめが必要な点)
対象のアバターが以下すべてにあてはまる場合のみ、今回の手法が使えます。
・透過を多用していない(一部表情くらいにしか使っていない)
・
また、以下については諦めていただく必要があります。
・顔以外のシェイプキー(体型調整など)を固定する必要がある
・
今回お手本にするアバター
ちょうど、ちゃんとQuest対応したいと思っていたアバターがあるので、 AugmentedDolls さんの『シェノン / CHAINON』を使います。
セットアップ
大抵のアバターには「.blend」という拡張子のBlender用ファイルがついていると思うので、Blender2.9系でそれを開いてください。(無かったら、「.fbx」という拡張子のファイルをインポートしてください。)
上記画像は、 chainon_v1.03.blend を開いた直後の画面です。ポリゴン数を表示したいので、
をクリックしてください。そうしたら、以下のように「統計」のチェックをオンにしてください。
この操作をすることで、画面左上に統計情報として総ポリゴン数が表示されます。VRChatで気にしないといけないのは「三角形面」です。
元のファイルを上書きしないよう、「名前を付けて保存」をしておいてください。できればQuest対応専用フォルダを作ってください。
顔と顔以外に分ける
顔は表情を出すためのシェイプキーがかたまっており、安易に手を出せません。顔とそれ以外の部分でポリゴン削減手法が大きく異なるので、分離します。
(最初から分離されているモデルもたまに見かけます。メアちゃんとか。)
今回、顔を含むオブジェクトは Body です。まずBody以外を非表示にします。
テンキーの5で平行投影、テンキーの3で横からの表示にしたのち、頭部が画面に大きく表示されるようにしてください。
今回のモデルは髪で見えなくなる後頭部があらかじめ削られていますね。
シェイプキーが Basis になっていることを確認して、Tabキーで編集モードに入ってください。編集モードになったら、Alt+Hで非表示の解除、Alt+Aを押して選択解除してください。(今回は大丈夫でしたが、製作者の作業痕跡がそのままになっていることがあるので、その対策です。)
アバターの頭全体を選択します。アバター内側に隠れた表情パーツまで選択できるよう、「透過表示を切り替え」をします。以下画像の、四角形が重なったアイコンです。
押すと以下のような表示になります。(もし辺選択や面選択のモードになっている場合は、頂点選択モードにしておいてください。)
この状態で、キーボードの「B」を押して矩形選択をします。Bキー→選択を繰り返すごとに選択頂点が追加されていくので、だいたい首のライン1本目くらいまで選択してください。
選択できたら、キーボードのPを押して分離メニューを出し、「選択」を選んでください。選択した部分が別オブジェクトに分離します。そうしたら透過表示をオフにして、一旦Tabキーでオブジェクトモードに戻り、テンキーの1で正面を向いてください。
右ペインのオブジェクト一覧を見ると、Bodyの下にBody.001というのが増えています。先程分離した顔はこれです。わかりやすく、Body.Faceとか名前をつけておきましょう。
シェイプキーが崩れていないか確認します。
シェイプキーの爆発が発生していないことを確認できたら、値を0に戻し、選択をBasisに戻してください。(重要)頻繁に忘れます。
そろそろ保存しましょう。さっきオリジナルのファイルと別名で保存したので、Ctrl+Sで大丈夫です。
顔のポリゴン数を見てみましょう。Body.Faceを選んで編集モードにしてください。シェノンさんは……△5,580。以前の基準だったら顔だけでMediumですね。新基準なら顔以外に△9,000くらい使える計算なので、もしかしたら顔の削減をしなくてもなんとかなるかもしれません。
顔以外の部分の削減 概要
本題に入るわけですが、先ほど書いたとおり顔とそれ以外では削減の手法が異なります。まずは顔以外の部分について、これから何をするかおおまかに列挙します。
1. 体型調整用シェイプキーの値を決めて固定する(シェイプキーを消す)
2. 見えない面を消す
3. 「デシメート」というモディファイアをつける
4. ボーンの関節ごとにオブジェクトを分離する
5. デシメートの値を調節する
6. デシメートを確定する
「デシメート」は、ポリゴン数を自動削減してくれる機能です。今回の趣旨は楽をすることなので非常に頼もしい機能なのですが、雑に扱うと(主に)ボーンと頂点の関係性が壊れます。
デシメートはオブジェクト単位で適用するので、自動削減をする前にあらかじめオブジェクトをボーン毎に分けておくことで対策します。
あと、デシメートに限らずモディファイアはシェイプキーがあるオブジェクトには適用できません。付与することはできても、確定できません。なので体型調整用シェイプキーがある場合は、この時点で体型を決定しシェイプキーを消す必要があります。
「胸の大きさを可変にするギミックを入れたい」みたいな場合は、その部分だけ顔と同じように分離しておいてください。あとで顔と同じ手法で削減します。(説明のため、今回は腕と腰の服干渉対策シェイプキーを残してみます)
顔以外(1) シェイプキー固定
前述の通り、シェイプキーがあるオブジェクトはデシメートを使えないため、顔以外のオブジェクトからシェイプキーを削除します。
体型調整のシェイプキーがついている場合は、ここで体型を確定します。今回のアバターは、髪のオブジェクトに「前髪の長さを調整するシェイプキー」「ケモ耳を削除するシェイプキー」が入っているのでこれを例に説明します。
オブジェクトモードで値を調整します。今回は、
・ケモ耳削除: 0 (削除しない)
・前髪調整: 100 (いちばん長い状態)
としました。
シェイプキーの値を決めたら、「v」のようなボタンを押し、
出てきたメニューから「新規シェイプをミックスから作成」を押します。
「Key (番号)」という名前のキーができました。
Basisを選択して編集モードに入り、キーボードのAで頂点を全選択します。
頂点 > シェイプキーからブレンド
左下に「シェイプキーからブレンド」の設定パネルが出現するのでクリック
さきほど作成した「Key (番号)」(今回は Key 3)を選び、ブレンドを1.00にする
オブジェクトモードに戻り、髪オブジェクトについているシェイプキーをすべて削除します。
調整が反映されたまま、シェイプキーが空になったことを確認します。
うまくいったら、他のオブジェクトについても同様にシェイプキーを消してください。(顔以外です、念のため)
ちなみに、顔を分離した残りのBodyには表情のシェイプキーが残っていると思いますが、全部消して大丈夫です。
顔以外(2) 見えない面を消す
ようやく面を減らす段階にきましたね……。
楽をするため基本的にデシメート(自動削減)に頼るのですが、服や髪に隠れて見えない面は、あらかじめ削除してしまったほうが見える部分に使えるポリゴン数を増やせて自動削減がきれいに仕上がります。
ニーソ(※)で隠れている脚を例に説明します。Bodyオブジェクトを選び編集モードにして、面選択にしておきます。その後、ニーソの表示/非表示を切り替えつつ確実に隠れる面を選択していきます。キーボードのCの機能(名前不明。塗って選択する機能)が便利です。
見えない面を選択するにあたって、まず見える面を選択してキーボードのHで面を非表示にしていき、残った面がどの角度からも見えないことを確認して削除、という流れが楽かと思います。
※ファッション用語を知らないので、そのあたり間違っていたらすみません
上記のような感じで隠れている部分をすべて選択できてればOK。
Xキーを押し、「面」を選択すると削除されます。(「面のみ」のような紛らわしい選択肢がありますが、頂点や辺が残るので使わない)
見えない部分すべてに対してこれを行ってください。ただし、頭部(さっき分けたBody.Face)はいまは手を付けないでください。
また、Tポーズだと見えないけどVRChatで実際に動いてみると見える部分というのもありますので、少し余裕を残しておいてください。
消すかどうか迷う部分があったら、とりあえず残しておいてください。目標に届かなそうだったときに消しましょう。
あと、だんだんいろんなところが気になってあれも消せるこれも消せるとやっていると時間がかかってしまうので、ほどほどにしましょう。
顔以外(3) デシメートモディファイア付与
顔以外(シェイプキーのついていないオブジェクト)に自動削減のモディファイアをつけます。青いレンチマークをクリックして、モディファイアーを追加を押します。
デシメートを選びます。(2.7系のときは「面を削減」みたいな名前だったはずです)
ここまで終わったら、「コピーを保存」をしてください。名前は、もとのファイルの名前の後に「_モディファイア付与まで完了」をつけるとかでよいと思います。あとで間違えたときにとりあえずここまで戻ってこれます。(スマートなバージョン管理をしているならもちろんそっちでよいです)
顔以外(4) 関節ごとに分離
前述の通り、そのままデシメートを実施するとウェイトがめちゃくちゃになるので、おおまかにボーン毎に分離します。分離の方法は頭を分離したときと同じです。分離するものを選択して、Pキーを押して、選択物で分離、です。
ただ、全ボーンに分ける必要はありません。
・Head
・UpperArm
・肘 (UpperとLower両方の影響があるところ)
・LowerArm
・手 (Hand~各指.Distal)
・UpperLeg
・膝 (UpperとLower両方の影響があるところ)
・LowerLeg
・Foot
・Toe
・その他(Hips+Spine+Chest)
に分けてください。
手をひとかたまりにする理由は、ボーンが細かすぎて大変だからです。Hips~Chestを分けない理由は、分けなくてもさほど問題が無いからです。
肘・膝は、一律でどっちかのボーンにつけてしまうと頂点が想定外の動きをしそうなので別にしています。もしかしたら大丈夫なのかもしれませんが、とりあえずこれでやってみましょう。
関節の見分け方ですが、
1. Armatureを表示
2. Armatureを選択
3. ポーズモードに変更
4. Zキーでワイヤーフレーム表示にする
5. ボーンを選ぶ
6. Rキーで関節を曲げてみる
という手順で調べられます。関節を曲げたあとは、確定する前にEscキーでキャンセルしてください。確定してしまった場合はCtrl+Zで大丈夫です。
解説したあとに言うのもアレですが、ひと目見てすぐ関節がわかるのであればたぶんその直感どおりで大丈夫です。
また、服と細かいアクセサリーが同一オブジェクトになっている場合などは、分離して別々にデシメートしたほうがきれいになります。
顔以外(5) デシメートの値を調整(永遠に未完成の章)
崩壊ぎりぎり手前くらいの、自分が納得できる値に調整してください。明らかに一部だけ崩れる(ほかはもう少し削れそう)という場合は、その部分だけオブジェクトを分けてしまうのも手です。
顔以外(6) デシメート確定(永遠に未完成の章)
すべてのパラメータを決めたら、Decimateの横の「 v 」みたいなボタンから「適用」を押してください。
以上
中途半端な記事になってしまい申し訳ありません。
記事に出したシェノンちゃんにつきましては、時間をかけてでも△15,000対応して使います。途中まででもやった作業は無駄にしたくない(でも人に見せられるような作業ではない)
さいごに。しつこいですが、参考図書です。おすすめです。