超初心者向けVRCアバター改変入門
はじめに
UnityとBlenderがまったくわからない状態から、アバター購入&改変&アップロードまでを行ったので、その時の作業ログを記録しておきます。同じようなことをする方の参考になれば!
この分野はなぜか先人のツールと日本語ドキュメントが大変充実しているため(超感謝!kuguma.icon)、この記事の内容全てやってもだいたい丸2日くらいで作業ができると思います。(自分はモデリング含めて丸3日くらいかかりましたが)
なお、この記事は2021/6/27時点での情報です。
内容
アバターを購入してアップロードする
アバターの着せ替えをする
楽器のモデルをSketchupからImportしてきて、Blenderで編集&VRC用に整形する
作成した楽器モデルをUnityに取り込んで出し入れ可能&ワールド固定可能にする
前提
BlenderとUnity全く触ったことない人が対象です
貼ってあるリンクは、基本的には全て読んでいく前提です
まずはリンクの内容を読み、それでもわからなかった場合にここの文章を読んでもらうといい感じだと思います
このページの内容は基本過ぎて書いていないこと、調べても見つかりづらいこと、自分がハマった点などが中心になります
初心者用無料書籍があるので、それも一通り目を通しておくと吉
めちゃくちゃ重要kuguma.icon*4
Unity編
アバター購入&素体アップロード
改変可能なアバターは基本的にBOOTH上で販売されている。
一通りの動作設定が行ってあり、説明書に従って作業するだけでとりあえずは動かすことができるようになっている。
重要kuguma.icon*2
Unityのプロジェクトはかなりかんたんに壊れる
いつのまにか参照とかが死に、気づくとVRCのツールがうまく動かなくなっていることがある
この時点で気づいても、いつ何が死んだのかわからなくなり泣き寝入りになる
特に後ろの方でやるアニメーション編集で壊れる事が多い
初期からgitでプロジェクト管理する!!!kuguma.icon*2
Unityの導入
2021/6/27現在、Unityのバージョンは2018.4.20f1に固定する必要がある。
UnityHubから入れられない場合は公式から落としてきてHub上に登録する。
ユーザー登録が必要。
Unity用語や基礎概念など
ヒエラルキー:左側にでてくるツリー状のやつ
アセット:ライブラリ
Importするとプロジェクト内にコピーされる感じになっている
シンボリックリンクではない
シーン
UnityのプロジェクトがVisualStudioでいうslnにあたり、シーンはprojectにあたる?
一つのプロジェクトの中に複数のシーンを保持できる
リネーム
オブジェクトはダブルクリックでリネームできる
シーンは下側のproject領域でAssets>Scenesを開いてそこでリネームする必要がある
複製
アセット内のものはCtrl+Dで複製できる。Ctrl+C / Vではだめ
アバター関連
エディタには残しておきたいけどVRCにアップロードしたくないやつをどうするか
シーンにあるものは基本全てアップロードされる模様?(条件あるかもだがわからない)
Inspector(画面右)のチェックを外して無効化することはできるが、オブジェクトとしては残り続けてアップロードされてしまう
"EditorOnly"タグを使う
アクセサリーを選択した状態でInspectorの左上を見ると、Tag という項目があります。規定では Untagged になっています。EditoOnlyに変更することで、編集時にはそこにあるけどアップロードするデータには含まれない、という設定にする事が可能です。
Animatorが押せないとき
編集用にAvatarControllerに設定するのはいいが、アップロード時にそのままだと壊れたりアバターの座標がおかしくなったりするっぽい…?
アバターのアップロード
基本的には上書きされる
アバターのBlueprintIDを変更することで、別々のアバターとして管理できる。
Test Buildを行うと、ローカルでテストできる
基本はTestBuildの方で動作確認を行い、ある程度動いたらアップロードする感じになる
ハンドジェスチャを変更する
Quest2の場合、Gestureの名前との対応がわからなかったので整理してみた。
人差し指(Trigger触れ/押し)、中指(Grab押し)、親指(ABスティック触れ) で分かれるっぽい。
table:gesture
num 人差し指 中指 親指
0 Neutral(手を軽く握っている状態) 触れ
1 Fist(手を強く握っている状態) 押す 押す
2 HandOpen(手を完全に広げている状態) 離す 離す 離す
3 FingerPoint(人差し指を立てている状態) 離す 押す 触れ
4 Victory(ピースしている状態) 離す 離す 触れ
5 RockNRoll(キツネサインしている状態) 離す 押す 触れ
6 HandGun(手で鉄砲のサインをしている状態 離す 押す 離す
7 ThumbsUp(I’ll be backしている状態) 押す 押す 離す
アクセサリを追加する
ここから少し難しくなる
「アーマチュア内のボーンをそれぞれ追従設定してください。」kuguma.icon????
アーマチュア、ボーンという概念がある
アーマチュアはボーンの集合(骨格)
ボーンは複数存在する
アーマチュアの形状に基づいて、モデルの形状は位置が計算される仕組みになっている
服等の場合、服とそれに紐付いたアーマチュアの両方で提供される場合が多い
この時、服に紐付いたアーマチュアと、自分の持っているモデルに紐付いたアーマチュアは違う!
なので、そのまま自分のモデルのヒエラルキー以下に置くだけでは体と一緒に動かない
自分のモデルのアーマチュアが動くのに同期して、服のアーマチュアが動くようにする必要がある
------ ここで、自作モデルを作成する必要がある場合は「Blender編」に飛んでくださいkuguma.icon*2 ------
Worldに物体を固定する
まず、概念として「ワールド固定」と「ものの出し入れ」がある
これらは別々に考える
ものの出し入れ自体は、アバターのExpressionに出し入れのアニメーションを登録することで実現できる
これは比較的簡単
Expressionがグローバル変数を変更し、グローバル変数の変更によりアニメーターで状態遷移が走り、それにより再生されたアニメーションがオブジェクトの可視/不可視のプロパティをトグルする仕組み
なのでまずは出し入れから始める
ワールド固定も、固定と追従を切り替えるのは出し入れと同じアニメーションによるプロパティ操作
ワールド固定の仕組み自体は、ツールを使って導入できるので理解していなくても動かすことは可能
一応読むべきもの
この時点ではよくわからないが、とりあえず読む
他、Constraints World Fixとかでぐぐる
ツールがあるのでこれを使った
ドキュメントがまったくないが、アバターと対象Objectを指定すると固定するためのポイントとか、ON/OFFのアニメーションとかを生成してくれるやつっぽい
アニメーションをトリガーする部分は自分でやる必要がある
また、Constraintのオンオフだけの機能なので出し入れは自分で設定する必要がある
PickupTargetがアバターの外に作成される場合がある。これは中にいるのが正しい
指定したobjectは勝手に階層移動されるがこれは動かさないで良い
Blender編
大事なこと
Blenderは2.8, 2.9で大きく機能と操作が変わっているため、調べて出てくる文章はどのバージョンのときに書かれたものか気を使う必要がある
個人的には2.8が良いと思う(ドキュメントが多い、個人のツールが動くことが多い)
2.8変更点を把握しておくと、他のバージョン前提で書かれた文書を読んだときにえ?とならないですむ
ギズモはデフォルト非表示になったっぽい
FAQ等はここで引っかることが多いので目を通す
Sketchupからデータを読み込む
Sketchup -> Blenderは公式でサポートはされていない
ツールを使う
Sketchup Importer
Sketchup 2020形式 & Blender2.8で動作する(2.9は動かない)
操作、基本
Unityと違うので頑張るkuguma.icon
ある程度ショートカットを覚えないとまともに動かすことができないので、いきなり手を動かすよりまずショートカットを覚えるところに時間を割いたほうが結果的に速い
よく使うもの
Alt + Dでリンク複製、Shift + Dで普通の複製
選択してgで移動、xyzで方向束縛
ショートカットではShift + Space Gで移動、Sで拡大縮小
スラッシュ(/)で編集中のオブジェクトだけ表示
Alt + マウス真ん中でそこを中心にできる
複数のモードがあり、モードによってできることや、同じ操作でも何が起こるかが変わる!
すぐ事故が起こる
編集モード/オブジェクトモードのどこにいるのかには常に気を使う
選択
アクティブオブジェクト
複数選択したとき、最後に選択したものがアクティブオブジェクトになる(オレンジ)
それ以外(で選択されている)ものは赤色になる
複数選択したもの全体に対して作用するコマンドと、アクティブオブジェクトにのみ作用するものがあるので気をつける
複製
基本的にオブジェクト>実体の構造になっている
オブジェクトはただのハコ、入れ物だと思って良い
リンク複製と通常の複製がある。
リンク複製ではオブジェクトは別だが実体は共通になり、実体を変更するとリンクしているオブジェクトは一括で変更される
モディファイア等はオブジェクトに対してしか適用できないため、複数のオブジェクトに対して一括、みたいなことができない(仕様なのでしょうがない…スクリプトを書けば無理やりやることはできる)
ただ、実務的には統合してからモディファイア書けるほうが速くて楽
後から細かい調整はできなくなるけど…
データ作成/編集の心がけ
VRCにアップロードするモデルには様々な制限がある
特にテクスチャ(マテリアル)数、頂点数に気をつける必要がある
上限は頂点数70000、テクスチャが32
薄荷ちゃん自体が40000頂点くらいあるので、出し入れするモデルは30000以下にしないと厳しい
元データがある場合、モディファイアーを使って頂点数を削減する手法が一般的
全体を統合したあとに適用するのが楽だが、ギミックにしたい部分は最低限分けておく(もとに戻せないので)
マテリアルは多すぎるとVRCの制限に引っかかるので、できるだけBlender側で統合する。
Unityへのエクスポート
一番詰まった部分。
まず下準備として、法線の向きを揃える等する必要がある
一括でやる方法もあるが、たいていなぜかうまく行かない箇所がでてきたりするのである程度は手動でやることになる
次にエクスポートに入っていくが、間違った情報&古い情報がちょいちょいあり、混乱したkuguma.icon
このページの情報は間違っている or 古い
「テクスチャは引き継げない」は嘘
「Material > Extract Materialsして手動で再割り当て」は半分嘘
エクスポートするときの設定をこうする
https://gyazo.com/50bd9491588d76e9a003f4ea93c02ee6
パッチモード コレクション にすることで、fbxとfbm(テクスチャとか)を同時に吐いてくれる。
これを同時にUnityにimportすることでテクスチャが反映された状態で読み込める。
ただし、Unity側でも作業をする必要がある
Unity側でのインポート
上記で行ったfbxとfbm(テクスチャとか)を同時にImportする
テクスチャとかマテリアルの設定は、正常に引き継がれないことがある
特に透過テクスチャとかが変になりがち
変な模様が出たり、透過になっていなかったりする
透明テクスチャの設定手順(Unity上)
画像テクスチャの場合、Alpha is Transparencyにチェックを入れる
Unity上で、fbxを選択してインスペクタ上でMaterials > Extract Materialsする
手動で再割当ては必要ない
こうしないと、Materialの設定ができない
ExtractしたMaterialの設定を確認する
Rendering ModeをFadeやCutoutにする
Cutoutは細々したテクスチャでノイズが出てしまう場合に使うと良さげ
SourceはMetalic Alphaにする(Albedoではだめ)