Oculus Rift・HTC vive対応ゲーム『VRchat』のwikiです。ここでは基本説明と自作アバターの追加方法などを載せていきます。



アバターの注意事項

アバターの注意事項
VRchat内で使用するアバター作成時の禁止行為・注意事項をまとめました。
「MMD4Mecanim」の利用禁止、「3Dモデル(MMDモデル)」をお借りする際の守るべき注意事項などありますので厳守してください。
違反行為が横行してしまいますと、VRchat文化全体が規制・衰退の流れができてしまいます。

2018/5/5よりVRChatに「Trustシステム」が導入されました。内容は
・新規ユーザーに対してアバター、ワールドのアップロード制限
・既存の悪質ユーザーに対してのアバター、ワールドのアップロード制限(事実上のBAN)
詳しくはTrustシステムについて

アバターの導入概要

おおまかな流れとしては、unityでプロジェクトを作り、アップロードしたいモデルをunityに読み込みます。
モデルをシーンに配置してSDKを設定し、unityのプロジェクト内でログインしてアップロードするとVRChat内で使えるようになります。
AVATARS 3.0が導入され環境が大きく変わったため従来の方法と異なるので注意しましょう。

1.アップロードしたいアバター(3Dモデル)の準備
2.VRChatに対応したUnityのバージョンのインストール
3.VRChatのSDK3のインポート
4.セットアップ及びコンポーネントの設定
※詳細はアバター導入編 のアバター導入の概要項を参照

1.アップロードしたいアバター(3Dモデル)の準備

1.アバターとなる3Dデータの準備

ネットショップのBOOTHにVRChatの使用を想定したモデルが多く販売されています。
又はUnityアセットストアのキャラクターも活用できます。
Blender等のモデリングソフトで作成
※その他のデータは利用規約を熟読の上、使用してよいか慎重に判断しましょう。
※利用規約や著作権は非常に複雑である為、VRChat向けに作られたデータの中から選ぶのが手堅いと思います。

ファイル形式

Unity(VRChat)では、3Dモデルは.fbxという3Dのファイルフォーマットでメジャーなファイル形式(拡張子)を使用します。
FBX以外のファイルフォーマットに関しては別のツールで変換する必要があります。
Unityはあくまでゲームエンジンである為、データのエクスポート/インポートは可能ですが、
データそのものの編集は基本的に別のソフトを使用する事を想定して設計されています。

BOOTHで販売されている「設定済みUnityPackage」については、基本的にUnity上にドラッグ&ドロップするだけでアップロードが可能となっています。
Unity内で各種設定がなされたprefabsという状態になっています。詳しくは各商品ページ、同梱されている説明テキストをご覧ください。

2019年に入りVRアプリケーション向け特化したフォーマット「VRM」を使用する動きがあります。
Vroidをはじめ普及が始まっています。

VRChatにアップロードできるモデルの制限

アップロードできるモデルは7万ポリゴンまでという制限があるので、適宜モデルの三角ポリゴン数を7万未満になるように調整してください。
一応、2018年末の大型アップデートによって2万ポリゴンから7万ポリゴンに上限開放されましたが、必要以上に多いのは避けましょう。

Blenderの場合、Decimateというモディファイアを使用してポリゴン数を減らせます。
(シェイプキーがあるとこのモディファイアが使えないため注意が必要)

VRChatで使用可能なコンポーネントはWhitelisted Avatar Componentsにて確認できます。
それ以外のコンポーネントをアタッチする場合基本的にエラーになります。独自のスクリプトをアタッチした場合も同様です。

2.VRChatに対応したUnityのバージョンのインストール

通常プレイのみならばunityは必要ありませんが、独自のアバターやワールドをVRChatにアップロードする場合は対応したバージョンのunityが必要です。
※Unityの最新バージョンはこちらUnityの最新バージョン確認
バージョンについての公式リファレンス

Unityは本体のクライアントのみをインストールして使用する場合と、複数のバージョンを管理するUnityHubを介して使用する場合があります。

余談ですが、VRChatはUnity固有の機能にべったり依存していますので、バージョンを揃えるのは必須です。

3.VRChatのSDK3のインポート

SDKとはあるシステムに対応した、開発に必要なプログラムをまとめた物です。
つまり、unity上でアバターやワールドとなるデータを作成し、SDKのプログラムや機能を使ってVRChatへアップロードします。
※SDKはVRChat公式にログインの上で最新版をダウンロードしてください。
また、最新バージョンは適宜VRChat公式サイトより確認してください。
【注意】
SDKはSDK2とSDK3の2種類ありますが、AVATARS3.0はSDK3を使用します。
SDK2は従来手法のこちらアバター導入編 を参照ください。

4.セットアップ及びコンポーネントの設定

事前準備

VRChatのユーザーアカウントの作成
VRChat-Register
※Steamアカウントから移行することも可能
 またアップロードはトラストランクが「New User」以上のこと

Unityを起動、アバターアップロード用プロジェクトの作成
[+NEW] → Project name[VRCavatar(任意の名前)] → 〇3Dにチェックを入れる → [CreateProject]



SDKのunityパッケージのインポート
上にあるメニューバー[Assets]→[Import Package]→[Custom Package]→ウインドウが開くので、
ダウンロードした VRCSDK 〜(略)〜 .unitypackage を指定してください。
選択するとアセットの内容一覧が出てくるので、すべてにチェックが入った状態で[Import]のボタンを押してください。
その後、メニューバーに[VRChat SDK]が表示されていたらインポート成功です。



セットアップ

モデルデータのインポート
モデルデータは[Project]タブのAssetsフォルダー内にドラック&ドロップで読み込んでください。
※[Assets]のウインドウ内で[右クリック]→[Create]→[Folder]を押すとフォルダーを追加できます。
※.unitypackageで配布されているモデルデータは、SDKと同様に[Assets]→[Import Package]→[Custom Package]から読み込むと自動でunityに配置されます。
※FBXだけでなくテクスチャデータもまとめて読み込ませる必要があります。

Humanoid設定
モデルデータを人型(Humanoid)としてunityに認識させます。
Assets内に読み込んだモデルデータ(FBXファイル)をクリックし、表示された[Inspector]内の[Rig]タブを押します。
[Rig]の設定項目にあるAnimation Typeを[Humanoid]に変更し、[Apply]を押して確定します。
[Configure]をクリックしアーマチュアのマッピングを行い[Done]で確定させます。
※画像のような画面でない人は、[Inspector] 3行目あたりの[Model]から[Select]を選ぶと同じ画面が出ます。

【参考】アバターの設定について



法線の設定
モデルデータの法線を設定します。(Unity ver.2018以降必要)
[Inspector]内の[Rig]の隣の[model]タブを押します。
Legacy Blend Shape Normalsにチェックを入れます。
Normalsを[None]に変更します。
[Apply]を押して確定します。


モデルのシーン配置
アップロードするモデルをシーンに配置し、SDKの設定を行います。
モデルデータ(FBXファイル)を[Hierarchy]にドラック&ドロップすると[Scene]タブにモデルが表示されます。
[Hierarchy]にドロップすることでUnityの原点に置くことができます。(FBXデータがちゃんと原点基準で作成されている場合)

シェーダーの設定
シェーダー(3Dモデルの陰影)の設定を行います。
モデルデータ(FBXファイル)を読み込んだ階層にて[Materials]を新規作成し、マテリアルファイルをクリックします。
マテリアルをクリックすると[Inspector]の項目にShaderがあります。
初期設定では[Standard]になってると思いますが、任意のシェーダーに変更しましょう。
また、目の表示がおかしい○○の部分が正常に表示されないなどの問題が起きた場合は他のシェーダーを選択すると正常に表示される場合があります。

マテリアルの設定ができましたら、シーンに配置したモデルにドラック&ドロップして適用させましょう。
※他のシェーダーにする場合は任意のシェーダーを選択してください。


コンポーネントの設定

ドキュメントはこちらです。ドキュメント
モデルデータをクリックし[Inspector]の一番下の項目にある[Add Component]を押します。
[scripts]→[VRC.SDK3.Avatars.Components]→[VRC_Avater Descriptor]を押します。

「VRC_Avater Descriptor」と「Pipeline Manager」が追加されます。
「Pipeline Manager」はアバターの識別番号を管理するものなので触る必要はありません。



VRC_Avater Descriptor設定
「VRC_Avater Descriptor」には[View]、[LipSync]、[Eye Look]、[Playable Layers]、[Lower Body]、[Expressions]の6項目がある。

・View
アバターのビューポジションを設定するものです。
およそアバターの眉間にグレーの丸が来るように設定してあげます。
※これは従来の手法と同じです。



・LipSync
しゃべっる時の口の動きを設定します。[Default]のまま設定なしでも可。
アバターに仕込まれたシェイプキーの動きを設定する方法を紹介します。
[Mode]を[Viseme Blend Shape]に設定します。
[Face Mesh]に口パクのシェイプキーがあるメッシュを適用させます。
15種の母音子音のシェイプキーを割り当てます。
※これは従来の手法と同じです。



・Eye Look
自動で相手の方向を向いたりする目の動きの設定です。設定なしでも可。
[Enable]を押して有効化します。
[General]は目の動きの感情を表すものです。特に目的がなければいじらなくてもよいです。

[Eyes]の[Transforms]に左右の目のボーンを割り当てます。
[Rotation States]で目の回転具合を調整します。
[Preview]でどのくらい動くかを確認することができます。
※従来はボーン、メッシュを既定ネームにすることで適用させていました。

[Eyelids]はまばたきの設定です。
[Eyelid Type]を[Viseme Blend Shape]に設定します。
[Eyelid Mesh]にまばたきのシェイプキーがあるメッシュを適用させます。
[Blendshape States]に各々のシェイプキーを設定します。
※従来は4つのシェイプキーが必要でしたが両目1つだけになりました。また上下方向の設定が追加されました。



・Playable Layers
アバターのアニメーションの設定する箇所です。
Animator Controllerを使い制御します。
[Customize]を押して有効化すると次の項目があります。
[Base]の中に5つの項目があります。
[Base]・・・歩く動作などの移動のモーションが設定されています。
[Additive]・・・Baseモーションに追加するモーションを設定します。
[Gesture]・・・ハンドジェスチャーなど個々のボディパーツに作用するアニメーションです。尻尾、耳などの動きもこちらで制御します。
[Action]・・・他のすべてのモーションを上書きするアニメーション制御です。従来のEmotoのようなものです。
[FX]・・・トランスフォーム以外のアニメーションを制御します。シェイプキーやオブジェクトのON/OFFに使います。

[Special]の中に3つの項目があります。
[Sitting]・・・キャリブレーションのアバターの位置を決定するときに使用されます。
[TPose]・・・特に視点の配置のために、アバターのさまざまな測定値を決定するために使用されます。
[IKPse]・・・主要な関節の曲がりを決定するために使用されます。




・Lower Body
トライキングの際のIKを調整します。
[Use Auto-Footsteps for 3 and 4 point tracking]
3点もしくは4点トラッキング時の歩行アニメーションです。チェックがあると有効です。

[Force Locomotion animations for 6 point tracking]
6点トラッキング時の歩行アニメーションです。チェックがあると有効です。



・Expressions
Playable Layersで設定したアニメーションを実行サークルメニューに表示するものです。
[Customize]を押して有効化すると次の項目があります。
[Menu]・・・Expressionsを選択させたとき表示させるものをここに設定します。
[Parameters]・・・[Menu]に設定したもののパラメータを設定します。

どなたでも編集できます