4日前にVRChatを始めたとおもったら、昨日はVR寝落ちして謎の朝を迎えました。
で、起きたらTrust Level が New User になっていました!わぁーいぱちぱち。
ということで、UnityからAvatarあげようあげよう!
と意気込んでいたのですが、このタイミングでVRChatSDKが大幅にアップデートして、Unityのバージョンも忌々しい2017から2018へ!
Boothで可愛い子を人身売買してきて、VRMでExportしてUpload?とか生ぬるいこと考えていた精神はボロボロになって、昨日とは別の作業で沼沼することに...
今日はそんなメモです。
Boothで人身売買!
BoothでQuest対応できて、セットアップが容易そうな子を人身売買しました。
自作モデルやる前に、最低限のVRMのセットアップ/アップロードは理解しておいた方が、問題起きたときの対処がスムーズだろうという考えです。
そして、買ったのがじゃん!
かわいくて、Quest対応とかあなたが神か。
実際、自分でモデル作る場合に、Quest対応はするつもりがない(モデル制限がきつすぎて最適化沼に直行しそうだから)ので、Quest用に持っておいてよいかな?という思惑もあり。。
沼の始まりだ!
今回の環境
のまえに、今回の制作環境...
- Unity2018.4.20f1
- UniVRM-0.55
- VRCSDK2-2020.04.01.10.20
まさかの今朝リリースしたての最新バージョンSDKです。情報がねぇw(Discordのぞいたら大変そうだった(こなみ
インポートしてVRMに...
unitypackageを展開して、シーンに配置したfbxをUniVRMでVRMに変換!
モデルが真っ黒になりました。
これなー、適当にググると、UniVRMのバージョン下げるといいとか、SDKのインポート順がとかでてくるんだけど、なんてことはない。
VRMに変換したときのシェーダーの対応があってないだけだった。
ちゃんと考えればすぐわかる話なのに、無思考でググってた。ぐーぐる脳はダメですね。
というわけで、Standard Shader に落ちていたマテリアルを、VRChat/Mobile/* に置き換えたら見た目もばっちり!
VRMからVRChat向けのモデルにするには...
さて、実は事前にVRMに関しては色々調べてはいた。
VRMはあくまで形式で、それ自体が、VRChat向けの形式ではない。
一定のルールで作られたVRMで正規化したモデルをVRChatでアップロードができると。
と、わかっては居たんですが、
またしても適当にググって流された
はい、なんでも、自動変換&セットアップしてくれるツールがあるらしい。ということで、
を使ってみた。
うん、エラー吹いた。(Editor拡張周りてんこ盛り。Prefabをあれこれするから2018で動くわけがない)
ただ、一応それっぽい出力は出てはいたので、それを元にアップロードとかして。。
深淵の沼を彷徨った...
そもそも、オリジナルのVRMを破壊的に書き換えて云々するようなので、VRMを調整しつつ、このツールでポスト変換するワークフローに疑問が生まれた。
気を取り直して自力でセットアップ
と、いうことで、そのツールのことはすっぱり忘れて、自力セットアップへ。
VRChatのモデルは、VRMに、VRC_Avatar Desciriptor コンポーネントをアタッチして、それをいい感じに埋めてやるとよいということ。
なので、愚直に素でAddComponentしてあげて、一先ず素の状態でVRChatへアップロード。
このとき、それなりにエラーは出たが、VRSDK側のAutoFIXをぽちぽちするだけで、いけた。
で、ここで、初のアバターアップデート成功!
Questを被ってチェックしてみたら...
キョンシーのように手が前に伸びていて、手がそれ以上下に下がらない。。。
アバターの視点設定問題
まず、この設定に問題があること教えてくれたこのブログには感謝。
で、感謝なんだけど、アバターの視点変更の話、バージョンが古いと違うのか、VRM First Person Component の話がでてきたんですよね...
こいつ、VRChat向けの変換をかけるときに切り離されるコンポーネントなので、これをいくら調整しても無駄。
では何を調整すればよいかというと、さっき追加した、VRC_Avatar Descriptor Component の View Position プロパティ。
これの y 座標をアバターの眼球のあたり、z 座標を 眼球の近くかつ、一番z座標が低い腕よりも少し遊びを持たせた後方(今回は、-0.0003 を指定)に設定。
これでアップロードしたところ、無事脱キョンシー状態!やったね。
リップシンクって?
VRMでは、BlendShapeを束ねるBlendShape(正式名称わからん)にがBlendShapeを管理していて、そいつの設定値をいい感じに調整することでリップシンクの準備が整う 、、そう思っていた。
が、それやってもVRChatだと反映されなかった。
毎度おなじみ、VRC_Avatar Descriptor Component の Lip Sync を Viseme Blend Shape に変更して、対応するVRMのBlendShapeとひもづけることで設定ができた!
表情はどうしたら...?
デフォルトの表情も可愛いけど、にっこりしたり、怒ったりみたいなのってどうやって?
と思ったら、やっぱり VRC_Avatar Descriptor Component の Custom Standard Anims とかにいい感じにブツをいれるらしい。
最新のVRChatSDKだと、パスが変わってて、/VRCSDK/Examples2/Animation/SDK2/CustomOverrideEmpty がある。
これをコピって、適当にアニメーションをアサインしてやる。(VRChatの手の状態に合わせた部分だけでいいっぽい?)
これで、笑えるようになった!!
楽しい!可愛い!
ということで、無事人身売買したfbxからVRChatで可愛く暮らせるアバターへの昇華が幕を閉じたのだった...
自作モデルに行く、、まえにもうちょっと出来合いのモデルで試したいことがあるので、まずはそのあたりの検証を週末にですねー。
Unity2018で作業する話は沼がおおいけど、レガシーな問題を抱えなくて済むと考えて、積極的に踏み抜いていこう。
あ、QuestのVRChatアプリがの問題らしいけど、最新の環境で作ったアバターつかうと、Quest自体が強制再起動を頻発するらしい。らしいというか、自分の環境でも、ホームの鏡でちょろっと動かすだけでかなりハングした。今日だけで再起動回数2桁いってる...
なおるまでは、Oculus Link ではいろうかー。