VRChat始めてその次の日にオリジナルアバターをアップロードした話

表題通り。半ば自分への備忘録。

##想定読者層
・自分
・Unityを使ったことないけどDCCツールは使ったことある人

##参考にしたサイト・記事
■[VRChat Documentation](https://docs.vrchat.com/)
公式ドキュメント。だいたい英語。

■[VRChat Japan wiki](http://vrchatjp.playing.wiki/)
どちらかと言うとMMDからVRChatにモデルを持っていくノウハウが多め。

■東屋書店さんの「[VRchatでMMDモデルをアバターとして使うマニュアル](http://www.hushimero.xyz/entry/vrchat-mmd-unity-fbx-pmx)」

■[Blender to Unity Vrchat Avatar Creation](https://docs.google.com/document/d/1W5KFa_aszCMrJaFD8mb9a-GHYO4X4S9M63GjM4UwuEw/pub)
Rigging your mesh項にあるURLからサンプルアバターのリグが落とせる。

##実工程

制作環境はCINEMA4D R18 Broadcast / Unity 5.6.3p1
(最新のVRChat対応UnityバージョンはDocumentationの[GettingStarted](https://docs.vrchat.com/docs/getting-started)から確認できるっぽい）

とりあえずモデルはhumanoid想定のものとhumanoid未想定の2パターンを用意。
（Humanoidについての公式ドキュメントは[こちらより読めます](http://japan.unity3d.com/blog/?p=1690)
超乱暴に言うと色んなアニメーションを使いまわせるようにリグの構造を統一しろって話っぽいです）

-リグ2個のモデルとリグ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/2834d5db-04f8-be67-6d4a-1114f34c9887.png)
-Humanoidに沿ったモデルとリグ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/df0ffd64-987e-2e2c-0529-cda234694076.png)

###共通作業

SDKを落としたりするところは各サイトで既に色々わかりやすく解説されてるので省略
unitypachageをD&DでAssetに入れて適当にApplyしてSDKを導入
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/3185b48c-61a6-a439-be0e-ac8cbcd1d6c5.png)
初期状態。Consoleの右上のアイコンで赤いマークがついてなければ大丈夫っぽい（ずっと警告ログ出てるのは謎）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/7b228ea3-b6d4-e1a9-2962-c678c390455b.png)

次にAssetフォルダを右クリックしてCreate→New Folderで名前を「Resources」にする（けど多分適当でも良いと思う）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/8f11fe2b-89d1-86c0-a6b2-10d071c04d59.png)

それでさっき作ったモデル（.fbx）データをD&Dする
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/6d69f4fd-3e45-ddfc-201b-aebdc78049e3.png)

左のところからResourcesをクリックすると多分上図みたいな感じになる
その状態で読み込ませたオブジェクトを選択して、右上のInspectorのタブを開くと下図みたいになってる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/4534fdb4-18c6-6093-112d-c81ed3f53f9f.png)

ここからモデル毎に違うので分けます

###非Humanoidの場合
Animation Typeが「Generic」（デフォルトだとこうなってるはず）であることを確認したら、モデルをProjectパネルからHierarchyにD&Dします
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/f9eebeea-d55a-a3ed-21ff-17aede4d1d33.png)

###Humanoidの場合
Animation TypeをGenericからHumanoidに変更します
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/eb463c69-8082-f2e6-bdab-9cd7001731bf.png)
次に右下にある「Configure」ボタンを押すと、こんな感じに保存するかどうかどうか聞かれます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/a5ccc01f-bd7d-8a9f-c2ee-98319ebc9ba2.png)
保存する場合はすぐに進みますが、保存しない場合は**今までの変更がすべて消える**ので注意して下さい。必要であれば必ず保存して下さい。

すすめると、Inspectorがこんな感じの画面になります
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/6bbeb3a3-a4cf-c451-c7c7-6f0519873497.png)
頭の部分だけ赤くなっていますが、これがUnityがfbxの中にあるリグを自動で読み込んだ際にUnityのHumanoidと紐付けできなかった箇所になります。この状態だとダメなので、ヒモ付をしていきます。
左下のHeadのボタンを押すとこんな感じに変わります
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/8ed2a0b8-70fb-4973-d730-13c84a2dba6b.png)
そして左のHierarchyから対応するボーンを、右の対応するパーツにD&Dします(HeadボーンをHeadにD&Dした図)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/95f55c4f-6d8c-7e2a-3780-97b24b1dd422.png)
するとこんな感じで緑になります
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/db6ddd03-813d-5261-c907-be9d166f38a2.png)
こんな感じで紐付け対応が終わったら右下のApplyを押して適応します。そして念のため、Muscles & SettingのMuscle Group Preview でうまく出来てるか確認します
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/dc252df6-5051-6a34-374d-fa8b46539d60.png)
パラメーターを適当に動かすとどんな感じに紐付け出来てるか確認できます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/f81f19a6-b2ba-6625-8b3e-0be111c5adc0.png)
設定できたら、右下の「Done」を押して編集を完了します

###**ここからまた共通**

モデル名の左の▲をクリックすると、リストが開かれます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/d2a2f497-2ed0-b93d-3f3a-4a1f8224bcd2.png)
上図の「CINEMA_4D_Editor」はCinema4Dのカメラなので関係ないです。
「hip」は今回仕込んでいるボーンです、Humanoidではないので今回は関係ないです。
「Tree_1」はメッシュ名です。

Sceneパネルを見ると、テクスチャが読み込まれていない状態になってます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/9e549dfa-65b7-4165-9c9e-834c0ffa9d07.png)
なので、Hierarchyパネルのメッシュを選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/5f28bb4b-b590-d277-f107-6ddc5ff1350c.png)
すると、Inspectorパネルに色々表示されます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/a6bb489b-d05b-991c-4d99-caad8e406667.png)
そこで、下の方にある「treeColor」とある球の左下のタブを開きます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/20b886c2-e013-862e-1579-3c5869812ea1.png)
ここで大体想像がつくとは思うんですが、現在テクスチャのリンクが切れている状態なので、ProjectパネルのTree.fbmフォルダ内にあるtextureファイルをそれぞれInspectorの方のtreeColorの項目で表示されてるそれぞれの値にD&Dで画像をくっつけます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/7be76003-b419-a61f-cf25-c307fad7be6b.png)
終わった図（下）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/0bfacfa4-4316-83d8-cd08-6bdf6689a1b8.png)
これでモデルの下準備は終わったので、次はコンポーネントを付ける作業を行います。
Hierarchyからオブジェクトの親を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/4ea6409c-1812-17ab-055c-ba6ab2fe6fc2.png)
Add CompornentからScript>VRCSDK2>VRC_Avatar Descriptionを選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/520b7f06-c95e-1fd0-0a03-b5148b5c7be8.png)
そしたらこんな感じになるので
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/755e7bc2-e8b0-f6ad-68e3-57d7934f4da0.png)
View Positionの項目を、自分のキャラクターの顔の座標になるようにする（モデルに超ちっちゃいグレーの球がでてるのでそれをみながら調整する）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/940a83b8-ceea-1fed-72c0-7141a14fba9b.png)
あとはCtrl+Sを押してプロジェクトを保存して、上のメニューのVRChatSDKからSettingを選択して、まずVRChatにログインしておく（書いてる途中で気づいた）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/0c652849-95b4-bb05-33f5-8aac899d964f.png)
次に同じくVRChat SDKからShowBuildControll panelを選択しそこのBuild&Publichをクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/4cf0ad1f-c973-acbb-b0d4-77d79d15cc42.png)
ここで注意したいのが、基本的にボタンの下の方に赤い奴が出てると致命的なエラーが出てるのでそもそもボタンが押せなかったりする。Humanoidとかにしてるとちょくちょくリグ周りでエラーが出たりする。
黄色いやつは一応使えはするけど一部の機能に制限が入ったりなんやりする。（このエラーログの場合、「このアバターHumanoid rigじゃないからVRChatで使われてるアニメーション使えんよ」って出てます。承知の上なのでスルーします）

下みたいな画面が出たらAvatorNameを入れて一番下の「The abobe～（上記の情報は正確で、私はこのコンテンツをVRChatにアップロードすることに合意します）」にチェックを入れてUploadをすればほぼ終わりです。

もし消したい場合は、VRChat SDK>Manage Uploaded Contentからオブジェクトを消せます
![image.png](https://qiita-image-store.s3.amazonaws.com/0/152735/83829b52-1c2b-dbd5-2f4f-9039e534290c.png)

###次やりたいこと
パーティクル飛ばしたり武器出したり木に枝と葉を生やして揺らしたり自分のルーム作ったりしたい！！！！！！！！！！！！！！！！！！！！！