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


アバター作成 自作編

アバターを自作するためには何らかのモデリングソフトでモデルを自作する必要がありますが、そのハードルの高さをすこしでも軽減できないものかと苦心された方々の記事をピックアップしました。先達の努力に感謝いたします。

概要

アバターは次の様なフローで作成します。アップロードまでの解説は概要編を参照してください。
1.下絵:キャラデザインに合わせた下絵(三面図)を描く(イメージできる人はなくてもよい)
2.モデリング:モデリングソフトで形を作る
3.UV展開:UV展開を行い展開したUVマップに色を塗る
4.リギング:ボーンとメッシュを関連付け動きを与えられるようにする
※3、4は順序が逆でもよい
5.微調整
6.エクスポート:FBX形式でエクスポートしUnityで設定する

解説サイト

3DCG出来ない!でもVRChatでオリジナルアバターを作りたい人向けチュートリアル
「MagicaVoxel」というドット絵感覚で3DCGモデルを作成するツールを使ったモデリングが解説されています。
 目次 モデリング編 リギング編 仕上編

全くの3DCG初心者が1日でVRChatアバターをBlenderで作ってログインする話-1-
ゼロの状態から環境のセットアップ(1)、簡単なモデリング(2)、アバターのアップロード(3)までがより丁寧に解説されています。

VRChat始めてその次の日にオリジナルアバターをアップロードした話
単純な人型モデルと非人型モデルの導入が解説されています。

かんたんBlender講座
初心者のための!作って学ぶBlenderの基礎
VRchat用ではありませんがBlenderでキャラクターモデルを作る解説です。

CharacterArpeggio〜3ds Max 2017 キャラクター作成術〜
3ds Maxでキャラクターモデルを作る解説です。
3ds MaxはAutodesk社が開発している高機能なモデリング、レンダリング、アニメーション作成のためのソフトウェアです。
ゲーム「アサシン クリード」のほか多くの導入事例があるプロ品質のソフトウェアですが、
学生ならなんと教育向けライセンスで3年間無償で使用することができます。

Chara@Maya〜Maya 2016で気軽にはじめるキャラクター制作〜
Mayaでキャラクターモデルを作る解説です。
3ds Maxと同様、学生なら無償で使用することができます。



各種モデリングツールの使い方については、Google検索などを活用すれば容易に解説サイトや解説動画にたどり着くことができますので、積極的に活用しましょう。

解説動画

オリジナルアバターでVRChatに行く講座
メタセコイヤで作成したモデルをUnityでアップロードする部分の解説動画です。

【第0回】ワニでもわかるゼロからのBlender
初心者向けのBlender講座ですが現在進行形で動画が作成されています。
【第0回】ワニでもできる!モデリングforVRChat
Blender2.8(最新バージョン)を使ったVRChatに特化した内容となっています。

つまづきやすいところ

自作アバターの導入で詰まったところについて(個々人の環境などで状況が異なる場合もありますが)解決した事例をまとめていきます。
ほかのアプローチや正しい解釈がある可能性もありますので修正やご指摘をいただけると助かります。

非Humanoidアバターが横倒しになる

状況:
 Blederで作成したモデルをUnityに登録した後、rigとしてHumanoidではなくGenericを指定したアバターがUnityの画面上で横倒しになっており、Blender上で地面に垂直なボーンを追加しても、Unity上で正常に見えるように回転させてもVRchat上では横倒しになってしまう
原因:
 UnityとBlenderでは座標軸の解釈が異なり、本来は書き出し時の設定で補正されるが、なんらかの原因で意図した座標系に変換されていない
対策:
 Blenderから書き出すファイル形式を変えてみる、もしくはBlenderから.fbxで書き出す際の座標軸の指定(たとえば-z forwardをz forwardに変えるなど)を変えてみる

アバターが空中に浮いてくれない

状況:
 マグカップなどのアバターを空中に配置したいが、UnityでVRC_Avator Descriptorを設定するとモデルの底辺が地面になってしまう
原因:
 Blender上でZ軸を地面から離れた高さに設定したモデルをUnityに読み込ませ、モデルのY軸がBldenrと同様の高さになっていことが確認できていても、VRC_Avator DescriptorのView positionのY軸のゼロ地点がモデル自身の底辺を参照しているため、VRchat上では地面に設置した状態になってしまう
 モデルが持っている原点(オレンジ色の点=Origin)がモデル自身の底辺になっている
対策:
A案:
 Blender上で3Dカーソルを画面上の原点(0,0,0)に設定、オブジェクトの原点をObject→Transform→Origin to 3D cursorにして書き出し
 VRC_Avator DescriptorをAddした時に、地面に白い線ができたら成功
B案:
 Blender上で地面としたい高さにダミーのメッシュを追加(こちらにはボーンは不要)し、Unity上でHierarchyからダミーのメッシュを選択、Inspecerの一番左上のチェックボックスを外して非表示にする

アバターが真っ黒になる

状況:
 Unity上では正常に見えているのにVRchat上では他人から真っ黒に見えてしまう
原因:
 Unity上とVRChatの各ワールドのライティングの設定が異なるためライトの影響で真っ黒になってしまう
 シェーダーの設定に問題がある
 UnityChanを改造した場合、最初から設定されているUnityChanシェーダーはVRchat上で黒くなる
対策:
 別のシェーダーに変えてみる
 Standard、Unlit、CubedParadoxあたりがメジャー
 UnityChanToonShader2(UTS2)などVRChat向けにアップデートされたためそちらを使うのもあり

アップロード時に黄色いエラーが出ていて気になる


アップロードする段階(Build&Publish)で、画像のような注意が表示されることがあります。
これらは内容を承知していれば放置してもかまいません。

Polygons: 14701 〜 現在の△ポリゴンが14701です。出来れば10k△まで減らしてほしい。

This avatar is short. モデルの身長が低く設定されています。もしかして低すぎませんか?

The angle between 〜 大腿骨と骨盤の角度を180度に近づけないと挙動が変になるかもしれません。

アップロードに失敗する


日本語(2バイト文字)が使用されている
Unityプロジェクト、およびその上下階層フォルダに日本語が含まれているとエラーが出てアップロードできないことがあります。
Unity関係のフォルダに日本語を使わないようにすると治るかもしれません。

VRCSDKのバージョンが古い
プロジェクトフォルダから旧バージョンのSDKを削除して、新しいものを再インポートすると治るかもしれません。

FutureProofPublishのチェックを外す
メニューのVRCSDK→Setting→Publishの項目にあるFutureProofPublishのチェックを外すと改善するかもしれません。

VRchatのサーバーの調子が悪い
あきらめて別の作業を進めると良いかもしれません…

アバターが大きすぎる


画像の場所にあるScaleを小さくしてちょうどいいサイズを探してみてください。

体や服がバラバラになる

ウェイトが正しい状態になっていないと思われます。

アバターの姿勢がおかしい

ボーンを人体からかけはなれたバランスに設定すると正常に動作しないようです

モデリング作業の流れ Blender編

ゼロから始めるとなると覚えなければならないことはたくさんありますが、アバター作成の流れに沿って基礎的な部分をまとめてみました

事前の準備
 Propertyタブ→左から三番目Sceneアイコン→Units→LengthをMetric、UnitScaleを1に
 キャラクターのデザインを正面と横の2面用意すると作業が楽になります
 用意したデザイン画は、BackgroundImagesから読み込んで下敷きにすると良いでしょう
 モデリング作業には非常に時間がかかるので作業の途中でも細部に悩んだら紙などで試案を起こすと時間の節約になります
 ネットで見られるチュートリアル記事や動画などを真似したり都度調べながら操作を覚えていきましょう
 参考:blenderをmayaっぽく使いたいときの準備

モデリング


造形の流れ
 Add→Meshで適当なメッシュを置いて、どんどん加工していきます
 塊から削るように造形していく方法や、タイルを敷き詰めるように造形していく方法など、好みの方法で造形していきます
 頭、目、髪の毛、体、靴、服、アクセサリなどつながっていないほうが作業しやすいパーツはオブジェクトごとに分けて作業すると良いでしょう

オブジェクト
 メッシュを編集するときに区別されるひとつの集まりです

メッシュ
 頂点の集まりです
 頂点(Vertices)→辺(Edge)→面(Face)

メッシュ編集についての覚書 Editモード
 なぞって頂点を選択 Cキー ホイルスクロールで範囲変更 ホイルボタンで選択解除
 点辺面選択アイコンの右にあるアイコンは透過部分も選択するかどうか選べるスイッチ
 Eキーでどんどん延長していき、辺や頂点をつなげるときはAlt+Mキーで結合すると切れ目ができにくくなります
 Ctrl+Shift+Alt+Mキーでメッシュの切れ目を確認することができます
 面と面を分ける Mesh→Edge→EdgeSplit→面選択にして片方をちょっと動かす
 Tool→Shading→Smoothで角を滑らかにした状態(実際の表示に近い状態)が確認できます

法面
 メッシュには表と裏の区別があります
 ObjectモードでViewPointShadingをSolidにしてる状態で黒くなっているメッシュは法面が裏返ってる可能性が高いです
 Editモード→該当部分を選択→Mesh→Normals→FlipNormalsで反転させます
 裏返っていると、基本的にはテクスチャを張っても透けてしまいます
 透けて困る部分は両面描画するシェーダーを使用するか、表面が見えるようにメッシュを追加します
 Editモード→MeshDisplay→Normalsの面選択アイコンをオンにすると棒の長さで裏表が確認できます

マテリアル
 メッシュの色とつや等、質感を設定するものです
 見た目はテクスチャで表現すればいいので、とりあえず最初から設定されている銀色っぽいMaterialのままで大丈夫です
 この機能を使う場合は、テクスチャ画像を張り付けずに仕上げることもできます
 任意の頂点を選択してからマテリアルを用意、Assignすることで任意のオブジェクトに複数のマテリアルを設定することもできます

テクスチャ
 マテリアルに対して画像など表面を設定するものです
 (概要)メッシュをUV展開(立体物を切り開いて平面にするイメージ)してできたUVレイアウトを彩色します
 ミラーリングモディファイヤを使用しているオブジェクトは半分だけUVレイアウトが作成され、テクスチャ画像も反転されて適用されます
 任意のメッシュを選択→Editモードで必要な部分を選択→Uキー
→UV/ImageEditor→S/Gキーでサイズと位置を調整→新規にUVパターンを命名→UVs→ExportUVLayout→これでUVレイアウトを保存できます
 UVレイアウトは一般的な画像ソフトで読み込んで加工し、テクスチャ用画像を作ることができます
 Properties→テクスチャのアイコン→Imagesから用意したテクスチャ用画像を設定します

テクスチャ画像の結合

オブジェクト単位でUV展開を行っていくとテクスチャ画像の数がどんどん増えてしまい描画負荷が上がってしまいます
そこでテクスチャ画像を統合する必要があるのですが、それにはいくつかのアプローチがあります

スキニング

ボーンを用意して、ウェイトを付けたりする作業です
Unityで規定されたHumanoid形式に沿った人型ボーンを用意します
メッシュに合わせてボーンの位置を調整します

重複した頂点の削除
 それぞれオブジェクトを選択、Editモード→全選択→Vertices→RemoveDouble
 ウェイトを付ける前にかならず実行しておくと良いでしょう

ボーン
 文字通り骨という理解でいいと思います

アーマチュア
 ボーンのあつまりです

仕上げ

ここから先は後戻りできない作業なので、別名でファイルを保存して作業を進めます

ミラーリングモディファイヤを適用する
 適用しないとウェイトがうまく着かず、Unityにもっていった時に半分消えてしまいます
 Outlinerを見るとスパナ型のアイコンが着いてるのでモディファイヤが使用されているメッシュが一目でわかります

できるだけオブジェクトを結合する
 自動ウェイトが適用される範囲でひとつにまとめてしまったほうが楽です
 自動ウェイトを適用した場合に思ったようにウェイトが着かない場合は、分けておきます
 体と服が別のオブジェクトになっている場合、体をボーンの子にし、服をボーンの子にすると自動ウェイトの精度が上がります

オブジェクトをボーンの子にする
 オブジェクトを選択→Humanoidボーンを選択→Ctrl+P→自動ウェイトで設定
 エラーが出る場合は、Editモード→全選択→Mesh→Vertices→RemoveDoubleで重複した頂点を削除してみる
 もしくは、結合したオブジェクトを分解して自動ウェイトが着かないオブジェクトだけを後からボーンの子にする
 Poseモードにしてもボーンだけが動く場合はエラーが起きているはずなので、戻って原因を解消します
 Poseモードにしても何も動かない場合は、画面下の三つの丸印と矢印が書かれたアイコン(Alt+,)を切り替えます

手動ウェイトの割り当て
 自動だとうまくウェイトが着いてくれないオブジェクトについては手動で設定します
 例えば、頭全体を自動ウェイトでHumanoidボーンの子にした場合にうまくいかなかったとします
 頭全体を統合したオブジェクトを選択→Humanoidボーンを選択→Ctrl+P→ArmatureDeform→with Empty Groupeで空のグループでHumanoidボーンの子にする
 頭オブジェクトを選択→Editモード→全選択→Propertyパネルのメッシュ(▽アイコン)→VertexGroupe→Headを選ぶ→AssignでWeightが設定される
 この手順を応用すれば、任意のメッシュを頂点グループから除外したり、任意のWeight値を設定することができます。
 頂点グループは、それぞれのボーンがウェイトの影響を与えるメッシュの範囲に対応しています。

ウェイトペイント
 Objectモードでボーンを選択、Poseモードにする
 Objectモードで任意のメッシュを選択、WeightPaintモードにして、任意のボーンを選択
 Rキーで動きを見ながらウェイトペイントを進めることができます
 Alt+Rで回転をもとに戻すことができます
 ToolタブのAutoNormalizeにチェックを入れておきます
  ウェイトができるだけ重複しないようにするための措置ですがおかしくなった場合は手動で直します

シェイプキー
 メッシュを変形させた状態を登録しておき、任意のタイミングで呼び出し表情や口パク、アニメーションオーバーライド等に活用します
 Propertyのメッシュアイコンから項目が確認できます
 まず+ボタンでBasisを作り、さらに追加したキーをリネームして使います 
 参考 アバターのリップシンクの作成
 参考 アイトラキングの作成

FBXで書き出してUnityへ
 モデルより先に、作成したテクスチャ画像をUnityに読み込ませると楽です
 ひとつのプロジェクトファイル内でモデルを更新する場合は、すでに登録されているマテリアルやモデル、テクスチャは削除するか別のフォルダを作ります

アバターを上書きしたい場合
 アバターはUnity側の名前やプロジェクトに関係なく、アバターIDで管理されています
 VRChatSDK→Manage Uploaded Contentから更新したいアバターの右にあるCopyIDをクリック(AvatarIDがクリップボードにコピーされる)
 Pipeline ManegerのBuleprintID欄にペースト

アバターの販売

自作したアバターのクオリティが満足のいくものになったら、販売サービスを利用してより多くの人に自分のアバターを使ってもらうことができます。
アバター作成 販売編

参考書籍


Blender 3DCG モデリング・マスター
基礎的なモデリングに絞った書籍です。立体をどうやって作っていくか、という部分が初心者向けに解説されています。
ボーンやテクスチャについての解説は含まれていません。


MikuMikuDance キャラクターモデルメイキング講座 Pさんが教える3Dモデルの作り方
MMD用のモデリングについて解説された書籍ですが、モデリング部分はblenderで行っていますので、書面のほとんどはBlenderに関するものです。
この本だけでもテクスチャやマテリアル、ボーンの基本は押さえられると思います。
手順としては回り道ですが、MMD用に作成してもMMD編の手順に従えばVRchat用アバターができあがります。
人型モデルへのアプローチとしては、いわゆる棒人間を作って肉付けしていく考え方です。


東北ずん子で覚える!アニメキャラクターモデリング
(未読のため内容はわかりませんが、VRChat内でおすすめと聞きました。
目次を見る限り、Blenderの操作を中心に、モデル作成のポイントを解説しているようです。
ボーンとUV展開は含まれているかがわかりません。)


Blender標準テクニック ローポリキャラクター制作で学ぶ3DCG
数万ポリゴンクラスのキャラクターを教材として、1からモデリングしていく手順が一通り解説されています。
目次を見て頂ければ分かりますが、ボーンやウェイトの設定、アニメーションの付け方なども含まれています。
基礎的な部分の解説も入っていますが、3Dモデリングを少し触ったことある人向けの書籍です。
また、作業中の操作を撮影した動画も見ることができます。
人型モデルへのアプローチとしては、平面のデザイン画に合わせてシルエットを模した立体を作っていく考え方です。

Menu

アバターの導入(アップロード)

その他

どなたでも編集できます