復活! ロポリこん

 お久しぶりです。Najikoです。

前書き

 今日のテーマは「VRCで自分で使用するロポリこんのアバターをアップロード」です。
え、そんなの散々やって来た? そうかも知れません。が、現状こんちゃんはAvatars2.0向けのパッケージのみの販売となっています。一方、2022年5月現在もこんちゃんはバリバリ現役で、どこに行っても見かけることができます。以前からやってる人は色々な方法でなんやかんやアップしているからですね。

 しかし、今初心者の方が「お、こんちゃんかわいいなー! 買っちゃお!」と思っても、「2.0用かぁ、今は3.0だしなんか大変そうだなぁ……」となってしまっては勿体ないですね。それに仮にVRCSDK2でアップロードしたとしても、今やPhysboneの自動変換でこんちゃんの耳や髪や尻尾がくるくるしてしまいます。でもこれらの調整は決して難しくありません。2.0→3.0なんてワンタッチです。何より覚えておけばこんちゃん以外にも役立てられる知識なので損はありません。初心者の方も、こんちゃんをまだ3.0仕様にしてない人もこの記事を読んで令和最新版こんちゃんになりましょう。

準備

 アップロードの準備をします。申し訳ないのですが、記事が長くなりすぎるのでここではとりあえず

・Unity2019.4.31.f1をインストールしている(2022年5月16日現在)

・VRCSDK3とアバターのパッケージをインポートしてアバターをアップロードできる

くらいの知識は前提にさせていただきます。

わからない場合、少し古い記事になりますがこちらを参考にしてみて下さい。

アバター導入(Avatars3.0)

ではまずUnityで新しいプロジェクトを作成し、次のものをインポートしていきましょう。

・最新のアバター用VRCSDK3

VRCAvatars3Tools

UTS2

・DynamicBone(ない場合はこちらを使用してください)

こんちゃんのUnityPackage

では早速こんちゃんを3.0に変換していきましょう。あっ……

 またうっかりUTS2を先にインポートし忘れて、マテリアルエラーを起こしてしまいました。

けど大丈夫です。UTS2は今後のアップデートでUnity2020に更新されたらそのままでは使えなくなってしまうので、この機会にliltoonに移行してみましょう。

liltoon

lilMaterialConverter

こちらをインポートしてUTS2をliltoonに変換しましょう。

 マゼンタ色になったマテリアルを右クリックしてコンバートを実行します。

追記:エラーが出ているマテリアルをコンバートすると、元々のマテリアルの持っていたパラメーターが引き継がれません。この記事ではうっかりしてそのままやっていますがUTS2はコンバートする前にインポートしておきましょう。

「戻せないからバックアップ取っといてね」という旨のメッセージが出ます。必要であればバックアップを取っておき、とりあえずOKします。

これでマテリアルがliltoonを使用したものに変換されました。

2.0から3.0へ

 では早速こんちゃんを3.0にアップデートしましょう。

 上にあるタブからVRCAvatars3Toolsを起動し、出てきたウィンドウの2.0 Avatar Prefabのボックスに2.0のこんちゃんのprefabをドラッグアンドドロップします。
そうしたら、Convert Avatar To 3.0ボタンを押します。

 Scene上に3.0のこんちゃんが出現しました。あとは警告マークがついている「(Script)」のところで右クリックし、Remove Componentすれば変換は完了です。

仕上げその1 目

 もうこのままでもアップロードできますが、令和最新版究極完全態グレートこんちゃんになるためには2つ仕上げが必要になります。まず1つ目、「目がうるうるしないのを直す」です。

以前同じ内容で記事を書いているのでおさらいがてらざっくり手順を紹介します。

 こんちゃんのInspectorを下に送っていくとこのように「FX」という項目に何か入っているのが分かります。この中には表情を制御するアニメーションコントローラーが入っています。恐れずにボックス内をダブルクリックします。

 何やらこのような画面になります。こちらはパラメーターの項目なので、左上のタブ「Layers」をクリックします。

 なんじゃこりゃ、という感じですね。解説します。上から順に4つの階層がありますが、これは階層の中でそれぞれ「パラメータに従ってこんな風にアニメーションを再生するぞ」という構造が組まれたレイヤーです。下のレイヤーほど優先して実行されます。それぞれ見ていきます。

AllParts ここには何も入れません。

RecetFace コントローラーから手を離しているとき表情をリセットします。ここもいじりません。

Left Hand 左手で操作したときにどの手でどの表情が出るかが設定してあります。

 Right Hand 右手の表情セットです。レイヤーが下にあるので左手の操作より優先されます。

今回いじるのはRight及びLeftのHandレイヤーになります。

まずは灰色のボックスのうちThumbs upを選択します。

このような画面になります。右側にMotion Timeという項目があるのでその右のチェックを外します。

こうなります。

 これを右手と左手のThumbs upとOpenで2か所ずつ、計4か所行います。

次にそれらのボックスの右上にある「Motion」のボックス内をクリックします。

すると、参照しているアニメーションファイルが黄色くマークされます。
 アニメーションをクリックし、Inspectorタブを開くとこのような画面になります。Loop Timeにチェックが入っていることを確認してください。

 T_SterSmile.bも同様に確認します。チェックは入れたままにしておいてください。

こちらの手順は、右手と左手で同じアニメーションを使っているためこのアニメーションファイル計2個を確認すればOKです。

これで当該の表情のときこんちゃんの目がうるうるしたりキラキラしたりするようになります。

仕上げその2 Physboneの調整

 今回の目玉です。これを調整しなければアップロードしたこんちゃんの揺れる部位がくるくる回転してしまいます。結構面倒な部分ですが項目が多いだけなので流し読みしつつ値だけ適当に真似してください。

Scene上のこんちゃんを選択してCtrl+Dでコピーします。
コピー元の方のこんちゃんは右のInspectorから名前の左のチェックボックスを外して一旦非表示にします。
 次にコピー後のこんちゃんを選択し、VRChat SDKのUtilitiesのConvert DynamicBones To PhysBonesをクリックします。
「ダイナミックボーンを消してPhysboneに変えちゃうけど巻き戻せないからバックアップしなさいよね!」と書いてあります。多分。バックアップはしたので「Proceed」で実行します。
 DynamicBoneのコンポーネントがPhysBoneに置き換わりました。こんちゃんに青い円錐が連なっているのがわかります。まずはInspector内の「VRC Phys Bone」の各項目の下にあるIs Animatedのチェックを外していきます。これらはPhysboneをアニメーションで制御する場合に使用しますが今回は不要です。

で、各項目の設定をどのようにするかが問題です。

Physboneの項目も膨大なのでここでは全部は説明しません。詳しくはしぐにゃもさんのブログなどを見てみて下さい。ただし全部覚える必要は特にありません。

 そして、ぶっちゃけて言うとパラメーター自体は好みの問題なので正解はありません。ただし、問題である「勝手に回転する」原因は「Stiffness」という項目の値が0になっているためです。ここを0じゃなくすればひとまずくるくるしなくなりますが、まだ各所がでろんでろんに柔らかくなっているので調整していきます。わたくしはtwitterで紹介されていた設定(グラフの形状)を参考にしましたが、ソースが出てこなくなってしまったので「これ私が考えたやつだよ」という場合は教えてください。

 まずはTailから。PullとMomentumにはカーブが使われていますが、上(Pull)が0.2くらいから1へ、下(Momentum)が逆に0.8くらいから0に向かって、二つ合わせて見ると末広がりみたいな形になればOKです。カーブの形状はウィンドウを開くと下から選択できますが、これは一番右のものです。

ちなみにPullは大きくすると揺れにくく、小さくするとでろんでろんになります。0にすると動いたまま元に戻らなくなります。Momentumは大きくすると弾力が上がり、小さくするとなめらかになります。

 また、下の項目について、Collision以下のRadiusは干渉できる範囲を指定しています。0にすると触ったり掴んだりできなくなります。Allow Collisionにチェックを入れると手で触れるようになります。
Grab&Posing以下についてAllow Grabbingにチェックを入れると掴めるようになります。またAllow Posingにチェックを入れると掴んだ後トリガーで固定できるようになります。Allow Collisionにチェックが入っていない場合は手で接触はできないけど掴める、というようになります。
Grab Momentは掴める距離を指します。Max Stretchはつかんだボーンをどのくらい伸ばせるかを指します。この設定では最大の5になっているのでおそらく掴んで引っ張ると5倍にまで伸びます。そんなに伸ばしたくない、という場合は小さくしてください。0にすると伸びなくなります。

追記2:こんちゃんの場合Max Stretchを5にするとものすごく伸びます。2くらいにしておいた方が無難でしょう。

これではあんまりです。

次にHairと名のついた項目です。
 最後はEar。この記事を書いている時点ではVRC上で試していないのでこの値がいいとは限りません。お好みで調整してください。恐らく無難な動きになります。

アップロード

これにて設定完了です。あとはいつも通りVRChat SDKを使用してアップロードしましょう。

 サムネはSceneのVRCCamをいじっていい感じにしましょう。アバターネームを入力し、SharingがPrivateになっていることを必ず確認してください。必ず。

Quest対応

 最後にQuest対応します。こんちゃんのパッケージにはQuest向けのPrefabが同梱しているのでそちらを使用してももちろんいいのですが、今回はPC版アバターをQuest向けに変換してみましょう。まずはこちらをインポートします。

VRCQuestTools

インポートするとこのような画面が出ます。ASTCでテクスチャを圧縮、をクリックして一旦このウィンドウは閉じます。

Scene上のこんちゃんを右クリックしてVRCQuestToolsのConvert Avatar For Questを実行します。

変換を押します。

 するとQuest向けに変換されたこんちゃんが新たに登場します。PhysboneはQuestでも使用可能なため、その設定も引き継がれています。8項目より多くPhysboneがある場合、どれか削除するよう要求されますがこんちゃんは8つ以内に収まっています。

 Build SettingsをAndroidに変えます。上から2番目のAndroidを選択したら右下のSwitch PlatformをクリックしてAndroidビルドにします。

 VRCSDKを起動して先ほど同様アップロードすれば完了です。PC版と同じBluePrintIDになっているはずです。なお、ポリゴン数が若干VeryPoorの基準を飛び出てしまっていますがポリゴン数は負荷にはあまり影響しないので問題ありません。

オマケ

 こんちゃんはSkinedMeshが1つしかないのであまり影響はないのですが、SkinedMeshの下の方にあるAnchor OverrideのボックスにNeckのボーンを入れるとうまいこと光が当たります。普通人型のアバターはSkinedMeshが複数に分かれています。着せ替えなどをすれば新たに加わることもあります。そんなとき、全てのSkinedMeshのAnchor OverrideをNeckのボーンにし、上にあるRoot BoneはHipsに設定しましょう。また、Boundsに入っている数値も全てのSkinedMeshで揃えます。各SkinedMeshに使用するシェーダーも統一します。すると、VRCでよくある「顔だけ暗い」「服だけやたら光ってる」などの現象を避けられます。

あとがき

 今回はこんちゃんを例にしましたが、この手順に従えば2.0でセッティングされているアバターも簡単に3.0でアップロードすることができます。便利なツールを作成してくださった有志の方々に感謝ですね。こんちゃんは表情セットがQuestユーザーに特に扱いやすく、初心者から手の込んだ改変をするユーザーまで広く根強い人気を誇るアバターです。これを機に是非こんちゃんになって楽しいVRCライフを送ってください。それでは、VRCでお会いしましょう。

コメントを残す

メールアドレスが公開されることはありません。