VRoid studioで作ったモデルをVRChatにアップロードする際の注意点
うにてぃ?しぇーだー?なにそれおいしいの?状態の僕がごにょごにょしまくってVRoidをVRChatにアップロードすることに成功したのでその時にハマった点を記録しておく。
アップロードの手順については既に先駆者様(神)の記録があるのでまずはそちらを参照されたし。
環境
使用したアプリ
- VRoidStudio-v0.2.4-mac
- Unity 5.6.3p1
(VRChatにアップロードするためのバージョン) - Unity 2018.2.4.f1
(VRoidで制作したVRMファイルをFBXファイルに変換するためのバージョン)
使用したunitypackage
- UniVRM 0.4.0 Release v0.40 · dwango/UniVRM
VRMファイルをUnityに読み込む際に必要 - FBX Exporter
VRMファイルをFBXファイルに変換するために必要。VRChatSDKが対応しているUnity 5.6.3pでは動かないため、新しいバージョンのUnityで動かす必要がある。アセットストアでダウンロード、インストール - cubedparadox/Cubeds-Unity-Shaders: A compilation of custom shaders for Unity3D
先駆者様の記事でおすすめされていたシェーダー
OS
- Mac : macOS High Sierra バージョン10.13.6
- Windows : Windows 10 Home バージョン 1803
※諸事情によりVRoid制作はMacで行った。それ以外はWindowsでの操作。
VRoid Studioとは?
RPGのキャラメイク感覚で3Dモデルが簡単に作れちゃう神アプリ。これで作ったモデルをVRChatにアップロードできるようにいい感じにしていく。
VRoid 制作時の注意点 - ポリゴン数は2万ポリゴン未満にする
VRChatで使用できるモデルは2万ポリゴン未満と定められている。VRoidの場合、髪を充実させてしまうと2万ポリゴンを超えてしまう。ポリゴン数を減らす方法としては、
- ヘアパラメーター -> 滑らかさの値を小さくする
- ヘアパラメーター -> 太さ倍率の値を大きくし、髪の本数をへらす
- 断面形状を底なし三角形にする
等の方法がある。
参考 :
VRoidStudioでの髪の毛のポリゴン数は「滑らかさ」と「断面形状」でコントロールすることができます。VRChat等2万ポリ以内に収めないといけない場合、体は約1.4万ポリほどなので6千ポリぐらいに収まるように調整すると良いです。 #VRoid pic.twitter.com/Eb3eQRqPja
— まじかる☆しげぽん@VRoid (@m_sigepon) August 6, 2018
ちなみに僕が作ったモデルは、
- ヘア × 8 の ブロージャルヘア × 3
- 滑らかさ 7
- 断面形状 底なし三角形
で約14500ポリゴンだった。(VRChat SDKの表示)
髪の裏側が透けないようにする
Unityでモデルを読み込んだ際、髪の裏側が透けてしまうことがある。こんなふうに。
デフォルトでは、1枚もののテクスチャ(?)の裏側は透ける設定になっているらしい。
以下のように対処した。(シェーダーにcubedparadoxを使用している前提での例です)
- Asets -> Materialsフォルダを開く
- Materialsフォルダ内のbuffer#00を選択、ShaderをFlat Lit Tone Liteにし、Culling ModeをOffに
そもそもシェーダーとは、Culling Mode をOffにするとは・・・?
「シェーダとは何なのか」を自分の言葉でまとめてみる - 渋谷ほととぎす通信 【Unityシェーダ入門】Unityのシェーダで遊んでみよう - おもちゃラボ
3Dモデルをごにょごにょ(色を設定したりライティングしたり)して画面に表示するプログラムのこと。
んで、Culling Mode とは、
カリングは、視点から見えない反対側を向いたポリゴンをレンダリングしないという最適化手法です。すべてのポリゴンは表と裏側があり、オブジェクトのほとんどが閉じている事実を利用します。
ShaderLab :Culling と Depth Testing - Unity マニュアル
今回作ったモデルの場合、反対側を向いたポリゴンが見えちゃっていてそれを最適化した結果透けてしまっていた。なのでこの最適化をOffにすることによって裏側もレンダリングされるようになる。
Culling Mode を Offにした結果
※ この方法、実はあんまり良くないらしく、裏側にもテクスチャをあてるのが正しい対象方法だそうです・・・(わからん
やたらなで肩になるのを防ぐ
VRoidからエクスポートしたFBXを、ボーンの座標を一切変更せずにVRChatにアップロードするとこのようにやたらなで肩になってしまう。
対処法
VRChatでアバターをアップロードすると、なで肩になってしまう問題
— ゆきのみたま@VRChat (@yukinomitama) 2018年8月19日
肩を上げたら良いとの情報を見かけたけど何故肩を上げれば良いのか分からなかったが、単純にUnityでHumanoidの設定をする時に出てくる画像の通りにボーンを配置しろって事だったのか(多分) pic.twitter.com/jUfrM4W67r
ShoulderとUpperArmを上げれば良いのか・・・?
とりあえずやってみた
- Asets -> FBXのモデルを選択、右側のInspector -> Rigを選択、 Configureをクリック
- 以下の4 箇所のY座標をいい感じに上げる。値を変えるとモデルのボーンの位置も変わるのでそれを見ながら値を変えていく(塩梅がわからない・・・)
- J_Bip_L_Shoulder
- J_Bip_R_Shoulder
- J_Bip_L_UpperArm
- J_Bip_R_UpperArm
結果
多少マシになった!!!
まとめ
まずは以上3点、自分がハマった点をまとめた。VRoidをVRChatで使用する際の参考になれば幸いです。
このちくわ、弾力とか質感が現実のそれだった(すごい)。
3Dモデル「ちくわ」 - bironist - BOOTH(同人誌通販・ダウンロード)
次やること
- 表情をつける(デフォルトだとキーに表情が割り当てられていない)
- 走るモーションがキモいのでなんとかする
- 腕が胴体すり抜けるのをなんとかする(Dynamic Boneというのを使うのか・・・?)