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

アバターを利用する際の注意事項

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

アバター作成の概要

1.アバターとなる3Dデータ
アバター許可リストにダウンロード可能なモデルを掲載しています。
又はUnityアセットストアのキャラクターも活用できます。
VRChatの利用に関しては、データを第三者が直接利用可能な状態でアップロードするわけではないので、アセットストアは利用可能です。
2.VRChatに対応したバージョンのunity
3.VRChatのSDK
※SDKとは:開発に必要なプログラムをまとめた物 (この場合、VRChatのアバターやワールドを作るために必要なプログラム)

おおまかな流れとしては、unityでプロジェクトを作り、アップロードしたいモデルをunityに読み込みます。
モデルをシーンに配置してSDKを設定し、unityのプロジェクト内でログインしてアップロードするとVRChat内で使えるようになります。

3Dモデルについて

ファイル形式

unity(VRChat)では、3Dモデルは.fbxというメジャーなファイル形式(拡張子)を使用します。
MMDモデルは.pmxというファイル形式になるので、VRChatで使用する場合はBlenderやファイル形式変換用のプログラムを使って.fbxにする必要があります。

PMXファイルをFBXに変換する手順
アバター作成Blender編

ボーンとセットアップについて

ボーンの構造はunityのhumanoidという構造に対応する必要があります。
このhumanoidとはボーン構造とボーン名の規則に関するルールです。
流れとしてはモデリングソフトで Unity humanoid の雛形となるボーン構造でボーンのセットアップをし、
unityにモデルを読み込んで、fbx(モデル)のavaterからインスペクターに表示される[Configure Avater]を押してボーンの対応付けを行います。
(通常は自動で対応付けされるが、正しく処理されない場合はUnity上で設定しなおし、もしくはモデリングソフトに戻ってボーン構造の見直しをします)
人型でないモデルを使用する場合は、rigのタイプをGenericを選択します。

【参考】BlenderからUnityのHumanoid互換でfbxをエクスポートする

【参考】VRchat用人型アバターで使うためのHumanoid形式に従って作られたボーン(アーマチュア)
人型モデルが出来上がったら、Blender等でこちらのボーンを導入すれば少しだけ作業を短縮できます
実際の作業は書籍やwebサイトなどを参照してください
注:メタセコイヤでは腰の接続と全体の命名が意図した構成にならないようです

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

アップロードできるモデルは2万ポリゴンまでという制限があるので、適宜モデルの三角ポリゴン数を2万未満になるように調整してください。
Blenderの場合、Decimateというモディファイアを使用してポリゴン数を減らせます。

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

環境の導入

1.VRChatに対応したバージョンのUnityをインストール
 通常プレイのみならばunityは必要ありませんが、独自のアバターやワールドをVRChatにアップロードする場合は対応したバージョンのunityが必要です。
 現在(17年11月7日時点)はVRChatよりUnity5.6.3p1が指定されています。
 ※適宜VRChat公式を確認してください。

2.最新のVRChatに対応した SDK のダウンロード
 SDKとはあるシステムに対応した、開発に必要なプログラムをまとめた物です。
 つまり、unity上でアバターやワールドとなるデータを作成し、SDKのプログラムや機能を使ってVRChatへアップロードします。
 ※SDKはVRChat公式にログインの上で最新版をダウンロードしてください。また、適宜VRChat公式を確認してください。

アバター作成の手順

1.VRChatのユーザーアカウントを作成します。
 → VRChat-Register

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



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



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

5.モデルデータを人型(Humanoid)としてunityに認識させます。
 Assets内に読み込んだモデルデータ(FBXファイル)をクリックし、表示された[Inspector]内の[Rig]タブを押します。
 [Rig]の設定項目にあるAnimation Typeを[Humanoid]に変更し、[Apply]を押して確定します。

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



6.シェーダー(3Dモデルの陰影)の設定を行います。
 モデルデータ(FBXファイル)を読み込んだ階層にできる[Materials]をダブルクリックし、フォルダの中にあるマテリアルファイルをクリックします。
 マテリアルをクリックすると[Inspector]の項目にShaderがあります。
 初期設定では[Standard]になってると思いますが、任意のシェーダーに変更しましょう。
 陰影処理を行わずテクスチャだけを直接表示する場合は[Unlit]→[texture]にします。
 また、目の表示がおかしい○○の部分が正常に表示されないなどの問題が起きた場合は他のシェーダーを選択すると正常に表示される場合があります。
 ※他のシェーダーにする場合は任意のシェーダーを選択してください。
 Cubeds-Unity-Shaders



7.アップロードするモデルをシーンに配置し、SDKの設定を行います。
 モデルデータ(FBXファイル)を[Hierarchy]にドラック&ドロップすると[Scene]タブにモデルが表示されます。
 モデルデータをクリックし[Inspector]の一番下の項目にある[Add Component]を押します。
 [scripts]→[VRCSDK2]→[VRC_Avater Descriptor]を押します。
 [VRC_Avater Descriptor]欄のView positionの座標はアバターを使用した時のプレイヤーの目線になります。
 [Scene]の中にグレーの球体(カメラの位置になります)が表示されているので、それを見ながら座標を調整してください。
 目と目の間にめり込むぐらいがちょうどいいです。
 次にDefault Animation Setが[Male]になってるので[FeMale]に変更してください。
 (Maleだと男性キャラクターとしてモーションが適用され、Femaleの場合は女性となります。)



 また、[VRC_Avatar Descriptor]追加時に[Pipeline Manager]というコンポーネントが自動で追加されます。
 [BruePrint ID]というのはアバターのIDのことで、VRChatへアップロード時に自動でAttachされます
 空白orアタッチ済みのIDを[Detach]で外して空白にしてアップロードすると新規アバターとして、
 空白にIDを記入して[Attach]で付けてアップロードすると、そのIDのアバターへの上書きとして登録されます

 ※これで最低限の設定は終了です。
 Unityでは空間に対してモノ(ゲームオブジェクト)を配置し、そのモノに対して3Dの情報、アニメーションの情報、制御するプログラムの情報等…
 様々な情報を追加する事でキャラクターや世界を構成します。この追加できる情報をコンポーネントと呼びます。
 つまり、アバターはゲームオブジェクトに3Dデータ・VRChatで動かすのに必要なプログラムのコンポーネントを追加する事により、作成されます。
 このコンポーネントはVRChatで動作する物であればエフェクトや物理演算やオーディオなどを追加する事も可能です。
 コンポーネントを追加する事により、アバターをさらにカスタマイズする事ができます。

8.VRChatへアバターをアップロードします。
 メニューバーの[VRChatSDK]→[Show Build Control Panel]からウインドウを開きます。
 1で作成したアカウントの情報を入力し、ログインするとウインドウ内の表示が切り替わります。
 [Build&Publish]を押します。
 New Avatarの画面に切り替わったら
 World Name[任意の名前]を入力 ※アバターウインドウ内での表示です、ゲーム中に表示される名前じゃありません。
 Descriptionは無くても問題なありません。
 最後に□The adove info〜にチェックを入れ[Upload]を押します。
 
 ※以上でアップロードの一連の流れになります。8で使用したアカウントでVRChatへログインし、動作を確認してください。
 アップロードしたものはUnityの[VRChat_SDK]→[Manage Uploaded Content]から削除や、IDのコピーが出来ます。
 エラーが出てる場合はエラーメッセージを選択した状態で[Ctrl+C]を押し、[Ctrl+V]を押すとコピペできるので、
 google翻訳に張り付けるとだいたいの意味が分かります。
 多くの場合がボーンの設定に関するエラーだと思われます。この場合ボーンをunityで正しく設定することで回避可能です。
 また、Unityでは1つの頂点あたりにウェイトが割り振れるボーンの数に制限があります。
 上記に関してはUnity内の設定で解決する場合もあれば、モデリングソフトを必要とする場合もあります。

unityアセットストアからシェーダーの追加

  1. 画面中央AssetStoreタブで任意のシェーダーをインポートする。(ToonyColorsFreeオススメ)
  2. fbx生成の過程でMaterialsフォルダが生成されているので、格納されているファイルを全選択し、画面右InsoectorタブのShaderプルダウンから先程インポートしたシェーダーを適用する。
  3. シェーダーの詳細設定方法については各自ググること。

ツール/アセットリスト

シェーダ関連

シェーダは基本的に外部からスクリプトを参照することがなければ、どのようなものでもVRCHAT上に持っていくことが可能なので、自分で描いたシェーダや、ShaderForgeなどで作ったShaderも使うことができる。

Cubeds-Unity-Shaders
A compilation of custom shaders for Unity3D
VRCの開発チームの一人である cubedparadox氏 が作成。VRchatの親和性が高いシェーダーです。
トゥーン調のシェーディングがされるシェーダ。周囲の環境光(AmbientSorceやAmbientColor、DirectionalLight等)から影響を受けるシェーダ。
離れていると見えないようなエフェクトなども同梱されている。ノーマルマップにも対応。

解説ページCubeds-Unity-Shaders

ToonShaderFree
TSFと呼ばれるLit系のシェーダ。環境光の影響や影を作らず、コミカルなキャラや、テクスチャで質感を表現してるキャラに向いているが、暗いところでも明るく光ったように見えてしまう。

メッシュ編集

Decimeter
AdobeのMixamoから提供されているポリゴン削減ツール。上記の解説を参照

Simplygon
Microsoftから提供されているポリゴン削減ツール。現在クラウドでの使用が不可となっており、SDKをダウンロードしてきてローカルで同時起動が必要となる。

MantisLODEditor
メッシュ毎にポリゴン削減できるツール。特定の部分のみポリゴン数を減らすことが出来る。

AutoRigger
AdobeのMixamoから提供されている自動リグ付ツール。ウェイト調節が面倒な人におすすめ。

MetasequoiaBlender
モデリング・UV展開・リグ付・出力が一通りできるモデリングソフト。どちらも情報が豊富なので、詳しくモデルを弄りたいときに使うといいかも。

追加できるコンポーネントについて

Whitelisted Avatar Components
上記に追加可能なコンポーネント一覧があるので参考。
例えば、ClothとColliderを使った布の表現や、HingeJointとRigidBodyを使った揺れものの表現などができる。

DynamicBone


Dynamic Boneはボーンを揺らすスクリプトです。有償のアセットです。 unity store:Dynamic Bone

小技


疑似的なフォース(力)
コライダーとコライダーが重なった時や特殊な衝突をする時など、移動させるフォース(力)が発生する事がある。※VRChatの仕様
足元と腰にコライダーを設置し、かがんだときにお互いのコライダーをぶつけ、空へ飛ぶなど。


アニメーションオーバーライド(アニメ−ションファイルの上書き)


タグ

このページへのコメント

UnityにFBXファイルを読ませるとき、テクスチャデータは「texture」というフォルダに入れ、そのフォルダとFBXを両方選択してAssetsフォルダー内にドラック&ドロップすることで読み込ませることができました。

Posted by 名無し(ID:nT2GlYdUKg) 2018年03月28日(水) 23:13:07

VRCにアップデートしようと手順8を試したのですが
Error in authenticating:"Invalid Credentials"
と表示されアップロードできません。
どうすればいいでしょうか。
UnityのVerは5.6.3p1
SDKのVerは2018.02.28.21.21 です。

Posted by 名無し(ID:Lkz4KLP8Wg) 2018年03月28日(水) 20:19:27

↓の続きです。
アップロードをするようにできましたが、その前の段階でAvater not found
が出ているせいか、アップロードしても反映されません。

Posted by 名無し(ID:jjuvbSKgJQ) 2018年03月26日(月) 00:52:27

ねこますさんの「みここ」をうpしようとすると最適化出来ませんでしたとエラーメッセージが出ます。
どうすればいいでしょうか?

Posted by 名無し(ID:jjuvbSKgJQ) 2018年03月24日(土) 16:46:32

blenderからunityへfbxで読み込んだときmesh_rootが無いのですが表示させる方法はあるのでしょうか

Posted by 名無し(ID:bmnn6Xxm8w) 2018年03月08日(木) 14:38:58

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

どなたでも編集できます