Unityを使って3DのVTuber(ブイチューバー)デビューを目指す管理人が、その手順を示していこうと思います。
この記事では、Oculus Quest2を使ってUnity上のキャラクターを動かす(キャラクターになる)為の手順を解説します。
手順としては、”プロジェクト作成”~”キャラクターを動かす”までです。
既存のサービスを使って手軽に配信するのもいいですが、Unityを使えるようになれば自分の世界を1から作れます!
その第一歩としてご覧ください!
【関連記事】VTuberのなり方シリーズまとめはコチラ
完成イメージ
目次
準備編
- 必要なもの
- VRMモデルを準備する
- Unityをインストールする
- プロジェクトを作成する
- VRサポートを有効にする
- EVMC4Uを導入する
- Cinemachineをインストールする
- CineSwitcherを導入する
設定編
実行編
必要なもの
必要なものは以下の通りです。
ハードウェア
- PC
- Oculus Quest2
- Oculus Linkケーブル
ソフトウェア
Oculusアプリ
SteamVR
Virtual Motion Capture(有償版_300円~)
EVMC4U
CineSwitcher
VRoidStudio
VRMモデルを準備する
自分の分身となるキャラクターを用意しましょう!
VRoidStudioというソフトを使ってVRMモデルを作る手順を以下の記事にまとめています。
(モデリングまでは解説していませんが)
Unityをインストールする
Unityのインストールはコチラの記事にまとめています!
プロジェクトを作成する
Unityをインストールしたら早速プロジェクトを作成しましょう。
手順は簡単です。
Unity Hubを起動する
ショートカット or 検索バーから”Unity Hub”を起動しましょう。

プロジェクトを作成する
Unity Hubを起動したら、右上の”新規作成”ボタンを押しましょう。
また、”新規作成”の右にある”▼”ボタンからバージョンを選択できます。
管理人は「2019.4.19f1」を選択しました。(記事作成時点で最新の安定版)

新規作成ウィンドウから
- “3D”テンプレートを選択し
- プロジェクト名を設定し
- “作成”ボタンを押します

空のプロジェクトが作成されます。
(管理人はウィンドウの配置を左から「シーン」「プロジェクト」「ヒエラルキー」「インスペクター」に変えています)

VRサポートを有効にする
次はVR開発のサポート機能を有効にします。
“編集”メニューから”プロジェクト設定”を開きます。

“Player”タブから”XR設定”を開き、”VRサポートあり”にチェックを入れます。

チェックを入れると、Unityさんが必要なものを色々準備してくれます(30秒ぐらい待ちます)
が!“OpenVR”だけあれば十分です。
心苦しいですが、”Oculus”は削除しましょう。
“Oculus”を選択し、”-“をクリックします。

こうなればOKです。

もうこのウィンドウは閉じちゃってOKです。
EVMC4Uを導入する
ダウンロードしておいたEVMC4Uを導入しましょう。
事前にダウンロードしたパッケージファイルをダブルクリックして、シーンを開くだけです。
Unityを開いたまま”ExternalReceiverPack_****.unitypackage”をダブルクリックします。

インポートのウインドウが開くので、右下の”インポート”をクリックしましょう。

マニュアルが開きます!めっちゃ親切!
基本このマニュアルに従って進めればOKです!

一応手順を説明します。
といってもやることは1つだけ!
“Assets”フォルダの中に追加された”ExternalReceiver”のシーンをダブルクリックするだけです。

ヒエラルキータブにExternalReceiverのプレハブが追加されればOKです!

Cinemachineをインストールする
Cinemachineというパッケージを導入します。
これは後々導入する”CineSwitcher”と一緒に使うことでカメラを簡単に制御することができます。
別途ダウンロードなどは不要で、Unityに初めから入っているので、パッケージマネージャーからインストールできます。
“ウィンドウ”メニューから”Package Manager”を選択します。

右上の検索窓に”cinemachine”と入力し、左側に表示される候補を選択。
右下の”Install”をクリックします。

終わったらこのウィンドウは閉じちゃってOKです。
CineSwitcherを導入する
次はCineSwitcherを導入しましょう。
これもEVMC4U同様、パッケージファイルをダブルクリックするだけです。
Unityを開いたまま”CineSwitcher*.**.unitypackage”をダブルクリックします。

インポートのウインドウが表示されるので、右下の”インポート”ボタンをクリックします。

“Assets”フォルダの中にCineSwitcherが追加されました。

ここまでで各種導入は終わりです!
ここからは実際の設定に移ります!
床を設置する
とりあえずキャラクターが立つ床を設置しましょう。
- ヒエラルキータブの何もないところで右クリック
- 3Dオブジェクト
- 平面
の順に操作、選択しましょう。

シーンに平面が追加されます!

床が変な位置に置かれたり、回転している場合はインスペクタータブのTransformで”位置”や”回転”を0にしましょう。

CineSwitcherのカメラを設置する
初期状態ではシーンに”MainCamera”が設置されていて、これがプレイヤーの視点になります。
つまり、第三者目線になります。
これをキャラクター目線にしてOculus Quest2に出力します。
そしてゲーム画面にはUnity上に設置した別カメラの映像を出力します。

CineSwitcherを設置する
プロジェクトタブから
Assets\CineSwitcher\Prefab
を開きます。
そして中に格納されている…
- CineSwitcher
- XinputGamePadListener
をヒエラルキーにドラッグ&ドロップします。

GamePadを設定する
CineSwitcherの”GamePad”に先ほど追加した”XinputGamePadListener”を設定しましょう。
これで複数台のカメラを切り替えるデバイスとしてキーボードでを使うことができるようになります。
“CineSwitcher”のインスペクターの”GamePad”に”XinputGamePadListener”をドラッグ&ドロップします。

カメラを設置する
ゲーム画面に出力するカメラを設置しましょう。
2つほど置いてみましょう。
固定カメラ1台、自動で所定の位置を往復するカメラを1台設置します。
“Cinemachine”メニューから”Create Blend List Camera”を選択します。
この操作を2回行い、2つのBlendListCameraを設置します。

ヒエラルキータブにBlendListCameraが2つ設置されました。

初期状態で1つのBlendListCameraに2つのvcamが入っています。
イメージは…
BlendListCamera:カメラ本体
vcam:カメラの設置ポイント
という感じです。

今回は”BlendListCamera2″を固定カメラにしようと思います。
動く必要がないので、ポイントを1つ(vcam4)削除します。

カメラの位置を決める
カメラの位置を決めましょう。
ゲーム画面を見ながらシーンのカメラを設定します。
まずはゲームタブをドラッグ&ドロップして外に出しておきましょう。
これで上が”シーン”、下が”ゲーム”になります。
vcam1の位置を設定します。
vcam1のインスペクターの”Solo”ボタンを押すと、ゲーム画面はそのカメラ位置の画面になります。

“Solo”ボタンが点灯している状態でシーン画面のカメラを移動すると、ゲーム画面の映像が変化します。
映したい位置に移動出来たら、再度”Solo”ボタンを押して消灯しましょう。

vcam1とvcam2の位置を設定したら、動きを設定します。
“CM Blend List Camera1″のインスペクターの”ループ”の下にある箇所で設定します。

こんな感じで設定してみましょう
- vcam1で2秒停止
- vcam1→vcam2に2秒かけて移動
- vcam2で3秒停止
- vcam2→vcam1に1秒かけて移動
①~④をループします。
インスペクター画面では以下のように設定します。

BlendListCamera2(固定カメラ)もいい感じに配置します。
カメラの切り替えを設定する
カメラの配置と動きを設定したら、「このキーを押したらこのカメラに変わる」という対応を設定します。
CineSwitcherの”Cam List”の項目で設定します。
各要素にカメラをドラッグ&ドロップするだけです。
今回は…
要素0:BlendListCamera1
要素1:BlendListCamera2
を設定します。

これでキーボードの”1″と”2″のキーでカメラの切り替えができます。
カメラの正面に鏡を設置する
現時点では実行してみてもどこにカメラがあるのかわかりません。
視聴者に向かって話しかけたくても、どこを見ればいいのやら…
ということで、カメラの正面に鏡を設置します。
鏡に話しかける=視聴者に話しかけるということになります。

ヒエラルキータブの
CineSwitcher/CineSwitcherCamera/CineSwitcherMonitorCamera
を選択し、インスペクタータブでチェックを入れて有効にします。

ちなみに…
初期状態では左右が反転しています!!
鏡写しではなく、そのまま反転しているだけ!
右手を上げると鏡の左側の手が上がる(伝われ)
これを鏡写しの状態にするには、”CineSwitcherMonitorCamera”の”拡大/縮小”のXをマイナスにします。

視点カメラを設定する
ゲーム画面に出力するカメラの設定が終わりました。
次はキャラ目線のカメラです。
要は自分がゲームの中を見るためのカメラです。
初期状態で設置されてる”Main Camera”を使いましょう。
とりあえず名前を”EyeCamera”とでもしておきましょう。

位置が変なところにあったらX,Y,Zすべて”0″にしましょう。

“ニア”という項目を0.1ぐらいに設定しておきましょう。
これは「ここより近い物体は表示しないよ」という閾値(ボーダーライン)です。
値が小さすぎると自分の顔の中身が見えちゃうよ。


ここまでで設定は終わりです!
長かったね!お疲れ様!
いよいよ実行です!
Oculusアプリを起動する
Oculusアプリを起動しましょう。

OculusQuest2をOculusLinkケーブルでPCに接続しましょう。

Oculusアプリのデバイス設定タブで接続されていることを確認しましょう。
接続されていなかったら接続してください。
(方法は割愛します)

OculusQuest2でOculusLinkを起動しましょう。

SteamVRを起動する
SteamVRを起動しましょう。

起動するだけでOKです!
VirtualMotionCaptureを起動する
VirtualMotionCaptureを起動しましょう。

設定を変更する
起動したコントロールパネルから設定を変更します。
デバイスとモデルの設定
まずはデバイスとモデルの設定です。
ショートカットキーボタンから…

OculusとVRoidの組み合わせを選択しましょう。
選択したらこの画面は”×”で閉じちゃって大丈夫です。

EVRM4Uに動きを送るための設定
次はUnityに導入したEVRM4U(ExternalReceiver)にキャラの動きを送る設定です。
詳細設定ボタンから…

モーションの送信、受信にチェックを入れましょう。
(送信機能は有償版のみの機能です)

これも設定が終わったら閉じちゃってOKです。
キャラクターを読み込む
VRM読込ボタンから…

画面に従ってVRMファイルを読み込みます。

キャリブレーションする
キャリブレーションしましょう。
キャリブレーションボタンを押してキャリブレーション画面を出します。


OculusQuest2をかぶって、キャリブレーションボタンを押しましょう。
5秒カウントされるので、その間にキャラクターと同じポーズをとりましょう。
(コントローラーを持ったまま両手を広げてTポーズ!)

キャリブレーションが完了したらVirtualMotionCapture上のキャラクターが体の動きに追従して動くはず!

これで準備完了!
画面は閉じないでね!
Unityで実行する
いよいよ!起動!
OculusQuest2をかぶって!
Unity中央上部の再生ボタンを押しましょう!

成功すればUnityのゲーム画面上は画像の左のようなキャラを外から映した映像。
OculusQuest2のヘッドマウントディスプレイにはキャラの視点が映されます。
おわり
お疲れさまでした!!
無事実行できたでしょうか?
ここまで出来たらあとは自分で作った or アセットストアから入手したアイテムを配置して自分の世界を作っていきましょう。
管理人は途中でSteamVRが落ちたり、キャラ目線にならなかったり、そもそも画像が出なかったり、色々躓いたよ!
そもそもPCのスペックが足りてないよ☆
ゲーミングPC欲すぃ…
SteamVRがエラー起こして全然使えないときは、一回全部閉じて…
- Oculusアプリ
- SteamVR
- VirtualMotionCapture
- Unity
の順で起動しなおしてみよう!
それでは!良いVTuberライフを!
(/・ω・)/