どうも、Najikoです。
Table of Contents
前書き
今回はあの大人気アバター、ロポリこんをSDK3.0とPhysBoneに対応させてアップロードしてみよう! という記事なのですが、実は去年、同じような記事を書いています。
今もおおむねこの記事の方法でいけるのですが、去年の記事は手順が多いものでした。今回は、
・VCCも使おう
・もっとカンタンになったよ
という記事になります。前提として、初心者の方でもなんとなくアバターがアップロードできるくらいの知識があれば問題なく進められると思います。
VCCを使おう
VCCを使いましょう。
一応、アバターを初めてアップロードする方はUnityの導入からになりますので
https://vrc.wiki/beginner/672/
このサイト様の記事を参考にするなどして、Unity(現在のVRCの対応バージョン)、UnityHub、VCCのインストールを行ってください。設定後のアバターアップロードの手順も書いてあります。
「VCCってなんなの?」というと、これはVRChat Creator companionの略です。要するに、「VRC用のUnityプロジェクトを管理してあげるよ」という便利ソフトです。便利なだけでなく、アバターやワールドをアップロードするための「SDK」というアセットはこのVCCを使ってプロジェクトを作成することでのみ最新のものを使用することができるようになっています。
VCCを起動するとウィンドウが出てくるので、とりあえず右上の「Create New Project」をクリックします。
するとこのような画面になります。真ん中のProject Nameのところにプロジェクト名を入れ、上の3つの中の「Avatars」をクリックします。
そうすると、下の方の「Create Project」が押せるようになるので押します。
すると、「これをインポートしたプロジェクトにするからよろしく」という画面が出てきます。必要なものがあれば右側の+マークで追加インポートすることができますが、今回はそのままにしておきます。右上の「Open Project」をクリックしましょう。
しばらく待つと、プロジェクトが開きます。これでVCCに対応した空のプロジェクトができました。
アバター導入
こんちゃんを導入していきます。ただし、先にシェーダーからインポートしていきます。
https://github.com/unity3d-jp/UnityChanToonShaderVer2_Project/blob/release/legacy/2.0/README_ja.md
こちらからユニティちゃんトゥーンシェーダー 2.0 (UTS2) Ver.2.0.9をダウンロードしてインポートします。去年の記事にはUnityのバーションアップデートを見据えてliltoonを導入する手順を書きましたが、それからUTS2のバージョンが上がったのでこちらを使用すれば大丈夫です。
UTS2のUnityPackageをインポートするとこのような画面になるので、ウィンドウ右下のImportをクリックしてシェーダーをインポートします。
終わったら次はSceneを新たに作ります。右側Hierarchyタブの一番上のUntitledと書いてあるところを右クリックし、Add New Sceneを選択します。
なんか言われますがSaveをクリックして名前を付けてSceneを保存します。
次に、いよいよこんちゃんのアバター本体をインポートします。Unitypackageを先ほど同様にインポートすると……
このように、下のProjectタブ内を見るとAssetsフォルダの下にこんちゃんが入ったフォルダがインポートされているのがわかります。
SDK3.0とPhysBone向け設定
https://musica3788.booth.pm/items/4688365
Boothでムーシカさんが公開されているこちらのprefabを使うと、SDK2.0向けアバターのコンバートなどの手順をすっ飛ばしてこんちゃんを使用できます。コンバートの手順が知りたい方は去年の記事の「2.0から3.0へ」をご覧ください。
早速こちらをインポートしていきます。
すると、Assetsフォルダの下に「LPK_3.0」というフォルダが追加されています。ここで、Scene上にこんちゃんを置く前に、HierarchyのUntitledというSceneを右クリックしてRemove Sceneしておきます。
そうしたらいよいよ、こんちゃんをSceneに配置します。今回はPC用のこんちゃんのPrefabを選び、Scene上にドラッグアンドドロップしました。そして、右側のInspectorのPositionを0にしてSceneのど真ん中にこんちゃんが置かれるようにします。
あとはこれでアップロードすればアバターとして問題なく機能するはずです。PhysBoneで揺れものの設定もされています。特にこだわりがない方はそのままアップロードしてオッケーです。Quest対応したい場合はQuest版のprefabも同梱しているのでそちらをAndroidプラットフォーム向けにアップロードすれば完了です。
追加設定
ここからはわたくし(と一部VRC公式)が推奨する設定群です。具体的には
・FXレイヤーのアバターマスクを消す
・write defaultsを使わない
・Tracking Controlの設定
・目がうるうるキラキラするようにする
・BoundsとAnchorOverrideの設定
を行います。
アバターマスクを消す
なんやねんそりゃ、と思われるかもしれませんが、これらの設定は他のアバターでも使える設定なのでとりあえず行っておくと無難です。まず、こんちゃんのInspectorの下の方のFXに入っている「LPK_FX」をダブルクリックして開きます。
するとこういった画面が出てきます。まず、AllParts、Left Hand、Right Handのそれぞれの右側の歯車マークをクリックします。すると、「vrc_MuscleOnly」などのMaskが設定されているボックスがあります。
これらを3つともNoneにします。すると歯車マークの横のMという字も消えます。ここにMaskが入っていると、アバターの指が動かなくなります。まあ、こんちゃんは指がないので見た目の変化はないのですが……
Write defaultsを使わない
次にアニメーションのステートボックス内からWrite defaultsのチェックを外していきます。
その前に、Sceneのこんちゃんを選択した状態でAnimationタブを開き、Createボタンを押します。Animationタブがない場合は、上部メニューの「Windows→Windows→Animation」と選択してタブを出現させてください。
今回は「FaceReset」という名前で保存しました。次にSceneのこんちゃんを選択した状態で右上の赤い録画ボタンをクリックします。
するとこんちゃんが中腰になるので、Sceneの「ロポリこんPC3.0」の左にある矢印をクリックして階層を開き、「Lowpoly_kon」というメッシュを選択します。そして右側のInspector内のBlendShapesという項目の矢印をクリックして展開します。すると0がたくさん出てきます。
さきほど録画ボタンを押した後の状態で、この0だらけのボックスの「vrc_v_」より下のものを全て1にします。ただし「Body_None」のところは触れないでください。
今度は今入力した1を全て0にします。その後、再度Animationタブをクリックし、右上の赤い録画ボタンをもう一度押すとアニメーションの編集が終わります。
先ほど新しいアニメーションを作成し保存したフォルダにFaceResetのアニメーションができています。クリックすると、先ほど選んだ全部の数値が0になるアニメーションができているのがわかります。
その後、先ほどのこんちゃんのInspectorの下の方にあるFXレイヤーを再度ダブルクリックしてこの画面を出します。LayersタブでAllPartsの右上の「+」ボタンをクリックするとNew Layerが一番下に追加されるので、左の「=」をドラッグしてNew LayerをALLPartsの1つ下に持って行き、ダブルクリックして名前をFaceResetに変更します。
次に、Face Resetの歯車マークをクリックして、Weightのスライダーを右に動かして1にします。よく忘れるのですが、これを忘れるとそのレイヤーが機能しません。
次に、このレイヤー内に先ほど作成した「Face Reset」のアニメーションファイル(飛行する三角形みたいなマークのファイル)をドラッグアンドドロップすると、このようにオレンジのボックスが出てきます。これをクリックすると……
右側のInspectorにこのように表示されるので、Write Defaultsのチェックを外します。
次にLeft HandのLayerをクリックするとこのような画面が出てきます。現在はオレンジのボックスの「Idle」が選択されています。右側のInspector内に、「Write Defaults」と書かれたボックスにチェックが入っているのが見えますが、このチェックを外します。さらに、灰色のボックスもそれぞれクリックし、全てのボックスでWrite Defaultsを外します。
次に各ボックスのInspector内の下にあるAdd Behaviorをクリックし、VRCAnimatorTrackingControlを追加します。
チェックボックスが出てくるので、Left、RightのそれぞれのLayer内の灰色のボックス(ハンドサイン)のチェックをこのように設定しましょう。
オレンジ色のボックス(Idle)内のチェックはこうします。こんちゃんの場合やらなくても大丈夫ですが、他のアバターの場合はこれでまばたきと表情の干渉をある程度防げます。また、表情アニメーションで口を開けている間にはリップシンクを無効にしたい、という場合はその表情(このこんちゃんの場合Right HandはOpen、Peace、Gun、Left HandはPeace、Gun)のみ下の画像のようにMouth&Jawの欄はAnimationにチェックを入れるようにするといいと思います。
目をキラキラうるうるさせる
このままだと、特定の表情のときにこんちゃんの目がうるうるキラキラする演出が動きません。
H_KindSmile.hとT_SterSmile.bの2種類がそれにあたります。このprefabの設定の場合右手のOpenとThumbs upに入っているのでそのボックスを選択し、右側にある「Motion Time」のチェックを外してください。これでキラキラうるうるします。
BoundsとAnchorOverrideの設定
これもこんちゃんの場合1メッシュ1マテリアルのアバターなので別に必要ないのですが、覚えておくと他のアバターを改変する時に正しく設定できます。
Sceneの「ロポリこんPC3.0」の左の矢印から階層を開き、「LowPoly_kon」のメッシュを選択します。すると、右のInspectorにBoundsが表示されているので値をこのようにします。こんちゃんの場合この数値ですが、とにかく全身が立方体の中に少しゆとりをもって格納されている状態にします。アバターにSkined Meshが複数ある場合は全メッシュのBoundsの数値を揃えます。
Inspectorの下の方にあるRoot Boneは必ずHipsに、またさらに下のAnchor OverrideはNeckにておくとよいです。これも複数Skined Meshがあるアバターでは全て同じように設定します。そうすると「ワールドのライトを受けると顔と体の明るさが違って見える」とか「近くに寄って見ると靴や帽子など体の一部が消える」などといった現象の原因を1つ潰すことができます。
最後に、表情をリセットするアニメーションを作成した時にいじらないようにしておいた「Body_None」のシェイプキーを100にしておきます。こうすると袖の中の腕のメッシュがキュッと細く絞られ、肘を曲げた時に飛び出てきたりするのを防げます。ここではアニメーションをいじる必要はありません。
あと忘れずに、アップロードする前にSceneの「ロポリこんPC3.0」のAnimatorのControllerをNoneにしておきましょう。動作テスト時以外ここにレイヤーを入れることはありません。
さらに補足
アップロードしてから気づいたのですが、この設定だと走ったとき尻尾が体を貫通してくるので、
Hipsボーンの階層にVRC Phys Bone Colliderを追加します。
設定値はこんな感じでいいと思います。
Tail_02の階層のPhysBoneの設定の下の方にある「Colliders」とところの「Size」が0になっているのを1にします。するとElement 0というボックスが出てくるのでここにHispsのボーンをドラッグアンドドロップすると、
こうなります。これで尻尾が貫通しなくなると思います。
最後に
追加設定の方は別にそこまでせんでもよいといえばよいのですが、Write defaultsとFXレイヤーのアバターマスク不使用は公式で推奨している設定なので、理屈はともかく覚えておくと良いと思います。ご質問などがあればTwitterの方にDMを送っていただければと思います。では、皆さんこれからもよいこんちゃんライフを……
Twitter:@najiko10